Logo Search packages:      
Sourcecode: vala-0.12 version File versions  Download package

valagobjectmodule.c

/* valagobjectmodule.c generated by valac, the Vala compiler
 * generated from valagobjectmodule.vala, do not modify */

/* valagobjectmodule.vala
 *
 * Copyright (C) 2006-2011  Jürg Billeter
 * Copyright (C) 2006-2008  Raffaele Sandrini
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Author:
 *    Jürg Billeter <j@bitron.ch>
 *    Raffaele Sandrini <raffaele@sandrini.ch>
 */

#include <glib.h>
#include <glib-object.h>
#include <vala.h>
#include <valaccode.h>
#include <valagee.h>
#include <stdlib.h>
#include <string.h>


#define VALA_TYPE_CCODE_BASE_MODULE (vala_ccode_base_module_get_type ())
#define VALA_CCODE_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModule))
#define VALA_CCODE_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModuleClass))
#define VALA_IS_CCODE_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_BASE_MODULE))
#define VALA_IS_CCODE_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_BASE_MODULE))
#define VALA_CCODE_BASE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_BASE_MODULE, ValaCCodeBaseModuleClass))

typedef struct _ValaCCodeBaseModule ValaCCodeBaseModule;
typedef struct _ValaCCodeBaseModuleClass ValaCCodeBaseModuleClass;
typedef struct _ValaCCodeBaseModulePrivate ValaCCodeBaseModulePrivate;

#define VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT (vala_ccode_base_module_emit_context_get_type ())
#define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContext))
#define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContextClass))
#define VALA_CCODE_BASE_MODULE_IS_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT))
#define VALA_CCODE_BASE_MODULE_IS_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT))
#define VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContextClass))

typedef struct _ValaCCodeBaseModuleEmitContext ValaCCodeBaseModuleEmitContext;
typedef struct _ValaCCodeBaseModuleEmitContextClass ValaCCodeBaseModuleEmitContextClass;

#define VALA_TYPE_CCODE_STRUCT_MODULE (vala_ccode_struct_module_get_type ())
#define VALA_CCODE_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_STRUCT_MODULE, ValaCCodeStructModule))
#define VALA_CCODE_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_STRUCT_MODULE, ValaCCodeStructModuleClass))
#define VALA_IS_CCODE_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_STRUCT_MODULE))
#define VALA_IS_CCODE_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_STRUCT_MODULE))
#define VALA_CCODE_STRUCT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_STRUCT_MODULE, ValaCCodeStructModuleClass))

typedef struct _ValaCCodeStructModule ValaCCodeStructModule;
typedef struct _ValaCCodeStructModuleClass ValaCCodeStructModuleClass;
typedef struct _ValaCCodeStructModulePrivate ValaCCodeStructModulePrivate;

#define VALA_TYPE_CCODE_METHOD_MODULE (vala_ccode_method_module_get_type ())
#define VALA_CCODE_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_METHOD_MODULE, ValaCCodeMethodModule))
#define VALA_CCODE_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_METHOD_MODULE, ValaCCodeMethodModuleClass))
#define VALA_IS_CCODE_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_METHOD_MODULE))
#define VALA_IS_CCODE_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_METHOD_MODULE))
#define VALA_CCODE_METHOD_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_METHOD_MODULE, ValaCCodeMethodModuleClass))

typedef struct _ValaCCodeMethodModule ValaCCodeMethodModule;
typedef struct _ValaCCodeMethodModuleClass ValaCCodeMethodModuleClass;
typedef struct _ValaCCodeMethodModulePrivate ValaCCodeMethodModulePrivate;

#define VALA_TYPE_CCODE_CONTROL_FLOW_MODULE (vala_ccode_control_flow_module_get_type ())
#define VALA_CCODE_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, ValaCCodeControlFlowModule))
#define VALA_CCODE_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, ValaCCodeControlFlowModuleClass))
#define VALA_IS_CCODE_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE))
#define VALA_IS_CCODE_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE))
#define VALA_CCODE_CONTROL_FLOW_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, ValaCCodeControlFlowModuleClass))

typedef struct _ValaCCodeControlFlowModule ValaCCodeControlFlowModule;
typedef struct _ValaCCodeControlFlowModuleClass ValaCCodeControlFlowModuleClass;
typedef struct _ValaCCodeControlFlowModulePrivate ValaCCodeControlFlowModulePrivate;

#define VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE (vala_ccode_member_access_module_get_type ())
#define VALA_CCODE_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE, ValaCCodeMemberAccessModule))
#define VALA_CCODE_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE, ValaCCodeMemberAccessModuleClass))
#define VALA_IS_CCODE_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE))
#define VALA_IS_CCODE_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE))
#define VALA_CCODE_MEMBER_ACCESS_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS_MODULE, ValaCCodeMemberAccessModuleClass))

typedef struct _ValaCCodeMemberAccessModule ValaCCodeMemberAccessModule;
typedef struct _ValaCCodeMemberAccessModuleClass ValaCCodeMemberAccessModuleClass;
typedef struct _ValaCCodeMemberAccessModulePrivate ValaCCodeMemberAccessModulePrivate;

#define VALA_TYPE_CCODE_ASSIGNMENT_MODULE (vala_ccode_assignment_module_get_type ())
#define VALA_CCODE_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ASSIGNMENT_MODULE, ValaCCodeAssignmentModule))
#define VALA_CCODE_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ASSIGNMENT_MODULE, ValaCCodeAssignmentModuleClass))
#define VALA_IS_CCODE_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ASSIGNMENT_MODULE))
#define VALA_IS_CCODE_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ASSIGNMENT_MODULE))
#define VALA_CCODE_ASSIGNMENT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ASSIGNMENT_MODULE, ValaCCodeAssignmentModuleClass))

typedef struct _ValaCCodeAssignmentModule ValaCCodeAssignmentModule;
typedef struct _ValaCCodeAssignmentModuleClass ValaCCodeAssignmentModuleClass;
typedef struct _ValaCCodeAssignmentModulePrivate ValaCCodeAssignmentModulePrivate;

#define VALA_TYPE_CCODE_METHOD_CALL_MODULE (vala_ccode_method_call_module_get_type ())
#define VALA_CCODE_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModule))
#define VALA_CCODE_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModuleClass))
#define VALA_IS_CCODE_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_METHOD_CALL_MODULE))
#define VALA_IS_CCODE_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_METHOD_CALL_MODULE))
#define VALA_CCODE_METHOD_CALL_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModuleClass))

typedef struct _ValaCCodeMethodCallModule ValaCCodeMethodCallModule;
typedef struct _ValaCCodeMethodCallModuleClass ValaCCodeMethodCallModuleClass;
typedef struct _ValaCCodeMethodCallModulePrivate ValaCCodeMethodCallModulePrivate;

#define VALA_TYPE_CCODE_ARRAY_MODULE (vala_ccode_array_module_get_type ())
#define VALA_CCODE_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ARRAY_MODULE, ValaCCodeArrayModule))
#define VALA_CCODE_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ARRAY_MODULE, ValaCCodeArrayModuleClass))
#define VALA_IS_CCODE_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ARRAY_MODULE))
#define VALA_IS_CCODE_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ARRAY_MODULE))
#define VALA_CCODE_ARRAY_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ARRAY_MODULE, ValaCCodeArrayModuleClass))

typedef struct _ValaCCodeArrayModule ValaCCodeArrayModule;
typedef struct _ValaCCodeArrayModuleClass ValaCCodeArrayModuleClass;
typedef struct _ValaCCodeArrayModulePrivate ValaCCodeArrayModulePrivate;

#define VALA_TYPE_CCODE_DELEGATE_MODULE (vala_ccode_delegate_module_get_type ())
#define VALA_CCODE_DELEGATE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DELEGATE_MODULE, ValaCCodeDelegateModule))
#define VALA_CCODE_DELEGATE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DELEGATE_MODULE, ValaCCodeDelegateModuleClass))
#define VALA_IS_CCODE_DELEGATE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DELEGATE_MODULE))
#define VALA_IS_CCODE_DELEGATE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DELEGATE_MODULE))
#define VALA_CCODE_DELEGATE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DELEGATE_MODULE, ValaCCodeDelegateModuleClass))

typedef struct _ValaCCodeDelegateModule ValaCCodeDelegateModule;
typedef struct _ValaCCodeDelegateModuleClass ValaCCodeDelegateModuleClass;
typedef struct _ValaCCodeDelegateModulePrivate ValaCCodeDelegateModulePrivate;

#define VALA_TYPE_GERROR_MODULE (vala_gerror_module_get_type ())
#define VALA_GERROR_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GERROR_MODULE, ValaGErrorModule))
#define VALA_GERROR_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GERROR_MODULE, ValaGErrorModuleClass))
#define VALA_IS_GERROR_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GERROR_MODULE))
#define VALA_IS_GERROR_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GERROR_MODULE))
#define VALA_GERROR_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GERROR_MODULE, ValaGErrorModuleClass))

typedef struct _ValaGErrorModule ValaGErrorModule;
typedef struct _ValaGErrorModuleClass ValaGErrorModuleClass;
typedef struct _ValaGErrorModulePrivate ValaGErrorModulePrivate;

#define VALA_TYPE_GTYPE_MODULE (vala_gtype_module_get_type ())
#define VALA_GTYPE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GTYPE_MODULE, ValaGTypeModule))
#define VALA_GTYPE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GTYPE_MODULE, ValaGTypeModuleClass))
#define VALA_IS_GTYPE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GTYPE_MODULE))
#define VALA_IS_GTYPE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GTYPE_MODULE))
#define VALA_GTYPE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GTYPE_MODULE, ValaGTypeModuleClass))

typedef struct _ValaGTypeModule ValaGTypeModule;
typedef struct _ValaGTypeModuleClass ValaGTypeModuleClass;
typedef struct _ValaGTypeModulePrivate ValaGTypeModulePrivate;

#define VALA_TYPE_GOBJECT_MODULE (vala_gobject_module_get_type ())
#define VALA_GOBJECT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule))
#define VALA_GOBJECT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModuleClass))
#define VALA_IS_GOBJECT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GOBJECT_MODULE))
#define VALA_IS_GOBJECT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GOBJECT_MODULE))
#define VALA_GOBJECT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModuleClass))

typedef struct _ValaGObjectModule ValaGObjectModule;
typedef struct _ValaGObjectModuleClass ValaGObjectModuleClass;
typedef struct _ValaGObjectModulePrivate ValaGObjectModulePrivate;
#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 _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_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))

struct _ValaCCodeBaseModule {
      ValaCodeGenerator parent_instance;
      ValaCCodeBaseModulePrivate * priv;
      ValaSymbol* root_symbol;
      ValaCCodeBaseModuleEmitContext* emit_context;
      ValaCCodeFile* header_file;
      ValaCCodeFile* internal_header_file;
      ValaCCodeFile* cfile;
      ValaCCodeBaseModuleEmitContext* class_init_context;
      ValaCCodeBaseModuleEmitContext* base_init_context;
      ValaCCodeBaseModuleEmitContext* class_finalize_context;
      ValaCCodeBaseModuleEmitContext* base_finalize_context;
      ValaCCodeBaseModuleEmitContext* instance_init_context;
      ValaCCodeBaseModuleEmitContext* instance_finalize_context;
      ValaCCodeStruct* param_spec_struct;
      ValaCCodeStruct* closure_struct;
      ValaCCodeEnum* prop_enum;
      ValaSet* user_marshal_set;
      ValaSet* predefined_marshal_set;
      gint next_regex_id;
      gboolean in_constructor;
      gboolean in_static_or_class_context;
      gint next_coroutine_state;
      ValaDataType* void_type;
      ValaDataType* bool_type;
      ValaDataType* char_type;
      ValaDataType* uchar_type;
      ValaDataType* unichar_type;
      ValaDataType* short_type;
      ValaDataType* ushort_type;
      ValaDataType* int_type;
      ValaDataType* uint_type;
      ValaDataType* long_type;
      ValaDataType* ulong_type;
      ValaDataType* int8_type;
      ValaDataType* uint8_type;
      ValaDataType* int16_type;
      ValaDataType* uint16_type;
      ValaDataType* int32_type;
      ValaDataType* uint32_type;
      ValaDataType* int64_type;
      ValaDataType* uint64_type;
      ValaDataType* string_type;
      ValaDataType* regex_type;
      ValaDataType* float_type;
      ValaDataType* double_type;
      ValaTypeSymbol* gtype_type;
      ValaTypeSymbol* gobject_type;
      ValaErrorType* gerror_type;
      ValaClass* glist_type;
      ValaClass* gslist_type;
      ValaClass* gnode_type;
      ValaClass* gvaluearray_type;
      ValaTypeSymbol* gstringbuilder_type;
      ValaTypeSymbol* garray_type;
      ValaTypeSymbol* gbytearray_type;
      ValaTypeSymbol* gptrarray_type;
      ValaTypeSymbol* gthreadpool_type;
      ValaDataType* gdestroynotify_type;
      ValaDataType* gquark_type;
      ValaStruct* gvalue_type;
      ValaClass* gvariant_type;
      ValaStruct* mutex_type;
      ValaTypeSymbol* type_module_type;
      ValaTypeSymbol* dbus_proxy_type;
      ValaTypeSymbol* dbus_object_type;
      gboolean in_plugin;
      gchar* module_init_param_name;
      gboolean gvaluecollector_h_needed;
      gboolean requires_array_free;
      gboolean requires_array_move;
      gboolean requires_array_length;
      ValaSet* wrappers;
};

struct _ValaCCodeBaseModuleClass {
      ValaCodeGeneratorClass parent_class;
      void (*append_vala_array_free) (ValaCCodeBaseModule* self);
      void (*append_vala_array_move) (ValaCCodeBaseModule* self);
      void (*append_vala_array_length) (ValaCCodeBaseModule* self);
      gboolean (*generate_enum_declaration) (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space);
      void (*generate_class_struct_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
      void (*generate_struct_declaration) (ValaCCodeBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space);
      void (*generate_delegate_declaration) (ValaCCodeBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space);
      void (*generate_cparameters) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
      ValaCCodeExpression* (*get_dup_func_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
      gchar* (*append_struct_array_free) (ValaCCodeBaseModule* self, ValaStruct* st);
      ValaCCodeExpression* (*destroy_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* target_lvalue);
      ValaCCodeExpression* (*destroy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
      void (*append_local_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at);
      ValaTargetValue* (*get_local_cvalue) (ValaCCodeBaseModule* self, ValaLocalVariable* local);
      ValaTargetValue* (*get_parameter_cvalue) (ValaCCodeBaseModule* self, ValaParameter* param);
      ValaTargetValue* (*get_field_cvalue) (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
      ValaTargetValue* (*load_this_parameter) (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
      gchar* (*get_delegate_target_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
      ValaCCodeExpression* (*get_delegate_target_cexpression) (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
      ValaCCodeExpression* (*get_delegate_target_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
      ValaCCodeExpression* (*get_delegate_target_destroy_notify_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
      gchar* (*get_delegate_target_destroy_notify_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
      ValaCCodeExpression* (*get_ref_cexpression) (ValaCCodeBaseModule* self, ValaDataType* expression_type, ValaCCodeExpression* cexpr, ValaExpression* expr, ValaCodeNode* node);
      void (*generate_class_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
      void (*generate_interface_declaration) (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
      void (*generate_method_declaration) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
      void (*generate_error_domain_declaration) (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
      ValaCCodeExpression* (*deserialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
      ValaCCodeExpression* (*serialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr);
      ValaCCodeExpression* (*get_implicit_cast_expression) (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaExpression* expr);
      gboolean (*is_gobject_property) (ValaCCodeBaseModule* self, ValaProperty* prop);
      gchar* (*get_custom_creturn_type) (ValaCCodeBaseModule* self, ValaMethod* m);
      void (*generate_dynamic_method_wrapper) (ValaCCodeBaseModule* self, ValaDynamicMethod* method);
      gboolean (*method_has_wrapper) (ValaCCodeBaseModule* self, ValaMethod* method);
      ValaCCodeFunctionCall* (*get_param_spec) (ValaCCodeBaseModule* self, ValaProperty* prop);
      ValaCCodeFunctionCall* (*get_signal_creation) (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
      void (*register_dbus_info) (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
      gchar* (*get_dynamic_property_getter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
      gchar* (*get_dynamic_property_setter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
      gchar* (*get_dynamic_signal_cname) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
      gchar* (*get_dynamic_signal_connect_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
      gchar* (*get_dynamic_signal_connect_after_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
      gchar* (*get_dynamic_signal_disconnect_wrapper_name) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
      void (*generate_marshaller) (ValaCCodeBaseModule* self, ValaList* params, ValaDataType* return_type, gboolean dbus);
      gchar* (*get_marshaller_function) (ValaCCodeBaseModule* self, ValaList* params, ValaDataType* return_type, const gchar* prefix, gboolean dbus);
      gchar* (*get_array_length_cname) (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
      gchar* (*get_parameter_array_length_cname) (ValaCCodeBaseModule* self, ValaParameter* param, gint dim);
      ValaCCodeExpression* (*get_array_length_cexpression) (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim);
      ValaCCodeExpression* (*get_array_length_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim);
      gchar* (*get_array_size_cname) (ValaCCodeBaseModule* self, const gchar* array_cname);
      void (*add_simple_check) (ValaCCodeBaseModule* self, ValaCodeNode* node, gboolean always_fails);
      gchar* (*generate_ready_function) (ValaCCodeBaseModule* self, ValaMethod* m);
};

struct _ValaCCodeStructModule {
      ValaCCodeBaseModule parent_instance;
      ValaCCodeStructModulePrivate * priv;
};

struct _ValaCCodeStructModuleClass {
      ValaCCodeBaseModuleClass parent_class;
};

struct _ValaCCodeMethodModule {
      ValaCCodeStructModule parent_instance;
      ValaCCodeMethodModulePrivate * priv;
};

struct _ValaCCodeMethodModuleClass {
      ValaCCodeStructModuleClass parent_class;
      void (*generate_method_result_declaration) (ValaCCodeMethodModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* cfunc, ValaMap* cparam_map, ValaMap* carg_map);
      ValaCCodeParameter* (*generate_parameter) (ValaCCodeMethodModule* self, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map);
};

struct _ValaCCodeControlFlowModule {
      ValaCCodeMethodModule parent_instance;
      ValaCCodeControlFlowModulePrivate * priv;
};

struct _ValaCCodeControlFlowModuleClass {
      ValaCCodeMethodModuleClass parent_class;
};

struct _ValaCCodeMemberAccessModule {
      ValaCCodeControlFlowModule parent_instance;
      ValaCCodeMemberAccessModulePrivate * priv;
};

struct _ValaCCodeMemberAccessModuleClass {
      ValaCCodeControlFlowModuleClass parent_class;
};

struct _ValaCCodeAssignmentModule {
      ValaCCodeMemberAccessModule parent_instance;
      ValaCCodeAssignmentModulePrivate * priv;
};

struct _ValaCCodeAssignmentModuleClass {
      ValaCCodeMemberAccessModuleClass parent_class;
};

struct _ValaCCodeMethodCallModule {
      ValaCCodeAssignmentModule parent_instance;
      ValaCCodeMethodCallModulePrivate * priv;
};

struct _ValaCCodeMethodCallModuleClass {
      ValaCCodeAssignmentModuleClass parent_class;
};

struct _ValaCCodeArrayModule {
      ValaCCodeMethodCallModule parent_instance;
      ValaCCodeArrayModulePrivate * priv;
};

struct _ValaCCodeArrayModuleClass {
      ValaCCodeMethodCallModuleClass parent_class;
};

struct _ValaCCodeDelegateModule {
      ValaCCodeArrayModule parent_instance;
      ValaCCodeDelegateModulePrivate * priv;
};

struct _ValaCCodeDelegateModuleClass {
      ValaCCodeArrayModuleClass parent_class;
};

struct _ValaGErrorModule {
      ValaCCodeDelegateModule parent_instance;
      ValaGErrorModulePrivate * priv;
};

struct _ValaGErrorModuleClass {
      ValaCCodeDelegateModuleClass parent_class;
      void (*return_with_exception) (ValaGErrorModule* self, ValaCCodeExpression* error_expr);
};

struct _ValaGTypeModule {
      ValaGErrorModule parent_instance;
      ValaGTypeModulePrivate * priv;
};

struct _ValaGTypeModuleClass {
      ValaGErrorModuleClass parent_class;
      void (*generate_virtual_method_declaration) (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct);
      void (*generate_class_init) (ValaGTypeModule* self, ValaClass* cl);
};

struct _ValaGObjectModule {
      ValaGTypeModule parent_instance;
      ValaGObjectModulePrivate * priv;
};

struct _ValaGObjectModuleClass {
      ValaGTypeModuleClass parent_class;
};

00419 struct _ValaGObjectModulePrivate {
      gint dynamic_property_id;
      gint signal_wrapper_id;
};


static gpointer vala_gobject_module_parent_class = NULL;

GType vala_ccode_base_module_get_type (void) G_GNUC_CONST;
gpointer vala_ccode_base_module_emit_context_ref (gpointer instance);
void vala_ccode_base_module_emit_context_unref (gpointer instance);
GParamSpec* vala_ccode_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_ccode_base_module_value_set_emit_context (GValue* value, gpointer v_object);
void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_object);
gpointer vala_ccode_base_module_value_get_emit_context (const GValue* value);
GType vala_ccode_base_module_emit_context_get_type (void) G_GNUC_CONST;
GType vala_ccode_struct_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_method_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_control_flow_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_member_access_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_assignment_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_method_call_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_array_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_delegate_module_get_type (void) G_GNUC_CONST;
GType vala_gerror_module_get_type (void) G_GNUC_CONST;
GType vala_gtype_module_get_type (void) G_GNUC_CONST;
GType vala_gobject_module_get_type (void) G_GNUC_CONST;
#define VALA_GOBJECT_MODULE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModulePrivate))
enum  {
      VALA_GOBJECT_MODULE_DUMMY_PROPERTY
};
static void vala_gobject_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
static gboolean vala_gobject_module_class_has_readable_properties (ValaGObjectModule* self, ValaClass* cl);
static void vala_gobject_module_add_get_property_function (ValaGObjectModule* self, ValaClass* cl);
static gboolean vala_gobject_module_class_has_writable_properties (ValaGObjectModule* self, ValaClass* cl);
static void vala_gobject_module_add_set_property_function (ValaGObjectModule* self, ValaClass* cl);
static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base, ValaClass* cl);
ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop);
ValaCCodeFunctionCall* vala_ccode_base_module_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop);
ValaCCodeFunctionCall* vala_ccode_base_module_generate_instance_cast (ValaCCodeBaseModule* self, ValaCCodeExpression* expr, ValaTypeSymbol* type);
ValaCCodeExpression* vala_ccode_base_module_transform_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaExpression* expr);
void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space);
ValaCCodeIdentifier* vala_ccode_base_module_get_value_setter_function (ValaCCodeBaseModule* self, ValaDataType* type_reference);
gboolean vala_ccode_base_module_requires_destroy (ValaCCodeBaseModule* self, ValaDataType* type);
ValaCCodeExpression* vala_ccode_base_module_get_unref_expression (ValaCCodeBaseModule* self, ValaCCodeExpression* cvar, ValaDataType* type, ValaExpression* expr, gboolean is_macro_definition);
ValaCCodeIdentifier* vala_ccode_base_module_get_value_taker_function (ValaCCodeBaseModule* self, ValaDataType* type_reference);
static ValaCCodeStatement* vala_gobject_module_get_invalid_property_id_warn_statement (ValaGObjectModule* self);
static void vala_gobject_module_real_visit_constructor (ValaCodeVisitor* base, ValaConstructor* c);
void vala_ccode_base_module_push_context (ValaCCodeBaseModule* self, ValaCCodeBaseModuleEmitContext* emit_context);
ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_new (ValaSymbol* symbol);
ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol);
void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self);
void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self);
static gchar* vala_gobject_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* base, ValaDynamicProperty* prop);
gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
static void vala_gobject_module_generate_gobject_property_getter_wrapper (ValaGObjectModule* self, ValaDynamicProperty* node, ValaCCodeBlock* block);
static gchar* vala_gobject_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* base, ValaDynamicProperty* prop);
gchar* vala_ccode_base_module_get_dynamic_property_setter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
static void vala_gobject_module_generate_gobject_property_setter_wrapper (ValaGObjectModule* self, ValaDynamicProperty* node, ValaCCodeBlock* block);
static gchar* vala_gobject_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* base, ValaDynamicSignal* node);
static gchar* vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* base, ValaDynamicSignal* sig);
gchar* vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
gchar* vala_ccode_base_module_get_dynamic_signal_cname (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
static void vala_gobject_module_generate_gobject_connect_wrapper (ValaGObjectModule* self, ValaDynamicSignal* sig, ValaCCodeBlock* block, gboolean after);
static gchar* vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* base, ValaDynamicSignal* sig);
static void vala_gobject_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
static gboolean vala_gobject_module_real_is_gobject_property (ValaCCodeBaseModule* base, ValaProperty* prop);
static void vala_gobject_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr);
ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init);
void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local, gboolean always_init);
ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name);
ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr);
void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue);
ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self);
ValaGObjectModule* vala_gobject_module_new (void);
ValaGObjectModule* vala_gobject_module_construct (GType object_type);
ValaGTypeModule* vala_gtype_module_new (void);
ValaGTypeModule* vala_gtype_module_construct (GType object_type);
static void vala_gobject_module_finalize (ValaCodeVisitor* obj);


static void vala_gobject_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
      ValaGObjectModule * self;
      gboolean _tmp0_;
      gboolean _tmp1_ = FALSE;
      gboolean _tmp2_;
      gboolean _tmp6_ = FALSE;
      gboolean _tmp7_;
      self = (ValaGObjectModule*) base;
      g_return_if_fail (cl != NULL);
      VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_class ((ValaCodeVisitor*) VALA_GTYPE_MODULE (self), cl);
      _tmp0_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, ((ValaCCodeBaseModule*) self)->gobject_type);
      if (!_tmp0_) {
            return;
      }
      _tmp2_ = vala_gobject_module_class_has_readable_properties (self, cl);
      if (_tmp2_) {
            _tmp1_ = TRUE;
      } else {
            ValaList* _tmp3_ = NULL;
            ValaList* _tmp4_;
            gint _tmp5_;
            _tmp3_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _tmp4_ = _tmp3_;
            _tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_);
            _tmp1_ = _tmp5_ > 0;
            _vala_iterable_unref0 (_tmp4_);
      }
      if (_tmp1_) {
            vala_gobject_module_add_get_property_function (self, cl);
      }
      _tmp7_ = vala_gobject_module_class_has_writable_properties (self, cl);
      if (_tmp7_) {
            _tmp6_ = TRUE;
      } else {
            ValaList* _tmp8_ = NULL;
            ValaList* _tmp9_;
            gint _tmp10_;
            _tmp8_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _tmp9_ = _tmp8_;
            _tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_);
            _tmp6_ = _tmp10_ > 0;
            _vala_iterable_unref0 (_tmp9_);
      }
      if (_tmp6_) {
            vala_gobject_module_add_set_property_function (self, cl);
      }
}


static gpointer _vala_iterable_ref0 (gpointer self) {
      return self ? vala_iterable_ref (self) : NULL;
}


static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base, ValaClass* cl) {
      ValaGObjectModule * self;
      gboolean _tmp0_;
      ValaCCodeIdentifier* _tmp1_ = NULL;
      ValaCCodeIdentifier* _tmp2_;
      ValaCCodeFunctionCall* _tmp3_ = NULL;
      ValaCCodeFunctionCall* _tmp4_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeIdentifier* _tmp5_ = NULL;
      ValaCCodeIdentifier* _tmp6_;
      gboolean _tmp7_ = FALSE;
      gboolean _tmp8_;
      gboolean _tmp21_ = FALSE;
      gboolean _tmp22_;
      ValaConstructor* _tmp35_ = NULL;
      gboolean _tmp51_ = FALSE;
      ValaList* _tmp52_ = NULL;
      ValaList* _tmp53_;
      gint _tmp54_;
      gboolean _tmp55_;
      ValaList* _tmp173_ = NULL;
      ValaList* props;
      self = (ValaGObjectModule*) base;
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, ((ValaCCodeBaseModule*) self)->gobject_type);
      if (!_tmp0_) {
            return;
      }
      _tmp1_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
      _tmp2_ = _tmp1_;
      _tmp3_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp2_);
      _tmp4_ = _tmp3_;
      _vala_ccode_node_unref0 (_tmp2_);
      ccall = _tmp4_;
      _tmp5_ = vala_ccode_identifier_new ("klass");
      _tmp6_ = _tmp5_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp6_);
      _vala_ccode_node_unref0 (_tmp6_);
      _tmp8_ = vala_gobject_module_class_has_readable_properties (self, cl);
      if (_tmp8_) {
            _tmp7_ = TRUE;
      } else {
            ValaList* _tmp9_ = NULL;
            ValaList* _tmp10_;
            gint _tmp11_;
            _tmp9_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _tmp10_ = _tmp9_;
            _tmp11_ = vala_collection_get_size ((ValaCollection*) _tmp10_);
            _tmp7_ = _tmp11_ > 0;
            _vala_iterable_unref0 (_tmp10_);
      }
      if (_tmp7_) {
            ValaCCodeFunction* _tmp12_ = NULL;
            ValaCCodeMemberAccess* _tmp13_ = NULL;
            ValaCCodeMemberAccess* _tmp14_;
            gchar* _tmp15_ = NULL;
            gchar* _tmp16_;
            gchar* _tmp17_ = NULL;
            gchar* _tmp18_;
            ValaCCodeIdentifier* _tmp19_ = NULL;
            ValaCCodeIdentifier* _tmp20_;
            _tmp12_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp13_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccall, "get_property");
            _tmp14_ = _tmp13_;
            _tmp15_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp16_ = _tmp15_;
            _tmp17_ = g_strdup_printf ("_vala_%s_get_property", _tmp16_);
            _tmp18_ = _tmp17_;
            _tmp19_ = vala_ccode_identifier_new (_tmp18_);
            _tmp20_ = _tmp19_;
            vala_ccode_function_add_assignment (_tmp12_, (ValaCCodeExpression*) _tmp14_, (ValaCCodeExpression*) _tmp20_);
            _vala_ccode_node_unref0 (_tmp20_);
            _g_free0 (_tmp18_);
            _g_free0 (_tmp16_);
            _vala_ccode_node_unref0 (_tmp14_);
      }
      _tmp22_ = vala_gobject_module_class_has_writable_properties (self, cl);
      if (_tmp22_) {
            _tmp21_ = TRUE;
      } else {
            ValaList* _tmp23_ = NULL;
            ValaList* _tmp24_;
            gint _tmp25_;
            _tmp23_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _tmp24_ = _tmp23_;
            _tmp25_ = vala_collection_get_size ((ValaCollection*) _tmp24_);
            _tmp21_ = _tmp25_ > 0;
            _vala_iterable_unref0 (_tmp24_);
      }
      if (_tmp21_) {
            ValaCCodeFunction* _tmp26_ = NULL;
            ValaCCodeMemberAccess* _tmp27_ = NULL;
            ValaCCodeMemberAccess* _tmp28_;
            gchar* _tmp29_ = NULL;
            gchar* _tmp30_;
            gchar* _tmp31_ = NULL;
            gchar* _tmp32_;
            ValaCCodeIdentifier* _tmp33_ = NULL;
            ValaCCodeIdentifier* _tmp34_;
            _tmp26_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp27_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccall, "set_property");
            _tmp28_ = _tmp27_;
            _tmp29_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp30_ = _tmp29_;
            _tmp31_ = g_strdup_printf ("_vala_%s_set_property", _tmp30_);
            _tmp32_ = _tmp31_;
            _tmp33_ = vala_ccode_identifier_new (_tmp32_);
            _tmp34_ = _tmp33_;
            vala_ccode_function_add_assignment (_tmp26_, (ValaCCodeExpression*) _tmp28_, (ValaCCodeExpression*) _tmp34_);
            _vala_ccode_node_unref0 (_tmp34_);
            _g_free0 (_tmp32_);
            _g_free0 (_tmp30_);
            _vala_ccode_node_unref0 (_tmp28_);
      }
      _tmp35_ = vala_class_get_constructor (cl);
      if (_tmp35_ != NULL) {
            ValaCCodeIdentifier* _tmp36_ = NULL;
            ValaCCodeIdentifier* _tmp37_;
            ValaCCodeFunctionCall* _tmp38_ = NULL;
            ValaCCodeFunctionCall* _tmp39_;
            ValaCCodeFunctionCall* ccast;
            ValaCCodeIdentifier* _tmp40_ = NULL;
            ValaCCodeIdentifier* _tmp41_;
            ValaCCodeFunction* _tmp42_ = NULL;
            ValaCCodeMemberAccess* _tmp43_ = NULL;
            ValaCCodeMemberAccess* _tmp44_;
            gchar* _tmp45_ = NULL;
            gchar* _tmp46_;
            gchar* _tmp47_ = NULL;
            gchar* _tmp48_;
            ValaCCodeIdentifier* _tmp49_ = NULL;
            ValaCCodeIdentifier* _tmp50_;
            _tmp36_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
            _tmp37_ = _tmp36_;
            _tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
            _tmp39_ = _tmp38_;
            _vala_ccode_node_unref0 (_tmp37_);
            ccast = _tmp39_;
            _tmp40_ = vala_ccode_identifier_new ("klass");
            _tmp41_ = _tmp40_;
            vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp41_);
            _vala_ccode_node_unref0 (_tmp41_);
            _tmp42_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp43_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, "constructor");
            _tmp44_ = _tmp43_;
            _tmp45_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp46_ = _tmp45_;
            _tmp47_ = g_strdup_printf ("%s_constructor", _tmp46_);
            _tmp48_ = _tmp47_;
            _tmp49_ = vala_ccode_identifier_new (_tmp48_);
            _tmp50_ = _tmp49_;
            vala_ccode_function_add_assignment (_tmp42_, (ValaCCodeExpression*) _tmp44_, (ValaCCodeExpression*) _tmp50_);
            _vala_ccode_node_unref0 (_tmp50_);
            _g_free0 (_tmp48_);
            _g_free0 (_tmp46_);
            _vala_ccode_node_unref0 (_tmp44_);
            _vala_ccode_node_unref0 (ccast);
      }
      _tmp52_ = vala_class_get_fields (cl);
      _tmp53_ = _tmp52_;
      _tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
      _tmp55_ = _tmp54_ > 0;
      _vala_iterable_unref0 (_tmp53_);
      if (_tmp55_) {
            _tmp51_ = TRUE;
      } else {
            ValaDestructor* _tmp56_ = NULL;
            _tmp56_ = vala_class_get_destructor (cl);
            _tmp51_ = _tmp56_ != NULL;
      }
      if (_tmp51_) {
            ValaCCodeIdentifier* _tmp57_ = NULL;
            ValaCCodeIdentifier* _tmp58_;
            ValaCCodeFunctionCall* _tmp59_ = NULL;
            ValaCCodeFunctionCall* _tmp60_;
            ValaCCodeFunctionCall* ccast;
            ValaCCodeIdentifier* _tmp61_ = NULL;
            ValaCCodeIdentifier* _tmp62_;
            ValaCCodeFunction* _tmp63_ = NULL;
            ValaCCodeMemberAccess* _tmp64_ = NULL;
            ValaCCodeMemberAccess* _tmp65_;
            gchar* _tmp66_ = NULL;
            gchar* _tmp67_;
            gchar* _tmp68_ = NULL;
            gchar* _tmp69_;
            ValaCCodeIdentifier* _tmp70_ = NULL;
            ValaCCodeIdentifier* _tmp71_;
            _tmp57_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
            _tmp58_ = _tmp57_;
            _tmp59_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp58_);
            _tmp60_ = _tmp59_;
            _vala_ccode_node_unref0 (_tmp58_);
            ccast = _tmp60_;
            _tmp61_ = vala_ccode_identifier_new ("klass");
            _tmp62_ = _tmp61_;
            vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp62_);
            _vala_ccode_node_unref0 (_tmp62_);
            _tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp64_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, "finalize");
            _tmp65_ = _tmp64_;
            _tmp66_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp67_ = _tmp66_;
            _tmp68_ = g_strdup_printf ("%s_finalize", _tmp67_);
            _tmp69_ = _tmp68_;
            _tmp70_ = vala_ccode_identifier_new (_tmp69_);
            _tmp71_ = _tmp70_;
            vala_ccode_function_add_assignment (_tmp63_, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) _tmp71_);
            _vala_ccode_node_unref0 (_tmp71_);
            _g_free0 (_tmp69_);
            _g_free0 (_tmp67_);
            _vala_ccode_node_unref0 (_tmp65_);
            _vala_ccode_node_unref0 (ccast);
      }
      {
            ValaList* _tmp72_ = NULL;
            ValaList* _type_param_list;
            gint _tmp73_;
            gint _type_param_size;
            gint _type_param_index;
            _tmp72_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _type_param_list = _tmp72_;
            _tmp73_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
            _type_param_size = _tmp73_;
            _type_param_index = -1;
            while (TRUE) {
                  gpointer _tmp74_ = NULL;
                  ValaTypeParameter* type_param;
                  gchar* func_name = NULL;
                  gchar* enum_value = NULL;
                  ValaCCodeConstant* func_name_constant = NULL;
                  ValaCCodeFunctionCall* cinst = NULL;
                  ValaCCodeFunctionCall* cspec = NULL;
                  const gchar* _tmp75_ = NULL;
                  gchar* _tmp76_ = NULL;
                  gchar* _tmp77_;
                  gchar* _tmp78_ = NULL;
                  const gchar* _tmp79_ = NULL;
                  gchar* _tmp80_ = NULL;
                  gchar* _tmp81_;
                  gchar* _tmp82_ = NULL;
                  gchar* _tmp83_;
                  ValaCCodeConstant* _tmp84_ = NULL;
                  gchar* _tmp85_ = NULL;
                  gchar* _tmp86_;
                  gchar* _tmp87_ = NULL;
                  gchar* _tmp88_;
                  gchar* _tmp89_ = NULL;
                  ValaCCodeIdentifier* _tmp90_ = NULL;
                  ValaCCodeIdentifier* _tmp91_;
                  ValaCCodeFunctionCall* _tmp92_ = NULL;
                  ValaCCodeConstant* _tmp93_ = NULL;
                  ValaCCodeConstant* _tmp94_;
                  ValaCCodeIdentifier* _tmp95_ = NULL;
                  ValaCCodeIdentifier* _tmp96_;
                  ValaCCodeFunctionCall* _tmp97_ = NULL;
                  ValaCCodeConstant* _tmp98_ = NULL;
                  ValaCCodeConstant* _tmp99_;
                  ValaCCodeConstant* _tmp100_ = NULL;
                  ValaCCodeConstant* _tmp101_;
                  ValaCCodeIdentifier* _tmp102_ = NULL;
                  ValaCCodeIdentifier* _tmp103_;
                  ValaCCodeConstant* _tmp104_ = NULL;
                  ValaCCodeConstant* _tmp105_;
                  ValaCCodeFunction* _tmp106_ = NULL;
                  ValaCCodeEnumValue* _tmp107_ = NULL;
                  ValaCCodeEnumValue* _tmp108_;
                  const gchar* _tmp109_ = NULL;
                  gchar* _tmp110_ = NULL;
                  gchar* _tmp111_;
                  gchar* _tmp112_ = NULL;
                  const gchar* _tmp113_ = NULL;
                  gchar* _tmp114_ = NULL;
                  gchar* _tmp115_;
                  gchar* _tmp116_ = NULL;
                  gchar* _tmp117_;
                  ValaCCodeConstant* _tmp118_ = NULL;
                  gchar* _tmp119_ = NULL;
                  gchar* _tmp120_;
                  gchar* _tmp121_ = NULL;
                  gchar* _tmp122_;
                  gchar* _tmp123_ = NULL;
                  ValaCCodeIdentifier* _tmp124_ = NULL;
                  ValaCCodeIdentifier* _tmp125_;
                  ValaCCodeFunctionCall* _tmp126_ = NULL;
                  ValaCCodeConstant* _tmp127_ = NULL;
                  ValaCCodeConstant* _tmp128_;
                  ValaCCodeIdentifier* _tmp129_ = NULL;
                  ValaCCodeIdentifier* _tmp130_;
                  ValaCCodeFunctionCall* _tmp131_ = NULL;
                  ValaCCodeConstant* _tmp132_ = NULL;
                  ValaCCodeConstant* _tmp133_;
                  ValaCCodeConstant* _tmp134_ = NULL;
                  ValaCCodeConstant* _tmp135_;
                  ValaCCodeConstant* _tmp136_ = NULL;
                  ValaCCodeConstant* _tmp137_;
                  ValaCCodeFunction* _tmp138_ = NULL;
                  ValaCCodeEnumValue* _tmp139_ = NULL;
                  ValaCCodeEnumValue* _tmp140_;
                  const gchar* _tmp141_ = NULL;
                  gchar* _tmp142_ = NULL;
                  gchar* _tmp143_;
                  gchar* _tmp144_ = NULL;
                  const gchar* _tmp145_ = NULL;
                  gchar* _tmp146_ = NULL;
                  gchar* _tmp147_;
                  gchar* _tmp148_ = NULL;
                  gchar* _tmp149_;
                  ValaCCodeConstant* _tmp150_ = NULL;
                  gchar* _tmp151_ = NULL;
                  gchar* _tmp152_;
                  gchar* _tmp153_ = NULL;
                  gchar* _tmp154_;
                  gchar* _tmp155_ = NULL;
                  ValaCCodeIdentifier* _tmp156_ = NULL;
                  ValaCCodeIdentifier* _tmp157_;
                  ValaCCodeFunctionCall* _tmp158_ = NULL;
                  ValaCCodeConstant* _tmp159_ = NULL;
                  ValaCCodeConstant* _tmp160_;
                  ValaCCodeIdentifier* _tmp161_ = NULL;
                  ValaCCodeIdentifier* _tmp162_;
                  ValaCCodeFunctionCall* _tmp163_ = NULL;
                  ValaCCodeConstant* _tmp164_ = NULL;
                  ValaCCodeConstant* _tmp165_;
                  ValaCCodeConstant* _tmp166_ = NULL;
                  ValaCCodeConstant* _tmp167_;
                  ValaCCodeConstant* _tmp168_ = NULL;
                  ValaCCodeConstant* _tmp169_;
                  ValaCCodeFunction* _tmp170_ = NULL;
                  ValaCCodeEnumValue* _tmp171_ = NULL;
                  ValaCCodeEnumValue* _tmp172_;
                  _type_param_index = _type_param_index + 1;
                  if (!(_type_param_index < _type_param_size)) {
                        break;
                  }
                  _tmp74_ = vala_list_get (_type_param_list, _type_param_index);
                  type_param = (ValaTypeParameter*) _tmp74_;
                  _tmp75_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp76_ = g_utf8_strdown (_tmp75_, (gssize) (-1));
                  _tmp77_ = _tmp76_;
                  _tmp78_ = g_strdup_printf ("%s_type", _tmp77_);
                  _g_free0 (func_name);
                  func_name = _tmp78_;
                  _g_free0 (_tmp77_);
                  _tmp79_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp80_ = g_utf8_strdown (_tmp79_, (gssize) (-1));
                  _tmp81_ = _tmp80_;
                  _tmp82_ = g_strdup_printf ("\"%s-type\"", _tmp81_);
                  _tmp83_ = _tmp82_;
                  _tmp84_ = vala_ccode_constant_new (_tmp83_);
                  _vala_ccode_node_unref0 (func_name_constant);
                  func_name_constant = _tmp84_;
                  _g_free0 (_tmp83_);
                  _g_free0 (_tmp81_);
                  _tmp85_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp86_ = _tmp85_;
                  _tmp87_ = g_strdup_printf ("%s_%s", _tmp86_, func_name);
                  _tmp88_ = _tmp87_;
                  _tmp89_ = g_utf8_strup (_tmp88_, (gssize) (-1));
                  _g_free0 (enum_value);
                  enum_value = _tmp89_;
                  _g_free0 (_tmp88_);
                  _g_free0 (_tmp86_);
                  _tmp90_ = vala_ccode_identifier_new ("g_object_class_install_property");
                  _tmp91_ = _tmp90_;
                  _tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
                  _vala_ccode_node_unref0 (cinst);
                  cinst = _tmp92_;
                  _vala_ccode_node_unref0 (_tmp91_);
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) ccall);
                  _tmp93_ = vala_ccode_constant_new (enum_value);
                  _tmp94_ = _tmp93_;
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp94_);
                  _vala_ccode_node_unref0 (_tmp94_);
                  _tmp95_ = vala_ccode_identifier_new ("g_param_spec_gtype");
                  _tmp96_ = _tmp95_;
                  _tmp97_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp96_);
                  _vala_ccode_node_unref0 (cspec);
                  cspec = _tmp97_;
                  _vala_ccode_node_unref0 (_tmp96_);
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) func_name_constant);
                  _tmp98_ = vala_ccode_constant_new ("\"type\"");
                  _tmp99_ = _tmp98_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp99_);
                  _vala_ccode_node_unref0 (_tmp99_);
                  _tmp100_ = vala_ccode_constant_new ("\"type\"");
                  _tmp101_ = _tmp100_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp101_);
                  _vala_ccode_node_unref0 (_tmp101_);
                  _tmp102_ = vala_ccode_identifier_new ("G_TYPE_NONE");
                  _tmp103_ = _tmp102_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp103_);
                  _vala_ccode_node_unref0 (_tmp103_);
                  _tmp104_ = vala_ccode_constant_new ("G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_P" \
"ARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY");
                  _tmp105_ = _tmp104_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp105_);
                  _vala_ccode_node_unref0 (_tmp105_);
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) cspec);
                  _tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_expression (_tmp106_, (ValaCCodeExpression*) cinst);
                  _tmp107_ = vala_ccode_enum_value_new (enum_value, NULL);
                  _tmp108_ = _tmp107_;
                  vala_ccode_enum_add_value (((ValaCCodeBaseModule*) self)->prop_enum, _tmp108_);
                  _vala_ccode_node_unref0 (_tmp108_);
                  _tmp109_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp110_ = g_utf8_strdown (_tmp109_, (gssize) (-1));
                  _tmp111_ = _tmp110_;
                  _tmp112_ = g_strdup_printf ("%s_dup_func", _tmp111_);
                  _g_free0 (func_name);
                  func_name = _tmp112_;
                  _g_free0 (_tmp111_);
                  _tmp113_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp114_ = g_utf8_strdown (_tmp113_, (gssize) (-1));
                  _tmp115_ = _tmp114_;
                  _tmp116_ = g_strdup_printf ("\"%s-dup-func\"", _tmp115_);
                  _tmp117_ = _tmp116_;
                  _tmp118_ = vala_ccode_constant_new (_tmp117_);
                  _vala_ccode_node_unref0 (func_name_constant);
                  func_name_constant = _tmp118_;
                  _g_free0 (_tmp117_);
                  _g_free0 (_tmp115_);
                  _tmp119_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp120_ = _tmp119_;
                  _tmp121_ = g_strdup_printf ("%s_%s", _tmp120_, func_name);
                  _tmp122_ = _tmp121_;
                  _tmp123_ = g_utf8_strup (_tmp122_, (gssize) (-1));
                  _g_free0 (enum_value);
                  enum_value = _tmp123_;
                  _g_free0 (_tmp122_);
                  _g_free0 (_tmp120_);
                  _tmp124_ = vala_ccode_identifier_new ("g_object_class_install_property");
                  _tmp125_ = _tmp124_;
                  _tmp126_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp125_);
                  _vala_ccode_node_unref0 (cinst);
                  cinst = _tmp126_;
                  _vala_ccode_node_unref0 (_tmp125_);
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) ccall);
                  _tmp127_ = vala_ccode_constant_new (enum_value);
                  _tmp128_ = _tmp127_;
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp128_);
                  _vala_ccode_node_unref0 (_tmp128_);
                  _tmp129_ = vala_ccode_identifier_new ("g_param_spec_pointer");
                  _tmp130_ = _tmp129_;
                  _tmp131_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp130_);
                  _vala_ccode_node_unref0 (cspec);
                  cspec = _tmp131_;
                  _vala_ccode_node_unref0 (_tmp130_);
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) func_name_constant);
                  _tmp132_ = vala_ccode_constant_new ("\"dup func\"");
                  _tmp133_ = _tmp132_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp133_);
                  _vala_ccode_node_unref0 (_tmp133_);
                  _tmp134_ = vala_ccode_constant_new ("\"dup func\"");
                  _tmp135_ = _tmp134_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp135_);
                  _vala_ccode_node_unref0 (_tmp135_);
                  _tmp136_ = vala_ccode_constant_new ("G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_P" \
"ARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY");
                  _tmp137_ = _tmp136_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp137_);
                  _vala_ccode_node_unref0 (_tmp137_);
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) cspec);
                  _tmp138_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_expression (_tmp138_, (ValaCCodeExpression*) cinst);
                  _tmp139_ = vala_ccode_enum_value_new (enum_value, NULL);
                  _tmp140_ = _tmp139_;
                  vala_ccode_enum_add_value (((ValaCCodeBaseModule*) self)->prop_enum, _tmp140_);
                  _vala_ccode_node_unref0 (_tmp140_);
                  _tmp141_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp142_ = g_utf8_strdown (_tmp141_, (gssize) (-1));
                  _tmp143_ = _tmp142_;
                  _tmp144_ = g_strdup_printf ("%s_destroy_func", _tmp143_);
                  _g_free0 (func_name);
                  func_name = _tmp144_;
                  _g_free0 (_tmp143_);
                  _tmp145_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp146_ = g_utf8_strdown (_tmp145_, (gssize) (-1));
                  _tmp147_ = _tmp146_;
                  _tmp148_ = g_strdup_printf ("\"%s-destroy-func\"", _tmp147_);
                  _tmp149_ = _tmp148_;
                  _tmp150_ = vala_ccode_constant_new (_tmp149_);
                  _vala_ccode_node_unref0 (func_name_constant);
                  func_name_constant = _tmp150_;
                  _g_free0 (_tmp149_);
                  _g_free0 (_tmp147_);
                  _tmp151_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp152_ = _tmp151_;
                  _tmp153_ = g_strdup_printf ("%s_%s", _tmp152_, func_name);
                  _tmp154_ = _tmp153_;
                  _tmp155_ = g_utf8_strup (_tmp154_, (gssize) (-1));
                  _g_free0 (enum_value);
                  enum_value = _tmp155_;
                  _g_free0 (_tmp154_);
                  _g_free0 (_tmp152_);
                  _tmp156_ = vala_ccode_identifier_new ("g_object_class_install_property");
                  _tmp157_ = _tmp156_;
                  _tmp158_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp157_);
                  _vala_ccode_node_unref0 (cinst);
                  cinst = _tmp158_;
                  _vala_ccode_node_unref0 (_tmp157_);
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) ccall);
                  _tmp159_ = vala_ccode_constant_new (enum_value);
                  _tmp160_ = _tmp159_;
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp160_);
                  _vala_ccode_node_unref0 (_tmp160_);
                  _tmp161_ = vala_ccode_identifier_new ("g_param_spec_pointer");
                  _tmp162_ = _tmp161_;
                  _tmp163_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp162_);
                  _vala_ccode_node_unref0 (cspec);
                  cspec = _tmp163_;
                  _vala_ccode_node_unref0 (_tmp162_);
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) func_name_constant);
                  _tmp164_ = vala_ccode_constant_new ("\"destroy func\"");
                  _tmp165_ = _tmp164_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp165_);
                  _vala_ccode_node_unref0 (_tmp165_);
                  _tmp166_ = vala_ccode_constant_new ("\"destroy func\"");
                  _tmp167_ = _tmp166_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp167_);
                  _vala_ccode_node_unref0 (_tmp167_);
                  _tmp168_ = vala_ccode_constant_new ("G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_P" \
"ARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY");
                  _tmp169_ = _tmp168_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp169_);
                  _vala_ccode_node_unref0 (_tmp169_);
                  vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) cspec);
                  _tmp170_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_expression (_tmp170_, (ValaCCodeExpression*) cinst);
                  _tmp171_ = vala_ccode_enum_value_new (enum_value, NULL);
                  _tmp172_ = _tmp171_;
                  vala_ccode_enum_add_value (((ValaCCodeBaseModule*) self)->prop_enum, _tmp172_);
                  _vala_ccode_node_unref0 (_tmp172_);
                  _vala_ccode_node_unref0 (cspec);
                  _vala_ccode_node_unref0 (cinst);
                  _vala_ccode_node_unref0 (func_name_constant);
                  _g_free0 (enum_value);
                  _g_free0 (func_name);
                  _vala_code_node_unref0 (type_param);
            }
            _vala_iterable_unref0 (_type_param_list);
      }
      _tmp173_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
      props = _tmp173_;
      {
            ValaList* _tmp174_;
            ValaList* _prop_list;
            gint _tmp175_;
            gint _prop_size;
            gint _prop_index;
            _tmp174_ = _vala_iterable_ref0 (props);
            _prop_list = _tmp174_;
            _tmp175_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp175_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp176_ = NULL;
                  ValaProperty* prop;
                  gboolean _tmp177_;
                  ValaComment* _tmp178_ = NULL;
                  gboolean _tmp184_ = FALSE;
                  gboolean _tmp185_;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp176_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp176_;
                  _tmp177_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, prop);
                  if (!_tmp177_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp178_ = vala_symbol_get_comment ((ValaSymbol*) prop);
                  if (_tmp178_ != NULL) {
                        ValaCCodeFunction* _tmp179_ = NULL;
                        ValaComment* _tmp180_ = NULL;
                        const gchar* _tmp181_ = NULL;
                        ValaCCodeComment* _tmp182_ = NULL;
                        ValaCCodeComment* _tmp183_;
                        _tmp179_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp180_ = vala_symbol_get_comment ((ValaSymbol*) prop);
                        _tmp181_ = vala_comment_get_content (_tmp180_);
                        _tmp182_ = vala_ccode_comment_new (_tmp181_);
                        _tmp183_ = _tmp182_;
                        vala_ccode_function_add_statement (_tmp179_, (ValaCCodeNode*) _tmp183_);
                        _vala_ccode_node_unref0 (_tmp183_);
                  }
                  _tmp185_ = vala_property_get_overrides (prop);
                  if (_tmp185_) {
                        _tmp184_ = TRUE;
                  } else {
                        ValaProperty* _tmp186_ = NULL;
                        _tmp186_ = vala_property_get_base_interface_property (prop);
                        _tmp184_ = _tmp186_ != NULL;
                  }
                  if (_tmp184_) {
                        ValaCCodeIdentifier* _tmp187_ = NULL;
                        ValaCCodeIdentifier* _tmp188_;
                        ValaCCodeFunctionCall* _tmp189_ = NULL;
                        ValaCCodeFunctionCall* _tmp190_;
                        ValaCCodeFunctionCall* cinst;
                        gchar* _tmp191_ = NULL;
                        gchar* _tmp192_;
                        ValaCCodeConstant* _tmp193_ = NULL;
                        ValaCCodeConstant* _tmp194_;
                        ValaCCodeConstant* _tmp195_ = NULL;
                        ValaCCodeConstant* _tmp196_;
                        ValaCCodeFunction* _tmp197_ = NULL;
                        _tmp187_ = vala_ccode_identifier_new ("g_object_class_override_property");
                        _tmp188_ = _tmp187_;
                        _tmp189_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp188_);
                        _tmp190_ = _tmp189_;
                        _vala_ccode_node_unref0 (_tmp188_);
                        cinst = _tmp190_;
                        vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) ccall);
                        _tmp191_ = vala_property_get_upper_case_cname (prop);
                        _tmp192_ = _tmp191_;
                        _tmp193_ = vala_ccode_constant_new (_tmp192_);
                        _tmp194_ = _tmp193_;
                        vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp194_);
                        _vala_ccode_node_unref0 (_tmp194_);
                        _g_free0 (_tmp192_);
                        _tmp195_ = vala_property_get_canonical_cconstant (prop);
                        _tmp196_ = _tmp195_;
                        vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp196_);
                        _vala_ccode_node_unref0 (_tmp196_);
                        _tmp197_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        vala_ccode_function_add_expression (_tmp197_, (ValaCCodeExpression*) cinst);
                        _vala_ccode_node_unref0 (cinst);
                  } else {
                        ValaCCodeIdentifier* _tmp198_ = NULL;
                        ValaCCodeIdentifier* _tmp199_;
                        ValaCCodeFunctionCall* _tmp200_ = NULL;
                        ValaCCodeFunctionCall* _tmp201_;
                        ValaCCodeFunctionCall* cinst;
                        gchar* _tmp202_ = NULL;
                        gchar* _tmp203_;
                        ValaCCodeConstant* _tmp204_ = NULL;
                        ValaCCodeConstant* _tmp205_;
                        ValaCCodeFunctionCall* _tmp206_ = NULL;
                        ValaCCodeFunctionCall* _tmp207_;
                        ValaCCodeFunction* _tmp208_ = NULL;
                        _tmp198_ = vala_ccode_identifier_new ("g_object_class_install_property");
                        _tmp199_ = _tmp198_;
                        _tmp200_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp199_);
                        _tmp201_ = _tmp200_;
                        _vala_ccode_node_unref0 (_tmp199_);
                        cinst = _tmp201_;
                        vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) ccall);
                        _tmp202_ = vala_property_get_upper_case_cname (prop);
                        _tmp203_ = _tmp202_;
                        _tmp204_ = vala_ccode_constant_new (_tmp203_);
                        _tmp205_ = _tmp204_;
                        vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp205_);
                        _vala_ccode_node_unref0 (_tmp205_);
                        _g_free0 (_tmp203_);
                        _tmp206_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, prop);
                        _tmp207_ = _tmp206_;
                        vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp207_);
                        _vala_ccode_node_unref0 (_tmp207_);
                        _tmp208_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        vala_ccode_function_add_expression (_tmp208_, (ValaCCodeExpression*) cinst);
                        _vala_ccode_node_unref0 (cinst);
                  }
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      _vala_iterable_unref0 (props);
      _vala_ccode_node_unref0 (ccall);
}


static gboolean vala_gobject_module_class_has_readable_properties (ValaGObjectModule* self, ValaClass* cl) {
      gboolean result = FALSE;
      g_return_val_if_fail (self != NULL, FALSE);
      g_return_val_if_fail (cl != NULL, FALSE);
      {
            ValaList* _tmp0_ = NULL;
            ValaList* _prop_list;
            gint _tmp1_;
            gint _prop_size;
            gint _prop_index;
            _tmp0_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
            _prop_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp1_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaProperty* prop;
                  ValaPropertyAccessor* _tmp3_ = NULL;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp2_;
                  _tmp3_ = vala_property_get_get_accessor (prop);
                  if (_tmp3_ != NULL) {
                        result = TRUE;
                        _vala_code_node_unref0 (prop);
                        _vala_iterable_unref0 (_prop_list);
                        return result;
                  }
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      result = FALSE;
      return result;
}


static gboolean vala_gobject_module_class_has_writable_properties (ValaGObjectModule* self, ValaClass* cl) {
      gboolean result = FALSE;
      g_return_val_if_fail (self != NULL, FALSE);
      g_return_val_if_fail (cl != NULL, FALSE);
      {
            ValaList* _tmp0_ = NULL;
            ValaList* _prop_list;
            gint _tmp1_;
            gint _prop_size;
            gint _prop_index;
            _tmp0_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
            _prop_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp1_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaProperty* prop;
                  ValaPropertyAccessor* _tmp3_ = NULL;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp2_;
                  _tmp3_ = vala_property_get_set_accessor (prop);
                  if (_tmp3_ != NULL) {
                        result = TRUE;
                        _vala_code_node_unref0 (prop);
                        _vala_iterable_unref0 (_prop_list);
                        return result;
                  }
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      result = FALSE;
      return result;
}


static gpointer _vala_code_node_ref0 (gpointer self) {
      return self ? vala_code_node_ref (self) : NULL;
}


static void vala_gobject_module_add_get_property_function (ValaGObjectModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* get_prop;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeBlock* _tmp14_ = NULL;
      ValaCCodeBlock* block;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      ValaCCodeFunctionCall* _tmp17_ = NULL;
      ValaCCodeFunctionCall* _tmp18_;
      ValaCCodeFunctionCall* ccall;
      gchar* _tmp19_ = NULL;
      gchar* _tmp20_;
      gchar* _tmp21_ = NULL;
      gchar* _tmp22_;
      ValaCCodeDeclaration* _tmp23_ = NULL;
      ValaCCodeDeclaration* _tmp24_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp25_ = NULL;
      ValaCCodeVariableDeclarator* _tmp26_;
      gint boxed_name_id;
      gboolean length_declared;
      ValaCCodeIdentifier* _tmp27_ = NULL;
      ValaCCodeIdentifier* _tmp28_;
      ValaCCodeSwitchStatement* _tmp29_ = NULL;
      ValaCCodeSwitchStatement* _tmp30_;
      ValaCCodeSwitchStatement* cswitch;
      ValaList* _tmp31_ = NULL;
      ValaList* props;
      ValaCCodeLabel* _tmp153_ = NULL;
      ValaCCodeLabel* _tmp154_;
      ValaCCodeStatement* _tmp155_ = NULL;
      ValaCCodeStatement* _tmp156_;
      ValaCCodeBreakStatement* _tmp157_ = NULL;
      ValaCCodeBreakStatement* _tmp158_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("_vala_%s_get_property", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      get_prop = _tmp5_;
      vala_ccode_function_set_modifiers (get_prop, VALA_CCODE_MODIFIERS_STATIC);
      _tmp6_ = vala_ccode_parameter_new ("object", "GObject *");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (get_prop, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_parameter_new ("property_id", "guint");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (get_prop, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("value", "GValue *");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (get_prop, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_parameter_new ("pspec", "GParamSpec *");
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (get_prop, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp14_ = vala_ccode_block_new ();
      block = _tmp14_;
      _tmp15_ = vala_ccode_identifier_new ("object");
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp16_, (ValaTypeSymbol*) cl);
      _tmp18_ = _tmp17_;
      _vala_ccode_node_unref0 (_tmp16_);
      ccall = _tmp18_;
      _tmp19_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp20_ = _tmp19_;
      _tmp21_ = g_strdup_printf ("%s *", _tmp20_);
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_ccode_declaration_new (_tmp22_);
      _tmp24_ = _tmp23_;
      _g_free0 (_tmp22_);
      _g_free0 (_tmp20_);
      _cdecl_ = _tmp24_;
      _tmp25_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) ccall, NULL);
      _tmp26_ = _tmp25_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
      boxed_name_id = 0;
      length_declared = FALSE;
      _tmp27_ = vala_ccode_identifier_new ("property_id");
      _tmp28_ = _tmp27_;
      _tmp29_ = vala_ccode_switch_statement_new ((ValaCCodeExpression*) _tmp28_);
      _tmp30_ = _tmp29_;
      _vala_ccode_node_unref0 (_tmp28_);
      cswitch = _tmp30_;
      _tmp31_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
      props = _tmp31_;
      {
            ValaList* _tmp32_;
            ValaList* _prop_list;
            gint _tmp33_;
            gint _prop_size;
            gint _prop_index;
            _tmp32_ = _vala_iterable_ref0 (props);
            _prop_list = _tmp32_;
            _tmp33_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp33_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp34_ = NULL;
                  ValaProperty* prop;
                  gboolean _tmp35_ = FALSE;
                  ValaPropertyAccessor* _tmp36_ = NULL;
                  gboolean _tmp38_;
                  ValaProperty* _tmp39_;
                  ValaProperty* base_prop;
                  ValaCCodeIdentifier* _tmp40_ = NULL;
                  ValaCCodeExpression* cself;
                  ValaProperty* _tmp41_ = NULL;
                  gchar* _tmp67_ = NULL;
                  gchar* _tmp68_;
                  ValaCCodeIdentifier* _tmp69_ = NULL;
                  ValaCCodeIdentifier* _tmp70_;
                  ValaCCodeCaseStatement* _tmp71_ = NULL;
                  ValaCCodeCaseStatement* _tmp72_;
                  ValaDataType* _tmp73_ = NULL;
                  gboolean _tmp74_;
                  ValaCCodeBreakStatement* _tmp151_ = NULL;
                  ValaCCodeBreakStatement* _tmp152_;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp34_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp34_;
                  _tmp36_ = vala_property_get_get_accessor (prop);
                  if (_tmp36_ == NULL) {
                        _tmp35_ = TRUE;
                  } else {
                        gboolean _tmp37_;
                        _tmp37_ = vala_property_get_is_abstract (prop);
                        _tmp35_ = _tmp37_;
                  }
                  if (_tmp35_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp38_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, prop);
                  if (!_tmp38_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp39_ = _vala_code_node_ref0 (prop);
                  base_prop = _tmp39_;
                  _tmp40_ = vala_ccode_identifier_new ("self");
                  cself = (ValaCCodeExpression*) _tmp40_;
                  _tmp41_ = vala_property_get_base_property (prop);
                  if (_tmp41_ != NULL) {
                        ValaProperty* _tmp42_ = NULL;
                        ValaSymbol* _tmp43_ = NULL;
                        ValaClass* _tmp44_;
                        ValaClass* base_type;
                        ValaProperty* _tmp45_ = NULL;
                        ValaProperty* _tmp46_;
                        ValaObjectType* _tmp47_ = NULL;
                        ValaObjectType* _tmp48_;
                        ValaObjectType* _tmp49_ = NULL;
                        ValaObjectType* _tmp50_;
                        ValaCCodeExpression* _tmp51_ = NULL;
                        ValaProperty* _tmp52_ = NULL;
                        ValaPropertyAccessor* _tmp53_ = NULL;
                        _tmp42_ = vala_property_get_base_property (prop);
                        _tmp43_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp42_);
                        _tmp44_ = _vala_code_node_ref0 (VALA_CLASS (_tmp43_));
                        base_type = _tmp44_;
                        _tmp45_ = vala_property_get_base_property (prop);
                        _tmp46_ = _vala_code_node_ref0 (_tmp45_);
                        _vala_code_node_unref0 (base_prop);
                        base_prop = _tmp46_;
                        _tmp47_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
                        _tmp48_ = _tmp47_;
                        _tmp49_ = vala_object_type_new ((ValaObjectTypeSymbol*) base_type);
                        _tmp50_ = _tmp49_;
                        _tmp51_ = vala_ccode_base_module_transform_expression ((ValaCCodeBaseModule*) self, cself, (ValaDataType*) _tmp48_, (ValaDataType*) _tmp50_, NULL);
                        _vala_ccode_node_unref0 (cself);
                        cself = _tmp51_;
                        _vala_code_node_unref0 (_tmp50_);
                        _vala_code_node_unref0 (_tmp48_);
                        _tmp52_ = vala_property_get_base_property (prop);
                        _tmp53_ = vala_property_get_get_accessor (_tmp52_);
                        vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp53_, ((ValaCCodeBaseModule*) self)->cfile);
                        _vala_code_node_unref0 (base_type);
                  } else {
                        ValaProperty* _tmp54_ = NULL;
                        _tmp54_ = vala_property_get_base_interface_property (prop);
                        if (_tmp54_ != NULL) {
                              ValaProperty* _tmp55_ = NULL;
                              ValaSymbol* _tmp56_ = NULL;
                              ValaInterface* _tmp57_;
                              ValaInterface* base_type;
                              ValaProperty* _tmp58_ = NULL;
                              ValaProperty* _tmp59_;
                              ValaObjectType* _tmp60_ = NULL;
                              ValaObjectType* _tmp61_;
                              ValaObjectType* _tmp62_ = NULL;
                              ValaObjectType* _tmp63_;
                              ValaCCodeExpression* _tmp64_ = NULL;
                              ValaProperty* _tmp65_ = NULL;
                              ValaPropertyAccessor* _tmp66_ = NULL;
                              _tmp55_ = vala_property_get_base_interface_property (prop);
                              _tmp56_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp55_);
                              _tmp57_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp56_));
                              base_type = _tmp57_;
                              _tmp58_ = vala_property_get_base_interface_property (prop);
                              _tmp59_ = _vala_code_node_ref0 (_tmp58_);
                              _vala_code_node_unref0 (base_prop);
                              base_prop = _tmp59_;
                              _tmp60_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
                              _tmp61_ = _tmp60_;
                              _tmp62_ = vala_object_type_new ((ValaObjectTypeSymbol*) base_type);
                              _tmp63_ = _tmp62_;
                              _tmp64_ = vala_ccode_base_module_transform_expression ((ValaCCodeBaseModule*) self, cself, (ValaDataType*) _tmp61_, (ValaDataType*) _tmp63_, NULL);
                              _vala_ccode_node_unref0 (cself);
                              cself = _tmp64_;
                              _vala_code_node_unref0 (_tmp63_);
                              _vala_code_node_unref0 (_tmp61_);
                              _tmp65_ = vala_property_get_base_interface_property (prop);
                              _tmp66_ = vala_property_get_get_accessor (_tmp65_);
                              vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp66_, ((ValaCCodeBaseModule*) self)->cfile);
                              _vala_code_node_unref0 (base_type);
                        }
                  }
                  _tmp67_ = vala_property_get_upper_case_cname (prop);
                  _tmp68_ = _tmp67_;
                  _tmp69_ = vala_ccode_identifier_new (_tmp68_);
                  _tmp70_ = _tmp69_;
                  _tmp71_ = vala_ccode_case_statement_new ((ValaCCodeExpression*) _tmp70_);
                  _tmp72_ = _tmp71_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp72_);
                  _vala_ccode_node_unref0 (_tmp72_);
                  _vala_ccode_node_unref0 (_tmp70_);
                  _g_free0 (_tmp68_);
                  _tmp73_ = vala_property_get_property_type (prop);
                  _tmp74_ = vala_data_type_is_real_struct_type (_tmp73_);
                  if (_tmp74_) {
                        ValaDataType* _tmp75_ = NULL;
                        ValaTypeSymbol* _tmp76_ = NULL;
                        ValaTypeSymbol* _tmp77_;
                        ValaStruct* _tmp78_;
                        ValaStruct* st;
                        gint _tmp79_;
                        gchar* _tmp80_ = NULL;
                        gchar* boxed;
                        gchar* _tmp81_ = NULL;
                        gchar* _tmp82_;
                        ValaCCodeDeclaration* _tmp83_ = NULL;
                        ValaCCodeVariableDeclarator* _tmp84_ = NULL;
                        ValaCCodeVariableDeclarator* _tmp85_;
                        ValaPropertyAccessor* _tmp86_ = NULL;
                        gchar* _tmp87_ = NULL;
                        gchar* _tmp88_;
                        ValaCCodeIdentifier* _tmp89_ = NULL;
                        ValaCCodeIdentifier* _tmp90_;
                        ValaCCodeFunctionCall* _tmp91_ = NULL;
                        ValaCCodeIdentifier* _tmp92_ = NULL;
                        ValaCCodeIdentifier* _tmp93_;
                        ValaCCodeUnaryExpression* _tmp94_ = NULL;
                        ValaCCodeUnaryExpression* _tmp95_;
                        ValaCCodeUnaryExpression* boxed_addr;
                        ValaCCodeExpressionStatement* _tmp96_ = NULL;
                        ValaCCodeExpressionStatement* _tmp97_;
                        ValaCCodeFunctionCall* _tmp98_ = NULL;
                        ValaCCodeFunctionCall* csetcall;
                        ValaDataType* _tmp99_ = NULL;
                        ValaCCodeIdentifier* _tmp100_ = NULL;
                        ValaCCodeIdentifier* _tmp101_;
                        ValaCCodeIdentifier* _tmp102_ = NULL;
                        ValaCCodeIdentifier* _tmp103_;
                        ValaCCodeExpressionStatement* _tmp104_ = NULL;
                        ValaCCodeExpressionStatement* _tmp105_;
                        ValaPropertyAccessor* _tmp106_ = NULL;
                        ValaDataType* _tmp107_ = NULL;
                        gboolean _tmp108_;
                        _tmp75_ = vala_property_get_property_type (prop);
                        _tmp76_ = vala_data_type_get_data_type (_tmp75_);
                        _tmp77_ = _tmp76_;
                        _tmp78_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp77_) ? ((ValaStruct*) _tmp77_) : NULL);
                        st = _tmp78_;
                        _tmp79_ = boxed_name_id;
                        boxed_name_id = _tmp79_ + 1;
                        _tmp80_ = g_strdup_printf ("boxed%d", _tmp79_);
                        boxed = _tmp80_;
                        _tmp81_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
                        _tmp82_ = _tmp81_;
                        _tmp83_ = vala_ccode_declaration_new (_tmp82_);
                        _vala_ccode_node_unref0 (_cdecl_);
                        _cdecl_ = _tmp83_;
                        _g_free0 (_tmp82_);
                        _tmp84_ = vala_ccode_variable_declarator_new (boxed, NULL, NULL);
                        _tmp85_ = _tmp84_;
                        vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp85_);
                        _vala_ccode_node_unref0 (_tmp85_);
                        vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
                        _tmp86_ = vala_property_get_get_accessor (base_prop);
                        _tmp87_ = vala_property_accessor_get_cname (_tmp86_);
                        _tmp88_ = _tmp87_;
                        _tmp89_ = vala_ccode_identifier_new (_tmp88_);
                        _tmp90_ = _tmp89_;
                        _tmp91_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp90_);
                        _vala_ccode_node_unref0 (ccall);
                        ccall = _tmp91_;
                        _vala_ccode_node_unref0 (_tmp90_);
                        _g_free0 (_tmp88_);
                        vala_ccode_function_call_add_argument (ccall, cself);
                        _tmp92_ = vala_ccode_identifier_new (boxed);
                        _tmp93_ = _tmp92_;
                        _tmp94_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp93_);
                        _tmp95_ = _tmp94_;
                        _vala_ccode_node_unref0 (_tmp93_);
                        boxed_addr = _tmp95_;
                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) boxed_addr);
                        _tmp96_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) ccall);
                        _tmp97_ = _tmp96_;
                        vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp97_);
                        _vala_ccode_node_unref0 (_tmp97_);
                        _tmp98_ = vala_ccode_function_call_new (NULL);
                        csetcall = _tmp98_;
                        _tmp99_ = vala_property_get_property_type (prop);
                        _tmp100_ = vala_ccode_base_module_get_value_setter_function ((ValaCCodeBaseModule*) self, _tmp99_);
                        _tmp101_ = _tmp100_;
                        vala_ccode_function_call_set_call (csetcall, (ValaCCodeExpression*) _tmp101_);
                        _vala_ccode_node_unref0 (_tmp101_);
                        _tmp102_ = vala_ccode_identifier_new ("value");
                        _tmp103_ = _tmp102_;
                        vala_ccode_function_call_add_argument (csetcall, (ValaCCodeExpression*) _tmp103_);
                        _vala_ccode_node_unref0 (_tmp103_);
                        vala_ccode_function_call_add_argument (csetcall, (ValaCCodeExpression*) boxed_addr);
                        _tmp104_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) csetcall);
                        _tmp105_ = _tmp104_;
                        vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp105_);
                        _vala_ccode_node_unref0 (_tmp105_);
                        _tmp106_ = vala_property_get_get_accessor (prop);
                        _tmp107_ = vala_property_accessor_get_value_type (_tmp106_);
                        _tmp108_ = vala_ccode_base_module_requires_destroy ((ValaCCodeBaseModule*) self, _tmp107_);
                        if (_tmp108_) {
                              ValaCCodeIdentifier* _tmp109_ = NULL;
                              ValaCCodeIdentifier* _tmp110_;
                              ValaPropertyAccessor* _tmp111_ = NULL;
                              ValaDataType* _tmp112_ = NULL;
                              ValaCCodeExpression* _tmp113_ = NULL;
                              ValaCCodeExpression* _tmp114_;
                              ValaCCodeExpressionStatement* _tmp115_ = NULL;
                              ValaCCodeExpressionStatement* _tmp116_;
                              _tmp109_ = vala_ccode_identifier_new (boxed);
                              _tmp110_ = _tmp109_;
                              _tmp111_ = vala_property_get_get_accessor (prop);
                              _tmp112_ = vala_property_accessor_get_value_type (_tmp111_);
                              _tmp113_ = vala_ccode_base_module_get_unref_expression ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp110_, _tmp112_, NULL, FALSE);
                              _tmp114_ = _tmp113_;
                              _tmp115_ = vala_ccode_expression_statement_new (_tmp114_);
                              _tmp116_ = _tmp115_;
                              vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp116_);
                              _vala_ccode_node_unref0 (_tmp116_);
                              _vala_ccode_node_unref0 (_tmp114_);
                              _vala_ccode_node_unref0 (_tmp110_);
                        }
                        _vala_ccode_node_unref0 (csetcall);
                        _vala_ccode_node_unref0 (boxed_addr);
                        _g_free0 (boxed);
                        _vala_code_node_unref0 (st);
                  } else {
                        ValaPropertyAccessor* _tmp117_ = NULL;
                        gchar* _tmp118_ = NULL;
                        gchar* _tmp119_;
                        ValaCCodeIdentifier* _tmp120_ = NULL;
                        ValaCCodeIdentifier* _tmp121_;
                        ValaCCodeFunctionCall* _tmp122_ = NULL;
                        ValaDataType* _tmp123_ = NULL;
                        ValaDataType* _tmp124_;
                        ValaArrayType* _tmp125_;
                        ValaArrayType* array_type;
                        gboolean _tmp126_ = FALSE;
                        ValaCCodeFunctionCall* _tmp137_ = NULL;
                        ValaCCodeFunctionCall* csetcall;
                        ValaPropertyAccessor* _tmp138_ = NULL;
                        ValaDataType* _tmp139_ = NULL;
                        gboolean _tmp140_;
                        ValaCCodeIdentifier* _tmp147_ = NULL;
                        ValaCCodeIdentifier* _tmp148_;
                        ValaCCodeExpressionStatement* _tmp149_ = NULL;
                        ValaCCodeExpressionStatement* _tmp150_;
                        _tmp117_ = vala_property_get_get_accessor (base_prop);
                        _tmp118_ = vala_property_accessor_get_cname (_tmp117_);
                        _tmp119_ = _tmp118_;
                        _tmp120_ = vala_ccode_identifier_new (_tmp119_);
                        _tmp121_ = _tmp120_;
                        _tmp122_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp121_);
                        _vala_ccode_node_unref0 (ccall);
                        ccall = _tmp122_;
                        _vala_ccode_node_unref0 (_tmp121_);
                        _g_free0 (_tmp119_);
                        vala_ccode_function_call_add_argument (ccall, cself);
                        _tmp123_ = vala_property_get_property_type (prop);
                        _tmp124_ = _tmp123_;
                        _tmp125_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp124_) ? ((ValaArrayType*) _tmp124_) : NULL);
                        array_type = _tmp125_;
                        if (array_type != NULL) {
                              ValaDataType* _tmp127_ = NULL;
                              ValaTypeSymbol* _tmp128_ = NULL;
                              ValaTypeSymbol* _tmp129_ = NULL;
                              _tmp127_ = vala_array_type_get_element_type (array_type);
                              _tmp128_ = vala_data_type_get_data_type (_tmp127_);
                              _tmp129_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
                              _tmp126_ = _tmp128_ == _tmp129_;
                        } else {
                              _tmp126_ = FALSE;
                        }
                        if (_tmp126_) {
                              ValaCCodeIdentifier* _tmp133_ = NULL;
                              ValaCCodeIdentifier* _tmp134_;
                              ValaCCodeUnaryExpression* _tmp135_ = NULL;
                              ValaCCodeUnaryExpression* _tmp136_;
                              if (!length_declared) {
                                    ValaCCodeDeclaration* _tmp130_ = NULL;
                                    ValaCCodeVariableDeclarator* _tmp131_ = NULL;
                                    ValaCCodeVariableDeclarator* _tmp132_;
                                    _tmp130_ = vala_ccode_declaration_new ("int");
                                    _vala_ccode_node_unref0 (_cdecl_);
                                    _cdecl_ = _tmp130_;
                                    _tmp131_ = vala_ccode_variable_declarator_new ("length", NULL, NULL);
                                    _tmp132_ = _tmp131_;
                                    vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp132_);
                                    _vala_ccode_node_unref0 (_tmp132_);
                                    vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
                                    length_declared = TRUE;
                              }
                              _tmp133_ = vala_ccode_identifier_new ("length");
                              _tmp134_ = _tmp133_;
                              _tmp135_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp134_);
                              _tmp136_ = _tmp135_;
                              vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp136_);
                              _vala_ccode_node_unref0 (_tmp136_);
                              _vala_ccode_node_unref0 (_tmp134_);
                        }
                        _tmp137_ = vala_ccode_function_call_new (NULL);
                        csetcall = _tmp137_;
                        _tmp138_ = vala_property_get_get_accessor (prop);
                        _tmp139_ = vala_property_accessor_get_value_type (_tmp138_);
                        _tmp140_ = vala_data_type_get_value_owned (_tmp139_);
                        if (_tmp140_) {
                              ValaDataType* _tmp141_ = NULL;
                              ValaCCodeIdentifier* _tmp142_ = NULL;
                              ValaCCodeIdentifier* _tmp143_;
                              _tmp141_ = vala_property_get_property_type (prop);
                              _tmp142_ = vala_ccode_base_module_get_value_taker_function ((ValaCCodeBaseModule*) self, _tmp141_);
                              _tmp143_ = _tmp142_;
                              vala_ccode_function_call_set_call (csetcall, (ValaCCodeExpression*) _tmp143_);
                              _vala_ccode_node_unref0 (_tmp143_);
                        } else {
                              ValaDataType* _tmp144_ = NULL;
                              ValaCCodeIdentifier* _tmp145_ = NULL;
                              ValaCCodeIdentifier* _tmp146_;
                              _tmp144_ = vala_property_get_property_type (prop);
                              _tmp145_ = vala_ccode_base_module_get_value_setter_function ((ValaCCodeBaseModule*) self, _tmp144_);
                              _tmp146_ = _tmp145_;
                              vala_ccode_function_call_set_call (csetcall, (ValaCCodeExpression*) _tmp146_);
                              _vala_ccode_node_unref0 (_tmp146_);
                        }
                        _tmp147_ = vala_ccode_identifier_new ("value");
                        _tmp148_ = _tmp147_;
                        vala_ccode_function_call_add_argument (csetcall, (ValaCCodeExpression*) _tmp148_);
                        _vala_ccode_node_unref0 (_tmp148_);
                        vala_ccode_function_call_add_argument (csetcall, (ValaCCodeExpression*) ccall);
                        _tmp149_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) csetcall);
                        _tmp150_ = _tmp149_;
                        vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp150_);
                        _vala_ccode_node_unref0 (_tmp150_);
                        _vala_ccode_node_unref0 (csetcall);
                        _vala_code_node_unref0 (array_type);
                  }
                  _tmp151_ = vala_ccode_break_statement_new ();
                  _tmp152_ = _tmp151_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp152_);
                  _vala_ccode_node_unref0 (_tmp152_);
                  _vala_ccode_node_unref0 (cself);
                  _vala_code_node_unref0 (base_prop);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      _tmp153_ = vala_ccode_label_new ("default");
      _tmp154_ = _tmp153_;
      vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp154_);
      _vala_ccode_node_unref0 (_tmp154_);
      _tmp155_ = vala_gobject_module_get_invalid_property_id_warn_statement (self);
      _tmp156_ = _tmp155_;
      vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp156_);
      _vala_ccode_node_unref0 (_tmp156_);
      _tmp157_ = vala_ccode_break_statement_new ();
      _tmp158_ = _tmp157_;
      vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp158_);
      _vala_ccode_node_unref0 (_tmp158_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) cswitch);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, get_prop);
      vala_ccode_function_set_block (get_prop, block);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, get_prop);
      _vala_iterable_unref0 (props);
      _vala_ccode_node_unref0 (cswitch);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (get_prop);
}


static void vala_gobject_module_add_set_property_function (ValaGObjectModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* set_prop;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeBlock* _tmp14_ = NULL;
      ValaCCodeBlock* block;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      ValaCCodeFunctionCall* _tmp17_ = NULL;
      ValaCCodeFunctionCall* _tmp18_;
      ValaCCodeFunctionCall* ccall;
      gchar* _tmp19_ = NULL;
      gchar* _tmp20_;
      gchar* _tmp21_ = NULL;
      gchar* _tmp22_;
      ValaCCodeDeclaration* _tmp23_ = NULL;
      ValaCCodeDeclaration* _tmp24_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp25_ = NULL;
      ValaCCodeVariableDeclarator* _tmp26_;
      gboolean boxed_declared;
      ValaCCodeIdentifier* _tmp27_ = NULL;
      ValaCCodeIdentifier* _tmp28_;
      ValaCCodeSwitchStatement* _tmp29_ = NULL;
      ValaCCodeSwitchStatement* _tmp30_;
      ValaCCodeSwitchStatement* cswitch;
      ValaList* _tmp31_ = NULL;
      ValaList* props;
      ValaCCodeLabel* _tmp125_ = NULL;
      ValaCCodeLabel* _tmp126_;
      ValaCCodeStatement* _tmp127_ = NULL;
      ValaCCodeStatement* _tmp128_;
      ValaCCodeBreakStatement* _tmp129_ = NULL;
      ValaCCodeBreakStatement* _tmp130_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("_vala_%s_set_property", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      set_prop = _tmp5_;
      vala_ccode_function_set_modifiers (set_prop, VALA_CCODE_MODIFIERS_STATIC);
      _tmp6_ = vala_ccode_parameter_new ("object", "GObject *");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (set_prop, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_parameter_new ("property_id", "guint");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (set_prop, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("value", "const GValue *");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (set_prop, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_parameter_new ("pspec", "GParamSpec *");
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (set_prop, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp14_ = vala_ccode_block_new ();
      block = _tmp14_;
      _tmp15_ = vala_ccode_identifier_new ("object");
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp16_, (ValaTypeSymbol*) cl);
      _tmp18_ = _tmp17_;
      _vala_ccode_node_unref0 (_tmp16_);
      ccall = _tmp18_;
      _tmp19_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp20_ = _tmp19_;
      _tmp21_ = g_strdup_printf ("%s *", _tmp20_);
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_ccode_declaration_new (_tmp22_);
      _tmp24_ = _tmp23_;
      _g_free0 (_tmp22_);
      _g_free0 (_tmp20_);
      _cdecl_ = _tmp24_;
      _tmp25_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) ccall, NULL);
      _tmp26_ = _tmp25_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
      boxed_declared = FALSE;
      _tmp27_ = vala_ccode_identifier_new ("property_id");
      _tmp28_ = _tmp27_;
      _tmp29_ = vala_ccode_switch_statement_new ((ValaCCodeExpression*) _tmp28_);
      _tmp30_ = _tmp29_;
      _vala_ccode_node_unref0 (_tmp28_);
      cswitch = _tmp30_;
      _tmp31_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
      props = _tmp31_;
      {
            ValaList* _tmp32_;
            ValaList* _prop_list;
            gint _tmp33_;
            gint _prop_size;
            gint _prop_index;
            _tmp32_ = _vala_iterable_ref0 (props);
            _prop_list = _tmp32_;
            _tmp33_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp33_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp34_ = NULL;
                  ValaProperty* prop;
                  gboolean _tmp35_ = FALSE;
                  ValaPropertyAccessor* _tmp36_ = NULL;
                  gboolean _tmp38_;
                  ValaProperty* _tmp39_;
                  ValaProperty* base_prop;
                  ValaCCodeIdentifier* _tmp40_ = NULL;
                  ValaCCodeExpression* cself;
                  ValaProperty* _tmp41_ = NULL;
                  gchar* _tmp67_ = NULL;
                  gchar* _tmp68_;
                  ValaCCodeIdentifier* _tmp69_ = NULL;
                  ValaCCodeIdentifier* _tmp70_;
                  ValaCCodeCaseStatement* _tmp71_ = NULL;
                  ValaCCodeCaseStatement* _tmp72_;
                  ValaPropertyAccessor* _tmp73_ = NULL;
                  gchar* _tmp74_ = NULL;
                  gchar* _tmp75_;
                  ValaCCodeIdentifier* _tmp76_ = NULL;
                  ValaCCodeIdentifier* _tmp77_;
                  ValaCCodeFunctionCall* _tmp78_ = NULL;
                  gboolean _tmp79_ = FALSE;
                  ValaDataType* _tmp80_ = NULL;
                  ValaCCodeExpressionStatement* _tmp121_ = NULL;
                  ValaCCodeExpressionStatement* _tmp122_;
                  ValaCCodeBreakStatement* _tmp123_ = NULL;
                  ValaCCodeBreakStatement* _tmp124_;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp34_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp34_;
                  _tmp36_ = vala_property_get_set_accessor (prop);
                  if (_tmp36_ == NULL) {
                        _tmp35_ = TRUE;
                  } else {
                        gboolean _tmp37_;
                        _tmp37_ = vala_property_get_is_abstract (prop);
                        _tmp35_ = _tmp37_;
                  }
                  if (_tmp35_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp38_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, prop);
                  if (!_tmp38_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp39_ = _vala_code_node_ref0 (prop);
                  base_prop = _tmp39_;
                  _tmp40_ = vala_ccode_identifier_new ("self");
                  cself = (ValaCCodeExpression*) _tmp40_;
                  _tmp41_ = vala_property_get_base_property (prop);
                  if (_tmp41_ != NULL) {
                        ValaProperty* _tmp42_ = NULL;
                        ValaSymbol* _tmp43_ = NULL;
                        ValaClass* _tmp44_;
                        ValaClass* base_type;
                        ValaProperty* _tmp45_ = NULL;
                        ValaProperty* _tmp46_;
                        ValaObjectType* _tmp47_ = NULL;
                        ValaObjectType* _tmp48_;
                        ValaObjectType* _tmp49_ = NULL;
                        ValaObjectType* _tmp50_;
                        ValaCCodeExpression* _tmp51_ = NULL;
                        ValaProperty* _tmp52_ = NULL;
                        ValaPropertyAccessor* _tmp53_ = NULL;
                        _tmp42_ = vala_property_get_base_property (prop);
                        _tmp43_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp42_);
                        _tmp44_ = _vala_code_node_ref0 (VALA_CLASS (_tmp43_));
                        base_type = _tmp44_;
                        _tmp45_ = vala_property_get_base_property (prop);
                        _tmp46_ = _vala_code_node_ref0 (_tmp45_);
                        _vala_code_node_unref0 (base_prop);
                        base_prop = _tmp46_;
                        _tmp47_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
                        _tmp48_ = _tmp47_;
                        _tmp49_ = vala_object_type_new ((ValaObjectTypeSymbol*) base_type);
                        _tmp50_ = _tmp49_;
                        _tmp51_ = vala_ccode_base_module_transform_expression ((ValaCCodeBaseModule*) self, cself, (ValaDataType*) _tmp48_, (ValaDataType*) _tmp50_, NULL);
                        _vala_ccode_node_unref0 (cself);
                        cself = _tmp51_;
                        _vala_code_node_unref0 (_tmp50_);
                        _vala_code_node_unref0 (_tmp48_);
                        _tmp52_ = vala_property_get_base_property (prop);
                        _tmp53_ = vala_property_get_set_accessor (_tmp52_);
                        vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp53_, ((ValaCCodeBaseModule*) self)->cfile);
                        _vala_code_node_unref0 (base_type);
                  } else {
                        ValaProperty* _tmp54_ = NULL;
                        _tmp54_ = vala_property_get_base_interface_property (prop);
                        if (_tmp54_ != NULL) {
                              ValaProperty* _tmp55_ = NULL;
                              ValaSymbol* _tmp56_ = NULL;
                              ValaInterface* _tmp57_;
                              ValaInterface* base_type;
                              ValaProperty* _tmp58_ = NULL;
                              ValaProperty* _tmp59_;
                              ValaObjectType* _tmp60_ = NULL;
                              ValaObjectType* _tmp61_;
                              ValaObjectType* _tmp62_ = NULL;
                              ValaObjectType* _tmp63_;
                              ValaCCodeExpression* _tmp64_ = NULL;
                              ValaProperty* _tmp65_ = NULL;
                              ValaPropertyAccessor* _tmp66_ = NULL;
                              _tmp55_ = vala_property_get_base_interface_property (prop);
                              _tmp56_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp55_);
                              _tmp57_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp56_));
                              base_type = _tmp57_;
                              _tmp58_ = vala_property_get_base_interface_property (prop);
                              _tmp59_ = _vala_code_node_ref0 (_tmp58_);
                              _vala_code_node_unref0 (base_prop);
                              base_prop = _tmp59_;
                              _tmp60_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
                              _tmp61_ = _tmp60_;
                              _tmp62_ = vala_object_type_new ((ValaObjectTypeSymbol*) base_type);
                              _tmp63_ = _tmp62_;
                              _tmp64_ = vala_ccode_base_module_transform_expression ((ValaCCodeBaseModule*) self, cself, (ValaDataType*) _tmp61_, (ValaDataType*) _tmp63_, NULL);
                              _vala_ccode_node_unref0 (cself);
                              cself = _tmp64_;
                              _vala_code_node_unref0 (_tmp63_);
                              _vala_code_node_unref0 (_tmp61_);
                              _tmp65_ = vala_property_get_base_interface_property (prop);
                              _tmp66_ = vala_property_get_set_accessor (_tmp65_);
                              vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp66_, ((ValaCCodeBaseModule*) self)->cfile);
                              _vala_code_node_unref0 (base_type);
                        }
                  }
                  _tmp67_ = vala_property_get_upper_case_cname (prop);
                  _tmp68_ = _tmp67_;
                  _tmp69_ = vala_ccode_identifier_new (_tmp68_);
                  _tmp70_ = _tmp69_;
                  _tmp71_ = vala_ccode_case_statement_new ((ValaCCodeExpression*) _tmp70_);
                  _tmp72_ = _tmp71_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp72_);
                  _vala_ccode_node_unref0 (_tmp72_);
                  _vala_ccode_node_unref0 (_tmp70_);
                  _g_free0 (_tmp68_);
                  _tmp73_ = vala_property_get_set_accessor (base_prop);
                  _tmp74_ = vala_property_accessor_get_cname (_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_);
                  vala_ccode_function_call_add_argument (ccall, cself);
                  _tmp80_ = vala_property_get_property_type (prop);
                  if (VALA_IS_ARRAY_TYPE (_tmp80_)) {
                        ValaDataType* _tmp81_ = NULL;
                        ValaDataType* _tmp82_ = NULL;
                        ValaTypeSymbol* _tmp83_ = NULL;
                        ValaTypeSymbol* _tmp84_ = NULL;
                        _tmp81_ = vala_property_get_property_type (prop);
                        _tmp82_ = vala_array_type_get_element_type (VALA_ARRAY_TYPE (_tmp81_));
                        _tmp83_ = vala_data_type_get_data_type (_tmp82_);
                        _tmp84_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
                        _tmp79_ = _tmp83_ == _tmp84_;
                  } else {
                        _tmp79_ = FALSE;
                  }
                  if (_tmp79_) {
                        ValaCCodeIdentifier* _tmp88_ = NULL;
                        ValaCCodeIdentifier* _tmp89_;
                        ValaCCodeFunctionCall* _tmp90_ = NULL;
                        ValaCCodeFunctionCall* _tmp91_;
                        ValaCCodeFunctionCall* cgetcall;
                        ValaCCodeIdentifier* _tmp92_ = NULL;
                        ValaCCodeIdentifier* _tmp93_;
                        ValaCCodeIdentifier* _tmp94_ = NULL;
                        ValaCCodeIdentifier* _tmp95_;
                        ValaCCodeAssignment* _tmp96_ = NULL;
                        ValaCCodeAssignment* _tmp97_;
                        ValaCCodeExpressionStatement* _tmp98_ = NULL;
                        ValaCCodeExpressionStatement* _tmp99_;
                        ValaCCodeIdentifier* _tmp100_ = NULL;
                        ValaCCodeIdentifier* _tmp101_;
                        ValaCCodeIdentifier* _tmp102_ = NULL;
                        ValaCCodeIdentifier* _tmp103_;
                        ValaCCodeFunctionCall* _tmp104_ = NULL;
                        ValaCCodeFunctionCall* _tmp105_;
                        ValaCCodeFunctionCall* cstrvlen;
                        ValaCCodeIdentifier* _tmp106_ = NULL;
                        ValaCCodeIdentifier* _tmp107_;
                        if (!boxed_declared) {
                              ValaCCodeDeclaration* _tmp85_ = NULL;
                              ValaCCodeVariableDeclarator* _tmp86_ = NULL;
                              ValaCCodeVariableDeclarator* _tmp87_;
                              _tmp85_ = vala_ccode_declaration_new ("gpointer");
                              _vala_ccode_node_unref0 (_cdecl_);
                              _cdecl_ = _tmp85_;
                              _tmp86_ = vala_ccode_variable_declarator_new ("boxed", NULL, NULL);
                              _tmp87_ = _tmp86_;
                              vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp87_);
                              _vala_ccode_node_unref0 (_tmp87_);
                              vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
                              boxed_declared = TRUE;
                        }
                        _tmp88_ = vala_ccode_identifier_new ("g_value_get_boxed");
                        _tmp89_ = _tmp88_;
                        _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
                        _tmp91_ = _tmp90_;
                        _vala_ccode_node_unref0 (_tmp89_);
                        cgetcall = _tmp91_;
                        _tmp92_ = vala_ccode_identifier_new ("value");
                        _tmp93_ = _tmp92_;
                        vala_ccode_function_call_add_argument (cgetcall, (ValaCCodeExpression*) _tmp93_);
                        _vala_ccode_node_unref0 (_tmp93_);
                        _tmp94_ = vala_ccode_identifier_new ("boxed");
                        _tmp95_ = _tmp94_;
                        _tmp96_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp95_, (ValaCCodeExpression*) cgetcall, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                        _tmp97_ = _tmp96_;
                        _tmp98_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp97_);
                        _tmp99_ = _tmp98_;
                        vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp99_);
                        _vala_ccode_node_unref0 (_tmp99_);
                        _vala_ccode_node_unref0 (_tmp97_);
                        _vala_ccode_node_unref0 (_tmp95_);
                        _tmp100_ = vala_ccode_identifier_new ("boxed");
                        _tmp101_ = _tmp100_;
                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp101_);
                        _vala_ccode_node_unref0 (_tmp101_);
                        _tmp102_ = vala_ccode_identifier_new ("g_strv_length");
                        _tmp103_ = _tmp102_;
                        _tmp104_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp103_);
                        _tmp105_ = _tmp104_;
                        _vala_ccode_node_unref0 (_tmp103_);
                        cstrvlen = _tmp105_;
                        _tmp106_ = vala_ccode_identifier_new ("boxed");
                        _tmp107_ = _tmp106_;
                        vala_ccode_function_call_add_argument (cstrvlen, (ValaCCodeExpression*) _tmp107_);
                        _vala_ccode_node_unref0 (_tmp107_);
                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) cstrvlen);
                        _vala_ccode_node_unref0 (cstrvlen);
                        _vala_ccode_node_unref0 (cgetcall);
                  } else {
                        ValaCCodeFunctionCall* _tmp108_ = NULL;
                        ValaCCodeFunctionCall* cgetcall;
                        ValaDataType* _tmp109_ = NULL;
                        ValaTypeSymbol* _tmp110_ = NULL;
                        ValaCCodeIdentifier* _tmp119_ = NULL;
                        ValaCCodeIdentifier* _tmp120_;
                        _tmp108_ = vala_ccode_function_call_new (NULL);
                        cgetcall = _tmp108_;
                        _tmp109_ = vala_property_get_property_type (prop);
                        _tmp110_ = vala_data_type_get_data_type (_tmp109_);
                        if (_tmp110_ != NULL) {
                              ValaDataType* _tmp111_ = NULL;
                              ValaTypeSymbol* _tmp112_ = NULL;
                              gchar* _tmp113_ = NULL;
                              gchar* _tmp114_;
                              ValaCCodeIdentifier* _tmp115_ = NULL;
                              ValaCCodeIdentifier* _tmp116_;
                              _tmp111_ = vala_property_get_property_type (prop);
                              _tmp112_ = vala_data_type_get_data_type (_tmp111_);
                              _tmp113_ = vala_typesymbol_get_get_value_function (_tmp112_);
                              _tmp114_ = _tmp113_;
                              _tmp115_ = vala_ccode_identifier_new (_tmp114_);
                              _tmp116_ = _tmp115_;
                              vala_ccode_function_call_set_call (cgetcall, (ValaCCodeExpression*) _tmp116_);
                              _vala_ccode_node_unref0 (_tmp116_);
                              _g_free0 (_tmp114_);
                        } else {
                              ValaCCodeIdentifier* _tmp117_ = NULL;
                              ValaCCodeIdentifier* _tmp118_;
                              _tmp117_ = vala_ccode_identifier_new ("g_value_get_pointer");
                              _tmp118_ = _tmp117_;
                              vala_ccode_function_call_set_call (cgetcall, (ValaCCodeExpression*) _tmp118_);
                              _vala_ccode_node_unref0 (_tmp118_);
                        }
                        _tmp119_ = vala_ccode_identifier_new ("value");
                        _tmp120_ = _tmp119_;
                        vala_ccode_function_call_add_argument (cgetcall, (ValaCCodeExpression*) _tmp120_);
                        _vala_ccode_node_unref0 (_tmp120_);
                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) cgetcall);
                        _vala_ccode_node_unref0 (cgetcall);
                  }
                  _tmp121_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) ccall);
                  _tmp122_ = _tmp121_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp122_);
                  _vala_ccode_node_unref0 (_tmp122_);
                  _tmp123_ = vala_ccode_break_statement_new ();
                  _tmp124_ = _tmp123_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp124_);
                  _vala_ccode_node_unref0 (_tmp124_);
                  _vala_ccode_node_unref0 (cself);
                  _vala_code_node_unref0 (base_prop);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      _tmp125_ = vala_ccode_label_new ("default");
      _tmp126_ = _tmp125_;
      vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp126_);
      _vala_ccode_node_unref0 (_tmp126_);
      _tmp127_ = vala_gobject_module_get_invalid_property_id_warn_statement (self);
      _tmp128_ = _tmp127_;
      vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp128_);
      _vala_ccode_node_unref0 (_tmp128_);
      _tmp129_ = vala_ccode_break_statement_new ();
      _tmp130_ = _tmp129_;
      vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp130_);
      _vala_ccode_node_unref0 (_tmp130_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) cswitch);
      {
            ValaList* _tmp131_ = NULL;
            ValaList* _type_param_list;
            gint _tmp132_;
            gint _type_param_size;
            gint _type_param_index;
            _tmp131_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _type_param_list = _tmp131_;
            _tmp132_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
            _type_param_size = _tmp132_;
            _type_param_index = -1;
            while (TRUE) {
                  gpointer _tmp133_ = NULL;
                  ValaTypeParameter* type_param;
                  gchar* func_name = NULL;
                  gchar* enum_value = NULL;
                  ValaCCodeMemberAccess* cfield = NULL;
                  ValaCCodeFunctionCall* cgetcall = NULL;
                  const gchar* _tmp134_ = NULL;
                  gchar* _tmp135_ = NULL;
                  gchar* _tmp136_;
                  gchar* _tmp137_ = NULL;
                  gchar* _tmp138_ = NULL;
                  gchar* _tmp139_;
                  gchar* _tmp140_ = NULL;
                  gchar* _tmp141_;
                  gchar* _tmp142_ = NULL;
                  ValaCCodeIdentifier* _tmp143_ = NULL;
                  ValaCCodeIdentifier* _tmp144_;
                  ValaCCodeCaseStatement* _tmp145_ = NULL;
                  ValaCCodeCaseStatement* _tmp146_;
                  ValaCCodeIdentifier* _tmp147_ = NULL;
                  ValaCCodeIdentifier* _tmp148_;
                  ValaCCodeMemberAccess* _tmp149_ = NULL;
                  ValaCCodeMemberAccess* _tmp150_;
                  ValaCCodeMemberAccess* _tmp151_ = NULL;
                  ValaCCodeIdentifier* _tmp152_ = NULL;
                  ValaCCodeIdentifier* _tmp153_;
                  ValaCCodeFunctionCall* _tmp154_ = NULL;
                  ValaCCodeIdentifier* _tmp155_ = NULL;
                  ValaCCodeIdentifier* _tmp156_;
                  ValaCCodeAssignment* _tmp157_ = NULL;
                  ValaCCodeAssignment* _tmp158_;
                  ValaCCodeExpressionStatement* _tmp159_ = NULL;
                  ValaCCodeExpressionStatement* _tmp160_;
                  ValaCCodeBreakStatement* _tmp161_ = NULL;
                  ValaCCodeBreakStatement* _tmp162_;
                  const gchar* _tmp163_ = NULL;
                  gchar* _tmp164_ = NULL;
                  gchar* _tmp165_;
                  gchar* _tmp166_ = NULL;
                  gchar* _tmp167_ = NULL;
                  gchar* _tmp168_;
                  gchar* _tmp169_ = NULL;
                  gchar* _tmp170_;
                  gchar* _tmp171_ = NULL;
                  ValaCCodeIdentifier* _tmp172_ = NULL;
                  ValaCCodeIdentifier* _tmp173_;
                  ValaCCodeCaseStatement* _tmp174_ = NULL;
                  ValaCCodeCaseStatement* _tmp175_;
                  ValaCCodeIdentifier* _tmp176_ = NULL;
                  ValaCCodeIdentifier* _tmp177_;
                  ValaCCodeMemberAccess* _tmp178_ = NULL;
                  ValaCCodeMemberAccess* _tmp179_;
                  ValaCCodeMemberAccess* _tmp180_ = NULL;
                  ValaCCodeIdentifier* _tmp181_ = NULL;
                  ValaCCodeIdentifier* _tmp182_;
                  ValaCCodeFunctionCall* _tmp183_ = NULL;
                  ValaCCodeIdentifier* _tmp184_ = NULL;
                  ValaCCodeIdentifier* _tmp185_;
                  ValaCCodeAssignment* _tmp186_ = NULL;
                  ValaCCodeAssignment* _tmp187_;
                  ValaCCodeExpressionStatement* _tmp188_ = NULL;
                  ValaCCodeExpressionStatement* _tmp189_;
                  ValaCCodeBreakStatement* _tmp190_ = NULL;
                  ValaCCodeBreakStatement* _tmp191_;
                  const gchar* _tmp192_ = NULL;
                  gchar* _tmp193_ = NULL;
                  gchar* _tmp194_;
                  gchar* _tmp195_ = NULL;
                  gchar* _tmp196_ = NULL;
                  gchar* _tmp197_;
                  gchar* _tmp198_ = NULL;
                  gchar* _tmp199_;
                  gchar* _tmp200_ = NULL;
                  ValaCCodeIdentifier* _tmp201_ = NULL;
                  ValaCCodeIdentifier* _tmp202_;
                  ValaCCodeCaseStatement* _tmp203_ = NULL;
                  ValaCCodeCaseStatement* _tmp204_;
                  ValaCCodeIdentifier* _tmp205_ = NULL;
                  ValaCCodeIdentifier* _tmp206_;
                  ValaCCodeMemberAccess* _tmp207_ = NULL;
                  ValaCCodeMemberAccess* _tmp208_;
                  ValaCCodeMemberAccess* _tmp209_ = NULL;
                  ValaCCodeIdentifier* _tmp210_ = NULL;
                  ValaCCodeIdentifier* _tmp211_;
                  ValaCCodeFunctionCall* _tmp212_ = NULL;
                  ValaCCodeIdentifier* _tmp213_ = NULL;
                  ValaCCodeIdentifier* _tmp214_;
                  ValaCCodeAssignment* _tmp215_ = NULL;
                  ValaCCodeAssignment* _tmp216_;
                  ValaCCodeExpressionStatement* _tmp217_ = NULL;
                  ValaCCodeExpressionStatement* _tmp218_;
                  ValaCCodeBreakStatement* _tmp219_ = NULL;
                  ValaCCodeBreakStatement* _tmp220_;
                  _type_param_index = _type_param_index + 1;
                  if (!(_type_param_index < _type_param_size)) {
                        break;
                  }
                  _tmp133_ = vala_list_get (_type_param_list, _type_param_index);
                  type_param = (ValaTypeParameter*) _tmp133_;
                  _tmp134_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp135_ = g_utf8_strdown (_tmp134_, (gssize) (-1));
                  _tmp136_ = _tmp135_;
                  _tmp137_ = g_strdup_printf ("%s_type", _tmp136_);
                  _g_free0 (func_name);
                  func_name = _tmp137_;
                  _g_free0 (_tmp136_);
                  _tmp138_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp139_ = _tmp138_;
                  _tmp140_ = g_strdup_printf ("%s_%s", _tmp139_, func_name);
                  _tmp141_ = _tmp140_;
                  _tmp142_ = g_utf8_strup (_tmp141_, (gssize) (-1));
                  _g_free0 (enum_value);
                  enum_value = _tmp142_;
                  _g_free0 (_tmp141_);
                  _g_free0 (_tmp139_);
                  _tmp143_ = vala_ccode_identifier_new (enum_value);
                  _tmp144_ = _tmp143_;
                  _tmp145_ = vala_ccode_case_statement_new ((ValaCCodeExpression*) _tmp144_);
                  _tmp146_ = _tmp145_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp146_);
                  _vala_ccode_node_unref0 (_tmp146_);
                  _vala_ccode_node_unref0 (_tmp144_);
                  _tmp147_ = vala_ccode_identifier_new ("self");
                  _tmp148_ = _tmp147_;
                  _tmp149_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp148_, "priv");
                  _tmp150_ = _tmp149_;
                  _tmp151_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp150_, func_name);
                  _vala_ccode_node_unref0 (cfield);
                  cfield = _tmp151_;
                  _vala_ccode_node_unref0 (_tmp150_);
                  _vala_ccode_node_unref0 (_tmp148_);
                  _tmp152_ = vala_ccode_identifier_new ("g_value_get_gtype");
                  _tmp153_ = _tmp152_;
                  _tmp154_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp153_);
                  _vala_ccode_node_unref0 (cgetcall);
                  cgetcall = _tmp154_;
                  _vala_ccode_node_unref0 (_tmp153_);
                  _tmp155_ = vala_ccode_identifier_new ("value");
                  _tmp156_ = _tmp155_;
                  vala_ccode_function_call_add_argument (cgetcall, (ValaCCodeExpression*) _tmp156_);
                  _vala_ccode_node_unref0 (_tmp156_);
                  _tmp157_ = vala_ccode_assignment_new ((ValaCCodeExpression*) cfield, (ValaCCodeExpression*) cgetcall, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp158_ = _tmp157_;
                  _tmp159_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp158_);
                  _tmp160_ = _tmp159_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp160_);
                  _vala_ccode_node_unref0 (_tmp160_);
                  _vala_ccode_node_unref0 (_tmp158_);
                  _tmp161_ = vala_ccode_break_statement_new ();
                  _tmp162_ = _tmp161_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp162_);
                  _vala_ccode_node_unref0 (_tmp162_);
                  _tmp163_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp164_ = g_utf8_strdown (_tmp163_, (gssize) (-1));
                  _tmp165_ = _tmp164_;
                  _tmp166_ = g_strdup_printf ("%s_dup_func", _tmp165_);
                  _g_free0 (func_name);
                  func_name = _tmp166_;
                  _g_free0 (_tmp165_);
                  _tmp167_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp168_ = _tmp167_;
                  _tmp169_ = g_strdup_printf ("%s_%s", _tmp168_, func_name);
                  _tmp170_ = _tmp169_;
                  _tmp171_ = g_utf8_strup (_tmp170_, (gssize) (-1));
                  _g_free0 (enum_value);
                  enum_value = _tmp171_;
                  _g_free0 (_tmp170_);
                  _g_free0 (_tmp168_);
                  _tmp172_ = vala_ccode_identifier_new (enum_value);
                  _tmp173_ = _tmp172_;
                  _tmp174_ = vala_ccode_case_statement_new ((ValaCCodeExpression*) _tmp173_);
                  _tmp175_ = _tmp174_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp175_);
                  _vala_ccode_node_unref0 (_tmp175_);
                  _vala_ccode_node_unref0 (_tmp173_);
                  _tmp176_ = vala_ccode_identifier_new ("self");
                  _tmp177_ = _tmp176_;
                  _tmp178_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp177_, "priv");
                  _tmp179_ = _tmp178_;
                  _tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp179_, func_name);
                  _vala_ccode_node_unref0 (cfield);
                  cfield = _tmp180_;
                  _vala_ccode_node_unref0 (_tmp179_);
                  _vala_ccode_node_unref0 (_tmp177_);
                  _tmp181_ = vala_ccode_identifier_new ("g_value_get_pointer");
                  _tmp182_ = _tmp181_;
                  _tmp183_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp182_);
                  _vala_ccode_node_unref0 (cgetcall);
                  cgetcall = _tmp183_;
                  _vala_ccode_node_unref0 (_tmp182_);
                  _tmp184_ = vala_ccode_identifier_new ("value");
                  _tmp185_ = _tmp184_;
                  vala_ccode_function_call_add_argument (cgetcall, (ValaCCodeExpression*) _tmp185_);
                  _vala_ccode_node_unref0 (_tmp185_);
                  _tmp186_ = vala_ccode_assignment_new ((ValaCCodeExpression*) cfield, (ValaCCodeExpression*) cgetcall, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp187_ = _tmp186_;
                  _tmp188_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp187_);
                  _tmp189_ = _tmp188_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp189_);
                  _vala_ccode_node_unref0 (_tmp189_);
                  _vala_ccode_node_unref0 (_tmp187_);
                  _tmp190_ = vala_ccode_break_statement_new ();
                  _tmp191_ = _tmp190_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp191_);
                  _vala_ccode_node_unref0 (_tmp191_);
                  _tmp192_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                  _tmp193_ = g_utf8_strdown (_tmp192_, (gssize) (-1));
                  _tmp194_ = _tmp193_;
                  _tmp195_ = g_strdup_printf ("%s_destroy_func", _tmp194_);
                  _g_free0 (func_name);
                  func_name = _tmp195_;
                  _g_free0 (_tmp194_);
                  _tmp196_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp197_ = _tmp196_;
                  _tmp198_ = g_strdup_printf ("%s_%s", _tmp197_, func_name);
                  _tmp199_ = _tmp198_;
                  _tmp200_ = g_utf8_strup (_tmp199_, (gssize) (-1));
                  _g_free0 (enum_value);
                  enum_value = _tmp200_;
                  _g_free0 (_tmp199_);
                  _g_free0 (_tmp197_);
                  _tmp201_ = vala_ccode_identifier_new (enum_value);
                  _tmp202_ = _tmp201_;
                  _tmp203_ = vala_ccode_case_statement_new ((ValaCCodeExpression*) _tmp202_);
                  _tmp204_ = _tmp203_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp204_);
                  _vala_ccode_node_unref0 (_tmp204_);
                  _vala_ccode_node_unref0 (_tmp202_);
                  _tmp205_ = vala_ccode_identifier_new ("self");
                  _tmp206_ = _tmp205_;
                  _tmp207_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp206_, "priv");
                  _tmp208_ = _tmp207_;
                  _tmp209_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp208_, func_name);
                  _vala_ccode_node_unref0 (cfield);
                  cfield = _tmp209_;
                  _vala_ccode_node_unref0 (_tmp208_);
                  _vala_ccode_node_unref0 (_tmp206_);
                  _tmp210_ = vala_ccode_identifier_new ("g_value_get_pointer");
                  _tmp211_ = _tmp210_;
                  _tmp212_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp211_);
                  _vala_ccode_node_unref0 (cgetcall);
                  cgetcall = _tmp212_;
                  _vala_ccode_node_unref0 (_tmp211_);
                  _tmp213_ = vala_ccode_identifier_new ("value");
                  _tmp214_ = _tmp213_;
                  vala_ccode_function_call_add_argument (cgetcall, (ValaCCodeExpression*) _tmp214_);
                  _vala_ccode_node_unref0 (_tmp214_);
                  _tmp215_ = vala_ccode_assignment_new ((ValaCCodeExpression*) cfield, (ValaCCodeExpression*) cgetcall, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp216_ = _tmp215_;
                  _tmp217_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp216_);
                  _tmp218_ = _tmp217_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp218_);
                  _vala_ccode_node_unref0 (_tmp218_);
                  _vala_ccode_node_unref0 (_tmp216_);
                  _tmp219_ = vala_ccode_break_statement_new ();
                  _tmp220_ = _tmp219_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp220_);
                  _vala_ccode_node_unref0 (_tmp220_);
                  _vala_ccode_node_unref0 (cgetcall);
                  _vala_ccode_node_unref0 (cfield);
                  _g_free0 (enum_value);
                  _g_free0 (func_name);
                  _vala_code_node_unref0 (type_param);
            }
            _vala_iterable_unref0 (_type_param_list);
      }
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, set_prop);
      vala_ccode_function_set_block (set_prop, block);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, set_prop);
      _vala_iterable_unref0 (props);
      _vala_ccode_node_unref0 (cswitch);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (set_prop);
}


static ValaCCodeStatement* vala_gobject_module_get_invalid_property_id_warn_statement (ValaGObjectModule* self) {
      ValaCCodeStatement* result = NULL;
      ValaCCodeIdentifier* _tmp0_ = NULL;
      ValaCCodeIdentifier* _tmp1_;
      ValaCCodeFunctionCall* _tmp2_ = NULL;
      ValaCCodeFunctionCall* _tmp3_;
      ValaCCodeFunctionCall* cwarn;
      ValaCCodeIdentifier* _tmp4_ = NULL;
      ValaCCodeIdentifier* _tmp5_;
      ValaCCodeIdentifier* _tmp6_ = NULL;
      ValaCCodeIdentifier* _tmp7_;
      ValaCCodeIdentifier* _tmp8_ = NULL;
      ValaCCodeIdentifier* _tmp9_;
      ValaCCodeExpressionStatement* _tmp10_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp0_ = vala_ccode_identifier_new ("G_OBJECT_WARN_INVALID_PROPERTY_ID");
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
      _tmp3_ = _tmp2_;
      _vala_ccode_node_unref0 (_tmp1_);
      cwarn = _tmp3_;
      _tmp4_ = vala_ccode_identifier_new ("object");
      _tmp5_ = _tmp4_;
      vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _tmp6_ = vala_ccode_identifier_new ("property_id");
      _tmp7_ = _tmp6_;
      vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_identifier_new ("pspec");
      _tmp9_ = _tmp8_;
      vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) cwarn);
      result = (ValaCCodeStatement*) _tmp10_;
      _vala_ccode_node_unref0 (cwarn);
      return result;
}


static void vala_gobject_module_real_visit_constructor (ValaCodeVisitor* base, ValaConstructor* c) {
      ValaGObjectModule * self;
      gboolean _tmp0_ = FALSE;
      ValaMemberBinding _tmp1_;
      ValaSymbol* _tmp3_ = NULL;
      ValaClass* _tmp4_;
      ValaClass* cl;
      ValaMemberBinding _tmp5_;
      self = (ValaGObjectModule*) base;
      g_return_if_fail (c != NULL);
      _tmp1_ = vala_constructor_get_binding (c);
      if (_tmp1_ == VALA_MEMBER_BINDING_CLASS) {
            _tmp0_ = TRUE;
      } else {
            ValaMemberBinding _tmp2_;
            _tmp2_ = vala_constructor_get_binding (c);
            _tmp0_ = _tmp2_ == VALA_MEMBER_BINDING_STATIC;
      }
      if (_tmp0_) {
            ((ValaCCodeBaseModule*) self)->in_static_or_class_context = TRUE;
      } else {
            ((ValaCCodeBaseModule*) self)->in_constructor = TRUE;
      }
      _tmp3_ = vala_symbol_get_parent_symbol ((ValaSymbol*) c);
      _tmp4_ = _vala_code_node_ref0 (VALA_CLASS (_tmp3_));
      cl = _tmp4_;
      _tmp5_ = vala_constructor_get_binding (c);
      if (_tmp5_ == VALA_MEMBER_BINDING_INSTANCE) {
            gboolean _tmp6_;
            ValaCCodeBaseModuleEmitContext* _tmp8_ = NULL;
            ValaCCodeBaseModuleEmitContext* _tmp9_;
            gchar* _tmp10_ = NULL;
            gchar* _tmp11_;
            gchar* _tmp12_ = NULL;
            gchar* _tmp13_;
            ValaCCodeFunction* _tmp14_ = NULL;
            ValaCCodeFunction* _tmp15_;
            ValaCCodeFunction* function;
            ValaCCodeParameter* _tmp16_ = NULL;
            ValaCCodeParameter* _tmp17_;
            ValaCCodeParameter* _tmp18_ = NULL;
            ValaCCodeParameter* _tmp19_;
            ValaCCodeParameter* _tmp20_ = NULL;
            ValaCCodeParameter* _tmp21_;
            ValaCCodeFunction* _tmp22_ = NULL;
            ValaCCodeVariableDeclarator* _tmp23_ = NULL;
            ValaCCodeVariableDeclarator* _tmp24_;
            ValaCCodeFunction* _tmp25_ = NULL;
            ValaCCodeVariableDeclarator* _tmp26_ = NULL;
            ValaCCodeVariableDeclarator* _tmp27_;
            ValaCCodeIdentifier* _tmp28_ = NULL;
            ValaCCodeIdentifier* _tmp29_;
            ValaCCodeFunctionCall* _tmp30_ = NULL;
            ValaCCodeFunctionCall* _tmp31_;
            ValaCCodeFunctionCall* ccast;
            gchar* _tmp32_ = NULL;
            gchar* _tmp33_;
            gchar* _tmp34_ = NULL;
            gchar* _tmp35_;
            ValaCCodeIdentifier* _tmp36_ = NULL;
            ValaCCodeIdentifier* _tmp37_;
            ValaCCodeFunction* _tmp38_ = NULL;
            ValaCCodeIdentifier* _tmp39_ = NULL;
            ValaCCodeIdentifier* _tmp40_;
            ValaCCodeIdentifier* _tmp41_ = NULL;
            ValaCCodeIdentifier* _tmp42_;
            ValaCCodeMemberAccess* _tmp43_ = NULL;
            ValaCCodeMemberAccess* _tmp44_;
            ValaCCodeFunctionCall* _tmp45_ = NULL;
            ValaCCodeFunctionCall* _tmp46_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeIdentifier* _tmp47_ = NULL;
            ValaCCodeIdentifier* _tmp48_;
            ValaCCodeIdentifier* _tmp49_ = NULL;
            ValaCCodeIdentifier* _tmp50_;
            ValaCCodeIdentifier* _tmp51_ = NULL;
            ValaCCodeIdentifier* _tmp52_;
            ValaCCodeFunction* _tmp53_ = NULL;
            ValaCCodeIdentifier* _tmp54_ = NULL;
            ValaCCodeIdentifier* _tmp55_;
            ValaCCodeIdentifier* _tmp56_ = NULL;
            ValaCCodeIdentifier* _tmp57_;
            ValaCCodeFunctionCall* _tmp58_ = NULL;
            ValaCCodeFunction* _tmp59_ = NULL;
            gchar* _tmp60_ = NULL;
            gchar* _tmp61_;
            gchar* _tmp62_ = NULL;
            gchar* _tmp63_;
            ValaCCodeVariableDeclarator* _tmp64_ = NULL;
            ValaCCodeVariableDeclarator* _tmp65_;
            ValaCCodeFunction* _tmp66_ = NULL;
            ValaCCodeIdentifier* _tmp67_ = NULL;
            ValaCCodeIdentifier* _tmp68_;
            ValaBlock* _tmp69_ = NULL;
            gboolean _tmp70_;
            ValaCCodeFunction* _tmp76_ = NULL;
            ValaCCodeIdentifier* _tmp77_ = NULL;
            ValaCCodeIdentifier* _tmp78_;
            _tmp6_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, ((ValaCCodeBaseModule*) self)->gobject_type);
            if (!_tmp6_) {
                  ValaSourceReference* _tmp7_ = NULL;
                  _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
                  vala_report_error (_tmp7_, "construct blocks require GLib.Object");
                  vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
                  _vala_code_node_unref0 (cl);
                  return;
            }
            _tmp8_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) c);
            _tmp9_ = _tmp8_;
            vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp9_);
            _vala_ccode_base_module_emit_context_unref0 (_tmp9_);
            _tmp10_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp11_ = _tmp10_;
            _tmp12_ = g_strdup_printf ("%s_constructor", _tmp11_);
            _tmp13_ = _tmp12_;
            _tmp14_ = vala_ccode_function_new (_tmp13_, "GObject *");
            _tmp15_ = _tmp14_;
            _g_free0 (_tmp13_);
            _g_free0 (_tmp11_);
            function = _tmp15_;
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
            _tmp16_ = vala_ccode_parameter_new ("type", "GType");
            _tmp17_ = _tmp16_;
            vala_ccode_function_add_parameter (function, _tmp17_);
            _vala_ccode_node_unref0 (_tmp17_);
            _tmp18_ = vala_ccode_parameter_new ("n_construct_properties", "guint");
            _tmp19_ = _tmp18_;
            vala_ccode_function_add_parameter (function, _tmp19_);
            _vala_ccode_node_unref0 (_tmp19_);
            _tmp20_ = vala_ccode_parameter_new ("construct_properties", "GObjectConstructParam *");
            _tmp21_ = _tmp20_;
            vala_ccode_function_add_parameter (function, _tmp21_);
            _vala_ccode_node_unref0 (_tmp21_);
            vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, function);
            vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
            _tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp23_ = vala_ccode_variable_declarator_new ("obj", NULL, NULL);
            _tmp24_ = _tmp23_;
            vala_ccode_function_add_declaration (_tmp22_, "GObject *", (ValaCCodeDeclarator*) _tmp24_, 0);
            _vala_ccode_node_unref0 (_tmp24_);
            _tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp26_ = vala_ccode_variable_declarator_new ("parent_class", NULL, NULL);
            _tmp27_ = _tmp26_;
            vala_ccode_function_add_declaration (_tmp25_, "GObjectClass *", (ValaCCodeDeclarator*) _tmp27_, 0);
            _vala_ccode_node_unref0 (_tmp27_);
            _tmp28_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
            _tmp29_ = _tmp28_;
            _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
            _tmp31_ = _tmp30_;
            _vala_ccode_node_unref0 (_tmp29_);
            ccast = _tmp31_;
            _tmp32_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp33_ = _tmp32_;
            _tmp34_ = g_strdup_printf ("%s_parent_class", _tmp33_);
            _tmp35_ = _tmp34_;
            _tmp36_ = vala_ccode_identifier_new (_tmp35_);
            _tmp37_ = _tmp36_;
            vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp37_);
            _vala_ccode_node_unref0 (_tmp37_);
            _g_free0 (_tmp35_);
            _g_free0 (_tmp33_);
            _tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp39_ = vala_ccode_identifier_new ("parent_class");
            _tmp40_ = _tmp39_;
            vala_ccode_function_add_assignment (_tmp38_, (ValaCCodeExpression*) _tmp40_, (ValaCCodeExpression*) ccast);
            _vala_ccode_node_unref0 (_tmp40_);
            _tmp41_ = vala_ccode_identifier_new ("parent_class");
            _tmp42_ = _tmp41_;
            _tmp43_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp42_, "constructor");
            _tmp44_ = _tmp43_;
            _tmp45_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp44_);
            _tmp46_ = _tmp45_;
            _vala_ccode_node_unref0 (_tmp44_);
            _vala_ccode_node_unref0 (_tmp42_);
            ccall = _tmp46_;
            _tmp47_ = vala_ccode_identifier_new ("type");
            _tmp48_ = _tmp47_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp48_);
            _vala_ccode_node_unref0 (_tmp48_);
            _tmp49_ = vala_ccode_identifier_new ("n_construct_properties");
            _tmp50_ = _tmp49_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp50_);
            _vala_ccode_node_unref0 (_tmp50_);
            _tmp51_ = vala_ccode_identifier_new ("construct_properties");
            _tmp52_ = _tmp51_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp52_);
            _vala_ccode_node_unref0 (_tmp52_);
            _tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp54_ = vala_ccode_identifier_new ("obj");
            _tmp55_ = _tmp54_;
            vala_ccode_function_add_assignment (_tmp53_, (ValaCCodeExpression*) _tmp55_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp55_);
            _tmp56_ = vala_ccode_identifier_new ("obj");
            _tmp57_ = _tmp56_;
            _tmp58_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp57_, (ValaTypeSymbol*) cl);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp58_;
            _vala_ccode_node_unref0 (_tmp57_);
            _tmp59_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp60_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp61_ = _tmp60_;
            _tmp62_ = g_strdup_printf ("%s *", _tmp61_);
            _tmp63_ = _tmp62_;
            _tmp64_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
            _tmp65_ = _tmp64_;
            vala_ccode_function_add_declaration (_tmp59_, _tmp63_, (ValaCCodeDeclarator*) _tmp65_, 0);
            _vala_ccode_node_unref0 (_tmp65_);
            _g_free0 (_tmp63_);
            _g_free0 (_tmp61_);
            _tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp67_ = vala_ccode_identifier_new ("self");
            _tmp68_ = _tmp67_;
            vala_ccode_function_add_assignment (_tmp66_, (ValaCCodeExpression*) _tmp68_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp68_);
            _tmp69_ = vala_subroutine_get_body ((ValaSubroutine*) c);
            vala_code_node_emit ((ValaCodeNode*) _tmp69_, (ValaCodeGenerator*) self);
            _tmp70_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
            if (_tmp70_) {
                  ValaCCodeFunction* _tmp71_ = NULL;
                  ValaCCodeConstant* _tmp72_ = NULL;
                  ValaCCodeConstant* _tmp73_;
                  ValaCCodeVariableDeclarator* _tmp74_ = NULL;
                  ValaCCodeVariableDeclarator* _tmp75_;
                  _tmp71_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp72_ = vala_ccode_constant_new ("NULL");
                  _tmp73_ = _tmp72_;
                  _tmp74_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp73_, NULL);
                  _tmp75_ = _tmp74_;
                  vala_ccode_function_add_declaration (_tmp71_, "GError *", (ValaCCodeDeclarator*) _tmp75_, 0);
                  _vala_ccode_node_unref0 (_tmp75_);
                  _vala_ccode_node_unref0 (_tmp73_);
            }
            _tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp77_ = vala_ccode_identifier_new ("obj");
            _tmp78_ = _tmp77_;
            vala_ccode_function_add_return (_tmp76_, (ValaCCodeExpression*) _tmp78_);
            _vala_ccode_node_unref0 (_tmp78_);
            vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
            vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
            vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
            _vala_ccode_node_unref0 (ccall);
            _vala_ccode_node_unref0 (ccast);
            _vala_ccode_node_unref0 (function);
      } else {
            ValaMemberBinding _tmp79_;
            _tmp79_ = vala_constructor_get_binding (c);
            if (_tmp79_ == VALA_MEMBER_BINDING_CLASS) {
                  gboolean _tmp80_;
                  ValaBlock* _tmp82_ = NULL;
                  gboolean _tmp83_;
                  _tmp80_ = vala_class_get_is_compact (cl);
                  if (_tmp80_) {
                        ValaSourceReference* _tmp81_ = NULL;
                        _tmp81_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
                        vala_report_error (_tmp81_, "class constructors are not supported in compact classes");
                        vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
                        _vala_code_node_unref0 (cl);
                        return;
                  }
                  vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->base_init_context);
                  _tmp82_ = vala_subroutine_get_body ((ValaSubroutine*) c);
                  vala_code_node_emit ((ValaCodeNode*) _tmp82_, (ValaCodeGenerator*) self);
                  _tmp83_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
                  if (_tmp83_) {
                        ValaCCodeFunction* _tmp84_ = NULL;
                        ValaCCodeConstant* _tmp85_ = NULL;
                        ValaCCodeConstant* _tmp86_;
                        ValaCCodeVariableDeclarator* _tmp87_ = NULL;
                        ValaCCodeVariableDeclarator* _tmp88_;
                        _tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp85_ = vala_ccode_constant_new ("NULL");
                        _tmp86_ = _tmp85_;
                        _tmp87_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp86_, NULL);
                        _tmp88_ = _tmp87_;
                        vala_ccode_function_add_declaration (_tmp84_, "GError *", (ValaCCodeDeclarator*) _tmp88_, 0);
                        _vala_ccode_node_unref0 (_tmp88_);
                        _vala_ccode_node_unref0 (_tmp86_);
                  }
                  vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
            } else {
                  ValaMemberBinding _tmp89_;
                  _tmp89_ = vala_constructor_get_binding (c);
                  if (_tmp89_ == VALA_MEMBER_BINDING_STATIC) {
                        gboolean _tmp90_;
                        ValaBlock* _tmp92_ = NULL;
                        gboolean _tmp93_;
                        _tmp90_ = vala_class_get_is_compact (cl);
                        if (_tmp90_) {
                              ValaSourceReference* _tmp91_ = NULL;
                              _tmp91_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
                              vala_report_error (_tmp91_, "static constructors are not supported in compact classes");
                              vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
                              _vala_code_node_unref0 (cl);
                              return;
                        }
                        vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->class_init_context);
                        _tmp92_ = vala_subroutine_get_body ((ValaSubroutine*) c);
                        vala_code_node_emit ((ValaCodeNode*) _tmp92_, (ValaCodeGenerator*) self);
                        _tmp93_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
                        if (_tmp93_) {
                              ValaCCodeFunction* _tmp94_ = NULL;
                              ValaCCodeConstant* _tmp95_ = NULL;
                              ValaCCodeConstant* _tmp96_;
                              ValaCCodeVariableDeclarator* _tmp97_ = NULL;
                              ValaCCodeVariableDeclarator* _tmp98_;
                              _tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp95_ = vala_ccode_constant_new ("NULL");
                              _tmp96_ = _tmp95_;
                              _tmp97_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp96_, NULL);
                              _tmp98_ = _tmp97_;
                              vala_ccode_function_add_declaration (_tmp94_, "GError *", (ValaCCodeDeclarator*) _tmp98_, 0);
                              _vala_ccode_node_unref0 (_tmp98_);
                              _vala_ccode_node_unref0 (_tmp96_);
                        }
                        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
                  } else {
                        ValaSourceReference* _tmp99_ = NULL;
                        _tmp99_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
                        vala_report_error (_tmp99_, "internal error: constructors must have instance, class, or static bind" \
"ing");
                  }
            }
      }
      ((ValaCCodeBaseModule*) self)->in_static_or_class_context = FALSE;
      ((ValaCCodeBaseModule*) self)->in_constructor = FALSE;
      _vala_code_node_unref0 (cl);
}


static gchar* vala_gobject_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* base, ValaDynamicProperty* prop) {
      ValaGObjectModule * self;
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      ValaDataType* _tmp1_ = NULL;
      ValaTypeSymbol* _tmp2_ = NULL;
      const gchar* _tmp7_ = NULL;
      gint _tmp8_;
      gchar* _tmp9_ = NULL;
      gchar* getter_cname;
      ValaDataType* _tmp10_ = NULL;
      gchar* _tmp11_ = NULL;
      gchar* _tmp12_;
      ValaCCodeFunction* _tmp13_ = NULL;
      ValaCCodeFunction* _tmp14_;
      ValaCCodeFunction* func;
      ValaCCodeModifiers _tmp15_;
      ValaDataType* _tmp16_ = NULL;
      gchar* _tmp17_ = NULL;
      gchar* _tmp18_;
      ValaCCodeParameter* _tmp19_ = NULL;
      ValaCCodeParameter* _tmp20_;
      ValaCCodeBlock* _tmp21_ = NULL;
      ValaCCodeBlock* block;
      self = (ValaGObjectModule*) base;
      g_return_val_if_fail (prop != NULL, NULL);
      _tmp1_ = vala_dynamic_property_get_dynamic_type (prop);
      _tmp2_ = vala_data_type_get_data_type (_tmp1_);
      if (_tmp2_ == NULL) {
            _tmp0_ = TRUE;
      } else {
            ValaDataType* _tmp3_ = NULL;
            ValaTypeSymbol* _tmp4_ = NULL;
            gboolean _tmp5_;
            _tmp3_ = vala_dynamic_property_get_dynamic_type (prop);
            _tmp4_ = vala_data_type_get_data_type (_tmp3_);
            _tmp5_ = vala_typesymbol_is_subtype_of (_tmp4_, ((ValaCCodeBaseModule*) self)->gobject_type);
            _tmp0_ = !_tmp5_;
      }
      if (_tmp0_) {
            gchar* _tmp6_ = NULL;
            _tmp6_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_property_getter_cname ((ValaCCodeBaseModule*) VALA_GTYPE_MODULE (self), prop);
            result = _tmp6_;
            return result;
      }
      _tmp7_ = vala_symbol_get_name ((ValaSymbol*) prop);
      _tmp8_ = self->priv->dynamic_property_id;
      self->priv->dynamic_property_id = _tmp8_ + 1;
      _tmp9_ = g_strdup_printf ("_dynamic_get_%s%d", _tmp7_, _tmp8_);
      getter_cname = _tmp9_;
      _tmp10_ = vala_property_get_property_type ((ValaProperty*) prop);
      _tmp11_ = vala_data_type_get_cname (_tmp10_);
      _tmp12_ = _tmp11_;
      _tmp13_ = vala_ccode_function_new (getter_cname, _tmp12_);
      _tmp14_ = _tmp13_;
      _g_free0 (_tmp12_);
      func = _tmp14_;
      _tmp15_ = vala_ccode_function_get_modifiers (func);
      vala_ccode_function_set_modifiers (func, _tmp15_ | (VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE));
      _tmp16_ = vala_dynamic_property_get_dynamic_type (prop);
      _tmp17_ = vala_data_type_get_cname (_tmp16_);
      _tmp18_ = _tmp17_;
      _tmp19_ = vala_ccode_parameter_new ("obj", _tmp18_);
      _tmp20_ = _tmp19_;
      vala_ccode_function_add_parameter (func, _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _g_free0 (_tmp18_);
      _tmp21_ = vala_ccode_block_new ();
      block = _tmp21_;
      vala_gobject_module_generate_gobject_property_getter_wrapper (self, prop, block);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, func);
      vala_ccode_function_set_block (func, block);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, func);
      result = getter_cname;
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (func);
      return result;
}


static gchar* vala_gobject_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* base, ValaDynamicProperty* prop) {
      ValaGObjectModule * self;
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      ValaDataType* _tmp1_ = NULL;
      ValaTypeSymbol* _tmp2_ = NULL;
      const gchar* _tmp7_ = NULL;
      gint _tmp8_;
      gchar* _tmp9_ = NULL;
      gchar* setter_cname;
      ValaCCodeFunction* _tmp10_ = NULL;
      ValaCCodeFunction* func;
      ValaCCodeModifiers _tmp11_;
      ValaDataType* _tmp12_ = NULL;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      ValaCCodeParameter* _tmp15_ = NULL;
      ValaCCodeParameter* _tmp16_;
      ValaDataType* _tmp17_ = NULL;
      gchar* _tmp18_ = NULL;
      gchar* _tmp19_;
      ValaCCodeParameter* _tmp20_ = NULL;
      ValaCCodeParameter* _tmp21_;
      ValaCCodeBlock* _tmp22_ = NULL;
      ValaCCodeBlock* block;
      self = (ValaGObjectModule*) base;
      g_return_val_if_fail (prop != NULL, NULL);
      _tmp1_ = vala_dynamic_property_get_dynamic_type (prop);
      _tmp2_ = vala_data_type_get_data_type (_tmp1_);
      if (_tmp2_ == NULL) {
            _tmp0_ = TRUE;
      } else {
            ValaDataType* _tmp3_ = NULL;
            ValaTypeSymbol* _tmp4_ = NULL;
            gboolean _tmp5_;
            _tmp3_ = vala_dynamic_property_get_dynamic_type (prop);
            _tmp4_ = vala_data_type_get_data_type (_tmp3_);
            _tmp5_ = vala_typesymbol_is_subtype_of (_tmp4_, ((ValaCCodeBaseModule*) self)->gobject_type);
            _tmp0_ = !_tmp5_;
      }
      if (_tmp0_) {
            gchar* _tmp6_ = NULL;
            _tmp6_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_property_setter_cname ((ValaCCodeBaseModule*) VALA_GTYPE_MODULE (self), prop);
            result = _tmp6_;
            return result;
      }
      _tmp7_ = vala_symbol_get_name ((ValaSymbol*) prop);
      _tmp8_ = self->priv->dynamic_property_id;
      self->priv->dynamic_property_id = _tmp8_ + 1;
      _tmp9_ = g_strdup_printf ("_dynamic_set_%s%d", _tmp7_, _tmp8_);
      setter_cname = _tmp9_;
      _tmp10_ = vala_ccode_function_new (setter_cname, "void");
      func = _tmp10_;
      _tmp11_ = vala_ccode_function_get_modifiers (func);
      vala_ccode_function_set_modifiers (func, _tmp11_ | (VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE));
      _tmp12_ = vala_dynamic_property_get_dynamic_type (prop);
      _tmp13_ = vala_data_type_get_cname (_tmp12_);
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_parameter_new ("obj", _tmp14_);
      _tmp16_ = _tmp15_;
      vala_ccode_function_add_parameter (func, _tmp16_);
      _vala_ccode_node_unref0 (_tmp16_);
      _g_free0 (_tmp14_);
      _tmp17_ = vala_property_get_property_type ((ValaProperty*) prop);
      _tmp18_ = vala_data_type_get_cname (_tmp17_);
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_parameter_new ("value", _tmp19_);
      _tmp21_ = _tmp20_;
      vala_ccode_function_add_parameter (func, _tmp21_);
      _vala_ccode_node_unref0 (_tmp21_);
      _g_free0 (_tmp19_);
      _tmp22_ = vala_ccode_block_new ();
      block = _tmp22_;
      vala_gobject_module_generate_gobject_property_setter_wrapper (self, prop, block);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, func);
      vala_ccode_function_set_block (func, block);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, func);
      result = setter_cname;
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (func);
      return result;
}


static void vala_gobject_module_generate_gobject_property_getter_wrapper (ValaGObjectModule* self, ValaDynamicProperty* node, ValaCCodeBlock* block) {
      ValaDataType* _tmp0_ = NULL;
      gchar* _tmp1_ = NULL;
      gchar* _tmp2_;
      ValaCCodeDeclaration* _tmp3_ = NULL;
      ValaCCodeDeclaration* _tmp4_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp5_ = NULL;
      ValaCCodeVariableDeclarator* _tmp6_;
      ValaCCodeIdentifier* _tmp7_ = NULL;
      ValaCCodeIdentifier* _tmp8_;
      ValaCCodeFunctionCall* _tmp9_ = NULL;
      ValaCCodeFunctionCall* _tmp10_;
      ValaCCodeFunctionCall* call;
      ValaCCodeIdentifier* _tmp11_ = NULL;
      ValaCCodeIdentifier* _tmp12_;
      ValaCCodeConstant* _tmp13_ = NULL;
      ValaCCodeConstant* _tmp14_;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      ValaCCodeUnaryExpression* _tmp17_ = NULL;
      ValaCCodeUnaryExpression* _tmp18_;
      ValaCCodeConstant* _tmp19_ = NULL;
      ValaCCodeConstant* _tmp20_;
      ValaCCodeExpressionStatement* _tmp21_ = NULL;
      ValaCCodeExpressionStatement* _tmp22_;
      ValaCCodeIdentifier* _tmp23_ = NULL;
      ValaCCodeIdentifier* _tmp24_;
      ValaCCodeReturnStatement* _tmp25_ = NULL;
      ValaCCodeReturnStatement* _tmp26_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (node != NULL);
      g_return_if_fail (block != NULL);
      _tmp0_ = vala_property_get_property_type ((ValaProperty*) node);
      _tmp1_ = vala_data_type_get_cname (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = vala_ccode_declaration_new (_tmp2_);
      _tmp4_ = _tmp3_;
      _g_free0 (_tmp2_);
      _cdecl_ = _tmp4_;
      _tmp5_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
      _tmp6_ = _tmp5_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp6_);
      _vala_ccode_node_unref0 (_tmp6_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
      _tmp7_ = vala_ccode_identifier_new ("g_object_get");
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp8_);
      _tmp10_ = _tmp9_;
      _vala_ccode_node_unref0 (_tmp8_);
      call = _tmp10_;
      _tmp11_ = vala_ccode_identifier_new ("obj");
      _tmp12_ = _tmp11_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      _tmp13_ = vala_property_get_canonical_cconstant ((ValaProperty*) node);
      _tmp14_ = _tmp13_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp14_);
      _vala_ccode_node_unref0 (_tmp14_);
      _tmp15_ = vala_ccode_identifier_new ("result");
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp16_);
      _tmp18_ = _tmp17_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      _vala_ccode_node_unref0 (_tmp16_);
      _tmp19_ = vala_ccode_constant_new ("NULL");
      _tmp20_ = _tmp19_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _tmp21_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) call);
      _tmp22_ = _tmp21_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp22_);
      _vala_ccode_node_unref0 (_tmp22_);
      _tmp23_ = vala_ccode_identifier_new ("result");
      _tmp24_ = _tmp23_;
      _tmp25_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp24_);
      _tmp26_ = _tmp25_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      _vala_ccode_node_unref0 (_tmp24_);
      _vala_ccode_node_unref0 (call);
      _vala_ccode_node_unref0 (_cdecl_);
}


static void vala_gobject_module_generate_gobject_property_setter_wrapper (ValaGObjectModule* self, ValaDynamicProperty* node, ValaCCodeBlock* block) {
      ValaCCodeIdentifier* _tmp0_ = NULL;
      ValaCCodeIdentifier* _tmp1_;
      ValaCCodeFunctionCall* _tmp2_ = NULL;
      ValaCCodeFunctionCall* _tmp3_;
      ValaCCodeFunctionCall* call;
      ValaCCodeIdentifier* _tmp4_ = NULL;
      ValaCCodeIdentifier* _tmp5_;
      ValaCCodeConstant* _tmp6_ = NULL;
      ValaCCodeConstant* _tmp7_;
      ValaCCodeIdentifier* _tmp8_ = NULL;
      ValaCCodeIdentifier* _tmp9_;
      ValaCCodeConstant* _tmp10_ = NULL;
      ValaCCodeConstant* _tmp11_;
      ValaCCodeExpressionStatement* _tmp12_ = NULL;
      ValaCCodeExpressionStatement* _tmp13_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (node != NULL);
      g_return_if_fail (block != NULL);
      _tmp0_ = vala_ccode_identifier_new ("g_object_set");
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
      _tmp3_ = _tmp2_;
      _vala_ccode_node_unref0 (_tmp1_);
      call = _tmp3_;
      _tmp4_ = vala_ccode_identifier_new ("obj");
      _tmp5_ = _tmp4_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _tmp6_ = vala_property_get_canonical_cconstant ((ValaProperty*) node);
      _tmp7_ = _tmp6_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_identifier_new ("value");
      _tmp9_ = _tmp8_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_constant_new ("NULL");
      _tmp11_ = _tmp10_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) call);
      _tmp13_ = _tmp12_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _vala_ccode_node_unref0 (call);
}


static gchar* vala_gobject_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* base, ValaDynamicSignal* node) {
      ValaGObjectModule * self;
      gchar* result = NULL;
      const gchar* _tmp0_ = NULL;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      self = (ValaGObjectModule*) base;
      g_return_val_if_fail (node != NULL, NULL);
      _tmp0_ = vala_symbol_get_name ((ValaSymbol*) node);
      _tmp1_ = self->priv->signal_wrapper_id;
      self->priv->signal_wrapper_id = _tmp1_ + 1;
      _tmp2_ = g_strdup_printf ("dynamic_%s%d_", _tmp0_, _tmp1_);
      result = _tmp2_;
      return result;
}


static gchar* vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* base, ValaDynamicSignal* sig) {
      ValaGObjectModule * self;
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      ValaDataType* _tmp1_ = NULL;
      ValaTypeSymbol* _tmp2_ = NULL;
      gchar* _tmp7_ = NULL;
      gchar* _tmp8_;
      gchar* _tmp9_ = NULL;
      gchar* _tmp10_;
      gchar* connect_wrapper_name;
      ValaCCodeFunction* _tmp11_ = NULL;
      ValaCCodeFunction* func;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeParameter* _tmp14_ = NULL;
      ValaCCodeParameter* _tmp15_;
      ValaCCodeParameter* _tmp16_ = NULL;
      ValaCCodeParameter* _tmp17_;
      ValaCCodeParameter* _tmp18_ = NULL;
      ValaCCodeParameter* _tmp19_;
      ValaCCodeBlock* _tmp20_ = NULL;
      ValaCCodeBlock* block;
      self = (ValaGObjectModule*) base;
      g_return_val_if_fail (sig != NULL, NULL);
      _tmp1_ = vala_dynamic_signal_get_dynamic_type (sig);
      _tmp2_ = vala_data_type_get_data_type (_tmp1_);
      if (_tmp2_ == NULL) {
            _tmp0_ = TRUE;
      } else {
            ValaDataType* _tmp3_ = NULL;
            ValaTypeSymbol* _tmp4_ = NULL;
            gboolean _tmp5_;
            _tmp3_ = vala_dynamic_signal_get_dynamic_type (sig);
            _tmp4_ = vala_data_type_get_data_type (_tmp3_);
            _tmp5_ = vala_typesymbol_is_subtype_of (_tmp4_, ((ValaCCodeBaseModule*) self)->gobject_type);
            _tmp0_ = !_tmp5_;
      }
      if (_tmp0_) {
            gchar* _tmp6_ = NULL;
            _tmp6_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_signal_connect_wrapper_name ((ValaCCodeBaseModule*) VALA_GTYPE_MODULE (self), sig);
            result = _tmp6_;
            return result;
      }
      _tmp7_ = vala_ccode_base_module_get_dynamic_signal_cname ((ValaCCodeBaseModule*) self, sig);
      _tmp8_ = _tmp7_;
      _tmp9_ = g_strdup_printf ("_%sconnect", _tmp8_);
      _tmp10_ = _tmp9_;
      _g_free0 (_tmp8_);
      connect_wrapper_name = _tmp10_;
      _tmp11_ = vala_ccode_function_new (connect_wrapper_name, "void");
      func = _tmp11_;
      _tmp12_ = vala_ccode_parameter_new ("obj", "gpointer");
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (func, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp14_ = vala_ccode_parameter_new ("signal_name", "const char *");
      _tmp15_ = _tmp14_;
      vala_ccode_function_add_parameter (func, _tmp15_);
      _vala_ccode_node_unref0 (_tmp15_);
      _tmp16_ = vala_ccode_parameter_new ("handler", "GCallback");
      _tmp17_ = _tmp16_;
      vala_ccode_function_add_parameter (func, _tmp17_);
      _vala_ccode_node_unref0 (_tmp17_);
      _tmp18_ = vala_ccode_parameter_new ("data", "gpointer");
      _tmp19_ = _tmp18_;
      vala_ccode_function_add_parameter (func, _tmp19_);
      _vala_ccode_node_unref0 (_tmp19_);
      _tmp20_ = vala_ccode_block_new ();
      block = _tmp20_;
      vala_gobject_module_generate_gobject_connect_wrapper (self, sig, block, FALSE);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, func);
      vala_ccode_function_set_block (func, block);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, func);
      result = connect_wrapper_name;
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (func);
      return result;
}


static gchar* vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* base, ValaDynamicSignal* sig) {
      ValaGObjectModule * self;
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      ValaDataType* _tmp1_ = NULL;
      ValaTypeSymbol* _tmp2_ = NULL;
      gchar* _tmp7_ = NULL;
      gchar* _tmp8_;
      gchar* _tmp9_ = NULL;
      gchar* _tmp10_;
      gchar* connect_wrapper_name;
      ValaCCodeFunction* _tmp11_ = NULL;
      ValaCCodeFunction* func;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeParameter* _tmp14_ = NULL;
      ValaCCodeParameter* _tmp15_;
      ValaCCodeParameter* _tmp16_ = NULL;
      ValaCCodeParameter* _tmp17_;
      ValaCCodeParameter* _tmp18_ = NULL;
      ValaCCodeParameter* _tmp19_;
      ValaCCodeBlock* _tmp20_ = NULL;
      ValaCCodeBlock* block;
      self = (ValaGObjectModule*) base;
      g_return_val_if_fail (sig != NULL, NULL);
      _tmp1_ = vala_dynamic_signal_get_dynamic_type (sig);
      _tmp2_ = vala_data_type_get_data_type (_tmp1_);
      if (_tmp2_ == NULL) {
            _tmp0_ = TRUE;
      } else {
            ValaDataType* _tmp3_ = NULL;
            ValaTypeSymbol* _tmp4_ = NULL;
            gboolean _tmp5_;
            _tmp3_ = vala_dynamic_signal_get_dynamic_type (sig);
            _tmp4_ = vala_data_type_get_data_type (_tmp3_);
            _tmp5_ = vala_typesymbol_is_subtype_of (_tmp4_, ((ValaCCodeBaseModule*) self)->gobject_type);
            _tmp0_ = !_tmp5_;
      }
      if (_tmp0_) {
            gchar* _tmp6_ = NULL;
            _tmp6_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_signal_connect_wrapper_name ((ValaCCodeBaseModule*) VALA_GTYPE_MODULE (self), sig);
            result = _tmp6_;
            return result;
      }
      _tmp7_ = vala_ccode_base_module_get_dynamic_signal_cname ((ValaCCodeBaseModule*) self, sig);
      _tmp8_ = _tmp7_;
      _tmp9_ = g_strdup_printf ("_%sconnect_after", _tmp8_);
      _tmp10_ = _tmp9_;
      _g_free0 (_tmp8_);
      connect_wrapper_name = _tmp10_;
      _tmp11_ = vala_ccode_function_new (connect_wrapper_name, "void");
      func = _tmp11_;
      _tmp12_ = vala_ccode_parameter_new ("obj", "gpointer");
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (func, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp14_ = vala_ccode_parameter_new ("signal_name", "const char *");
      _tmp15_ = _tmp14_;
      vala_ccode_function_add_parameter (func, _tmp15_);
      _vala_ccode_node_unref0 (_tmp15_);
      _tmp16_ = vala_ccode_parameter_new ("handler", "GCallback");
      _tmp17_ = _tmp16_;
      vala_ccode_function_add_parameter (func, _tmp17_);
      _vala_ccode_node_unref0 (_tmp17_);
      _tmp18_ = vala_ccode_parameter_new ("data", "gpointer");
      _tmp19_ = _tmp18_;
      vala_ccode_function_add_parameter (func, _tmp19_);
      _vala_ccode_node_unref0 (_tmp19_);
      _tmp20_ = vala_ccode_block_new ();
      block = _tmp20_;
      vala_gobject_module_generate_gobject_connect_wrapper (self, sig, block, TRUE);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, func);
      vala_ccode_function_set_block (func, block);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, func);
      result = connect_wrapper_name;
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (func);
      return result;
}


static void vala_gobject_module_generate_gobject_connect_wrapper (ValaGObjectModule* self, ValaDynamicSignal* sig, ValaCCodeBlock* block, gboolean after) {
      ValaExpression* _tmp0_ = NULL;
      ValaSymbol* _tmp1_ = NULL;
      ValaMethod* _tmp2_;
      ValaMethod* m;
      gchar* _tmp3_;
      gchar* connect_func;
      ValaMemberBinding _tmp4_;
      ValaCCodeIdentifier* _tmp7_ = NULL;
      ValaCCodeIdentifier* _tmp8_;
      ValaCCodeFunctionCall* _tmp9_ = NULL;
      ValaCCodeFunctionCall* _tmp10_;
      ValaCCodeFunctionCall* call;
      ValaCCodeIdentifier* _tmp11_ = NULL;
      ValaCCodeIdentifier* _tmp12_;
      ValaCCodeIdentifier* _tmp13_ = NULL;
      ValaCCodeIdentifier* _tmp14_;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      ValaCCodeIdentifier* _tmp17_ = NULL;
      ValaCCodeIdentifier* _tmp18_;
      ValaMemberBinding _tmp19_;
      ValaCCodeExpressionStatement* _tmp24_ = NULL;
      ValaCCodeExpressionStatement* _tmp25_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (sig != NULL);
      g_return_if_fail (block != NULL);
      _tmp0_ = vala_dynamic_signal_get_handler (sig);
      _tmp1_ = vala_expression_get_symbol_reference (_tmp0_);
      _tmp2_ = _vala_code_node_ref0 (VALA_METHOD (_tmp1_));
      m = _tmp2_;
      vala_code_node_accept ((ValaCodeNode*) sig, (ValaCodeVisitor*) self);
      _tmp3_ = g_strdup ("g_signal_connect_object");
      connect_func = _tmp3_;
      _tmp4_ = vala_method_get_binding (m);
      if (_tmp4_ != VALA_MEMBER_BINDING_INSTANCE) {
            if (!after) {
                  gchar* _tmp5_;
                  _tmp5_ = g_strdup ("g_signal_connect");
                  _g_free0 (connect_func);
                  connect_func = _tmp5_;
            } else {
                  gchar* _tmp6_;
                  _tmp6_ = g_strdup ("g_signal_connect_after");
                  _g_free0 (connect_func);
                  connect_func = _tmp6_;
            }
      }
      _tmp7_ = vala_ccode_identifier_new (connect_func);
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp8_);
      _tmp10_ = _tmp9_;
      _vala_ccode_node_unref0 (_tmp8_);
      call = _tmp10_;
      _tmp11_ = vala_ccode_identifier_new ("obj");
      _tmp12_ = _tmp11_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      _tmp13_ = vala_ccode_identifier_new ("signal_name");
      _tmp14_ = _tmp13_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp14_);
      _vala_ccode_node_unref0 (_tmp14_);
      _tmp15_ = vala_ccode_identifier_new ("handler");
      _tmp16_ = _tmp15_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp16_);
      _vala_ccode_node_unref0 (_tmp16_);
      _tmp17_ = vala_ccode_identifier_new ("data");
      _tmp18_ = _tmp17_;
      vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      _tmp19_ = vala_method_get_binding (m);
      if (_tmp19_ == VALA_MEMBER_BINDING_INSTANCE) {
            if (!after) {
                  ValaCCodeConstant* _tmp20_ = NULL;
                  ValaCCodeConstant* _tmp21_;
                  _tmp20_ = vala_ccode_constant_new ("0");
                  _tmp21_ = _tmp20_;
                  vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp21_);
                  _vala_ccode_node_unref0 (_tmp21_);
            } else {
                  ValaCCodeConstant* _tmp22_ = NULL;
                  ValaCCodeConstant* _tmp23_;
                  _tmp22_ = vala_ccode_constant_new ("G_CONNECT_AFTER");
                  _tmp23_ = _tmp22_;
                  vala_ccode_function_call_add_argument (call, (ValaCCodeExpression*) _tmp23_);
                  _vala_ccode_node_unref0 (_tmp23_);
            }
      }
      _tmp24_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) call);
      _tmp25_ = _tmp24_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp25_);
      _vala_ccode_node_unref0 (_tmp25_);
      _vala_ccode_node_unref0 (call);
      _g_free0 (connect_func);
      _vala_code_node_unref0 (m);
}


static void vala_gobject_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) {
      ValaGObjectModule * self;
      gboolean _tmp0_ = FALSE;
      gboolean _tmp1_;
      self = (ValaGObjectModule*) base;
      g_return_if_fail (prop != NULL);
      VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_property ((ValaCodeVisitor*) VALA_GTYPE_MODULE (self), prop);
      _tmp1_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, prop);
      if (_tmp1_) {
            ValaSymbol* _tmp2_ = NULL;
            _tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
            _tmp0_ = VALA_IS_CLASS (_tmp2_);
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            gchar* _tmp3_ = NULL;
            gchar* _tmp4_;
            ValaCCodeEnumValue* _tmp5_ = NULL;
            ValaCCodeEnumValue* _tmp6_;
            _tmp3_ = vala_property_get_upper_case_cname (prop);
            _tmp4_ = _tmp3_;
            _tmp5_ = vala_ccode_enum_value_new (_tmp4_, NULL);
            _tmp6_ = _tmp5_;
            vala_ccode_enum_add_value (((ValaCCodeBaseModule*) self)->prop_enum, _tmp6_);
            _vala_ccode_node_unref0 (_tmp6_);
            _g_free0 (_tmp4_);
      }
}


static gchar string_get (const gchar* self, glong index) {
      gchar result = '\0';
      g_return_val_if_fail (self != NULL, '\0');
      result = ((gchar*) self)[index];
      return result;
}


static gboolean vala_gobject_module_real_is_gobject_property (ValaCCodeBaseModule* base, ValaProperty* prop) {
      ValaGObjectModule * self;
      gboolean result = FALSE;
      ValaSymbol* _tmp0_ = NULL;
      ValaSymbol* _tmp1_;
      ValaObjectTypeSymbol* _tmp2_;
      ValaObjectTypeSymbol* type_sym;
      gboolean _tmp3_ = FALSE;
      ValaMemberBinding _tmp5_;
      ValaSymbolAccessibility _tmp6_;
      ValaDataType* _tmp7_ = NULL;
      ValaTypeSymbol* _tmp8_ = NULL;
      ValaTypeSymbol* _tmp9_;
      ValaStruct* _tmp10_;
      ValaStruct* st;
      gboolean _tmp11_ = FALSE;
      gboolean _tmp16_ = FALSE;
      ValaDataType* _tmp17_ = NULL;
      ValaDataType* _tmp22_ = NULL;
      ValaDataType* _tmp23_;
      ValaDelegateType* _tmp24_;
      ValaDelegateType* d;
      gboolean _tmp25_ = FALSE;
      gboolean _tmp28_ = FALSE;
      gboolean _tmp29_ = FALSE;
      const gchar* _tmp33_ = NULL;
      gchar _tmp34_;
      gboolean _tmp35_;
      gboolean _tmp36_ = FALSE;
      self = (ValaGObjectModule*) base;
      g_return_val_if_fail (prop != NULL, FALSE);
      _tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_OBJECT_TYPE_SYMBOL (_tmp1_) ? ((ValaObjectTypeSymbol*) _tmp1_) : NULL);
      type_sym = _tmp2_;
      if (type_sym == NULL) {
            _tmp3_ = TRUE;
      } else {
            gboolean _tmp4_;
            _tmp4_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) type_sym, ((ValaCCodeBaseModule*) self)->gobject_type);
            _tmp3_ = !_tmp4_;
      }
      if (_tmp3_) {
            result = FALSE;
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      _tmp5_ = vala_property_get_binding (prop);
      if (_tmp5_ != VALA_MEMBER_BINDING_INSTANCE) {
            result = FALSE;
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      _tmp6_ = vala_symbol_get_access ((ValaSymbol*) prop);
      if (_tmp6_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
            result = FALSE;
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      _tmp7_ = vala_property_get_property_type (prop);
      _tmp8_ = vala_data_type_get_data_type (_tmp7_);
      _tmp9_ = _tmp8_;
      _tmp10_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp9_) ? ((ValaStruct*) _tmp9_) : NULL);
      st = _tmp10_;
      if (st != NULL) {
            gboolean _tmp12_ = FALSE;
            gboolean _tmp13_;
            _tmp13_ = vala_struct_get_has_type_id (st);
            if (!_tmp13_) {
                  _tmp12_ = TRUE;
            } else {
                  ValaDataType* _tmp14_ = NULL;
                  gboolean _tmp15_;
                  _tmp14_ = vala_property_get_property_type (prop);
                  _tmp15_ = vala_data_type_get_nullable (_tmp14_);
                  _tmp12_ = _tmp15_;
            }
            _tmp11_ = _tmp12_;
      } else {
            _tmp11_ = FALSE;
      }
      if (_tmp11_) {
            result = FALSE;
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      _tmp17_ = vala_property_get_property_type (prop);
      if (VALA_IS_ARRAY_TYPE (_tmp17_)) {
            ValaDataType* _tmp18_ = NULL;
            ValaDataType* _tmp19_ = NULL;
            ValaTypeSymbol* _tmp20_ = NULL;
            ValaTypeSymbol* _tmp21_ = NULL;
            _tmp18_ = vala_property_get_property_type (prop);
            _tmp19_ = vala_array_type_get_element_type (VALA_ARRAY_TYPE (_tmp18_));
            _tmp20_ = vala_data_type_get_data_type (_tmp19_);
            _tmp21_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
            _tmp16_ = _tmp20_ != _tmp21_;
      } else {
            _tmp16_ = FALSE;
      }
      if (_tmp16_) {
            result = FALSE;
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      _tmp22_ = vala_property_get_property_type (prop);
      _tmp23_ = _tmp22_;
      _tmp24_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp23_) ? ((ValaDelegateType*) _tmp23_) : NULL);
      d = _tmp24_;
      if (d != NULL) {
            ValaDelegate* _tmp26_ = NULL;
            gboolean _tmp27_;
            _tmp26_ = vala_delegate_type_get_delegate_symbol (d);
            _tmp27_ = vala_delegate_get_has_target (_tmp26_);
            _tmp25_ = _tmp27_;
      } else {
            _tmp25_ = FALSE;
      }
      if (_tmp25_) {
            result = FALSE;
            _vala_code_node_unref0 (d);
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      if (VALA_IS_CLASS (type_sym)) {
            ValaProperty* _tmp30_ = NULL;
            _tmp30_ = vala_property_get_base_interface_property (prop);
            _tmp29_ = _tmp30_ != NULL;
      } else {
            _tmp29_ = FALSE;
      }
      if (_tmp29_) {
            ValaProperty* _tmp31_ = NULL;
            gboolean _tmp32_;
            _tmp31_ = vala_property_get_base_interface_property (prop);
            _tmp32_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, _tmp31_);
            _tmp28_ = !_tmp32_;
      } else {
            _tmp28_ = FALSE;
      }
      if (_tmp28_) {
            result = FALSE;
            _vala_code_node_unref0 (d);
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      _tmp33_ = vala_symbol_get_name ((ValaSymbol*) prop);
      _tmp34_ = string_get (_tmp33_, (glong) 0);
      _tmp35_ = g_ascii_isalpha (_tmp34_);
      if (!_tmp35_) {
            result = FALSE;
            _vala_code_node_unref0 (d);
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      if (VALA_IS_INTERFACE (type_sym)) {
            ValaAttribute* _tmp37_ = NULL;
            ValaAttribute* _tmp38_;
            _tmp37_ = vala_code_node_get_attribute ((ValaCodeNode*) type_sym, "DBus");
            _tmp38_ = _tmp37_;
            _tmp36_ = _tmp38_ != NULL;
            _vala_code_node_unref0 (_tmp38_);
      } else {
            _tmp36_ = FALSE;
      }
      if (_tmp36_) {
            result = FALSE;
            _vala_code_node_unref0 (d);
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (type_sym);
            return result;
      }
      result = TRUE;
      _vala_code_node_unref0 (d);
      _vala_code_node_unref0 (st);
      _vala_code_node_unref0 (type_sym);
      return result;
}


static void vala_gobject_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
      ValaGObjectModule * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaGObjectModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_method_call_get_call (expr);
      if (VALA_IS_MEMBER_ACCESS (_tmp0_)) {
            ValaExpression* _tmp1_ = NULL;
            ValaExpression* _tmp2_;
            ValaMemberAccess* _tmp3_;
            ValaMemberAccess* ma;
            gboolean _tmp4_ = FALSE;
            gboolean _tmp5_ = FALSE;
            ValaExpression* _tmp6_ = NULL;
            _tmp1_ = vala_method_call_get_call (expr);
            _tmp2_ = _tmp1_;
            _tmp3_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp2_) ? ((ValaMemberAccess*) _tmp2_) : NULL);
            ma = _tmp3_;
            _tmp6_ = vala_member_access_get_inner (ma);
            if (_tmp6_ != NULL) {
                  ValaExpression* _tmp7_ = NULL;
                  ValaSymbol* _tmp8_ = NULL;
                  _tmp7_ = vala_member_access_get_inner (ma);
                  _tmp8_ = vala_expression_get_symbol_reference (_tmp7_);
                  _tmp5_ = _tmp8_ == VALA_SYMBOL (((ValaCCodeBaseModule*) self)->gobject_type);
            } else {
                  _tmp5_ = FALSE;
            }
            if (_tmp5_) {
                  gboolean _tmp9_ = FALSE;
                  const gchar* _tmp10_ = NULL;
                  _tmp10_ = vala_member_access_get_member_name (ma);
                  if (g_strcmp0 (_tmp10_, "new") == 0) {
                        _tmp9_ = TRUE;
                  } else {
                        const gchar* _tmp11_ = NULL;
                        _tmp11_ = vala_member_access_get_member_name (ma);
                        _tmp9_ = g_strcmp0 (_tmp11_, "newv") == 0;
                  }
                  _tmp4_ = _tmp9_;
            } else {
                  _tmp4_ = FALSE;
            }
            if (_tmp4_) {
                  ValaDataType* _tmp12_ = NULL;
                  ValaLocalVariable* _tmp13_ = NULL;
                  ValaLocalVariable* temp_var;
                  ValaCCodeFunction* _tmp14_ = NULL;
                  const gchar* _tmp15_ = NULL;
                  ValaCCodeExpression* _tmp16_ = NULL;
                  ValaCCodeExpression* _tmp17_;
                  ValaCCodeExpression* _tmp18_ = NULL;
                  ValaCCodeExpression* _tmp19_;
                  ValaCCodeIdentifier* _tmp20_ = NULL;
                  ValaCCodeIdentifier* _tmp21_;
                  ValaCCodeFunctionCall* _tmp22_ = NULL;
                  ValaCCodeFunctionCall* _tmp23_;
                  ValaCCodeFunctionCall* initiallyunowned_ccall;
                  const gchar* _tmp24_ = NULL;
                  ValaCCodeExpression* _tmp25_ = NULL;
                  ValaCCodeExpression* _tmp26_;
                  ValaCCodeIdentifier* _tmp27_ = NULL;
                  ValaCCodeIdentifier* _tmp28_;
                  ValaCCodeFunctionCall* _tmp29_ = NULL;
                  ValaCCodeFunctionCall* _tmp30_;
                  ValaCCodeFunctionCall* sink_ref_ccall;
                  const gchar* _tmp31_ = NULL;
                  ValaCCodeExpression* _tmp32_ = NULL;
                  ValaCCodeExpression* _tmp33_;
                  const gchar* _tmp34_ = NULL;
                  ValaCCodeExpression* _tmp35_ = NULL;
                  ValaCCodeExpression* _tmp36_;
                  ValaCCodeConditionalExpression* _tmp37_ = NULL;
                  ValaCCodeConditionalExpression* _tmp38_;
                  VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_method_call ((ValaCodeVisitor*) VALA_GTYPE_MODULE (self), expr);
                  _tmp12_ = vala_expression_get_value_type ((ValaExpression*) expr);
                  _tmp13_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp12_, FALSE, (ValaCodeNode*) expr, FALSE);
                  temp_var = _tmp13_;
                  vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                  _tmp14_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp15_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                  _tmp16_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp15_);
                  _tmp17_ = _tmp16_;
                  _tmp18_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr);
                  _tmp19_ = _tmp18_;
                  vala_ccode_function_add_assignment (_tmp14_, _tmp17_, _tmp19_);
                  _vala_ccode_node_unref0 (_tmp19_);
                  _vala_ccode_node_unref0 (_tmp17_);
                  _tmp20_ = vala_ccode_identifier_new ("G_IS_INITIALLY_UNOWNED");
                  _tmp21_ = _tmp20_;
                  _tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
                  _tmp23_ = _tmp22_;
                  _vala_ccode_node_unref0 (_tmp21_);
                  initiallyunowned_ccall = _tmp23_;
                  _tmp24_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                  _tmp25_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp24_);
                  _tmp26_ = _tmp25_;
                  vala_ccode_function_call_add_argument (initiallyunowned_ccall, _tmp26_);
                  _vala_ccode_node_unref0 (_tmp26_);
                  _tmp27_ = vala_ccode_identifier_new ("g_object_ref_sink");
                  _tmp28_ = _tmp27_;
                  _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_);
                  _tmp30_ = _tmp29_;
                  _vala_ccode_node_unref0 (_tmp28_);
                  sink_ref_ccall = _tmp30_;
                  _tmp31_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                  _tmp32_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp31_);
                  _tmp33_ = _tmp32_;
                  vala_ccode_function_call_add_argument (sink_ref_ccall, _tmp33_);
                  _vala_ccode_node_unref0 (_tmp33_);
                  _tmp34_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                  _tmp35_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp34_);
                  _tmp36_ = _tmp35_;
                  _tmp37_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) initiallyunowned_ccall, (ValaCCodeExpression*) sink_ref_ccall, _tmp36_);
                  _tmp38_ = _tmp37_;
                  vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp38_);
                  _vala_ccode_node_unref0 (_tmp38_);
                  _vala_ccode_node_unref0 (_tmp36_);
                  _vala_ccode_node_unref0 (sink_ref_ccall);
                  _vala_ccode_node_unref0 (initiallyunowned_ccall);
                  _vala_code_node_unref0 (temp_var);
                  _vala_code_node_unref0 (ma);
                  return;
            } else {
                  ValaSymbol* _tmp39_ = NULL;
                  _tmp39_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  if (_tmp39_ == VALA_SYMBOL (((ValaCCodeBaseModule*) self)->gobject_type)) {
                        {
                              ValaList* _tmp40_ = NULL;
                              ValaList* _arg_list;
                              gint _tmp41_;
                              gint _arg_size;
                              gint _arg_index;
                              _tmp40_ = vala_method_call_get_argument_list (expr);
                              _arg_list = _tmp40_;
                              _tmp41_ = vala_collection_get_size ((ValaCollection*) _arg_list);
                              _arg_size = _tmp41_;
                              _arg_index = -1;
                              while (TRUE) {
                                    gpointer _tmp42_ = NULL;
                                    ValaExpression* arg;
                                    ValaExpression* _tmp43_;
                                    ValaNamedArgument* _tmp44_;
                                    ValaNamedArgument* named_argument;
                                    ValaClass* _tmp46_ = NULL;
                                    const gchar* _tmp47_ = NULL;
                                    ValaSymbol* _tmp48_ = NULL;
                                    ValaSymbol* _tmp49_;
                                    ValaProperty* prop;
                                    gboolean _tmp57_;
                                    ValaDataType* _tmp62_ = NULL;
                                    ValaDataType* _tmp63_ = NULL;
                                    gboolean _tmp64_;
                                    _arg_index = _arg_index + 1;
                                    if (!(_arg_index < _arg_size)) {
                                          break;
                                    }
                                    _tmp42_ = vala_list_get (_arg_list, _arg_index);
                                    arg = (ValaExpression*) _tmp42_;
                                    _tmp43_ = arg;
                                    _tmp44_ = _vala_code_node_ref0 (VALA_IS_NAMED_ARGUMENT (_tmp43_) ? ((ValaNamedArgument*) _tmp43_) : NULL);
                                    named_argument = _tmp44_;
                                    if (named_argument == NULL) {
                                          ValaSourceReference* _tmp45_ = NULL;
                                          _tmp45_ = vala_code_node_get_source_reference ((ValaCodeNode*) arg);
                                          vala_report_error (_tmp45_, "Named argument expected");
                                          _vala_code_node_unref0 (named_argument);
                                          _vala_code_node_unref0 (arg);
                                          break;
                                    }
                                    _tmp46_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
                                    _tmp47_ = vala_named_argument_get_name (named_argument);
                                    _tmp48_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) _tmp46_, _tmp47_);
                                    _tmp49_ = _tmp48_;
                                    prop = VALA_IS_PROPERTY (_tmp49_) ? ((ValaProperty*) _tmp49_) : NULL;
                                    if (prop == NULL) {
                                          ValaSourceReference* _tmp50_ = NULL;
                                          const gchar* _tmp51_ = NULL;
                                          ValaClass* _tmp52_ = NULL;
                                          gchar* _tmp53_ = NULL;
                                          gchar* _tmp54_;
                                          gchar* _tmp55_ = NULL;
                                          gchar* _tmp56_;
                                          _tmp50_ = vala_code_node_get_source_reference ((ValaCodeNode*) arg);
                                          _tmp51_ = vala_named_argument_get_name (named_argument);
                                          _tmp52_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
                                          _tmp53_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp52_);
                                          _tmp54_ = _tmp53_;
                                          _tmp55_ = g_strdup_printf ("Property `%s' not found in `%s'", _tmp51_, _tmp54_);
                                          _tmp56_ = _tmp55_;
                                          vala_report_error (_tmp50_, _tmp56_);
                                          _g_free0 (_tmp56_);
                                          _g_free0 (_tmp54_);
                                          _vala_code_node_unref0 (prop);
                                          _vala_code_node_unref0 (named_argument);
                                          _vala_code_node_unref0 (arg);
                                          break;
                                    }
                                    _tmp57_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, prop);
                                    if (!_tmp57_) {
                                          ValaSourceReference* _tmp58_ = NULL;
                                          const gchar* _tmp59_ = NULL;
                                          gchar* _tmp60_ = NULL;
                                          gchar* _tmp61_;
                                          _tmp58_ = vala_code_node_get_source_reference ((ValaCodeNode*) arg);
                                          _tmp59_ = vala_named_argument_get_name (named_argument);
                                          _tmp60_ = g_strdup_printf ("Property `%s' not supported in Object (property: value) constructor ch" \
"ain up", _tmp59_);
                                          _tmp61_ = _tmp60_;
                                          vala_report_error (_tmp58_, _tmp61_);
                                          _g_free0 (_tmp61_);
                                          _vala_code_node_unref0 (prop);
                                          _vala_code_node_unref0 (named_argument);
                                          _vala_code_node_unref0 (arg);
                                          break;
                                    }
                                    _tmp62_ = vala_expression_get_value_type (arg);
                                    _tmp63_ = vala_property_get_property_type (prop);
                                    _tmp64_ = vala_data_type_compatible (_tmp62_, _tmp63_);
                                    if (!_tmp64_) {
                                          ValaSourceReference* _tmp65_ = NULL;
                                          ValaDataType* _tmp66_ = NULL;
                                          gchar* _tmp67_ = NULL;
                                          gchar* _tmp68_;
                                          ValaDataType* _tmp69_ = NULL;
                                          gchar* _tmp70_ = NULL;
                                          gchar* _tmp71_;
                                          gchar* _tmp72_ = NULL;
                                          gchar* _tmp73_;
                                          _tmp65_ = vala_code_node_get_source_reference ((ValaCodeNode*) arg);
                                          _tmp66_ = vala_expression_get_value_type (arg);
                                          _tmp67_ = vala_code_node_to_string ((ValaCodeNode*) _tmp66_);
                                          _tmp68_ = _tmp67_;
                                          _tmp69_ = vala_property_get_property_type (prop);
                                          _tmp70_ = vala_code_node_to_string ((ValaCodeNode*) _tmp69_);
                                          _tmp71_ = _tmp70_;
                                          _tmp72_ = g_strdup_printf ("Cannot convert from `%s' to `%s'", _tmp68_, _tmp71_);
                                          _tmp73_ = _tmp72_;
                                          vala_report_error (_tmp65_, _tmp73_);
                                          _g_free0 (_tmp73_);
                                          _g_free0 (_tmp71_);
                                          _g_free0 (_tmp68_);
                                          _vala_code_node_unref0 (prop);
                                          _vala_code_node_unref0 (named_argument);
                                          _vala_code_node_unref0 (arg);
                                          break;
                                    }
                                    _vala_code_node_unref0 (prop);
                                    _vala_code_node_unref0 (named_argument);
                                    _vala_code_node_unref0 (arg);
                              }
                              _vala_iterable_unref0 (_arg_list);
                        }
                  }
            }
            _vala_code_node_unref0 (ma);
      }
      VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_method_call ((ValaCodeVisitor*) VALA_GTYPE_MODULE (self), expr);
}


ValaGObjectModule* vala_gobject_module_construct (GType object_type) {
      ValaGObjectModule* self = NULL;
      self = (ValaGObjectModule*) vala_gtype_module_construct (object_type);
      return self;
}


ValaGObjectModule* vala_gobject_module_new (void) {
      return vala_gobject_module_construct (VALA_TYPE_GOBJECT_MODULE);
}


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;
      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;
}


static void vala_gobject_module_instance_init (ValaGObjectModule * self) {
      self->priv = VALA_GOBJECT_MODULE_GET_PRIVATE (self);
}


static void vala_gobject_module_finalize (ValaCodeVisitor* obj) {
      ValaGObjectModule * self;
      self = VALA_GOBJECT_MODULE (obj);
      VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->finalize (obj);
}


GType vala_gobject_module_get_type (void) {
      static volatile gsize vala_gobject_module_type_id__volatile = 0;
      if (g_once_init_enter (&vala_gobject_module_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaGObjectModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gobject_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGObjectModule), 0, (GInstanceInitFunc) vala_gobject_module_instance_init, NULL };
            GType vala_gobject_module_type_id;
            vala_gobject_module_type_id = g_type_register_static (VALA_TYPE_GTYPE_MODULE, "ValaGObjectModule", &g_define_type_info, 0);
            g_once_init_leave (&vala_gobject_module_type_id__volatile, vala_gobject_module_type_id);
      }
      return vala_gobject_module_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index