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

/* valagsignalmodule.vala
 *
 * Copyright (C) 2006-2010  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_TYPE_GSIGNAL_MODULE (vala_gsignal_module_get_type ())
#define VALA_GSIGNAL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GSIGNAL_MODULE, ValaGSignalModule))
#define VALA_GSIGNAL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GSIGNAL_MODULE, ValaGSignalModuleClass))
#define VALA_IS_GSIGNAL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GSIGNAL_MODULE))
#define VALA_IS_GSIGNAL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GSIGNAL_MODULE))
#define VALA_GSIGNAL_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GSIGNAL_MODULE, ValaGSignalModuleClass))

typedef struct _ValaGSignalModule ValaGSignalModule;
typedef struct _ValaGSignalModuleClass ValaGSignalModuleClass;
typedef struct _ValaGSignalModulePrivate ValaGSignalModulePrivate;
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
#define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
#define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))

struct _ValaCCodeBaseModule {
	ValaCodeGenerator parent_instance;
	ValaCCodeBaseModulePrivate * priv;
	ValaSymbol* root_symbol;
	ValaCCodeBaseModuleEmitContext* emit_context;
	ValaCCodeLineDirective* current_line;
	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;
	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* gqueue_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;
	ValaStruct* gmutex_type;
	ValaStruct* grecmutex_type;
	ValaStruct* grwlock_type;
	ValaStruct* gcond_type;
	ValaClass* gsource_type;
	ValaTypeSymbol* type_module_type;
	ValaTypeSymbol* dbus_proxy_type;
	ValaClass* gtk_widget_type;
	gboolean in_plugin;
	gchar* module_init_param_name;
	gboolean gvaluecollector_h_needed;
	gboolean requires_assert;
	gboolean requires_array_free;
	gboolean requires_array_move;
	gboolean requires_array_length;
	gboolean requires_clear_mutex;
	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_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
	void (*append_scope_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, 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_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value);
	ValaTargetValue* (*load_this_parameter) (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
	void (*store_value) (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value);
	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);
	ValaTargetValue* (*copy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, 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, ValaCodeNode* node);
	void (*create_type_check_statement) (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
	gboolean (*is_gobject_property) (ValaCCodeBaseModule* self, ValaProperty* prop);
	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);
	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);
	void (*end_instance_init) (ValaGTypeModule* self, ValaClass* cl);
};

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

struct _ValaGObjectModuleClass {
	ValaGTypeModuleClass parent_class;
};

struct _ValaGSignalModule {
	ValaGObjectModule parent_instance;
	ValaGSignalModulePrivate * priv;
};

struct _ValaGSignalModuleClass {
	ValaGObjectModuleClass parent_class;
};


static gpointer vala_gsignal_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;
GType vala_gsignal_module_get_type (void) G_GNUC_CONST;
enum  {
	VALA_GSIGNAL_MODULE_DUMMY_PROPERTY
};
static gchar* vala_gsignal_module_get_marshaller_function (ValaGSignalModule* self, ValaList* params, ValaDataType* return_type, const gchar* prefix);
static gchar* vala_gsignal_module_get_marshaller_signature (ValaGSignalModule* self, ValaList* params, ValaDataType* return_type);
gchar* vala_ccode_base_module_get_ccode_marshaller_type_name (ValaCodeNode* node);
static gchar* vala_gsignal_module_get_value_type_name_from_type_reference (ValaGSignalModule* self, ValaDataType* t);
gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
static gchar* vala_gsignal_module_get_value_type_name_from_parameter (ValaGSignalModule* self, ValaParameter* p);
static ValaCCodeExpression* vala_gsignal_module_get_signal_name_cexpression (ValaGSignalModule* self, ValaSignal* sig, ValaExpression* detail_expr, ValaCodeNode* node);
ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail);
ValaTargetValue* vala_ccode_base_module_create_temp_value (ValaCCodeBaseModule* self, ValaDataType* type, gboolean init, ValaCodeNode* node_reference, gboolean* value_owned);
ValaArrayList* vala_ccode_base_module_get_temp_ref_values (ValaCCodeBaseModule* self);
ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr);
ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value);
static void vala_gsignal_module_real_visit_signal (ValaCodeVisitor* base, ValaSignal* sig);
ValaCCodeParameter* vala_ccode_method_module_generate_parameter (ValaCCodeMethodModule* self, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map);
static void vala_gsignal_module_generate_marshaller (ValaGSignalModule* self, ValaList* params, ValaDataType* return_type);
void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym);
gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym);
void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
static ValaCCodeFunctionCall* vala_gsignal_module_real_get_signal_creation (ValaCCodeBaseModule* base, ValaSignal* sig, ValaTypeSymbol* type);
static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add3 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add5 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add7 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add8 (gchar*** array, int* length, int* size, gchar* value);
gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface);
gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m);
static void vala_gsignal_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr);
void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue);
static gboolean vala_gsignal_module_in_gobject_instance (ValaGSignalModule* self, ValaMethod* m);
static void vala_gsignal_module_emit_signal_assignment (ValaGSignalModule* self, ValaAssignment* assignment);
static ValaCCodeExpression* vala_gsignal_module_connect_signal (ValaGSignalModule* self, ValaSignal* sig, ValaExpression* signal_access, ValaExpression* handler, gboolean disconnect, gboolean after, ValaCodeNode* expr);
static void vala_gsignal_module_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* assignment);
static void vala_gsignal_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr);
gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix);
gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_get_signal_has_emitter (ValaCCodeBaseModule* self, ValaSignal* sig);
static void vala_gsignal_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr);
gchar* vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
gchar* vala_ccode_base_module_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
gchar* vala_ccode_base_module_get_dynamic_signal_disconnect_wrapper_name (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
ValaCCodeExpression* vala_ccode_base_module_get_result_cexpression (ValaCCodeBaseModule* self, const gchar* cname);
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);
ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name);
ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cexpression (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
ValaGSignalModule* vala_gsignal_module_new (void);
ValaGSignalModule* vala_gsignal_module_construct (GType object_type);
ValaGObjectModule* vala_gobject_module_new (void);
ValaGObjectModule* vala_gobject_module_construct (GType object_type);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);


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


static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
	gchar* result = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (old != NULL, NULL);
	g_return_val_if_fail (replacement != NULL, NULL);
	{
		GRegex* regex = NULL;
		const gchar* _tmp0_ = NULL;
		gchar* _tmp1_ = NULL;
		gchar* _tmp2_ = NULL;
		GRegex* _tmp3_ = NULL;
		GRegex* _tmp4_ = NULL;
		gchar* _tmp5_ = NULL;
		GRegex* _tmp6_ = NULL;
		const gchar* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
		_tmp0_ = old;
		_tmp1_ = g_regex_escape_string (_tmp0_, -1);
		_tmp2_ = _tmp1_;
		_tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
		_tmp4_ = _tmp3_;
		_g_free0 (_tmp2_);
		regex = _tmp4_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			if (_inner_error_->domain == G_REGEX_ERROR) {
				goto __catch7_g_regex_error;
			}
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
			g_clear_error (&_inner_error_);
			return NULL;
		}
		_tmp6_ = regex;
		_tmp7_ = replacement;
		_tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
		_tmp5_ = _tmp8_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_regex_unref0 (regex);
			if (_inner_error_->domain == G_REGEX_ERROR) {
				goto __catch7_g_regex_error;
			}
			_g_regex_unref0 (regex);
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
			g_clear_error (&_inner_error_);
			return NULL;
		}
		_tmp9_ = _tmp5_;
		_tmp5_ = NULL;
		result = _tmp9_;
		_g_free0 (_tmp5_);
		_g_regex_unref0 (regex);
		return result;
	}
	goto __finally7;
	__catch7_g_regex_error:
	{
		GError* e = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		g_assert_not_reached ();
		_g_error_free0 (e);
	}
	__finally7:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return NULL;
	}
}


static gchar* vala_gsignal_module_get_marshaller_function (ValaGSignalModule* self, ValaList* params, ValaDataType* return_type, const gchar* prefix) {
	gchar* result = NULL;
	gchar* signature = NULL;
	ValaList* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* ret = NULL;
	const gchar* _tmp3_ = NULL;
	const gchar* _tmp7_ = NULL;
	ValaDataType* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gboolean _tmp12_ = FALSE;
	ValaList* _tmp13_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (params != NULL, NULL);
	g_return_val_if_fail (return_type != NULL, NULL);
	_tmp0_ = params;
	_tmp1_ = return_type;
	_tmp2_ = vala_gsignal_module_get_marshaller_signature (self, _tmp0_, _tmp1_);
	signature = _tmp2_;
	_tmp3_ = prefix;
	if (_tmp3_ == NULL) {
		ValaSet* _tmp4_ = NULL;
		const gchar* _tmp5_ = NULL;
		gboolean _tmp6_ = FALSE;
		_tmp4_ = ((ValaCCodeBaseModule*) self)->predefined_marshal_set;
		_tmp5_ = signature;
		_tmp6_ = vala_collection_contains ((ValaCollection*) _tmp4_, _tmp5_);
		if (_tmp6_) {
			prefix = "g_cclosure_marshal";
		} else {
			prefix = "g_cclosure_user_marshal";
		}
	}
	_tmp7_ = prefix;
	_tmp8_ = return_type;
	_tmp9_ = vala_ccode_base_module_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = g_strdup_printf ("%s_%s_", _tmp7_, _tmp10_);
	_g_free0 (ret);
	ret = _tmp11_;
	_g_free0 (_tmp10_);
	_tmp13_ = params;
	if (_tmp13_ == NULL) {
		_tmp12_ = TRUE;
	} else {
		ValaList* _tmp14_ = NULL;
		gint _tmp15_ = 0;
		gint _tmp16_ = 0;
		_tmp14_ = params;
		_tmp15_ = vala_collection_get_size ((ValaCollection*) _tmp14_);
		_tmp16_ = _tmp15_;
		_tmp12_ = _tmp16_ == 0;
	}
	if (_tmp12_) {
		const gchar* _tmp17_ = NULL;
		gchar* _tmp18_ = NULL;
		_tmp17_ = ret;
		_tmp18_ = g_strconcat (_tmp17_, "_VOID", NULL);
		_g_free0 (ret);
		ret = _tmp18_;
	} else {
		{
			ValaList* _p_list = NULL;
			ValaList* _tmp19_ = NULL;
			ValaList* _tmp20_ = NULL;
			gint _p_size = 0;
			ValaList* _tmp21_ = NULL;
			gint _tmp22_ = 0;
			gint _tmp23_ = 0;
			gint _p_index = 0;
			_tmp19_ = params;
			_tmp20_ = _vala_iterable_ref0 (_tmp19_);
			_p_list = _tmp20_;
			_tmp21_ = _p_list;
			_tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
			_tmp23_ = _tmp22_;
			_p_size = _tmp23_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp24_ = 0;
				gint _tmp25_ = 0;
				gint _tmp26_ = 0;
				ValaParameter* p = NULL;
				ValaList* _tmp27_ = NULL;
				gint _tmp28_ = 0;
				gpointer _tmp29_ = NULL;
				const gchar* _tmp30_ = NULL;
				ValaParameter* _tmp31_ = NULL;
				gchar* _tmp32_ = NULL;
				gchar* _tmp33_ = NULL;
				gchar* _tmp34_ = NULL;
				gchar* _tmp35_ = NULL;
				gchar* _tmp36_ = NULL;
				_tmp24_ = _p_index;
				_p_index = _tmp24_ + 1;
				_tmp25_ = _p_index;
				_tmp26_ = _p_size;
				if (!(_tmp25_ < _tmp26_)) {
					break;
				}
				_tmp27_ = _p_list;
				_tmp28_ = _p_index;
				_tmp29_ = vala_list_get (_tmp27_, _tmp28_);
				p = (ValaParameter*) _tmp29_;
				_tmp30_ = ret;
				_tmp31_ = p;
				_tmp32_ = vala_ccode_base_module_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp31_);
				_tmp33_ = _tmp32_;
				_tmp34_ = string_replace (_tmp33_, ",", "_");
				_tmp35_ = _tmp34_;
				_tmp36_ = g_strdup_printf ("%s_%s", _tmp30_, _tmp35_);
				_g_free0 (ret);
				ret = _tmp36_;
				_g_free0 (_tmp35_);
				_g_free0 (_tmp33_);
				_vala_code_node_unref0 (p);
			}
			_vala_iterable_unref0 (_p_list);
		}
	}
	result = ret;
	_g_free0 (signature);
	return result;
}


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


static gchar* vala_gsignal_module_get_value_type_name_from_type_reference (ValaGSignalModule* self, ValaDataType* t) {
	gchar* result = NULL;
	gboolean _tmp0_ = FALSE;
	ValaDataType* _tmp1_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (t != NULL, NULL);
	_tmp1_ = t;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_POINTER_TYPE)) {
		_tmp0_ = TRUE;
	} else {
		ValaDataType* _tmp2_ = NULL;
		ValaTypeParameter* _tmp3_ = NULL;
		ValaTypeParameter* _tmp4_ = NULL;
		_tmp2_ = t;
		_tmp3_ = vala_data_type_get_type_parameter (_tmp2_);
		_tmp4_ = _tmp3_;
		_tmp0_ = _tmp4_ != NULL;
	}
	if (_tmp0_) {
		gchar* _tmp5_ = NULL;
		_tmp5_ = g_strdup ("gpointer");
		result = _tmp5_;
		return result;
	} else {
		ValaDataType* _tmp6_ = NULL;
		_tmp6_ = t;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_VOID_TYPE)) {
			gchar* _tmp7_ = NULL;
			_tmp7_ = g_strdup ("void");
			result = _tmp7_;
			return result;
		} else {
			ValaDataType* _tmp8_ = NULL;
			gchar* _tmp9_ = NULL;
			gchar* _tmp10_ = NULL;
			ValaDataType* _tmp11_ = NULL;
			gchar* _tmp12_ = NULL;
			gchar* _tmp13_ = NULL;
			gboolean _tmp14_ = FALSE;
			_tmp8_ = t;
			_tmp9_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp8_);
			_tmp10_ = _tmp9_;
			_tmp11_ = ((ValaCCodeBaseModule*) self)->string_type;
			_tmp12_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp11_);
			_tmp13_ = _tmp12_;
			_tmp14_ = g_strcmp0 (_tmp10_, _tmp13_) == 0;
			_g_free0 (_tmp13_);
			_g_free0 (_tmp10_);
			if (_tmp14_) {
				gchar* _tmp15_ = NULL;
				_tmp15_ = g_strdup ("const char*");
				result = _tmp15_;
				return result;
			} else {
				gboolean _tmp16_ = FALSE;
				ValaDataType* _tmp17_ = NULL;
				ValaTypeSymbol* _tmp18_ = NULL;
				ValaTypeSymbol* _tmp19_ = NULL;
				_tmp17_ = t;
				_tmp18_ = vala_data_type_get_data_type (_tmp17_);
				_tmp19_ = _tmp18_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_CLASS)) {
					_tmp16_ = TRUE;
				} else {
					ValaDataType* _tmp20_ = NULL;
					ValaTypeSymbol* _tmp21_ = NULL;
					ValaTypeSymbol* _tmp22_ = NULL;
					_tmp20_ = t;
					_tmp21_ = vala_data_type_get_data_type (_tmp20_);
					_tmp22_ = _tmp21_;
					_tmp16_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_INTERFACE);
				}
				if (_tmp16_) {
					gchar* _tmp23_ = NULL;
					_tmp23_ = g_strdup ("gpointer");
					result = _tmp23_;
					return result;
				} else {
					ValaDataType* _tmp24_ = NULL;
					ValaTypeSymbol* _tmp25_ = NULL;
					ValaTypeSymbol* _tmp26_ = NULL;
					_tmp24_ = t;
					_tmp25_ = vala_data_type_get_data_type (_tmp24_);
					_tmp26_ = _tmp25_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_STRUCT)) {
						ValaStruct* st = NULL;
						ValaDataType* _tmp27_ = NULL;
						ValaTypeSymbol* _tmp28_ = NULL;
						ValaTypeSymbol* _tmp29_ = NULL;
						ValaStruct* _tmp30_ = NULL;
						ValaStruct* _tmp31_ = NULL;
						gboolean _tmp32_ = FALSE;
						_tmp27_ = t;
						_tmp28_ = vala_data_type_get_data_type (_tmp27_);
						_tmp29_ = _tmp28_;
						_tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, VALA_TYPE_STRUCT, ValaStruct));
						st = _tmp30_;
						_tmp31_ = st;
						_tmp32_ = vala_struct_is_simple_type (_tmp31_);
						if (_tmp32_) {
							ValaDataType* _tmp33_ = NULL;
							ValaTypeSymbol* _tmp34_ = NULL;
							ValaTypeSymbol* _tmp35_ = NULL;
							gchar* _tmp36_ = NULL;
							_tmp33_ = t;
							_tmp34_ = vala_data_type_get_data_type (_tmp33_);
							_tmp35_ = _tmp34_;
							_tmp36_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp35_);
							result = _tmp36_;
							_vala_code_node_unref0 (st);
							return result;
						} else {
							gchar* _tmp37_ = NULL;
							_tmp37_ = g_strdup ("gpointer");
							result = _tmp37_;
							_vala_code_node_unref0 (st);
							return result;
						}
						_vala_code_node_unref0 (st);
					} else {
						ValaDataType* _tmp38_ = NULL;
						ValaTypeSymbol* _tmp39_ = NULL;
						ValaTypeSymbol* _tmp40_ = NULL;
						_tmp38_ = t;
						_tmp39_ = vala_data_type_get_data_type (_tmp38_);
						_tmp40_ = _tmp39_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp40_, VALA_TYPE_ENUM)) {
							gchar* _tmp41_ = NULL;
							_tmp41_ = g_strdup ("gint");
							result = _tmp41_;
							return result;
						} else {
							ValaDataType* _tmp42_ = NULL;
							_tmp42_ = t;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp42_, VALA_TYPE_ARRAY_TYPE)) {
								gchar* _tmp43_ = NULL;
								_tmp43_ = g_strdup ("gpointer");
								result = _tmp43_;
								return result;
							} else {
								ValaDataType* _tmp44_ = NULL;
								_tmp44_ = t;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp44_, VALA_TYPE_ERROR_TYPE)) {
									gchar* _tmp45_ = NULL;
									_tmp45_ = g_strdup ("gpointer");
									result = _tmp45_;
									return result;
								}
							}
						}
					}
				}
			}
		}
	}
	result = NULL;
	return result;
}


static gchar* vala_gsignal_module_get_value_type_name_from_parameter (ValaGSignalModule* self, ValaParameter* p) {
	gchar* result = NULL;
	ValaParameter* _tmp0_ = NULL;
	ValaParameterDirection _tmp1_ = 0;
	ValaParameterDirection _tmp2_ = 0;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (p != NULL, NULL);
	_tmp0_ = p;
	_tmp1_ = vala_parameter_get_direction (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != VALA_PARAMETER_DIRECTION_IN) {
		gchar* _tmp3_ = NULL;
		_tmp3_ = g_strdup ("gpointer");
		result = _tmp3_;
		return result;
	} else {
		ValaParameter* _tmp4_ = NULL;
		ValaDataType* _tmp5_ = NULL;
		ValaDataType* _tmp6_ = NULL;
		gchar* _tmp7_ = NULL;
		_tmp4_ = p;
		_tmp5_ = vala_variable_get_variable_type ((ValaVariable*) _tmp4_);
		_tmp6_ = _tmp5_;
		_tmp7_ = vala_gsignal_module_get_value_type_name_from_type_reference (self, _tmp6_);
		result = _tmp7_;
		return result;
	}
}


static gchar* vala_gsignal_module_get_marshaller_signature (ValaGSignalModule* self, ValaList* params, ValaDataType* return_type) {
	gchar* result = NULL;
	gchar* signature = NULL;
	ValaDataType* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	ValaList* _tmp5_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (params != NULL, NULL);
	g_return_val_if_fail (return_type != NULL, NULL);
	_tmp0_ = return_type;
	_tmp1_ = vala_ccode_base_module_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s:", _tmp2_);
	_g_free0 (signature);
	signature = _tmp3_;
	_g_free0 (_tmp2_);
	_tmp5_ = params;
	if (_tmp5_ == NULL) {
		_tmp4_ = TRUE;
	} else {
		ValaList* _tmp6_ = NULL;
		gint _tmp7_ = 0;
		gint _tmp8_ = 0;
		_tmp6_ = params;
		_tmp7_ = vala_collection_get_size ((ValaCollection*) _tmp6_);
		_tmp8_ = _tmp7_;
		_tmp4_ = _tmp8_ == 0;
	}
	if (_tmp4_) {
		const gchar* _tmp9_ = NULL;
		gchar* _tmp10_ = NULL;
		_tmp9_ = signature;
		_tmp10_ = g_strconcat (_tmp9_, "VOID", NULL);
		_g_free0 (signature);
		signature = _tmp10_;
	} else {
		gboolean first = FALSE;
		first = TRUE;
		{
			ValaList* _p_list = NULL;
			ValaList* _tmp11_ = NULL;
			ValaList* _tmp12_ = NULL;
			gint _p_size = 0;
			ValaList* _tmp13_ = NULL;
			gint _tmp14_ = 0;
			gint _tmp15_ = 0;
			gint _p_index = 0;
			_tmp11_ = params;
			_tmp12_ = _vala_iterable_ref0 (_tmp11_);
			_p_list = _tmp12_;
			_tmp13_ = _p_list;
			_tmp14_ = vala_collection_get_size ((ValaCollection*) _tmp13_);
			_tmp15_ = _tmp14_;
			_p_size = _tmp15_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp16_ = 0;
				gint _tmp17_ = 0;
				gint _tmp18_ = 0;
				ValaParameter* p = NULL;
				ValaList* _tmp19_ = NULL;
				gint _tmp20_ = 0;
				gpointer _tmp21_ = NULL;
				gboolean _tmp22_ = FALSE;
				_tmp16_ = _p_index;
				_p_index = _tmp16_ + 1;
				_tmp17_ = _p_index;
				_tmp18_ = _p_size;
				if (!(_tmp17_ < _tmp18_)) {
					break;
				}
				_tmp19_ = _p_list;
				_tmp20_ = _p_index;
				_tmp21_ = vala_list_get (_tmp19_, _tmp20_);
				p = (ValaParameter*) _tmp21_;
				_tmp22_ = first;
				if (_tmp22_) {
					const gchar* _tmp23_ = NULL;
					ValaParameter* _tmp24_ = NULL;
					gchar* _tmp25_ = NULL;
					gchar* _tmp26_ = NULL;
					gchar* _tmp27_ = NULL;
					_tmp23_ = signature;
					_tmp24_ = p;
					_tmp25_ = vala_ccode_base_module_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp24_);
					_tmp26_ = _tmp25_;
					_tmp27_ = g_strconcat (_tmp23_, _tmp26_, NULL);
					_g_free0 (signature);
					signature = _tmp27_;
					_g_free0 (_tmp26_);
					first = FALSE;
				} else {
					const gchar* _tmp28_ = NULL;
					ValaParameter* _tmp29_ = NULL;
					gchar* _tmp30_ = NULL;
					gchar* _tmp31_ = NULL;
					gchar* _tmp32_ = NULL;
					_tmp28_ = signature;
					_tmp29_ = p;
					_tmp30_ = vala_ccode_base_module_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp29_);
					_tmp31_ = _tmp30_;
					_tmp32_ = g_strdup_printf ("%s,%s", _tmp28_, _tmp31_);
					_g_free0 (signature);
					signature = _tmp32_;
					_g_free0 (_tmp31_);
				}
				_vala_code_node_unref0 (p);
			}
			_vala_iterable_unref0 (_p_list);
		}
	}
	result = signature;
	return result;
}


static ValaCCodeExpression* vala_gsignal_module_get_signal_name_cexpression (ValaGSignalModule* self, ValaSignal* sig, ValaExpression* detail_expr, ValaCodeNode* node) {
	ValaCCodeExpression* result = NULL;
	ValaExpression* _tmp0_ = NULL;
	gboolean _tmp3_ = FALSE;
	ValaExpression* _tmp4_ = NULL;
	ValaDataType* _tmp5_ = NULL;
	ValaDataType* _tmp6_ = NULL;
	ValaExpression* _tmp16_ = NULL;
	ValaTargetValue* detail_value = NULL;
	ValaExpression* _tmp23_ = NULL;
	ValaDataType* _tmp24_ = NULL;
	ValaDataType* _tmp25_ = NULL;
	ValaCodeNode* _tmp26_ = NULL;
	gboolean _tmp27_ = FALSE;
	ValaTargetValue* _tmp28_ = NULL;
	ValaArrayList* _tmp29_ = NULL;
	ValaArrayList* _tmp30_ = NULL;
	ValaTargetValue* _tmp31_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp32_ = NULL;
	ValaCCodeIdentifier* _tmp33_ = NULL;
	ValaCCodeFunctionCall* _tmp34_ = NULL;
	ValaCCodeFunctionCall* _tmp35_ = NULL;
	ValaCCodeFunctionCall* _tmp36_ = NULL;
	ValaSignal* _tmp37_ = NULL;
	ValaCCodeConstant* _tmp38_ = NULL;
	ValaCCodeConstant* _tmp39_ = NULL;
	ValaCCodeFunctionCall* _tmp40_ = NULL;
	ValaExpression* _tmp41_ = NULL;
	ValaCCodeExpression* _tmp42_ = NULL;
	ValaCCodeExpression* _tmp43_ = NULL;
	ValaCCodeFunctionCall* _tmp44_ = NULL;
	ValaCCodeConstant* _tmp45_ = NULL;
	ValaCCodeConstant* _tmp46_ = NULL;
	ValaCCodeFunction* _tmp47_ = NULL;
	ValaCCodeFunction* _tmp48_ = NULL;
	ValaTargetValue* _tmp49_ = NULL;
	ValaCCodeExpression* _tmp50_ = NULL;
	ValaCCodeExpression* _tmp51_ = NULL;
	ValaCCodeFunctionCall* _tmp52_ = NULL;
	ValaTargetValue* _tmp53_ = NULL;
	ValaCCodeExpression* _tmp54_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (sig != NULL, NULL);
	g_return_val_if_fail (node != NULL, NULL);
	_tmp0_ = detail_expr;
	if (_tmp0_ == NULL) {
		ValaSignal* _tmp1_ = NULL;
		ValaCCodeConstant* _tmp2_ = NULL;
		_tmp1_ = sig;
		_tmp2_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, _tmp1_, NULL);
		result = (ValaCCodeExpression*) _tmp2_;
		return result;
	}
	_tmp4_ = detail_expr;
	_tmp5_ = vala_expression_get_value_type (_tmp4_);
	_tmp6_ = _tmp5_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_NULL_TYPE)) {
		_tmp3_ = TRUE;
	} else {
		ValaExpression* _tmp7_ = NULL;
		ValaDataType* _tmp8_ = NULL;
		ValaDataType* _tmp9_ = NULL;
		ValaDataType* _tmp10_ = NULL;
		gboolean _tmp11_ = FALSE;
		_tmp7_ = detail_expr;
		_tmp8_ = vala_expression_get_value_type (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = ((ValaCCodeBaseModule*) self)->string_type;
		_tmp11_ = vala_data_type_compatible (_tmp9_, _tmp10_);
		_tmp3_ = !_tmp11_;
	}
	if (_tmp3_) {
		ValaCodeNode* _tmp12_ = NULL;
		ValaExpression* _tmp13_ = NULL;
		ValaSourceReference* _tmp14_ = NULL;
		ValaSourceReference* _tmp15_ = NULL;
		_tmp12_ = node;
		vala_code_node_set_error (_tmp12_, TRUE);
		_tmp13_ = detail_expr;
		_tmp14_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp13_);
		_tmp15_ = _tmp14_;
		vala_report_error (_tmp15_, "only string details are supported");
		result = NULL;
		return result;
	}
	_tmp16_ = detail_expr;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_STRING_LITERAL)) {
		ValaSignal* _tmp17_ = NULL;
		ValaExpression* _tmp18_ = NULL;
		gchar* _tmp19_ = NULL;
		gchar* _tmp20_ = NULL;
		ValaCCodeConstant* _tmp21_ = NULL;
		ValaCCodeExpression* _tmp22_ = NULL;
		_tmp17_ = sig;
		_tmp18_ = detail_expr;
		_tmp19_ = vala_string_literal_eval (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, VALA_TYPE_STRING_LITERAL, ValaStringLiteral));
		_tmp20_ = _tmp19_;
		_tmp21_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, _tmp17_, _tmp20_);
		_tmp22_ = (ValaCCodeExpression*) _tmp21_;
		_g_free0 (_tmp20_);
		result = _tmp22_;
		return result;
	}
	_tmp23_ = detail_expr;
	_tmp24_ = vala_expression_get_value_type (_tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = node;
	_tmp27_ = TRUE;
	_tmp28_ = vala_ccode_base_module_create_temp_value ((ValaCCodeBaseModule*) self, _tmp25_, FALSE, _tmp26_, &_tmp27_);
	detail_value = _tmp28_;
	_tmp29_ = vala_ccode_base_module_get_temp_ref_values ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = detail_value;
	vala_list_insert ((ValaList*) _tmp30_, 0, _tmp31_);
	_tmp32_ = vala_ccode_identifier_new ("g_strconcat");
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
	_tmp35_ = _tmp34_;
	_vala_ccode_node_unref0 (_tmp33_);
	ccall = _tmp35_;
	_tmp36_ = ccall;
	_tmp37_ = sig;
	_tmp38_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, _tmp37_, "");
	_tmp39_ = _tmp38_;
	vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp39_);
	_vala_ccode_node_unref0 (_tmp39_);
	_tmp40_ = ccall;
	_tmp41_ = detail_expr;
	_tmp42_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp41_);
	_tmp43_ = _tmp42_;
	vala_ccode_function_call_add_argument (_tmp40_, _tmp43_);
	_vala_ccode_node_unref0 (_tmp43_);
	_tmp44_ = ccall;
	_tmp45_ = vala_ccode_constant_new ("NULL");
	_tmp46_ = _tmp45_;
	vala_ccode_function_call_add_argument (_tmp44_, (ValaCCodeExpression*) _tmp46_);
	_vala_ccode_node_unref0 (_tmp46_);
	_tmp47_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp48_ = _tmp47_;
	_tmp49_ = detail_value;
	_tmp50_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp49_);
	_tmp51_ = _tmp50_;
	_tmp52_ = ccall;
	vala_ccode_function_add_assignment (_tmp48_, _tmp51_, (ValaCCodeExpression*) _tmp52_);
	_vala_ccode_node_unref0 (_tmp51_);
	_tmp53_ = detail_value;
	_tmp54_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp53_);
	result = _tmp54_;
	_vala_ccode_node_unref0 (ccall);
	_vala_target_value_unref0 (detail_value);
	return result;
}


static void vala_gsignal_module_real_visit_signal (ValaCodeVisitor* base, ValaSignal* sig) {
	ValaGSignalModule * self;
	ValaClass* cl = NULL;
	ValaSignal* _tmp0_ = NULL;
	ValaSymbol* _tmp1_ = NULL;
	ValaSymbol* _tmp2_ = NULL;
	ValaClass* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	ValaClass* _tmp5_ = NULL;
	ValaClass* _tmp13_ = NULL;
	ValaSignal* _tmp38_ = NULL;
	ValaSignal* _tmp59_ = NULL;
	ValaList* _tmp60_ = NULL;
	ValaList* _tmp61_ = NULL;
	ValaSignal* _tmp62_ = NULL;
	ValaDataType* _tmp63_ = NULL;
	ValaDataType* _tmp64_ = NULL;
	self = (ValaGSignalModule*) base;
	g_return_if_fail (sig != NULL);
	_tmp0_ = sig;
	_tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp2_) : NULL);
	cl = _tmp3_;
	_tmp5_ = cl;
	if (_tmp5_ != NULL) {
		ValaClass* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		gboolean _tmp8_ = FALSE;
		_tmp6_ = cl;
		_tmp7_ = vala_class_get_is_compact (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp4_ = _tmp8_;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		ValaSignal* _tmp9_ = NULL;
		ValaSignal* _tmp10_ = NULL;
		ValaSourceReference* _tmp11_ = NULL;
		ValaSourceReference* _tmp12_ = NULL;
		_tmp9_ = sig;
		vala_code_node_set_error ((ValaCodeNode*) _tmp9_, TRUE);
		_tmp10_ = sig;
		_tmp11_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp10_);
		_tmp12_ = _tmp11_;
		vala_report_error (_tmp12_, "Signals are not supported in compact classes");
		_vala_code_node_unref0 (cl);
		return;
	}
	_tmp13_ = cl;
	if (_tmp13_ != NULL) {
		{
			ValaList* _base_type_list = NULL;
			ValaClass* _tmp14_ = NULL;
			ValaList* _tmp15_ = NULL;
			gint _base_type_size = 0;
			ValaList* _tmp16_ = NULL;
			gint _tmp17_ = 0;
			gint _tmp18_ = 0;
			gint _base_type_index = 0;
			_tmp14_ = cl;
			_tmp15_ = vala_class_get_base_types (_tmp14_);
			_base_type_list = _tmp15_;
			_tmp16_ = _base_type_list;
			_tmp17_ = vala_collection_get_size ((ValaCollection*) _tmp16_);
			_tmp18_ = _tmp17_;
			_base_type_size = _tmp18_;
			_base_type_index = -1;
			while (TRUE) {
				gint _tmp19_ = 0;
				gint _tmp20_ = 0;
				gint _tmp21_ = 0;
				ValaDataType* base_type = NULL;
				ValaList* _tmp22_ = NULL;
				gint _tmp23_ = 0;
				gpointer _tmp24_ = NULL;
				ValaDataType* _tmp25_ = NULL;
				ValaTypeSymbol* _tmp26_ = NULL;
				ValaTypeSymbol* _tmp27_ = NULL;
				ValaSignal* _tmp28_ = NULL;
				const gchar* _tmp29_ = NULL;
				const gchar* _tmp30_ = NULL;
				ValaSymbol* _tmp31_ = NULL;
				ValaSymbol* _tmp32_ = NULL;
				gboolean _tmp33_ = FALSE;
				_tmp19_ = _base_type_index;
				_base_type_index = _tmp19_ + 1;
				_tmp20_ = _base_type_index;
				_tmp21_ = _base_type_size;
				if (!(_tmp20_ < _tmp21_)) {
					break;
				}
				_tmp22_ = _base_type_list;
				_tmp23_ = _base_type_index;
				_tmp24_ = vala_list_get (_tmp22_, _tmp23_);
				base_type = (ValaDataType*) _tmp24_;
				_tmp25_ = base_type;
				_tmp26_ = vala_data_type_get_data_type (_tmp25_);
				_tmp27_ = _tmp26_;
				_tmp28_ = sig;
				_tmp29_ = vala_symbol_get_name ((ValaSymbol*) _tmp28_);
				_tmp30_ = _tmp29_;
				_tmp31_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) _tmp27_, _tmp30_);
				_tmp32_ = _tmp31_;
				_tmp33_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, VALA_TYPE_SIGNAL);
				_vala_code_node_unref0 (_tmp32_);
				if (_tmp33_) {
					ValaSignal* _tmp34_ = NULL;
					ValaSignal* _tmp35_ = NULL;
					ValaSourceReference* _tmp36_ = NULL;
					ValaSourceReference* _tmp37_ = NULL;
					_tmp34_ = sig;
					vala_code_node_set_error ((ValaCodeNode*) _tmp34_, TRUE);
					_tmp35_ = sig;
					_tmp36_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp35_);
					_tmp37_ = _tmp36_;
					vala_report_error (_tmp37_, "Signals with the same name as a signal in a base type are not supporte" \
"d");
					_vala_code_node_unref0 (base_type);
					_vala_iterable_unref0 (_base_type_list);
					_vala_code_node_unref0 (cl);
					return;
				}
				_vala_code_node_unref0 (base_type);
			}
			_vala_iterable_unref0 (_base_type_list);
		}
	}
	_tmp38_ = sig;
	vala_code_node_accept_children ((ValaCodeNode*) _tmp38_, (ValaCodeVisitor*) self);
	{
		ValaList* _p_list = NULL;
		ValaSignal* _tmp39_ = NULL;
		ValaList* _tmp40_ = NULL;
		gint _p_size = 0;
		ValaList* _tmp41_ = NULL;
		gint _tmp42_ = 0;
		gint _tmp43_ = 0;
		gint _p_index = 0;
		_tmp39_ = sig;
		_tmp40_ = vala_signal_get_parameters (_tmp39_);
		_p_list = _tmp40_;
		_tmp41_ = _p_list;
		_tmp42_ = vala_collection_get_size ((ValaCollection*) _tmp41_);
		_tmp43_ = _tmp42_;
		_p_size = _tmp43_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp44_ = 0;
			gint _tmp45_ = 0;
			gint _tmp46_ = 0;
			ValaParameter* p = NULL;
			ValaList* _tmp47_ = NULL;
			gint _tmp48_ = 0;
			gpointer _tmp49_ = NULL;
			ValaParameter* _tmp50_ = NULL;
			ValaCCodeFile* _tmp51_ = NULL;
			GHashFunc _tmp52_ = NULL;
			GEqualFunc _tmp53_ = NULL;
			GEqualFunc _tmp54_ = NULL;
			ValaHashMap* _tmp55_ = NULL;
			ValaHashMap* _tmp56_ = NULL;
			ValaCCodeParameter* _tmp57_ = NULL;
			ValaCCodeParameter* _tmp58_ = NULL;
			_tmp44_ = _p_index;
			_p_index = _tmp44_ + 1;
			_tmp45_ = _p_index;
			_tmp46_ = _p_size;
			if (!(_tmp45_ < _tmp46_)) {
				break;
			}
			_tmp47_ = _p_list;
			_tmp48_ = _p_index;
			_tmp49_ = vala_list_get (_tmp47_, _tmp48_);
			p = (ValaParameter*) _tmp49_;
			_tmp50_ = p;
			_tmp51_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp52_ = g_direct_hash;
			_tmp53_ = g_direct_equal;
			_tmp54_ = g_direct_equal;
			_tmp55_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp52_, _tmp53_, _tmp54_);
			_tmp56_ = _tmp55_;
			_tmp57_ = vala_ccode_method_module_generate_parameter ((ValaCCodeMethodModule*) self, _tmp50_, _tmp51_, (ValaMap*) _tmp56_, NULL);
			_tmp58_ = _tmp57_;
			_vala_ccode_node_unref0 (_tmp58_);
			_vala_map_unref0 (_tmp56_);
			_vala_code_node_unref0 (p);
		}
		_vala_iterable_unref0 (_p_list);
	}
	_tmp59_ = sig;
	_tmp60_ = vala_signal_get_parameters (_tmp59_);
	_tmp61_ = _tmp60_;
	_tmp62_ = sig;
	_tmp63_ = vala_signal_get_return_type (_tmp62_);
	_tmp64_ = _tmp63_;
	vala_gsignal_module_generate_marshaller (self, _tmp61_, _tmp64_);
	_vala_iterable_unref0 (_tmp61_);
	_vala_code_node_unref0 (cl);
}


static void vala_gsignal_module_generate_marshaller (ValaGSignalModule* self, ValaList* params, ValaDataType* return_type) {
	gchar* signature = NULL;
	gint n_params = 0;
	gint i = 0;
	ValaList* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	ValaSet* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gboolean _tmp6_ = FALSE;
	ValaCCodeFunction* signal_marshaller = NULL;
	ValaList* _tmp10_ = NULL;
	ValaDataType* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	ValaCCodeFunction* _tmp14_ = NULL;
	ValaCCodeFunction* _tmp15_ = NULL;
	ValaCCodeFunction* _tmp16_ = NULL;
	ValaCCodeFunction* _tmp17_ = NULL;
	ValaCCodeParameter* _tmp18_ = NULL;
	ValaCCodeParameter* _tmp19_ = NULL;
	ValaCCodeFunction* _tmp20_ = NULL;
	ValaCCodeParameter* _tmp21_ = NULL;
	ValaCCodeParameter* _tmp22_ = NULL;
	ValaCCodeFunction* _tmp23_ = NULL;
	ValaCCodeParameter* _tmp24_ = NULL;
	ValaCCodeParameter* _tmp25_ = NULL;
	ValaCCodeFunction* _tmp26_ = NULL;
	ValaCCodeParameter* _tmp27_ = NULL;
	ValaCCodeParameter* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeParameter* _tmp30_ = NULL;
	ValaCCodeParameter* _tmp31_ = NULL;
	ValaCCodeFunction* _tmp32_ = NULL;
	ValaCCodeParameter* _tmp33_ = NULL;
	ValaCCodeParameter* _tmp34_ = NULL;
	ValaCCodeFunction* _tmp35_ = NULL;
	ValaCCodeFunctionDeclarator* callback_decl = NULL;
	ValaList* _tmp36_ = NULL;
	ValaDataType* _tmp37_ = NULL;
	gchar* _tmp38_ = NULL;
	gchar* _tmp39_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp40_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp41_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp42_ = NULL;
	ValaCCodeParameter* _tmp43_ = NULL;
	ValaCCodeParameter* _tmp44_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp77_ = NULL;
	ValaCCodeParameter* _tmp78_ = NULL;
	ValaCCodeParameter* _tmp79_ = NULL;
	ValaCCodeFunction* _tmp80_ = NULL;
	ValaCCodeFunction* _tmp81_ = NULL;
	ValaDataType* _tmp82_ = NULL;
	gchar* _tmp83_ = NULL;
	gchar* _tmp84_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp85_ = NULL;
	ValaCCodeTypeDefinition* _tmp86_ = NULL;
	ValaCCodeTypeDefinition* _tmp87_ = NULL;
	ValaCCodeFunction* _tmp88_ = NULL;
	ValaCCodeFunction* _tmp89_ = NULL;
	ValaList* _tmp90_ = NULL;
	ValaDataType* _tmp91_ = NULL;
	gchar* _tmp92_ = NULL;
	gchar* _tmp93_ = NULL;
	ValaCCodeVariableDeclarator* _tmp94_ = NULL;
	ValaCCodeVariableDeclarator* _tmp95_ = NULL;
	ValaCCodeFunction* _tmp96_ = NULL;
	ValaCCodeFunction* _tmp97_ = NULL;
	ValaCCodeIdentifier* _tmp98_ = NULL;
	ValaCCodeIdentifier* _tmp99_ = NULL;
	ValaCCodeCastExpression* _tmp100_ = NULL;
	ValaCCodeCastExpression* _tmp101_ = NULL;
	ValaCCodeVariableDeclarator* _tmp102_ = NULL;
	ValaCCodeVariableDeclarator* _tmp103_ = NULL;
	ValaCCodeFunction* _tmp104_ = NULL;
	ValaCCodeFunction* _tmp105_ = NULL;
	ValaCCodeVariableDeclarator* _tmp106_ = NULL;
	ValaCCodeVariableDeclarator* _tmp107_ = NULL;
	ValaCCodeFunction* _tmp108_ = NULL;
	ValaCCodeFunction* _tmp109_ = NULL;
	ValaCCodeVariableDeclarator* _tmp110_ = NULL;
	ValaCCodeVariableDeclarator* _tmp111_ = NULL;
	ValaCCodeFunctionCall* fc = NULL;
	gboolean _tmp112_ = FALSE;
	ValaDataType* _tmp113_ = NULL;
	ValaTypeSymbol* _tmp114_ = NULL;
	ValaTypeSymbol* _tmp115_ = NULL;
	ValaCCodeIdentifier* _tmp138_ = NULL;
	ValaCCodeIdentifier* _tmp139_ = NULL;
	ValaCCodeFunctionCall* _tmp140_ = NULL;
	ValaCCodeFunctionCall* _tmp141_ = NULL;
	ValaCCodeIdentifier* _tmp142_ = NULL;
	ValaCCodeIdentifier* _tmp143_ = NULL;
	gint _tmp144_ = 0;
	gchar* _tmp145_ = NULL;
	gchar* _tmp146_ = NULL;
	ValaCCodeConstant* _tmp147_ = NULL;
	ValaCCodeConstant* _tmp148_ = NULL;
	ValaCCodeBinaryExpression* _tmp149_ = NULL;
	ValaCCodeBinaryExpression* _tmp150_ = NULL;
	ValaCCodeFunction* _tmp151_ = NULL;
	ValaCCodeFunction* _tmp152_ = NULL;
	ValaCCodeFunctionCall* _tmp153_ = NULL;
	ValaCCodeMemberAccess* data = NULL;
	ValaCCodeIdentifier* _tmp154_ = NULL;
	ValaCCodeIdentifier* _tmp155_ = NULL;
	ValaCCodeMemberAccess* _tmp156_ = NULL;
	ValaCCodeMemberAccess* _tmp157_ = NULL;
	ValaCCodeMemberAccess* param = NULL;
	ValaCCodeIdentifier* _tmp158_ = NULL;
	ValaCCodeIdentifier* _tmp159_ = NULL;
	ValaCCodeMemberAccess* _tmp160_ = NULL;
	ValaCCodeMemberAccess* _tmp161_ = NULL;
	ValaCCodeMemberAccess* _tmp162_ = NULL;
	ValaCCodeMemberAccess* _tmp163_ = NULL;
	ValaCCodeFunctionCall* cond = NULL;
	ValaCCodeConstant* _tmp164_ = NULL;
	ValaCCodeConstant* _tmp165_ = NULL;
	ValaCCodeFunctionCall* _tmp166_ = NULL;
	ValaCCodeFunctionCall* _tmp167_ = NULL;
	ValaCCodeFunctionCall* _tmp168_ = NULL;
	ValaCCodeIdentifier* _tmp169_ = NULL;
	ValaCCodeIdentifier* _tmp170_ = NULL;
	ValaCCodeFunction* _tmp171_ = NULL;
	ValaCCodeFunction* _tmp172_ = NULL;
	ValaCCodeFunctionCall* _tmp173_ = NULL;
	ValaCCodeFunction* _tmp174_ = NULL;
	ValaCCodeFunction* _tmp175_ = NULL;
	ValaCCodeIdentifier* _tmp176_ = NULL;
	ValaCCodeIdentifier* _tmp177_ = NULL;
	ValaCCodeMemberAccess* _tmp178_ = NULL;
	ValaCCodeFunction* _tmp179_ = NULL;
	ValaCCodeFunction* _tmp180_ = NULL;
	ValaCCodeIdentifier* _tmp181_ = NULL;
	ValaCCodeIdentifier* _tmp182_ = NULL;
	ValaCCodeMemberAccess* _tmp183_ = NULL;
	ValaCCodeFunction* _tmp184_ = NULL;
	ValaCCodeFunction* _tmp185_ = NULL;
	ValaCCodeFunction* _tmp186_ = NULL;
	ValaCCodeFunction* _tmp187_ = NULL;
	ValaCCodeIdentifier* _tmp188_ = NULL;
	ValaCCodeIdentifier* _tmp189_ = NULL;
	ValaCCodeMemberAccess* _tmp190_ = NULL;
	ValaCCodeFunction* _tmp191_ = NULL;
	ValaCCodeFunction* _tmp192_ = NULL;
	ValaCCodeIdentifier* _tmp193_ = NULL;
	ValaCCodeIdentifier* _tmp194_ = NULL;
	ValaCCodeMemberAccess* _tmp195_ = NULL;
	ValaCCodeFunction* _tmp196_ = NULL;
	ValaCCodeFunction* _tmp197_ = NULL;
	ValaCCodeCastExpression* c_assign_rhs = NULL;
	ValaCCodeIdentifier* _tmp198_ = NULL;
	ValaCCodeIdentifier* _tmp199_ = NULL;
	ValaCCodeIdentifier* _tmp200_ = NULL;
	ValaCCodeIdentifier* _tmp201_ = NULL;
	ValaCCodeIdentifier* _tmp202_ = NULL;
	ValaCCodeIdentifier* _tmp203_ = NULL;
	ValaCCodeMemberAccess* _tmp204_ = NULL;
	ValaCCodeMemberAccess* _tmp205_ = NULL;
	ValaCCodeConditionalExpression* _tmp206_ = NULL;
	ValaCCodeConditionalExpression* _tmp207_ = NULL;
	ValaList* _tmp208_ = NULL;
	ValaDataType* _tmp209_ = NULL;
	gchar* _tmp210_ = NULL;
	gchar* _tmp211_ = NULL;
	ValaCCodeCastExpression* _tmp212_ = NULL;
	ValaCCodeCastExpression* _tmp213_ = NULL;
	ValaCCodeFunction* _tmp214_ = NULL;
	ValaCCodeFunction* _tmp215_ = NULL;
	ValaCCodeIdentifier* _tmp216_ = NULL;
	ValaCCodeIdentifier* _tmp217_ = NULL;
	ValaCCodeCastExpression* _tmp218_ = NULL;
	ValaCCodeIdentifier* _tmp219_ = NULL;
	ValaCCodeIdentifier* _tmp220_ = NULL;
	ValaCCodeFunctionCall* _tmp221_ = NULL;
	ValaCCodeFunctionCall* _tmp222_ = NULL;
	ValaCCodeIdentifier* _tmp223_ = NULL;
	ValaCCodeIdentifier* _tmp224_ = NULL;
	ValaCCodeFunctionCall* _tmp312_ = NULL;
	ValaCCodeIdentifier* _tmp313_ = NULL;
	ValaCCodeIdentifier* _tmp314_ = NULL;
	gboolean _tmp315_ = FALSE;
	ValaDataType* _tmp316_ = NULL;
	ValaTypeSymbol* _tmp317_ = NULL;
	ValaTypeSymbol* _tmp318_ = NULL;
	ValaCCodeFile* _tmp391_ = NULL;
	ValaCCodeFunction* _tmp392_ = NULL;
	ValaCCodeFile* _tmp393_ = NULL;
	ValaCCodeFunction* _tmp394_ = NULL;
	ValaSet* _tmp395_ = NULL;
	const gchar* _tmp396_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (params != NULL);
	g_return_if_fail (return_type != NULL);
	_tmp0_ = params;
	_tmp1_ = return_type;
	_tmp2_ = vala_gsignal_module_get_marshaller_signature (self, _tmp0_, _tmp1_);
	_g_free0 (signature);
	signature = _tmp2_;
	_tmp4_ = ((ValaCCodeBaseModule*) self)->predefined_marshal_set;
	_tmp5_ = signature;
	_tmp6_ = vala_collection_contains ((ValaCollection*) _tmp4_, _tmp5_);
	if (_tmp6_) {
		_tmp3_ = TRUE;
	} else {
		ValaSet* _tmp7_ = NULL;
		const gchar* _tmp8_ = NULL;
		gboolean _tmp9_ = FALSE;
		_tmp7_ = ((ValaCCodeBaseModule*) self)->user_marshal_set;
		_tmp8_ = signature;
		_tmp9_ = vala_collection_contains ((ValaCollection*) _tmp7_, _tmp8_);
		_tmp3_ = _tmp9_;
	}
	if (_tmp3_) {
		_g_free0 (signature);
		return;
	}
	_tmp10_ = params;
	_tmp11_ = return_type;
	_tmp12_ = vala_gsignal_module_get_marshaller_function (self, _tmp10_, _tmp11_, NULL);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_function_new (_tmp13_, "void");
	_tmp15_ = _tmp14_;
	_g_free0 (_tmp13_);
	signal_marshaller = _tmp15_;
	_tmp16_ = signal_marshaller;
	vala_ccode_function_set_modifiers (_tmp16_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp17_ = signal_marshaller;
	_tmp18_ = vala_ccode_parameter_new ("closure", "GClosure *");
	_tmp19_ = _tmp18_;
	vala_ccode_function_add_parameter (_tmp17_, _tmp19_);
	_vala_ccode_node_unref0 (_tmp19_);
	_tmp20_ = signal_marshaller;
	_tmp21_ = vala_ccode_parameter_new ("return_value", "GValue *");
	_tmp22_ = _tmp21_;
	vala_ccode_function_add_parameter (_tmp20_, _tmp22_);
	_vala_ccode_node_unref0 (_tmp22_);
	_tmp23_ = signal_marshaller;
	_tmp24_ = vala_ccode_parameter_new ("n_param_values", "guint");
	_tmp25_ = _tmp24_;
	vala_ccode_function_add_parameter (_tmp23_, _tmp25_);
	_vala_ccode_node_unref0 (_tmp25_);
	_tmp26_ = signal_marshaller;
	_tmp27_ = vala_ccode_parameter_new ("param_values", "const GValue *");
	_tmp28_ = _tmp27_;
	vala_ccode_function_add_parameter (_tmp26_, _tmp28_);
	_vala_ccode_node_unref0 (_tmp28_);
	_tmp29_ = signal_marshaller;
	_tmp30_ = vala_ccode_parameter_new ("invocation_hint", "gpointer");
	_tmp31_ = _tmp30_;
	vala_ccode_function_add_parameter (_tmp29_, _tmp31_);
	_vala_ccode_node_unref0 (_tmp31_);
	_tmp32_ = signal_marshaller;
	_tmp33_ = vala_ccode_parameter_new ("marshal_data", "gpointer");
	_tmp34_ = _tmp33_;
	vala_ccode_function_add_parameter (_tmp32_, _tmp34_);
	_vala_ccode_node_unref0 (_tmp34_);
	_tmp35_ = signal_marshaller;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp35_);
	_tmp36_ = params;
	_tmp37_ = return_type;
	_tmp38_ = vala_gsignal_module_get_marshaller_function (self, _tmp36_, _tmp37_, "GMarshalFunc");
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_function_declarator_new (_tmp39_);
	_tmp41_ = _tmp40_;
	_g_free0 (_tmp39_);
	callback_decl = _tmp41_;
	_tmp42_ = callback_decl;
	_tmp43_ = vala_ccode_parameter_new ("data1", "gpointer");
	_tmp44_ = _tmp43_;
	vala_ccode_function_declarator_add_parameter (_tmp42_, _tmp44_);
	_vala_ccode_node_unref0 (_tmp44_);
	n_params = 1;
	{
		ValaList* _p_list = NULL;
		ValaList* _tmp45_ = NULL;
		ValaList* _tmp46_ = NULL;
		gint _p_size = 0;
		ValaList* _tmp47_ = NULL;
		gint _tmp48_ = 0;
		gint _tmp49_ = 0;
		gint _p_index = 0;
		_tmp45_ = params;
		_tmp46_ = _vala_iterable_ref0 (_tmp45_);
		_p_list = _tmp46_;
		_tmp47_ = _p_list;
		_tmp48_ = vala_collection_get_size ((ValaCollection*) _tmp47_);
		_tmp49_ = _tmp48_;
		_p_size = _tmp49_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp50_ = 0;
			gint _tmp51_ = 0;
			gint _tmp52_ = 0;
			ValaParameter* p = NULL;
			ValaList* _tmp53_ = NULL;
			gint _tmp54_ = 0;
			gpointer _tmp55_ = NULL;
			ValaCCodeFunctionDeclarator* _tmp56_ = NULL;
			gint _tmp57_ = 0;
			gchar* _tmp58_ = NULL;
			gchar* _tmp59_ = NULL;
			ValaParameter* _tmp60_ = NULL;
			gchar* _tmp61_ = NULL;
			gchar* _tmp62_ = NULL;
			ValaCCodeParameter* _tmp63_ = NULL;
			ValaCCodeParameter* _tmp64_ = NULL;
			gint _tmp65_ = 0;
			ValaParameter* _tmp66_ = NULL;
			ValaDataType* _tmp67_ = NULL;
			ValaDataType* _tmp68_ = NULL;
			gboolean _tmp69_ = FALSE;
			_tmp50_ = _p_index;
			_p_index = _tmp50_ + 1;
			_tmp51_ = _p_index;
			_tmp52_ = _p_size;
			if (!(_tmp51_ < _tmp52_)) {
				break;
			}
			_tmp53_ = _p_list;
			_tmp54_ = _p_index;
			_tmp55_ = vala_list_get (_tmp53_, _tmp54_);
			p = (ValaParameter*) _tmp55_;
			_tmp56_ = callback_decl;
			_tmp57_ = n_params;
			_tmp58_ = g_strdup_printf ("arg_%d", _tmp57_);
			_tmp59_ = _tmp58_;
			_tmp60_ = p;
			_tmp61_ = vala_gsignal_module_get_value_type_name_from_parameter (self, _tmp60_);
			_tmp62_ = _tmp61_;
			_tmp63_ = vala_ccode_parameter_new (_tmp59_, _tmp62_);
			_tmp64_ = _tmp63_;
			vala_ccode_function_declarator_add_parameter (_tmp56_, _tmp64_);
			_vala_ccode_node_unref0 (_tmp64_);
			_g_free0 (_tmp62_);
			_g_free0 (_tmp59_);
			_tmp65_ = n_params;
			n_params = _tmp65_ + 1;
			_tmp66_ = p;
			_tmp67_ = vala_variable_get_variable_type ((ValaVariable*) _tmp66_);
			_tmp68_ = _tmp67_;
			_tmp69_ = vala_data_type_is_array (_tmp68_);
			if (_tmp69_) {
				ValaCCodeFunctionDeclarator* _tmp70_ = NULL;
				gint _tmp71_ = 0;
				gchar* _tmp72_ = NULL;
				gchar* _tmp73_ = NULL;
				ValaCCodeParameter* _tmp74_ = NULL;
				ValaCCodeParameter* _tmp75_ = NULL;
				gint _tmp76_ = 0;
				_tmp70_ = callback_decl;
				_tmp71_ = n_params;
				_tmp72_ = g_strdup_printf ("arg_%d", _tmp71_);
				_tmp73_ = _tmp72_;
				_tmp74_ = vala_ccode_parameter_new (_tmp73_, "gint");
				_tmp75_ = _tmp74_;
				vala_ccode_function_declarator_add_parameter (_tmp70_, _tmp75_);
				_vala_ccode_node_unref0 (_tmp75_);
				_g_free0 (_tmp73_);
				_tmp76_ = n_params;
				n_params = _tmp76_ + 1;
			}
			_vala_code_node_unref0 (p);
		}
		_vala_iterable_unref0 (_p_list);
	}
	_tmp77_ = callback_decl;
	_tmp78_ = vala_ccode_parameter_new ("data2", "gpointer");
	_tmp79_ = _tmp78_;
	vala_ccode_function_declarator_add_parameter (_tmp77_, _tmp79_);
	_vala_ccode_node_unref0 (_tmp79_);
	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp81_ = _tmp80_;
	_tmp82_ = return_type;
	_tmp83_ = vala_gsignal_module_get_value_type_name_from_type_reference (self, _tmp82_);
	_tmp84_ = _tmp83_;
	_tmp85_ = callback_decl;
	_tmp86_ = vala_ccode_type_definition_new (_tmp84_, (ValaCCodeDeclarator*) _tmp85_);
	_tmp87_ = _tmp86_;
	vala_ccode_function_add_statement (_tmp81_, (ValaCCodeNode*) _tmp87_);
	_vala_ccode_node_unref0 (_tmp87_);
	_g_free0 (_tmp84_);
	_tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp89_ = _tmp88_;
	_tmp90_ = params;
	_tmp91_ = return_type;
	_tmp92_ = vala_gsignal_module_get_marshaller_function (self, _tmp90_, _tmp91_, "GMarshalFunc");
	_tmp93_ = _tmp92_;
	_tmp94_ = vala_ccode_variable_declarator_new ("callback", NULL, NULL);
	_tmp95_ = _tmp94_;
	vala_ccode_function_add_declaration (_tmp89_, _tmp93_, (ValaCCodeDeclarator*) _tmp95_, VALA_CCODE_MODIFIERS_REGISTER);
	_vala_ccode_node_unref0 (_tmp95_);
	_g_free0 (_tmp93_);
	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp97_ = _tmp96_;
	_tmp98_ = vala_ccode_identifier_new ("closure");
	_tmp99_ = _tmp98_;
	_tmp100_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp99_, "GCClosure *");
	_tmp101_ = _tmp100_;
	_tmp102_ = vala_ccode_variable_declarator_new ("cc", (ValaCCodeExpression*) _tmp101_, NULL);
	_tmp103_ = _tmp102_;
	vala_ccode_function_add_declaration (_tmp97_, "GCClosure *", (ValaCCodeDeclarator*) _tmp103_, VALA_CCODE_MODIFIERS_REGISTER);
	_vala_ccode_node_unref0 (_tmp103_);
	_vala_ccode_node_unref0 (_tmp101_);
	_vala_ccode_node_unref0 (_tmp99_);
	_tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp105_ = _tmp104_;
	_tmp106_ = vala_ccode_variable_declarator_new ("data1", NULL, NULL);
	_tmp107_ = _tmp106_;
	vala_ccode_function_add_declaration (_tmp105_, "gpointer", (ValaCCodeDeclarator*) _tmp107_, VALA_CCODE_MODIFIERS_REGISTER);
	_vala_ccode_node_unref0 (_tmp107_);
	_tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp109_ = _tmp108_;
	_tmp110_ = vala_ccode_variable_declarator_new ("data2", NULL, NULL);
	_tmp111_ = _tmp110_;
	vala_ccode_function_add_declaration (_tmp109_, "gpointer", (ValaCCodeDeclarator*) _tmp111_, VALA_CCODE_MODIFIERS_REGISTER);
	_vala_ccode_node_unref0 (_tmp111_);
	_tmp113_ = return_type;
	_tmp114_ = vala_data_type_get_data_type (_tmp113_);
	_tmp115_ = _tmp114_;
	if (_tmp115_ != NULL) {
		_tmp112_ = TRUE;
	} else {
		ValaDataType* _tmp116_ = NULL;
		gboolean _tmp117_ = FALSE;
		_tmp116_ = return_type;
		_tmp117_ = vala_data_type_is_array (_tmp116_);
		_tmp112_ = _tmp117_;
	}
	if (_tmp112_) {
		ValaCCodeFunction* _tmp118_ = NULL;
		ValaCCodeFunction* _tmp119_ = NULL;
		ValaDataType* _tmp120_ = NULL;
		gchar* _tmp121_ = NULL;
		gchar* _tmp122_ = NULL;
		ValaCCodeVariableDeclarator* _tmp123_ = NULL;
		ValaCCodeVariableDeclarator* _tmp124_ = NULL;
		ValaCCodeIdentifier* _tmp125_ = NULL;
		ValaCCodeIdentifier* _tmp126_ = NULL;
		ValaCCodeFunctionCall* _tmp127_ = NULL;
		ValaCCodeFunctionCall* _tmp128_ = NULL;
		ValaCCodeIdentifier* _tmp129_ = NULL;
		ValaCCodeIdentifier* _tmp130_ = NULL;
		ValaCCodeConstant* _tmp131_ = NULL;
		ValaCCodeConstant* _tmp132_ = NULL;
		ValaCCodeBinaryExpression* _tmp133_ = NULL;
		ValaCCodeBinaryExpression* _tmp134_ = NULL;
		ValaCCodeFunction* _tmp135_ = NULL;
		ValaCCodeFunction* _tmp136_ = NULL;
		ValaCCodeFunctionCall* _tmp137_ = NULL;
		_tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp119_ = _tmp118_;
		_tmp120_ = return_type;
		_tmp121_ = vala_gsignal_module_get_value_type_name_from_type_reference (self, _tmp120_);
		_tmp122_ = _tmp121_;
		_tmp123_ = vala_ccode_variable_declarator_new ("v_return", NULL, NULL);
		_tmp124_ = _tmp123_;
		vala_ccode_function_add_declaration (_tmp119_, _tmp122_, (ValaCCodeDeclarator*) _tmp124_, 0);
		_vala_ccode_node_unref0 (_tmp124_);
		_g_free0 (_tmp122_);
		_tmp125_ = vala_ccode_identifier_new ("g_return_if_fail");
		_tmp126_ = _tmp125_;
		_tmp127_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp126_);
		_vala_ccode_node_unref0 (fc);
		fc = _tmp127_;
		_vala_ccode_node_unref0 (_tmp126_);
		_tmp128_ = fc;
		_tmp129_ = vala_ccode_identifier_new ("return_value");
		_tmp130_ = _tmp129_;
		_tmp131_ = vala_ccode_constant_new ("NULL");
		_tmp132_ = _tmp131_;
		_tmp133_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp130_, (ValaCCodeExpression*) _tmp132_);
		_tmp134_ = _tmp133_;
		vala_ccode_function_call_add_argument (_tmp128_, (ValaCCodeExpression*) _tmp134_);
		_vala_ccode_node_unref0 (_tmp134_);
		_vala_ccode_node_unref0 (_tmp132_);
		_vala_ccode_node_unref0 (_tmp130_);
		_tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp136_ = _tmp135_;
		_tmp137_ = fc;
		vala_ccode_function_add_expression (_tmp136_, (ValaCCodeExpression*) _tmp137_);
	}
	_tmp138_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp139_ = _tmp138_;
	_tmp140_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp139_);
	_vala_ccode_node_unref0 (fc);
	fc = _tmp140_;
	_vala_ccode_node_unref0 (_tmp139_);
	_tmp141_ = fc;
	_tmp142_ = vala_ccode_identifier_new ("n_param_values");
	_tmp143_ = _tmp142_;
	_tmp144_ = n_params;
	_tmp145_ = g_strdup_printf ("%i", _tmp144_);
	_tmp146_ = _tmp145_;
	_tmp147_ = vala_ccode_constant_new (_tmp146_);
	_tmp148_ = _tmp147_;
	_tmp149_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp143_, (ValaCCodeExpression*) _tmp148_);
	_tmp150_ = _tmp149_;
	vala_ccode_function_call_add_argument (_tmp141_, (ValaCCodeExpression*) _tmp150_);
	_vala_ccode_node_unref0 (_tmp150_);
	_vala_ccode_node_unref0 (_tmp148_);
	_g_free0 (_tmp146_);
	_vala_ccode_node_unref0 (_tmp143_);
	_tmp151_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp152_ = _tmp151_;
	_tmp153_ = fc;
	vala_ccode_function_add_expression (_tmp152_, (ValaCCodeExpression*) _tmp153_);
	_tmp154_ = vala_ccode_identifier_new ("closure");
	_tmp155_ = _tmp154_;
	_tmp156_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp155_, "data", TRUE);
	_tmp157_ = _tmp156_;
	_vala_ccode_node_unref0 (_tmp155_);
	data = _tmp157_;
	_tmp158_ = vala_ccode_identifier_new ("param_values");
	_tmp159_ = _tmp158_;
	_tmp160_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp159_, "data[0]", TRUE);
	_tmp161_ = _tmp160_;
	_tmp162_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp161_, "v_pointer", FALSE);
	_tmp163_ = _tmp162_;
	_vala_ccode_node_unref0 (_tmp161_);
	_vala_ccode_node_unref0 (_tmp159_);
	param = _tmp163_;
	_tmp164_ = vala_ccode_constant_new ("G_CCLOSURE_SWAP_DATA");
	_tmp165_ = _tmp164_;
	_tmp166_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp165_);
	_tmp167_ = _tmp166_;
	_vala_ccode_node_unref0 (_tmp165_);
	cond = _tmp167_;
	_tmp168_ = cond;
	_tmp169_ = vala_ccode_identifier_new ("closure");
	_tmp170_ = _tmp169_;
	vala_ccode_function_call_add_argument (_tmp168_, (ValaCCodeExpression*) _tmp170_);
	_vala_ccode_node_unref0 (_tmp170_);
	_tmp171_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp172_ = _tmp171_;
	_tmp173_ = cond;
	vala_ccode_function_open_if (_tmp172_, (ValaCCodeExpression*) _tmp173_);
	_tmp174_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp175_ = _tmp174_;
	_tmp176_ = vala_ccode_identifier_new ("data1");
	_tmp177_ = _tmp176_;
	_tmp178_ = data;
	vala_ccode_function_add_assignment (_tmp175_, (ValaCCodeExpression*) _tmp177_, (ValaCCodeExpression*) _tmp178_);
	_vala_ccode_node_unref0 (_tmp177_);
	_tmp179_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp180_ = _tmp179_;
	_tmp181_ = vala_ccode_identifier_new ("data2");
	_tmp182_ = _tmp181_;
	_tmp183_ = param;
	vala_ccode_function_add_assignment (_tmp180_, (ValaCCodeExpression*) _tmp182_, (ValaCCodeExpression*) _tmp183_);
	_vala_ccode_node_unref0 (_tmp182_);
	_tmp184_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp185_ = _tmp184_;
	vala_ccode_function_add_else (_tmp185_);
	_tmp186_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp187_ = _tmp186_;
	_tmp188_ = vala_ccode_identifier_new ("data1");
	_tmp189_ = _tmp188_;
	_tmp190_ = param;
	vala_ccode_function_add_assignment (_tmp187_, (ValaCCodeExpression*) _tmp189_, (ValaCCodeExpression*) _tmp190_);
	_vala_ccode_node_unref0 (_tmp189_);
	_tmp191_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp192_ = _tmp191_;
	_tmp193_ = vala_ccode_identifier_new ("data2");
	_tmp194_ = _tmp193_;
	_tmp195_ = data;
	vala_ccode_function_add_assignment (_tmp192_, (ValaCCodeExpression*) _tmp194_, (ValaCCodeExpression*) _tmp195_);
	_vala_ccode_node_unref0 (_tmp194_);
	_tmp196_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp197_ = _tmp196_;
	vala_ccode_function_close (_tmp197_);
	_tmp198_ = vala_ccode_identifier_new ("marshal_data");
	_tmp199_ = _tmp198_;
	_tmp200_ = vala_ccode_identifier_new ("marshal_data");
	_tmp201_ = _tmp200_;
	_tmp202_ = vala_ccode_identifier_new ("cc");
	_tmp203_ = _tmp202_;
	_tmp204_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp203_, "callback", TRUE);
	_tmp205_ = _tmp204_;
	_tmp206_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp199_, (ValaCCodeExpression*) _tmp201_, (ValaCCodeExpression*) _tmp205_);
	_tmp207_ = _tmp206_;
	_tmp208_ = params;
	_tmp209_ = return_type;
	_tmp210_ = vala_gsignal_module_get_marshaller_function (self, _tmp208_, _tmp209_, "GMarshalFunc");
	_tmp211_ = _tmp210_;
	_tmp212_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp207_, _tmp211_);
	_tmp213_ = _tmp212_;
	_g_free0 (_tmp211_);
	_vala_ccode_node_unref0 (_tmp207_);
	_vala_ccode_node_unref0 (_tmp205_);
	_vala_ccode_node_unref0 (_tmp203_);
	_vala_ccode_node_unref0 (_tmp201_);
	_vala_ccode_node_unref0 (_tmp199_);
	c_assign_rhs = _tmp213_;
	_tmp214_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp215_ = _tmp214_;
	_tmp216_ = vala_ccode_identifier_new ("callback");
	_tmp217_ = _tmp216_;
	_tmp218_ = c_assign_rhs;
	vala_ccode_function_add_assignment (_tmp215_, (ValaCCodeExpression*) _tmp217_, (ValaCCodeExpression*) _tmp218_);
	_vala_ccode_node_unref0 (_tmp217_);
	_tmp219_ = vala_ccode_identifier_new ("callback");
	_tmp220_ = _tmp219_;
	_tmp221_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp220_);
	_vala_ccode_node_unref0 (fc);
	fc = _tmp221_;
	_vala_ccode_node_unref0 (_tmp220_);
	_tmp222_ = fc;
	_tmp223_ = vala_ccode_identifier_new ("data1");
	_tmp224_ = _tmp223_;
	vala_ccode_function_call_add_argument (_tmp222_, (ValaCCodeExpression*) _tmp224_);
	_vala_ccode_node_unref0 (_tmp224_);
	i = 1;
	{
		ValaList* _p_list = NULL;
		ValaList* _tmp225_ = NULL;
		ValaList* _tmp226_ = NULL;
		gint _p_size = 0;
		ValaList* _tmp227_ = NULL;
		gint _tmp228_ = 0;
		gint _tmp229_ = 0;
		gint _p_index = 0;
		_tmp225_ = params;
		_tmp226_ = _vala_iterable_ref0 (_tmp225_);
		_p_list = _tmp226_;
		_tmp227_ = _p_list;
		_tmp228_ = vala_collection_get_size ((ValaCollection*) _tmp227_);
		_tmp229_ = _tmp228_;
		_p_size = _tmp229_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp230_ = 0;
			gint _tmp231_ = 0;
			gint _tmp232_ = 0;
			ValaParameter* p = NULL;
			ValaList* _tmp233_ = NULL;
			gint _tmp234_ = 0;
			gpointer _tmp235_ = NULL;
			gchar* get_value_function = NULL;
			gboolean is_array = FALSE;
			ValaParameter* _tmp236_ = NULL;
			ValaDataType* _tmp237_ = NULL;
			ValaDataType* _tmp238_ = NULL;
			gboolean _tmp239_ = FALSE;
			ValaParameter* _tmp240_ = NULL;
			ValaParameterDirection _tmp241_ = 0;
			ValaParameterDirection _tmp242_ = 0;
			ValaCCodeFunctionCall* inner_fc = NULL;
			const gchar* _tmp277_ = NULL;
			ValaCCodeIdentifier* _tmp278_ = NULL;
			ValaCCodeIdentifier* _tmp279_ = NULL;
			ValaCCodeFunctionCall* _tmp280_ = NULL;
			ValaCCodeFunctionCall* _tmp281_ = NULL;
			ValaCCodeFunctionCall* _tmp282_ = NULL;
			ValaCCodeIdentifier* _tmp283_ = NULL;
			ValaCCodeIdentifier* _tmp284_ = NULL;
			gint _tmp285_ = 0;
			gchar* _tmp286_ = NULL;
			gchar* _tmp287_ = NULL;
			ValaCCodeIdentifier* _tmp288_ = NULL;
			ValaCCodeIdentifier* _tmp289_ = NULL;
			ValaCCodeBinaryExpression* _tmp290_ = NULL;
			ValaCCodeBinaryExpression* _tmp291_ = NULL;
			ValaCCodeFunctionCall* _tmp292_ = NULL;
			ValaCCodeFunctionCall* _tmp293_ = NULL;
			gint _tmp294_ = 0;
			gboolean _tmp295_ = FALSE;
			_tmp230_ = _p_index;
			_p_index = _tmp230_ + 1;
			_tmp231_ = _p_index;
			_tmp232_ = _p_size;
			if (!(_tmp231_ < _tmp232_)) {
				break;
			}
			_tmp233_ = _p_list;
			_tmp234_ = _p_index;
			_tmp235_ = vala_list_get (_tmp233_, _tmp234_);
			p = (ValaParameter*) _tmp235_;
			_tmp236_ = p;
			_tmp237_ = vala_variable_get_variable_type ((ValaVariable*) _tmp236_);
			_tmp238_ = _tmp237_;
			_tmp239_ = vala_data_type_is_array (_tmp238_);
			is_array = _tmp239_;
			_tmp240_ = p;
			_tmp241_ = vala_parameter_get_direction (_tmp240_);
			_tmp242_ = _tmp241_;
			if (_tmp242_ != VALA_PARAMETER_DIRECTION_IN) {
				gchar* _tmp243_ = NULL;
				_tmp243_ = g_strdup ("g_value_get_pointer");
				_g_free0 (get_value_function);
				get_value_function = _tmp243_;
			} else {
				gboolean _tmp244_ = FALSE;
				_tmp244_ = is_array;
				if (_tmp244_) {
					ValaParameter* _tmp245_ = NULL;
					ValaDataType* _tmp246_ = NULL;
					ValaDataType* _tmp247_ = NULL;
					ValaDataType* _tmp248_ = NULL;
					ValaDataType* _tmp249_ = NULL;
					ValaTypeSymbol* _tmp250_ = NULL;
					ValaTypeSymbol* _tmp251_ = NULL;
					ValaDataType* _tmp252_ = NULL;
					ValaTypeSymbol* _tmp253_ = NULL;
					ValaTypeSymbol* _tmp254_ = NULL;
					_tmp245_ = p;
					_tmp246_ = vala_variable_get_variable_type ((ValaVariable*) _tmp245_);
					_tmp247_ = _tmp246_;
					_tmp248_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp247_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
					_tmp249_ = _tmp248_;
					_tmp250_ = vala_data_type_get_data_type (_tmp249_);
					_tmp251_ = _tmp250_;
					_tmp252_ = ((ValaCCodeBaseModule*) self)->string_type;
					_tmp253_ = vala_data_type_get_data_type (_tmp252_);
					_tmp254_ = _tmp253_;
					if (_tmp251_ == _tmp254_) {
						gchar* _tmp255_ = NULL;
						_tmp255_ = g_strdup ("g_value_get_boxed");
						_g_free0 (get_value_function);
						get_value_function = _tmp255_;
					} else {
						gchar* _tmp256_ = NULL;
						_tmp256_ = g_strdup ("g_value_get_pointer");
						_g_free0 (get_value_function);
						get_value_function = _tmp256_;
					}
				} else {
					gboolean _tmp257_ = FALSE;
					ValaParameter* _tmp258_ = NULL;
					ValaDataType* _tmp259_ = NULL;
					ValaDataType* _tmp260_ = NULL;
					_tmp258_ = p;
					_tmp259_ = vala_variable_get_variable_type ((ValaVariable*) _tmp258_);
					_tmp260_ = _tmp259_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp260_, VALA_TYPE_POINTER_TYPE)) {
						_tmp257_ = TRUE;
					} else {
						ValaParameter* _tmp261_ = NULL;
						ValaDataType* _tmp262_ = NULL;
						ValaDataType* _tmp263_ = NULL;
						ValaTypeParameter* _tmp264_ = NULL;
						ValaTypeParameter* _tmp265_ = NULL;
						_tmp261_ = p;
						_tmp262_ = vala_variable_get_variable_type ((ValaVariable*) _tmp261_);
						_tmp263_ = _tmp262_;
						_tmp264_ = vala_data_type_get_type_parameter (_tmp263_);
						_tmp265_ = _tmp264_;
						_tmp257_ = _tmp265_ != NULL;
					}
					if (_tmp257_) {
						gchar* _tmp266_ = NULL;
						_tmp266_ = g_strdup ("g_value_get_pointer");
						_g_free0 (get_value_function);
						get_value_function = _tmp266_;
					} else {
						ValaParameter* _tmp267_ = NULL;
						ValaDataType* _tmp268_ = NULL;
						ValaDataType* _tmp269_ = NULL;
						_tmp267_ = p;
						_tmp268_ = vala_variable_get_variable_type ((ValaVariable*) _tmp267_);
						_tmp269_ = _tmp268_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp269_, VALA_TYPE_ERROR_TYPE)) {
							gchar* _tmp270_ = NULL;
							_tmp270_ = g_strdup ("g_value_get_pointer");
							_g_free0 (get_value_function);
							get_value_function = _tmp270_;
						} else {
							ValaParameter* _tmp271_ = NULL;
							ValaDataType* _tmp272_ = NULL;
							ValaDataType* _tmp273_ = NULL;
							ValaTypeSymbol* _tmp274_ = NULL;
							ValaTypeSymbol* _tmp275_ = NULL;
							gchar* _tmp276_ = NULL;
							_tmp271_ = p;
							_tmp272_ = vala_variable_get_variable_type ((ValaVariable*) _tmp271_);
							_tmp273_ = _tmp272_;
							_tmp274_ = vala_data_type_get_data_type (_tmp273_);
							_tmp275_ = _tmp274_;
							_tmp276_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp275_);
							_g_free0 (get_value_function);
							get_value_function = _tmp276_;
						}
					}
				}
			}
			_tmp277_ = get_value_function;
			_tmp278_ = vala_ccode_identifier_new (_tmp277_);
			_tmp279_ = _tmp278_;
			_tmp280_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp279_);
			_tmp281_ = _tmp280_;
			_vala_ccode_node_unref0 (_tmp279_);
			inner_fc = _tmp281_;
			_tmp282_ = inner_fc;
			_tmp283_ = vala_ccode_identifier_new ("param_values");
			_tmp284_ = _tmp283_;
			_tmp285_ = i;
			_tmp286_ = g_strdup_printf ("%i", _tmp285_);
			_tmp287_ = _tmp286_;
			_tmp288_ = vala_ccode_identifier_new (_tmp287_);
			_tmp289_ = _tmp288_;
			_tmp290_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp284_, (ValaCCodeExpression*) _tmp289_);
			_tmp291_ = _tmp290_;
			vala_ccode_function_call_add_argument (_tmp282_, (ValaCCodeExpression*) _tmp291_);
			_vala_ccode_node_unref0 (_tmp291_);
			_vala_ccode_node_unref0 (_tmp289_);
			_g_free0 (_tmp287_);
			_vala_ccode_node_unref0 (_tmp284_);
			_tmp292_ = fc;
			_tmp293_ = inner_fc;
			vala_ccode_function_call_add_argument (_tmp292_, (ValaCCodeExpression*) _tmp293_);
			_tmp294_ = i;
			i = _tmp294_ + 1;
			_tmp295_ = is_array;
			if (_tmp295_) {
				ValaCCodeIdentifier* _tmp296_ = NULL;
				ValaCCodeIdentifier* _tmp297_ = NULL;
				ValaCCodeFunctionCall* _tmp298_ = NULL;
				ValaCCodeFunctionCall* _tmp299_ = NULL;
				ValaCCodeIdentifier* _tmp300_ = NULL;
				ValaCCodeIdentifier* _tmp301_ = NULL;
				gint _tmp302_ = 0;
				gchar* _tmp303_ = NULL;
				gchar* _tmp304_ = NULL;
				ValaCCodeIdentifier* _tmp305_ = NULL;
				ValaCCodeIdentifier* _tmp306_ = NULL;
				ValaCCodeBinaryExpression* _tmp307_ = NULL;
				ValaCCodeBinaryExpression* _tmp308_ = NULL;
				ValaCCodeFunctionCall* _tmp309_ = NULL;
				ValaCCodeFunctionCall* _tmp310_ = NULL;
				gint _tmp311_ = 0;
				_tmp296_ = vala_ccode_identifier_new ("g_value_get_int");
				_tmp297_ = _tmp296_;
				_tmp298_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp297_);
				_vala_ccode_node_unref0 (inner_fc);
				inner_fc = _tmp298_;
				_vala_ccode_node_unref0 (_tmp297_);
				_tmp299_ = inner_fc;
				_tmp300_ = vala_ccode_identifier_new ("param_values");
				_tmp301_ = _tmp300_;
				_tmp302_ = i;
				_tmp303_ = g_strdup_printf ("%i", _tmp302_);
				_tmp304_ = _tmp303_;
				_tmp305_ = vala_ccode_identifier_new (_tmp304_);
				_tmp306_ = _tmp305_;
				_tmp307_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp301_, (ValaCCodeExpression*) _tmp306_);
				_tmp308_ = _tmp307_;
				vala_ccode_function_call_add_argument (_tmp299_, (ValaCCodeExpression*) _tmp308_);
				_vala_ccode_node_unref0 (_tmp308_);
				_vala_ccode_node_unref0 (_tmp306_);
				_g_free0 (_tmp304_);
				_vala_ccode_node_unref0 (_tmp301_);
				_tmp309_ = fc;
				_tmp310_ = inner_fc;
				vala_ccode_function_call_add_argument (_tmp309_, (ValaCCodeExpression*) _tmp310_);
				_tmp311_ = i;
				i = _tmp311_ + 1;
			}
			_vala_ccode_node_unref0 (inner_fc);
			_g_free0 (get_value_function);
			_vala_code_node_unref0 (p);
		}
		_vala_iterable_unref0 (_p_list);
	}
	_tmp312_ = fc;
	_tmp313_ = vala_ccode_identifier_new ("data2");
	_tmp314_ = _tmp313_;
	vala_ccode_function_call_add_argument (_tmp312_, (ValaCCodeExpression*) _tmp314_);
	_vala_ccode_node_unref0 (_tmp314_);
	_tmp316_ = return_type;
	_tmp317_ = vala_data_type_get_data_type (_tmp316_);
	_tmp318_ = _tmp317_;
	if (_tmp318_ != NULL) {
		_tmp315_ = TRUE;
	} else {
		ValaDataType* _tmp319_ = NULL;
		gboolean _tmp320_ = FALSE;
		_tmp319_ = return_type;
		_tmp320_ = vala_data_type_is_array (_tmp319_);
		_tmp315_ = _tmp320_;
	}
	if (_tmp315_) {
		ValaCCodeFunction* _tmp321_ = NULL;
		ValaCCodeFunction* _tmp322_ = NULL;
		ValaCCodeIdentifier* _tmp323_ = NULL;
		ValaCCodeIdentifier* _tmp324_ = NULL;
		ValaCCodeFunctionCall* _tmp325_ = NULL;
		ValaCCodeFunctionCall* set_fc = NULL;
		ValaDataType* _tmp326_ = NULL;
		gboolean _tmp327_ = FALSE;
		ValaCCodeFunctionCall* _tmp379_ = NULL;
		ValaCCodeIdentifier* _tmp380_ = NULL;
		ValaCCodeIdentifier* _tmp381_ = NULL;
		ValaCCodeFunctionCall* _tmp382_ = NULL;
		ValaCCodeIdentifier* _tmp383_ = NULL;
		ValaCCodeIdentifier* _tmp384_ = NULL;
		ValaCCodeFunction* _tmp385_ = NULL;
		ValaCCodeFunction* _tmp386_ = NULL;
		ValaCCodeFunctionCall* _tmp387_ = NULL;
		_tmp321_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp322_ = _tmp321_;
		_tmp323_ = vala_ccode_identifier_new ("v_return");
		_tmp324_ = _tmp323_;
		_tmp325_ = fc;
		vala_ccode_function_add_assignment (_tmp322_, (ValaCCodeExpression*) _tmp324_, (ValaCCodeExpression*) _tmp325_);
		_vala_ccode_node_unref0 (_tmp324_);
		_tmp326_ = return_type;
		_tmp327_ = vala_data_type_is_array (_tmp326_);
		if (_tmp327_) {
			ValaDataType* _tmp328_ = NULL;
			ValaDataType* _tmp329_ = NULL;
			ValaDataType* _tmp330_ = NULL;
			ValaTypeSymbol* _tmp331_ = NULL;
			ValaTypeSymbol* _tmp332_ = NULL;
			ValaDataType* _tmp333_ = NULL;
			ValaTypeSymbol* _tmp334_ = NULL;
			ValaTypeSymbol* _tmp335_ = NULL;
			_tmp328_ = return_type;
			_tmp329_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp328_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
			_tmp330_ = _tmp329_;
			_tmp331_ = vala_data_type_get_data_type (_tmp330_);
			_tmp332_ = _tmp331_;
			_tmp333_ = ((ValaCCodeBaseModule*) self)->string_type;
			_tmp334_ = vala_data_type_get_data_type (_tmp333_);
			_tmp335_ = _tmp334_;
			if (_tmp332_ == _tmp335_) {
				ValaCCodeIdentifier* _tmp336_ = NULL;
				ValaCCodeIdentifier* _tmp337_ = NULL;
				ValaCCodeFunctionCall* _tmp338_ = NULL;
				_tmp336_ = vala_ccode_identifier_new ("g_value_take_boxed");
				_tmp337_ = _tmp336_;
				_tmp338_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp337_);
				_vala_ccode_node_unref0 (set_fc);
				set_fc = _tmp338_;
				_vala_ccode_node_unref0 (_tmp337_);
			} else {
				ValaCCodeIdentifier* _tmp339_ = NULL;
				ValaCCodeIdentifier* _tmp340_ = NULL;
				ValaCCodeFunctionCall* _tmp341_ = NULL;
				_tmp339_ = vala_ccode_identifier_new ("g_value_set_pointer");
				_tmp340_ = _tmp339_;
				_tmp341_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp340_);
				_vala_ccode_node_unref0 (set_fc);
				set_fc = _tmp341_;
				_vala_ccode_node_unref0 (_tmp340_);
			}
		} else {
			ValaDataType* _tmp342_ = NULL;
			ValaTypeParameter* _tmp343_ = NULL;
			ValaTypeParameter* _tmp344_ = NULL;
			_tmp342_ = return_type;
			_tmp343_ = vala_data_type_get_type_parameter (_tmp342_);
			_tmp344_ = _tmp343_;
			if (_tmp344_ != NULL) {
				ValaCCodeIdentifier* _tmp345_ = NULL;
				ValaCCodeIdentifier* _tmp346_ = NULL;
				ValaCCodeFunctionCall* _tmp347_ = NULL;
				_tmp345_ = vala_ccode_identifier_new ("g_value_set_pointer");
				_tmp346_ = _tmp345_;
				_tmp347_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp346_);
				_vala_ccode_node_unref0 (set_fc);
				set_fc = _tmp347_;
				_vala_ccode_node_unref0 (_tmp346_);
			} else {
				ValaDataType* _tmp348_ = NULL;
				_tmp348_ = return_type;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp348_, VALA_TYPE_ERROR_TYPE)) {
					ValaCCodeIdentifier* _tmp349_ = NULL;
					ValaCCodeIdentifier* _tmp350_ = NULL;
					ValaCCodeFunctionCall* _tmp351_ = NULL;
					_tmp349_ = vala_ccode_identifier_new ("g_value_set_pointer");
					_tmp350_ = _tmp349_;
					_tmp351_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp350_);
					_vala_ccode_node_unref0 (set_fc);
					set_fc = _tmp351_;
					_vala_ccode_node_unref0 (_tmp350_);
				} else {
					ValaDataType* _tmp352_ = NULL;
					ValaTypeSymbol* _tmp353_ = NULL;
					ValaTypeSymbol* _tmp354_ = NULL;
					ValaDataType* _tmp355_ = NULL;
					ValaTypeSymbol* _tmp356_ = NULL;
					ValaTypeSymbol* _tmp357_ = NULL;
					_tmp352_ = return_type;
					_tmp353_ = vala_data_type_get_data_type (_tmp352_);
					_tmp354_ = _tmp353_;
					_tmp355_ = ((ValaCCodeBaseModule*) self)->string_type;
					_tmp356_ = vala_data_type_get_data_type (_tmp355_);
					_tmp357_ = _tmp356_;
					if (_tmp354_ == _tmp357_) {
						ValaCCodeIdentifier* _tmp358_ = NULL;
						ValaCCodeIdentifier* _tmp359_ = NULL;
						ValaCCodeFunctionCall* _tmp360_ = NULL;
						_tmp358_ = vala_ccode_identifier_new ("g_value_take_string");
						_tmp359_ = _tmp358_;
						_tmp360_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp359_);
						_vala_ccode_node_unref0 (set_fc);
						set_fc = _tmp360_;
						_vala_ccode_node_unref0 (_tmp359_);
					} else {
						gboolean _tmp361_ = FALSE;
						ValaDataType* _tmp362_ = NULL;
						ValaTypeSymbol* _tmp363_ = NULL;
						ValaTypeSymbol* _tmp364_ = NULL;
						_tmp362_ = return_type;
						_tmp363_ = vala_data_type_get_data_type (_tmp362_);
						_tmp364_ = _tmp363_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp364_, VALA_TYPE_CLASS)) {
							_tmp361_ = TRUE;
						} else {
							ValaDataType* _tmp365_ = NULL;
							ValaTypeSymbol* _tmp366_ = NULL;
							ValaTypeSymbol* _tmp367_ = NULL;
							_tmp365_ = return_type;
							_tmp366_ = vala_data_type_get_data_type (_tmp365_);
							_tmp367_ = _tmp366_;
							_tmp361_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp367_, VALA_TYPE_INTERFACE);
						}
						if (_tmp361_) {
							ValaCCodeIdentifier* _tmp368_ = NULL;
							ValaCCodeIdentifier* _tmp369_ = NULL;
							ValaCCodeFunctionCall* _tmp370_ = NULL;
							_tmp368_ = vala_ccode_identifier_new ("g_value_take_object");
							_tmp369_ = _tmp368_;
							_tmp370_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp369_);
							_vala_ccode_node_unref0 (set_fc);
							set_fc = _tmp370_;
							_vala_ccode_node_unref0 (_tmp369_);
						} else {
							ValaDataType* _tmp371_ = NULL;
							ValaTypeSymbol* _tmp372_ = NULL;
							ValaTypeSymbol* _tmp373_ = NULL;
							gchar* _tmp374_ = NULL;
							gchar* _tmp375_ = NULL;
							ValaCCodeIdentifier* _tmp376_ = NULL;
							ValaCCodeIdentifier* _tmp377_ = NULL;
							ValaCCodeFunctionCall* _tmp378_ = NULL;
							_tmp371_ = return_type;
							_tmp372_ = vala_data_type_get_data_type (_tmp371_);
							_tmp373_ = _tmp372_;
							_tmp374_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp373_);
							_tmp375_ = _tmp374_;
							_tmp376_ = vala_ccode_identifier_new (_tmp375_);
							_tmp377_ = _tmp376_;
							_tmp378_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp377_);
							_vala_ccode_node_unref0 (set_fc);
							set_fc = _tmp378_;
							_vala_ccode_node_unref0 (_tmp377_);
							_g_free0 (_tmp375_);
						}
					}
				}
			}
		}
		_tmp379_ = set_fc;
		_tmp380_ = vala_ccode_identifier_new ("return_value");
		_tmp381_ = _tmp380_;
		vala_ccode_function_call_add_argument (_tmp379_, (ValaCCodeExpression*) _tmp381_);
		_vala_ccode_node_unref0 (_tmp381_);
		_tmp382_ = set_fc;
		_tmp383_ = vala_ccode_identifier_new ("v_return");
		_tmp384_ = _tmp383_;
		vala_ccode_function_call_add_argument (_tmp382_, (ValaCCodeExpression*) _tmp384_);
		_vala_ccode_node_unref0 (_tmp384_);
		_tmp385_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp386_ = _tmp385_;
		_tmp387_ = set_fc;
		vala_ccode_function_add_expression (_tmp386_, (ValaCCodeExpression*) _tmp387_);
		_vala_ccode_node_unref0 (set_fc);
	} else {
		ValaCCodeFunction* _tmp388_ = NULL;
		ValaCCodeFunction* _tmp389_ = NULL;
		ValaCCodeFunctionCall* _tmp390_ = NULL;
		_tmp388_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp389_ = _tmp388_;
		_tmp390_ = fc;
		vala_ccode_function_add_expression (_tmp389_, (ValaCCodeExpression*) _tmp390_);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp391_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp392_ = signal_marshaller;
	vala_ccode_file_add_function_declaration (_tmp391_, _tmp392_);
	_tmp393_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp394_ = signal_marshaller;
	vala_ccode_file_add_function (_tmp393_, _tmp394_);
	_tmp395_ = ((ValaCCodeBaseModule*) self)->user_marshal_set;
	_tmp396_ = signature;
	vala_collection_add ((ValaCollection*) _tmp395_, _tmp396_);
	_vala_ccode_node_unref0 (c_assign_rhs);
	_vala_ccode_node_unref0 (cond);
	_vala_ccode_node_unref0 (param);
	_vala_ccode_node_unref0 (data);
	_vala_ccode_node_unref0 (fc);
	_vala_ccode_node_unref0 (callback_decl);
	_vala_ccode_node_unref0 (signal_marshaller);
	_g_free0 (signature);
}


static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add3 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add5 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add7 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add8 (gchar*** array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int str_array_length1) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gchar** _tmp3_ = NULL;
	gint _tmp3__length1 = 0;
	_tmp0_ = separator;
	if (_tmp0_ == NULL) {
		separator = "";
	}
	_tmp3_ = str_array;
	_tmp3__length1 = str_array_length1;
	if (_tmp3_ != NULL) {
		_tmp2_ = TRUE;
	} else {
		gchar** _tmp4_ = NULL;
		gint _tmp4__length1 = 0;
		_tmp4_ = str_array;
		_tmp4__length1 = str_array_length1;
		_tmp2_ = _tmp4__length1 > 0;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp5_ = FALSE;
		gchar** _tmp6_ = NULL;
		gint _tmp6__length1 = 0;
		_tmp6_ = str_array;
		_tmp6__length1 = str_array_length1;
		if (_tmp6__length1 == (-1)) {
			gchar** _tmp7_ = NULL;
			gint _tmp7__length1 = 0;
			const gchar* _tmp8_ = NULL;
			_tmp7_ = str_array;
			_tmp7__length1 = str_array_length1;
			_tmp8_ = _tmp7_[0];
			_tmp5_ = _tmp8_ != NULL;
		} else {
			_tmp5_ = FALSE;
		}
		_tmp1_ = _tmp5_;
	}
	if (_tmp1_) {
		gint i = 0;
		gsize len = 0UL;
		gint _tmp31_ = 0;
		gint _tmp33_ = 0;
		gint _tmp34_ = 0;
		gsize _tmp35_ = 0UL;
		const gchar* _tmp36_ = NULL;
		gint _tmp37_ = 0;
		gint _tmp38_ = 0;
		gint _tmp39_ = 0;
		const gchar* res = NULL;
		gsize _tmp40_ = 0UL;
		void* _tmp41_ = NULL;
		void* ptr = NULL;
		const gchar* _tmp42_ = NULL;
		gchar** _tmp43_ = NULL;
		gint _tmp43__length1 = 0;
		const gchar* _tmp44_ = NULL;
		void* _tmp45_ = NULL;
		const gchar* _tmp62_ = NULL;
		len = (gsize) 1;
		{
			gboolean _tmp9_ = FALSE;
			i = 0;
			_tmp9_ = TRUE;
			while (TRUE) {
				gboolean _tmp11_ = FALSE;
				gboolean _tmp12_ = FALSE;
				gchar** _tmp13_ = NULL;
				gint _tmp13__length1 = 0;
				gint _tmp21_ = 0;
				gchar** _tmp22_ = NULL;
				gint _tmp22__length1 = 0;
				gint _tmp23_ = 0;
				const gchar* _tmp24_ = NULL;
				gsize _tmp30_ = 0UL;
				if (!_tmp9_) {
					gint _tmp10_ = 0;
					_tmp10_ = i;
					i = _tmp10_ + 1;
				}
				_tmp9_ = FALSE;
				_tmp13_ = str_array;
				_tmp13__length1 = str_array_length1;
				if (_tmp13__length1 != (-1)) {
					gint _tmp14_ = 0;
					gchar** _tmp15_ = NULL;
					gint _tmp15__length1 = 0;
					_tmp14_ = i;
					_tmp15_ = str_array;
					_tmp15__length1 = str_array_length1;
					_tmp12_ = _tmp14_ < _tmp15__length1;
				} else {
					_tmp12_ = FALSE;
				}
				if (_tmp12_) {
					_tmp11_ = TRUE;
				} else {
					gboolean _tmp16_ = FALSE;
					gchar** _tmp17_ = NULL;
					gint _tmp17__length1 = 0;
					_tmp17_ = str_array;
					_tmp17__length1 = str_array_length1;
					if (_tmp17__length1 == (-1)) {
						gchar** _tmp18_ = NULL;
						gint _tmp18__length1 = 0;
						gint _tmp19_ = 0;
						const gchar* _tmp20_ = NULL;
						_tmp18_ = str_array;
						_tmp18__length1 = str_array_length1;
						_tmp19_ = i;
						_tmp20_ = _tmp18_[_tmp19_];
						_tmp16_ = _tmp20_ != NULL;
					} else {
						_tmp16_ = FALSE;
					}
					_tmp11_ = _tmp16_;
				}
				if (!_tmp11_) {
					break;
				}
				_tmp22_ = str_array;
				_tmp22__length1 = str_array_length1;
				_tmp23_ = i;
				_tmp24_ = _tmp22_[_tmp23_];
				if (_tmp24_ != NULL) {
					gchar** _tmp25_ = NULL;
					gint _tmp25__length1 = 0;
					gint _tmp26_ = 0;
					const gchar* _tmp27_ = NULL;
					gint _tmp28_ = 0;
					gint _tmp29_ = 0;
					_tmp25_ = str_array;
					_tmp25__length1 = str_array_length1;
					_tmp26_ = i;
					_tmp27_ = _tmp25_[_tmp26_];
					_tmp28_ = strlen ((const gchar*) _tmp27_);
					_tmp29_ = _tmp28_;
					_tmp21_ = _tmp29_;
				} else {
					_tmp21_ = 0;
				}
				_tmp30_ = len;
				len = _tmp30_ + _tmp21_;
			}
		}
		_tmp31_ = i;
		if (_tmp31_ == 0) {
			gchar* _tmp32_ = NULL;
			_tmp32_ = g_strdup ("");
			result = _tmp32_;
			return result;
		}
		_tmp33_ = i;
		str_array_length1 = _tmp33_;
		_tmp34_ = str_array_length1;
		_tmp35_ = len;
		_tmp36_ = separator;
		_tmp37_ = strlen ((const gchar*) _tmp36_);
		_tmp38_ = _tmp37_;
		_tmp39_ = i;
		len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
		_tmp40_ = len;
		_tmp41_ = g_malloc (_tmp40_);
		res = _tmp41_;
		_tmp42_ = res;
		_tmp43_ = str_array;
		_tmp43__length1 = str_array_length1;
		_tmp44_ = _tmp43_[0];
		_tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
		ptr = _tmp45_;
		{
			gboolean _tmp46_ = FALSE;
			i = 1;
			_tmp46_ = TRUE;
			while (TRUE) {
				gint _tmp48_ = 0;
				gchar** _tmp49_ = NULL;
				gint _tmp49__length1 = 0;
				void* _tmp50_ = NULL;
				const gchar* _tmp51_ = NULL;
				void* _tmp52_ = NULL;
				const gchar* _tmp53_ = NULL;
				gchar** _tmp54_ = NULL;
				gint _tmp54__length1 = 0;
				gint _tmp55_ = 0;
				const gchar* _tmp56_ = NULL;
				void* _tmp60_ = NULL;
				void* _tmp61_ = NULL;
				if (!_tmp46_) {
					gint _tmp47_ = 0;
					_tmp47_ = i;
					i = _tmp47_ + 1;
				}
				_tmp46_ = FALSE;
				_tmp48_ = i;
				_tmp49_ = str_array;
				_tmp49__length1 = str_array_length1;
				if (!(_tmp48_ < _tmp49__length1)) {
					break;
				}
				_tmp50_ = ptr;
				_tmp51_ = separator;
				_tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
				ptr = _tmp52_;
				_tmp54_ = str_array;
				_tmp54__length1 = str_array_length1;
				_tmp55_ = i;
				_tmp56_ = _tmp54_[_tmp55_];
				if (_tmp56_ != NULL) {
					gchar** _tmp57_ = NULL;
					gint _tmp57__length1 = 0;
					gint _tmp58_ = 0;
					const gchar* _tmp59_ = NULL;
					_tmp57_ = str_array;
					_tmp57__length1 = str_array_length1;
					_tmp58_ = i;
					_tmp59_ = _tmp57_[_tmp58_];
					_tmp53_ = (const gchar*) _tmp59_;
				} else {
					_tmp53_ = "";
				}
				_tmp60_ = ptr;
				_tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
				ptr = _tmp61_;
			}
		}
		_tmp62_ = res;
		res = NULL;
		result = (gchar*) _tmp62_;
		return result;
	} else {
		gchar* _tmp63_ = NULL;
		_tmp63_ = g_strdup ("");
		result = _tmp63_;
		return result;
	}
}


static ValaCCodeFunctionCall* vala_gsignal_module_real_get_signal_creation (ValaCCodeBaseModule* base, ValaSignal* sig, ValaTypeSymbol* type) {
	ValaGSignalModule * self;
	ValaCCodeFunctionCall* result = NULL;
	ValaCCodeFunctionCall* csignew = NULL;
	ValaCCodeIdentifier* _tmp0_ = NULL;
	ValaCCodeIdentifier* _tmp1_ = NULL;
	ValaCCodeFunctionCall* _tmp2_ = NULL;
	ValaCCodeFunctionCall* _tmp3_ = NULL;
	ValaCCodeFunctionCall* _tmp4_ = NULL;
	ValaSignal* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	ValaCCodeConstant* _tmp10_ = NULL;
	ValaCCodeConstant* _tmp11_ = NULL;
	ValaCCodeFunctionCall* _tmp12_ = NULL;
	ValaTypeSymbol* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	ValaCCodeIdentifier* _tmp16_ = NULL;
	ValaCCodeIdentifier* _tmp17_ = NULL;
	gchar** flags = NULL;
	gchar** _tmp18_ = NULL;
	gint flags_length1 = 0;
	gint _flags_size_ = 0;
	gchar* run_type = NULL;
	ValaSignal* _tmp19_ = NULL;
	gchar* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	ValaSignal* _tmp29_ = NULL;
	gboolean _tmp30_ = FALSE;
	ValaSignal* _tmp33_ = NULL;
	gboolean _tmp34_ = FALSE;
	ValaSignal* _tmp37_ = NULL;
	gboolean _tmp38_ = FALSE;
	ValaSignal* _tmp41_ = NULL;
	gboolean _tmp42_ = FALSE;
	gboolean _tmp45_ = FALSE;
	ValaSignal* _tmp46_ = NULL;
	ValaAttribute* _tmp47_ = NULL;
	ValaAttribute* _tmp48_ = NULL;
	gboolean _tmp49_ = FALSE;
	ValaCCodeFunctionCall* _tmp55_ = NULL;
	gchar** _tmp56_ = NULL;
	gint _tmp56__length1 = 0;
	gchar* _tmp57_ = NULL;
	gchar* _tmp58_ = NULL;
	ValaCCodeConstant* _tmp59_ = NULL;
	ValaCCodeConstant* _tmp60_ = NULL;
	ValaSignal* _tmp61_ = NULL;
	ValaMethod* _tmp62_ = NULL;
	ValaMethod* _tmp63_ = NULL;
	ValaCCodeFunctionCall* _tmp96_ = NULL;
	ValaCCodeConstant* _tmp97_ = NULL;
	ValaCCodeConstant* _tmp98_ = NULL;
	ValaCCodeFunctionCall* _tmp99_ = NULL;
	ValaCCodeConstant* _tmp100_ = NULL;
	ValaCCodeConstant* _tmp101_ = NULL;
	gchar* marshaller = NULL;
	ValaSignal* _tmp102_ = NULL;
	ValaList* _tmp103_ = NULL;
	ValaList* _tmp104_ = NULL;
	ValaSignal* _tmp105_ = NULL;
	ValaDataType* _tmp106_ = NULL;
	ValaDataType* _tmp107_ = NULL;
	gchar* _tmp108_ = NULL;
	gchar* _tmp109_ = NULL;
	ValaCCodeIdentifier* marshal_arg = NULL;
	const gchar* _tmp110_ = NULL;
	ValaCCodeIdentifier* _tmp111_ = NULL;
	ValaCCodeFunctionCall* _tmp112_ = NULL;
	ValaCCodeIdentifier* _tmp113_ = NULL;
	ValaList* params = NULL;
	ValaSignal* _tmp114_ = NULL;
	ValaList* _tmp115_ = NULL;
	gboolean _tmp116_ = FALSE;
	ValaSignal* _tmp117_ = NULL;
	ValaDataType* _tmp118_ = NULL;
	ValaDataType* _tmp119_ = NULL;
	gint params_len = 0;
	ValaCCodeFunctionCall* _tmp169_ = NULL;
	gint _tmp170_ = 0;
	gchar* _tmp171_ = NULL;
	gchar* _tmp172_ = NULL;
	ValaCCodeConstant* _tmp173_ = NULL;
	ValaCCodeConstant* _tmp174_ = NULL;
	ValaCCodeIdentifier* _tmp241_ = NULL;
	const gchar* _tmp242_ = NULL;
	self = (ValaGSignalModule*) base;
	g_return_val_if_fail (sig != NULL, NULL);
	g_return_val_if_fail (type != NULL, NULL);
	_tmp0_ = vala_ccode_identifier_new ("g_signal_new");
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
	_tmp3_ = _tmp2_;
	_vala_ccode_node_unref0 (_tmp1_);
	csignew = _tmp3_;
	_tmp4_ = csignew;
	_tmp5_ = sig;
	_tmp6_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = g_strdup_printf ("\"%s\"", _tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = vala_ccode_constant_new (_tmp9_);
	_tmp11_ = _tmp10_;
	vala_ccode_function_call_add_argument (_tmp4_, (ValaCCodeExpression*) _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_g_free0 (_tmp9_);
	_g_free0 (_tmp7_);
	_tmp12_ = csignew;
	_tmp13_ = type;
	_tmp14_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_identifier_new (_tmp15_);
	_tmp17_ = _tmp16_;
	vala_ccode_function_call_add_argument (_tmp12_, (ValaCCodeExpression*) _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_g_free0 (_tmp15_);
	_tmp18_ = g_new0 (gchar*, 0 + 1);
	flags = _tmp18_;
	flags_length1 = 0;
	_flags_size_ = flags_length1;
	_tmp19_ = sig;
	_tmp20_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp19_, "Signal", "run", NULL);
	run_type = _tmp20_;
	_tmp21_ = run_type;
	if (g_strcmp0 (_tmp21_, "first") == 0) {
		gchar** _tmp22_ = NULL;
		gint _tmp22__length1 = 0;
		gchar* _tmp23_ = NULL;
		_tmp22_ = flags;
		_tmp22__length1 = flags_length1;
		_tmp23_ = g_strdup ("G_SIGNAL_RUN_FIRST");
		_vala_array_add1 (&flags, &flags_length1, &_flags_size_, _tmp23_);
	} else {
		const gchar* _tmp24_ = NULL;
		_tmp24_ = run_type;
		if (g_strcmp0 (_tmp24_, "cleanup") == 0) {
			gchar** _tmp25_ = NULL;
			gint _tmp25__length1 = 0;
			gchar* _tmp26_ = NULL;
			_tmp25_ = flags;
			_tmp25__length1 = flags_length1;
			_tmp26_ = g_strdup ("G_SIGNAL_RUN_CLEANUP");
			_vala_array_add2 (&flags, &flags_length1, &_flags_size_, _tmp26_);
		} else {
			gchar** _tmp27_ = NULL;
			gint _tmp27__length1 = 0;
			gchar* _tmp28_ = NULL;
			_tmp27_ = flags;
			_tmp27__length1 = flags_length1;
			_tmp28_ = g_strdup ("G_SIGNAL_RUN_LAST");
			_vala_array_add3 (&flags, &flags_length1, &_flags_size_, _tmp28_);
		}
	}
	_tmp29_ = sig;
	_tmp30_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp29_, "Signal", "detailed", FALSE);
	if (_tmp30_) {
		gchar** _tmp31_ = NULL;
		gint _tmp31__length1 = 0;
		gchar* _tmp32_ = NULL;
		_tmp31_ = flags;
		_tmp31__length1 = flags_length1;
		_tmp32_ = g_strdup ("G_SIGNAL_DETAILED");
		_vala_array_add4 (&flags, &flags_length1, &_flags_size_, _tmp32_);
	}
	_tmp33_ = sig;
	_tmp34_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp33_, "Signal", "no_recurse", FALSE);
	if (_tmp34_) {
		gchar** _tmp35_ = NULL;
		gint _tmp35__length1 = 0;
		gchar* _tmp36_ = NULL;
		_tmp35_ = flags;
		_tmp35__length1 = flags_length1;
		_tmp36_ = g_strdup ("G_SIGNAL_NO_RECURSE");
		_vala_array_add5 (&flags, &flags_length1, &_flags_size_, _tmp36_);
	}
	_tmp37_ = sig;
	_tmp38_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp37_, "Signal", "action", FALSE);
	if (_tmp38_) {
		gchar** _tmp39_ = NULL;
		gint _tmp39__length1 = 0;
		gchar* _tmp40_ = NULL;
		_tmp39_ = flags;
		_tmp39__length1 = flags_length1;
		_tmp40_ = g_strdup ("G_SIGNAL_ACTION");
		_vala_array_add6 (&flags, &flags_length1, &_flags_size_, _tmp40_);
	}
	_tmp41_ = sig;
	_tmp42_ = vala_code_node_get_attribute_bool ((ValaCodeNode*) _tmp41_, "Signal", "no_hooks", FALSE);
	if (_tmp42_) {
		gchar** _tmp43_ = NULL;
		gint _tmp43__length1 = 0;
		gchar* _tmp44_ = NULL;
		_tmp43_ = flags;
		_tmp43__length1 = flags_length1;
		_tmp44_ = g_strdup ("G_SIGNAL_NO_HOOKS");
		_vala_array_add7 (&flags, &flags_length1, &_flags_size_, _tmp44_);
	}
	_tmp46_ = sig;
	_tmp47_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp46_, "Deprecated");
	_tmp48_ = _tmp47_;
	_tmp49_ = _tmp48_ != NULL;
	_vala_code_node_unref0 (_tmp48_);
	if (_tmp49_) {
		ValaCodeContext* _tmp50_ = NULL;
		ValaCodeContext* _tmp51_ = NULL;
		gboolean _tmp52_ = FALSE;
		_tmp50_ = vala_code_context_get ();
		_tmp51_ = _tmp50_;
		_tmp52_ = vala_code_context_require_glib_version (_tmp51_, 2, 31);
		_tmp45_ = _tmp52_;
		_vala_code_context_unref0 (_tmp51_);
	} else {
		_tmp45_ = FALSE;
	}
	if (_tmp45_) {
		gchar** _tmp53_ = NULL;
		gint _tmp53__length1 = 0;
		gchar* _tmp54_ = NULL;
		_tmp53_ = flags;
		_tmp53__length1 = flags_length1;
		_tmp54_ = g_strdup ("G_SIGNAL_DEPRECATED");
		_vala_array_add8 (&flags, &flags_length1, &_flags_size_, _tmp54_);
	}
	_tmp55_ = csignew;
	_tmp56_ = flags;
	_tmp56__length1 = flags_length1;
	_tmp57_ = _vala_g_strjoinv (" | ", _tmp56_, _tmp56__length1);
	_tmp58_ = _tmp57_;
	_tmp59_ = vala_ccode_constant_new (_tmp58_);
	_tmp60_ = _tmp59_;
	vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp60_);
	_vala_ccode_node_unref0 (_tmp60_);
	_g_free0 (_tmp58_);
	_tmp61_ = sig;
	_tmp62_ = vala_signal_get_default_handler (_tmp61_);
	_tmp63_ = _tmp62_;
	if (_tmp63_ == NULL) {
		ValaCCodeFunctionCall* _tmp64_ = NULL;
		ValaCCodeConstant* _tmp65_ = NULL;
		ValaCCodeConstant* _tmp66_ = NULL;
		_tmp64_ = csignew;
		_tmp65_ = vala_ccode_constant_new ("0");
		_tmp66_ = _tmp65_;
		vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
		_vala_ccode_node_unref0 (_tmp66_);
	} else {
		ValaCCodeFunctionCall* struct_offset = NULL;
		ValaCCodeIdentifier* _tmp67_ = NULL;
		ValaCCodeIdentifier* _tmp68_ = NULL;
		ValaCCodeFunctionCall* _tmp69_ = NULL;
		ValaCCodeFunctionCall* _tmp70_ = NULL;
		ValaTypeSymbol* _tmp71_ = NULL;
		ValaCCodeFunctionCall* _tmp86_ = NULL;
		ValaSignal* _tmp87_ = NULL;
		ValaMethod* _tmp88_ = NULL;
		ValaMethod* _tmp89_ = NULL;
		gchar* _tmp90_ = NULL;
		gchar* _tmp91_ = NULL;
		ValaCCodeIdentifier* _tmp92_ = NULL;
		ValaCCodeIdentifier* _tmp93_ = NULL;
		ValaCCodeFunctionCall* _tmp94_ = NULL;
		ValaCCodeFunctionCall* _tmp95_ = NULL;
		_tmp67_ = vala_ccode_identifier_new ("G_STRUCT_OFFSET");
		_tmp68_ = _tmp67_;
		_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
		_tmp70_ = _tmp69_;
		_vala_ccode_node_unref0 (_tmp68_);
		struct_offset = _tmp70_;
		_tmp71_ = type;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp71_, VALA_TYPE_CLASS)) {
			ValaCCodeFunctionCall* _tmp72_ = NULL;
			ValaTypeSymbol* _tmp73_ = NULL;
			gchar* _tmp74_ = NULL;
			gchar* _tmp75_ = NULL;
			gchar* _tmp76_ = NULL;
			gchar* _tmp77_ = NULL;
			ValaCCodeIdentifier* _tmp78_ = NULL;
			ValaCCodeIdentifier* _tmp79_ = NULL;
			_tmp72_ = struct_offset;
			_tmp73_ = type;
			_tmp74_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp73_);
			_tmp75_ = _tmp74_;
			_tmp76_ = g_strdup_printf ("%sClass", _tmp75_);
			_tmp77_ = _tmp76_;
			_tmp78_ = vala_ccode_identifier_new (_tmp77_);
			_tmp79_ = _tmp78_;
			vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp79_);
			_vala_ccode_node_unref0 (_tmp79_);
			_g_free0 (_tmp77_);
			_g_free0 (_tmp75_);
		} else {
			ValaCCodeFunctionCall* _tmp80_ = NULL;
			ValaTypeSymbol* _tmp81_ = NULL;
			gchar* _tmp82_ = NULL;
			gchar* _tmp83_ = NULL;
			ValaCCodeIdentifier* _tmp84_ = NULL;
			ValaCCodeIdentifier* _tmp85_ = NULL;
			_tmp80_ = struct_offset;
			_tmp81_ = type;
			_tmp82_ = vala_ccode_base_module_get_ccode_type_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp81_, VALA_TYPE_INTERFACE, ValaInterface));
			_tmp83_ = _tmp82_;
			_tmp84_ = vala_ccode_identifier_new (_tmp83_);
			_tmp85_ = _tmp84_;
			vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp85_);
			_vala_ccode_node_unref0 (_tmp85_);
			_g_free0 (_tmp83_);
		}
		_tmp86_ = struct_offset;
		_tmp87_ = sig;
		_tmp88_ = vala_signal_get_default_handler (_tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp89_);
		_tmp91_ = _tmp90_;
		_tmp92_ = vala_ccode_identifier_new (_tmp91_);
		_tmp93_ = _tmp92_;
		vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp93_);
		_vala_ccode_node_unref0 (_tmp93_);
		_g_free0 (_tmp91_);
		_tmp94_ = csignew;
		_tmp95_ = struct_offset;
		vala_ccode_function_call_add_argument (_tmp94_, (ValaCCodeExpression*) _tmp95_);
		_vala_ccode_node_unref0 (struct_offset);
	}
	_tmp96_ = csignew;
	_tmp97_ = vala_ccode_constant_new ("NULL");
	_tmp98_ = _tmp97_;
	vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp98_);
	_vala_ccode_node_unref0 (_tmp98_);
	_tmp99_ = csignew;
	_tmp100_ = vala_ccode_constant_new ("NULL");
	_tmp101_ = _tmp100_;
	vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) _tmp101_);
	_vala_ccode_node_unref0 (_tmp101_);
	_tmp102_ = sig;
	_tmp103_ = vala_signal_get_parameters (_tmp102_);
	_tmp104_ = _tmp103_;
	_tmp105_ = sig;
	_tmp106_ = vala_signal_get_return_type (_tmp105_);
	_tmp107_ = _tmp106_;
	_tmp108_ = vala_gsignal_module_get_marshaller_function (self, _tmp104_, _tmp107_, NULL);
	_tmp109_ = _tmp108_;
	_vala_iterable_unref0 (_tmp104_);
	marshaller = _tmp109_;
	_tmp110_ = marshaller;
	_tmp111_ = vala_ccode_identifier_new (_tmp110_);
	marshal_arg = _tmp111_;
	_tmp112_ = csignew;
	_tmp113_ = marshal_arg;
	vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp113_);
	_tmp114_ = sig;
	_tmp115_ = vala_signal_get_parameters (_tmp114_);
	params = _tmp115_;
	_tmp117_ = sig;
	_tmp118_ = vala_signal_get_return_type (_tmp117_);
	_tmp119_ = _tmp118_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp119_, VALA_TYPE_POINTER_TYPE)) {
		_tmp116_ = TRUE;
	} else {
		ValaSignal* _tmp120_ = NULL;
		ValaDataType* _tmp121_ = NULL;
		ValaDataType* _tmp122_ = NULL;
		ValaTypeParameter* _tmp123_ = NULL;
		ValaTypeParameter* _tmp124_ = NULL;
		_tmp120_ = sig;
		_tmp121_ = vala_signal_get_return_type (_tmp120_);
		_tmp122_ = _tmp121_;
		_tmp123_ = vala_data_type_get_type_parameter (_tmp122_);
		_tmp124_ = _tmp123_;
		_tmp116_ = _tmp124_ != NULL;
	}
	if (_tmp116_) {
		ValaCCodeFunctionCall* _tmp125_ = NULL;
		ValaCCodeConstant* _tmp126_ = NULL;
		ValaCCodeConstant* _tmp127_ = NULL;
		_tmp125_ = csignew;
		_tmp126_ = vala_ccode_constant_new ("G_TYPE_POINTER");
		_tmp127_ = _tmp126_;
		vala_ccode_function_call_add_argument (_tmp125_, (ValaCCodeExpression*) _tmp127_);
		_vala_ccode_node_unref0 (_tmp127_);
	} else {
		ValaSignal* _tmp128_ = NULL;
		ValaDataType* _tmp129_ = NULL;
		ValaDataType* _tmp130_ = NULL;
		_tmp128_ = sig;
		_tmp129_ = vala_signal_get_return_type (_tmp128_);
		_tmp130_ = _tmp129_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp130_, VALA_TYPE_ERROR_TYPE)) {
			ValaCCodeFunctionCall* _tmp131_ = NULL;
			ValaCCodeConstant* _tmp132_ = NULL;
			ValaCCodeConstant* _tmp133_ = NULL;
			_tmp131_ = csignew;
			_tmp132_ = vala_ccode_constant_new ("G_TYPE_POINTER");
			_tmp133_ = _tmp132_;
			vala_ccode_function_call_add_argument (_tmp131_, (ValaCCodeExpression*) _tmp133_);
			_vala_ccode_node_unref0 (_tmp133_);
		} else {
			ValaSignal* _tmp134_ = NULL;
			ValaDataType* _tmp135_ = NULL;
			ValaDataType* _tmp136_ = NULL;
			ValaTypeSymbol* _tmp137_ = NULL;
			ValaTypeSymbol* _tmp138_ = NULL;
			_tmp134_ = sig;
			_tmp135_ = vala_signal_get_return_type (_tmp134_);
			_tmp136_ = _tmp135_;
			_tmp137_ = vala_data_type_get_data_type (_tmp136_);
			_tmp138_ = _tmp137_;
			if (_tmp138_ == NULL) {
				ValaCCodeFunctionCall* _tmp139_ = NULL;
				ValaCCodeConstant* _tmp140_ = NULL;
				ValaCCodeConstant* _tmp141_ = NULL;
				_tmp139_ = csignew;
				_tmp140_ = vala_ccode_constant_new ("G_TYPE_NONE");
				_tmp141_ = _tmp140_;
				vala_ccode_function_call_add_argument (_tmp139_, (ValaCCodeExpression*) _tmp141_);
				_vala_ccode_node_unref0 (_tmp141_);
			} else {
				ValaCCodeFunctionCall* _tmp142_ = NULL;
				ValaSignal* _tmp143_ = NULL;
				ValaDataType* _tmp144_ = NULL;
				ValaDataType* _tmp145_ = NULL;
				ValaTypeSymbol* _tmp146_ = NULL;
				ValaTypeSymbol* _tmp147_ = NULL;
				gchar* _tmp148_ = NULL;
				gchar* _tmp149_ = NULL;
				ValaCCodeConstant* _tmp150_ = NULL;
				ValaCCodeConstant* _tmp151_ = NULL;
				_tmp142_ = csignew;
				_tmp143_ = sig;
				_tmp144_ = vala_signal_get_return_type (_tmp143_);
				_tmp145_ = _tmp144_;
				_tmp146_ = vala_data_type_get_data_type (_tmp145_);
				_tmp147_ = _tmp146_;
				_tmp148_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp147_);
				_tmp149_ = _tmp148_;
				_tmp150_ = vala_ccode_constant_new (_tmp149_);
				_tmp151_ = _tmp150_;
				vala_ccode_function_call_add_argument (_tmp142_, (ValaCCodeExpression*) _tmp151_);
				_vala_ccode_node_unref0 (_tmp151_);
				_g_free0 (_tmp149_);
			}
		}
	}
	params_len = 0;
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp152_ = NULL;
		ValaList* _tmp153_ = NULL;
		gint _param_size = 0;
		ValaList* _tmp154_ = NULL;
		gint _tmp155_ = 0;
		gint _tmp156_ = 0;
		gint _param_index = 0;
		_tmp152_ = params;
		_tmp153_ = _vala_iterable_ref0 (_tmp152_);
		_param_list = _tmp153_;
		_tmp154_ = _param_list;
		_tmp155_ = vala_collection_get_size ((ValaCollection*) _tmp154_);
		_tmp156_ = _tmp155_;
		_param_size = _tmp156_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp157_ = 0;
			gint _tmp158_ = 0;
			gint _tmp159_ = 0;
			ValaParameter* param = NULL;
			ValaList* _tmp160_ = NULL;
			gint _tmp161_ = 0;
			gpointer _tmp162_ = NULL;
			gint _tmp163_ = 0;
			ValaParameter* _tmp164_ = NULL;
			ValaDataType* _tmp165_ = NULL;
			ValaDataType* _tmp166_ = NULL;
			gboolean _tmp167_ = FALSE;
			_tmp157_ = _param_index;
			_param_index = _tmp157_ + 1;
			_tmp158_ = _param_index;
			_tmp159_ = _param_size;
			if (!(_tmp158_ < _tmp159_)) {
				break;
			}
			_tmp160_ = _param_list;
			_tmp161_ = _param_index;
			_tmp162_ = vala_list_get (_tmp160_, _tmp161_);
			param = (ValaParameter*) _tmp162_;
			_tmp163_ = params_len;
			params_len = _tmp163_ + 1;
			_tmp164_ = param;
			_tmp165_ = vala_variable_get_variable_type ((ValaVariable*) _tmp164_);
			_tmp166_ = _tmp165_;
			_tmp167_ = vala_data_type_is_array (_tmp166_);
			if (_tmp167_) {
				gint _tmp168_ = 0;
				_tmp168_ = params_len;
				params_len = _tmp168_ + 1;
			}
			_vala_code_node_unref0 (param);
		}
		_vala_iterable_unref0 (_param_list);
	}
	_tmp169_ = csignew;
	_tmp170_ = params_len;
	_tmp171_ = g_strdup_printf ("%d", _tmp170_);
	_tmp172_ = _tmp171_;
	_tmp173_ = vala_ccode_constant_new (_tmp172_);
	_tmp174_ = _tmp173_;
	vala_ccode_function_call_add_argument (_tmp169_, (ValaCCodeExpression*) _tmp174_);
	_vala_ccode_node_unref0 (_tmp174_);
	_g_free0 (_tmp172_);
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp175_ = NULL;
		ValaList* _tmp176_ = NULL;
		gint _param_size = 0;
		ValaList* _tmp177_ = NULL;
		gint _tmp178_ = 0;
		gint _tmp179_ = 0;
		gint _param_index = 0;
		_tmp175_ = params;
		_tmp176_ = _vala_iterable_ref0 (_tmp175_);
		_param_list = _tmp176_;
		_tmp177_ = _param_list;
		_tmp178_ = vala_collection_get_size ((ValaCollection*) _tmp177_);
		_tmp179_ = _tmp178_;
		_param_size = _tmp179_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp180_ = 0;
			gint _tmp181_ = 0;
			gint _tmp182_ = 0;
			ValaParameter* param = NULL;
			ValaList* _tmp183_ = NULL;
			gint _tmp184_ = 0;
			gpointer _tmp185_ = NULL;
			ValaParameter* _tmp186_ = NULL;
			ValaDataType* _tmp187_ = NULL;
			ValaDataType* _tmp188_ = NULL;
			gboolean _tmp189_ = FALSE;
			_tmp180_ = _param_index;
			_param_index = _tmp180_ + 1;
			_tmp181_ = _param_index;
			_tmp182_ = _param_size;
			if (!(_tmp181_ < _tmp182_)) {
				break;
			}
			_tmp183_ = _param_list;
			_tmp184_ = _param_index;
			_tmp185_ = vala_list_get (_tmp183_, _tmp184_);
			param = (ValaParameter*) _tmp185_;
			_tmp186_ = param;
			_tmp187_ = vala_variable_get_variable_type ((ValaVariable*) _tmp186_);
			_tmp188_ = _tmp187_;
			_tmp189_ = vala_data_type_is_array (_tmp188_);
			if (_tmp189_) {
				ValaParameter* _tmp190_ = NULL;
				ValaDataType* _tmp191_ = NULL;
				ValaDataType* _tmp192_ = NULL;
				ValaDataType* _tmp193_ = NULL;
				ValaDataType* _tmp194_ = NULL;
				ValaTypeSymbol* _tmp195_ = NULL;
				ValaTypeSymbol* _tmp196_ = NULL;
				ValaDataType* _tmp197_ = NULL;
				ValaTypeSymbol* _tmp198_ = NULL;
				ValaTypeSymbol* _tmp199_ = NULL;
				ValaCCodeFunctionCall* _tmp206_ = NULL;
				ValaCCodeConstant* _tmp207_ = NULL;
				ValaCCodeConstant* _tmp208_ = NULL;
				_tmp190_ = param;
				_tmp191_ = vala_variable_get_variable_type ((ValaVariable*) _tmp190_);
				_tmp192_ = _tmp191_;
				_tmp193_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp192_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
				_tmp194_ = _tmp193_;
				_tmp195_ = vala_data_type_get_data_type (_tmp194_);
				_tmp196_ = _tmp195_;
				_tmp197_ = ((ValaCCodeBaseModule*) self)->string_type;
				_tmp198_ = vala_data_type_get_data_type (_tmp197_);
				_tmp199_ = _tmp198_;
				if (_tmp196_ == _tmp199_) {
					ValaCCodeFunctionCall* _tmp200_ = NULL;
					ValaCCodeConstant* _tmp201_ = NULL;
					ValaCCodeConstant* _tmp202_ = NULL;
					_tmp200_ = csignew;
					_tmp201_ = vala_ccode_constant_new ("G_TYPE_STRV");
					_tmp202_ = _tmp201_;
					vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp202_);
					_vala_ccode_node_unref0 (_tmp202_);
				} else {
					ValaCCodeFunctionCall* _tmp203_ = NULL;
					ValaCCodeConstant* _tmp204_ = NULL;
					ValaCCodeConstant* _tmp205_ = NULL;
					_tmp203_ = csignew;
					_tmp204_ = vala_ccode_constant_new ("G_TYPE_POINTER");
					_tmp205_ = _tmp204_;
					vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp205_);
					_vala_ccode_node_unref0 (_tmp205_);
				}
				_tmp206_ = csignew;
				_tmp207_ = vala_ccode_constant_new ("G_TYPE_INT");
				_tmp208_ = _tmp207_;
				vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp208_);
				_vala_ccode_node_unref0 (_tmp208_);
			} else {
				gboolean _tmp209_ = FALSE;
				gboolean _tmp210_ = FALSE;
				ValaParameter* _tmp211_ = NULL;
				ValaDataType* _tmp212_ = NULL;
				ValaDataType* _tmp213_ = NULL;
				_tmp211_ = param;
				_tmp212_ = vala_variable_get_variable_type ((ValaVariable*) _tmp211_);
				_tmp213_ = _tmp212_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp213_, VALA_TYPE_POINTER_TYPE)) {
					_tmp210_ = TRUE;
				} else {
					ValaParameter* _tmp214_ = NULL;
					ValaDataType* _tmp215_ = NULL;
					ValaDataType* _tmp216_ = NULL;
					ValaTypeParameter* _tmp217_ = NULL;
					ValaTypeParameter* _tmp218_ = NULL;
					_tmp214_ = param;
					_tmp215_ = vala_variable_get_variable_type ((ValaVariable*) _tmp214_);
					_tmp216_ = _tmp215_;
					_tmp217_ = vala_data_type_get_type_parameter (_tmp216_);
					_tmp218_ = _tmp217_;
					_tmp210_ = _tmp218_ != NULL;
				}
				if (_tmp210_) {
					_tmp209_ = TRUE;
				} else {
					ValaParameter* _tmp219_ = NULL;
					ValaParameterDirection _tmp220_ = 0;
					ValaParameterDirection _tmp221_ = 0;
					_tmp219_ = param;
					_tmp220_ = vala_parameter_get_direction (_tmp219_);
					_tmp221_ = _tmp220_;
					_tmp209_ = _tmp221_ != VALA_PARAMETER_DIRECTION_IN;
				}
				if (_tmp209_) {
					ValaCCodeFunctionCall* _tmp222_ = NULL;
					ValaCCodeConstant* _tmp223_ = NULL;
					ValaCCodeConstant* _tmp224_ = NULL;
					_tmp222_ = csignew;
					_tmp223_ = vala_ccode_constant_new ("G_TYPE_POINTER");
					_tmp224_ = _tmp223_;
					vala_ccode_function_call_add_argument (_tmp222_, (ValaCCodeExpression*) _tmp224_);
					_vala_ccode_node_unref0 (_tmp224_);
				} else {
					ValaParameter* _tmp225_ = NULL;
					ValaDataType* _tmp226_ = NULL;
					ValaDataType* _tmp227_ = NULL;
					_tmp225_ = param;
					_tmp226_ = vala_variable_get_variable_type ((ValaVariable*) _tmp225_);
					_tmp227_ = _tmp226_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp227_, VALA_TYPE_ERROR_TYPE)) {
						ValaCCodeFunctionCall* _tmp228_ = NULL;
						ValaCCodeConstant* _tmp229_ = NULL;
						ValaCCodeConstant* _tmp230_ = NULL;
						_tmp228_ = csignew;
						_tmp229_ = vala_ccode_constant_new ("G_TYPE_POINTER");
						_tmp230_ = _tmp229_;
						vala_ccode_function_call_add_argument (_tmp228_, (ValaCCodeExpression*) _tmp230_);
						_vala_ccode_node_unref0 (_tmp230_);
					} else {
						ValaCCodeFunctionCall* _tmp231_ = NULL;
						ValaParameter* _tmp232_ = NULL;
						ValaDataType* _tmp233_ = NULL;
						ValaDataType* _tmp234_ = NULL;
						ValaTypeSymbol* _tmp235_ = NULL;
						ValaTypeSymbol* _tmp236_ = NULL;
						gchar* _tmp237_ = NULL;
						gchar* _tmp238_ = NULL;
						ValaCCodeConstant* _tmp239_ = NULL;
						ValaCCodeConstant* _tmp240_ = NULL;
						_tmp231_ = csignew;
						_tmp232_ = param;
						_tmp233_ = vala_variable_get_variable_type ((ValaVariable*) _tmp232_);
						_tmp234_ = _tmp233_;
						_tmp235_ = vala_data_type_get_data_type (_tmp234_);
						_tmp236_ = _tmp235_;
						_tmp237_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp236_);
						_tmp238_ = _tmp237_;
						_tmp239_ = vala_ccode_constant_new (_tmp238_);
						_tmp240_ = _tmp239_;
						vala_ccode_function_call_add_argument (_tmp231_, (ValaCCodeExpression*) _tmp240_);
						_vala_ccode_node_unref0 (_tmp240_);
						_g_free0 (_tmp238_);
					}
				}
			}
			_vala_code_node_unref0 (param);
		}
		_vala_iterable_unref0 (_param_list);
	}
	_tmp241_ = marshal_arg;
	_tmp242_ = marshaller;
	vala_ccode_identifier_set_name (_tmp241_, _tmp242_);
	result = csignew;
	_vala_iterable_unref0 (params);
	_vala_ccode_node_unref0 (marshal_arg);
	_g_free0 (marshaller);
	_g_free0 (run_type);
	flags = (_vala_array_free (flags, flags_length1, (GDestroyNotify) g_free), NULL);
	return result;
}


static void vala_gsignal_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr) {
	ValaGSignalModule * self;
	gboolean _tmp0_ = FALSE;
	ValaElementAccess* _tmp1_ = NULL;
	ValaExpression* _tmp2_ = NULL;
	ValaExpression* _tmp3_ = NULL;
	self = (ValaGSignalModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp1_ = expr;
	_tmp2_ = vala_element_access_get_container (_tmp1_);
	_tmp3_ = _tmp2_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_MEMBER_ACCESS)) {
		ValaElementAccess* _tmp4_ = NULL;
		ValaExpression* _tmp5_ = NULL;
		ValaExpression* _tmp6_ = NULL;
		ValaSymbol* _tmp7_ = NULL;
		ValaSymbol* _tmp8_ = NULL;
		_tmp4_ = expr;
		_tmp5_ = vala_element_access_get_container (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp7_ = vala_expression_get_symbol_reference (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_SIGNAL);
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		ValaElementAccess* _tmp9_ = NULL;
		ValaCodeNode* _tmp10_ = NULL;
		ValaCodeNode* _tmp11_ = NULL;
		_tmp9_ = expr;
		_tmp10_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp9_);
		_tmp11_ = _tmp10_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_METHOD_CALL)) {
			ValaSignal* sig = NULL;
			ValaElementAccess* _tmp12_ = NULL;
			ValaSymbol* _tmp13_ = NULL;
			ValaSymbol* _tmp14_ = NULL;
			ValaSignal* _tmp15_ = NULL;
			ValaMemberAccess* ma = NULL;
			ValaElementAccess* _tmp16_ = NULL;
			ValaExpression* _tmp17_ = NULL;
			ValaExpression* _tmp18_ = NULL;
			ValaMemberAccess* _tmp19_ = NULL;
			ValaExpression* detail_expr = NULL;
			ValaElementAccess* _tmp20_ = NULL;
			ValaList* _tmp21_ = NULL;
			ValaList* _tmp22_ = NULL;
			gpointer _tmp23_ = NULL;
			ValaExpression* _tmp24_ = NULL;
			ValaCCodeExpression* signal_name_cexpr = NULL;
			ValaSignal* _tmp25_ = NULL;
			ValaExpression* _tmp26_ = NULL;
			ValaElementAccess* _tmp27_ = NULL;
			ValaCCodeExpression* _tmp28_ = NULL;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp29_ = NULL;
			ValaCCodeIdentifier* _tmp30_ = NULL;
			ValaCCodeFunctionCall* _tmp31_ = NULL;
			ValaCCodeFunctionCall* _tmp32_ = NULL;
			ValaCCodeFunctionCall* _tmp33_ = NULL;
			ValaMemberAccess* _tmp34_ = NULL;
			ValaExpression* _tmp35_ = NULL;
			ValaExpression* _tmp36_ = NULL;
			ValaCCodeExpression* _tmp37_ = NULL;
			ValaCCodeExpression* _tmp38_ = NULL;
			ValaCCodeExpression* _tmp39_ = NULL;
			ValaElementAccess* _tmp42_ = NULL;
			ValaCCodeFunctionCall* _tmp43_ = NULL;
			_tmp12_ = expr;
			_tmp13_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp12_);
			_tmp14_ = _tmp13_;
			_tmp15_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, VALA_TYPE_SIGNAL, ValaSignal));
			sig = _tmp15_;
			_tmp16_ = expr;
			_tmp17_ = vala_element_access_get_container (_tmp16_);
			_tmp18_ = _tmp17_;
			_tmp19_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
			ma = _tmp19_;
			_tmp20_ = expr;
			_tmp21_ = vala_element_access_get_indices (_tmp20_);
			_tmp22_ = _tmp21_;
			_tmp23_ = vala_list_get (_tmp22_, 0);
			_tmp24_ = (ValaExpression*) _tmp23_;
			_vala_iterable_unref0 (_tmp22_);
			detail_expr = _tmp24_;
			_tmp25_ = sig;
			_tmp26_ = detail_expr;
			_tmp27_ = expr;
			_tmp28_ = vala_gsignal_module_get_signal_name_cexpression (self, _tmp25_, _tmp26_, (ValaCodeNode*) _tmp27_);
			signal_name_cexpr = _tmp28_;
			_tmp29_ = vala_ccode_identifier_new ("g_signal_emit_by_name");
			_tmp30_ = _tmp29_;
			_tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
			_tmp32_ = _tmp31_;
			_vala_ccode_node_unref0 (_tmp30_);
			ccall = _tmp32_;
			_tmp33_ = ccall;
			_tmp34_ = ma;
			_tmp35_ = vala_member_access_get_inner (_tmp34_);
			_tmp36_ = _tmp35_;
			_tmp37_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp36_);
			_tmp38_ = _tmp37_;
			vala_ccode_function_call_add_argument (_tmp33_, _tmp38_);
			_vala_ccode_node_unref0 (_tmp38_);
			_tmp39_ = signal_name_cexpr;
			if (_tmp39_ != NULL) {
				ValaCCodeFunctionCall* _tmp40_ = NULL;
				ValaCCodeExpression* _tmp41_ = NULL;
				_tmp40_ = ccall;
				_tmp41_ = signal_name_cexpr;
				vala_ccode_function_call_add_argument (_tmp40_, _tmp41_);
			}
			_tmp42_ = expr;
			_tmp43_ = ccall;
			vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp42_, (ValaCCodeExpression*) _tmp43_);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (signal_name_cexpr);
			_vala_code_node_unref0 (detail_expr);
			_vala_code_node_unref0 (ma);
			_vala_code_node_unref0 (sig);
		} else {
		}
	} else {
		ValaElementAccess* _tmp44_ = NULL;
		_tmp44_ = expr;
		VALA_CODE_VISITOR_CLASS (vala_gsignal_module_parent_class)->visit_element_access ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule), _tmp44_);
	}
}


static gboolean vala_gsignal_module_in_gobject_instance (ValaGSignalModule* self, ValaMethod* m) {
	gboolean result = FALSE;
	gboolean _result_ = FALSE;
	ValaMethod* _tmp0_ = NULL;
	ValaMemberBinding _tmp1_ = 0;
	ValaMemberBinding _tmp2_ = 0;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (m != NULL, FALSE);
	_result_ = FALSE;
	_tmp0_ = m;
	_tmp1_ = vala_method_get_binding (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ == VALA_MEMBER_BINDING_INSTANCE) {
		ValaMethod* _tmp3_ = NULL;
		ValaParameter* _tmp4_ = NULL;
		ValaParameter* _tmp5_ = NULL;
		ValaDataType* _tmp6_ = NULL;
		ValaDataType* _tmp7_ = NULL;
		ValaTypeSymbol* _tmp8_ = NULL;
		ValaTypeSymbol* _tmp9_ = NULL;
		ValaTypeSymbol* _tmp10_ = NULL;
		gboolean _tmp11_ = FALSE;
		_tmp3_ = m;
		_tmp4_ = vala_method_get_this_parameter (_tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = vala_variable_get_variable_type ((ValaVariable*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = vala_data_type_get_data_type (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = ((ValaCCodeBaseModule*) self)->gobject_type;
		_tmp11_ = vala_typesymbol_is_subtype_of (_tmp9_, _tmp10_);
		_result_ = _tmp11_;
	}
	result = _result_;
	return result;
}


static void vala_gsignal_module_emit_signal_assignment (ValaGSignalModule* self, ValaAssignment* assignment) {
	ValaSignal* sig = NULL;
	ValaAssignment* _tmp0_ = NULL;
	ValaExpression* _tmp1_ = NULL;
	ValaExpression* _tmp2_ = NULL;
	ValaSymbol* _tmp3_ = NULL;
	ValaSymbol* _tmp4_ = NULL;
	ValaSignal* _tmp5_ = NULL;
	gboolean disconnect = FALSE;
	ValaAssignment* _tmp6_ = NULL;
	ValaAssignmentOperator _tmp7_ = 0;
	ValaAssignmentOperator _tmp8_ = 0;
	ValaSignal* _tmp16_ = NULL;
	ValaAssignment* _tmp17_ = NULL;
	ValaExpression* _tmp18_ = NULL;
	ValaExpression* _tmp19_ = NULL;
	ValaAssignment* _tmp20_ = NULL;
	ValaExpression* _tmp21_ = NULL;
	ValaExpression* _tmp22_ = NULL;
	gboolean _tmp23_ = FALSE;
	ValaAssignment* _tmp24_ = NULL;
	ValaCCodeExpression* _tmp25_ = NULL;
	ValaCCodeExpression* _tmp26_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (assignment != NULL);
	_tmp0_ = assignment;
	_tmp1_ = vala_assignment_get_left (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_expression_get_symbol_reference (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_SIGNAL, ValaSignal));
	sig = _tmp5_;
	disconnect = FALSE;
	_tmp6_ = assignment;
	_tmp7_ = vala_assignment_get_operator (_tmp6_);
	_tmp8_ = _tmp7_;
	if (_tmp8_ == VALA_ASSIGNMENT_OPERATOR_ADD) {
	} else {
		ValaAssignment* _tmp9_ = NULL;
		ValaAssignmentOperator _tmp10_ = 0;
		ValaAssignmentOperator _tmp11_ = 0;
		_tmp9_ = assignment;
		_tmp10_ = vala_assignment_get_operator (_tmp9_);
		_tmp11_ = _tmp10_;
		if (_tmp11_ == VALA_ASSIGNMENT_OPERATOR_SUB) {
			disconnect = TRUE;
		} else {
			ValaAssignment* _tmp12_ = NULL;
			ValaAssignment* _tmp13_ = NULL;
			ValaSourceReference* _tmp14_ = NULL;
			ValaSourceReference* _tmp15_ = NULL;
			_tmp12_ = assignment;
			vala_code_node_set_error ((ValaCodeNode*) _tmp12_, TRUE);
			_tmp13_ = assignment;
			_tmp14_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp13_);
			_tmp15_ = _tmp14_;
			vala_report_error (_tmp15_, "Specified compound assignment type for signals not supported.");
			_vala_code_node_unref0 (sig);
			return;
		}
	}
	_tmp16_ = sig;
	_tmp17_ = assignment;
	_tmp18_ = vala_assignment_get_left (_tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = assignment;
	_tmp21_ = vala_assignment_get_right (_tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = disconnect;
	_tmp24_ = assignment;
	_tmp25_ = vala_gsignal_module_connect_signal (self, _tmp16_, _tmp19_, _tmp22_, _tmp23_, FALSE, (ValaCodeNode*) _tmp24_);
	_tmp26_ = _tmp25_;
	_vala_ccode_node_unref0 (_tmp26_);
	_vala_code_node_unref0 (sig);
}


static void vala_gsignal_module_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* assignment) {
	ValaGSignalModule * self;
	ValaAssignment* _tmp0_ = NULL;
	ValaExpression* _tmp1_ = NULL;
	ValaExpression* _tmp2_ = NULL;
	ValaSymbol* _tmp3_ = NULL;
	ValaSymbol* _tmp4_ = NULL;
	self = (ValaGSignalModule*) base;
	g_return_if_fail (assignment != NULL);
	_tmp0_ = assignment;
	_tmp1_ = vala_assignment_get_left (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_expression_get_symbol_reference (_tmp2_);
	_tmp4_ = _tmp3_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_SIGNAL)) {
		gboolean _tmp5_ = FALSE;
		ValaAssignment* _tmp6_ = NULL;
		ValaExpression* _tmp7_ = NULL;
		ValaExpression* _tmp8_ = NULL;
		gboolean _tmp9_ = FALSE;
		gboolean _tmp10_ = FALSE;
		ValaAssignment* _tmp17_ = NULL;
		_tmp6_ = assignment;
		_tmp7_ = vala_assignment_get_left (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp9_ = vala_code_node_get_error ((ValaCodeNode*) _tmp8_);
		_tmp10_ = _tmp9_;
		if (_tmp10_) {
			_tmp5_ = TRUE;
		} else {
			ValaAssignment* _tmp11_ = NULL;
			ValaExpression* _tmp12_ = NULL;
			ValaExpression* _tmp13_ = NULL;
			gboolean _tmp14_ = FALSE;
			gboolean _tmp15_ = FALSE;
			_tmp11_ = assignment;
			_tmp12_ = vala_assignment_get_right (_tmp11_);
			_tmp13_ = _tmp12_;
			_tmp14_ = vala_code_node_get_error ((ValaCodeNode*) _tmp13_);
			_tmp15_ = _tmp14_;
			_tmp5_ = _tmp15_;
		}
		if (_tmp5_) {
			ValaAssignment* _tmp16_ = NULL;
			_tmp16_ = assignment;
			vala_code_node_set_error ((ValaCodeNode*) _tmp16_, TRUE);
			return;
		}
		_tmp17_ = assignment;
		vala_gsignal_module_emit_signal_assignment (self, _tmp17_);
	} else {
		ValaAssignment* _tmp18_ = NULL;
		_tmp18_ = assignment;
		VALA_CODE_VISITOR_CLASS (vala_gsignal_module_parent_class)->visit_assignment ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule), _tmp18_);
	}
}


static void vala_gsignal_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr) {
	ValaGSignalModule * self;
	ValaMemberAccess* _tmp0_ = NULL;
	ValaSymbol* _tmp1_ = NULL;
	ValaSymbol* _tmp2_ = NULL;
	self = (ValaGSignalModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_SIGNAL)) {
		ValaCCodeExpression* pub_inst = NULL;
		ValaMemberAccess* _tmp3_ = NULL;
		ValaExpression* _tmp4_ = NULL;
		ValaExpression* _tmp5_ = NULL;
		ValaSignal* sig = NULL;
		ValaMemberAccess* _tmp10_ = NULL;
		ValaSymbol* _tmp11_ = NULL;
		ValaSymbol* _tmp12_ = NULL;
		ValaSignal* _tmp13_ = NULL;
		ValaTypeSymbol* cl = NULL;
		ValaSignal* _tmp14_ = NULL;
		ValaSymbol* _tmp15_ = NULL;
		ValaSymbol* _tmp16_ = NULL;
		ValaTypeSymbol* _tmp17_ = NULL;
		gboolean _tmp18_ = FALSE;
		ValaMemberAccess* _tmp19_ = NULL;
		ValaExpression* _tmp20_ = NULL;
		ValaExpression* _tmp21_ = NULL;
		ValaSignal* _tmp58_ = NULL;
		gboolean _tmp59_ = FALSE;
		pub_inst = NULL;
		_tmp3_ = expr;
		_tmp4_ = vala_member_access_get_inner (_tmp3_);
		_tmp5_ = _tmp4_;
		if (_tmp5_ != NULL) {
			ValaMemberAccess* _tmp6_ = NULL;
			ValaExpression* _tmp7_ = NULL;
			ValaExpression* _tmp8_ = NULL;
			ValaCCodeExpression* _tmp9_ = NULL;
			_tmp6_ = expr;
			_tmp7_ = vala_member_access_get_inner (_tmp6_);
			_tmp8_ = _tmp7_;
			_tmp9_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp8_);
			_vala_ccode_node_unref0 (pub_inst);
			pub_inst = _tmp9_;
		}
		_tmp10_ = expr;
		_tmp11_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_SIGNAL, ValaSignal));
		sig = _tmp13_;
		_tmp14_ = sig;
		_tmp15_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp14_);
		_tmp16_ = _tmp15_;
		_tmp17_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
		cl = _tmp17_;
		_tmp19_ = expr;
		_tmp20_ = vala_member_access_get_inner (_tmp19_);
		_tmp21_ = _tmp20_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_BASE_ACCESS)) {
			ValaSignal* _tmp22_ = NULL;
			gboolean _tmp23_ = FALSE;
			gboolean _tmp24_ = FALSE;
			_tmp22_ = sig;
			_tmp23_ = vala_signal_get_is_virtual (_tmp22_);
			_tmp24_ = _tmp23_;
			_tmp18_ = _tmp24_;
		} else {
			_tmp18_ = FALSE;
		}
		if (_tmp18_) {
			ValaMethod* m = NULL;
			ValaSignal* _tmp25_ = NULL;
			ValaMethod* _tmp26_ = NULL;
			ValaMethod* _tmp27_ = NULL;
			ValaMethod* _tmp28_ = NULL;
			ValaClass* base_class = NULL;
			ValaMethod* _tmp29_ = NULL;
			ValaSymbol* _tmp30_ = NULL;
			ValaSymbol* _tmp31_ = NULL;
			ValaClass* _tmp32_ = NULL;
			ValaCCodeFunctionCall* vcast = NULL;
			ValaClass* _tmp33_ = NULL;
			gchar* _tmp34_ = NULL;
			gchar* _tmp35_ = NULL;
			gchar* _tmp36_ = NULL;
			gchar* _tmp37_ = NULL;
			ValaCCodeIdentifier* _tmp38_ = NULL;
			ValaCCodeIdentifier* _tmp39_ = NULL;
			ValaCCodeFunctionCall* _tmp40_ = NULL;
			ValaCCodeFunctionCall* _tmp41_ = NULL;
			ValaCCodeFunctionCall* _tmp42_ = NULL;
			ValaClass* _tmp43_ = NULL;
			ValaClass* _tmp44_ = NULL;
			gchar* _tmp45_ = NULL;
			gchar* _tmp46_ = NULL;
			gchar* _tmp47_ = NULL;
			gchar* _tmp48_ = NULL;
			ValaCCodeIdentifier* _tmp49_ = NULL;
			ValaCCodeIdentifier* _tmp50_ = NULL;
			ValaMemberAccess* _tmp51_ = NULL;
			ValaCCodeFunctionCall* _tmp52_ = NULL;
			ValaMethod* _tmp53_ = NULL;
			const gchar* _tmp54_ = NULL;
			const gchar* _tmp55_ = NULL;
			ValaCCodeMemberAccess* _tmp56_ = NULL;
			ValaCCodeMemberAccess* _tmp57_ = NULL;
			_tmp25_ = sig;
			_tmp26_ = vala_signal_get_default_handler (_tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = _vala_code_node_ref0 (_tmp27_);
			m = _tmp28_;
			_tmp29_ = m;
			_tmp30_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp29_);
			_tmp31_ = _tmp30_;
			_tmp32_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, VALA_TYPE_CLASS, ValaClass));
			base_class = _tmp32_;
			_tmp33_ = base_class;
			_tmp34_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp33_, NULL);
			_tmp35_ = _tmp34_;
			_tmp36_ = g_strdup_printf ("%s_CLASS", _tmp35_);
			_tmp37_ = _tmp36_;
			_tmp38_ = vala_ccode_identifier_new (_tmp37_);
			_tmp39_ = _tmp38_;
			_tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
			_tmp41_ = _tmp40_;
			_vala_ccode_node_unref0 (_tmp39_);
			_g_free0 (_tmp37_);
			_g_free0 (_tmp35_);
			vcast = _tmp41_;
			_tmp42_ = vcast;
			_tmp43_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
			_tmp44_ = _tmp43_;
			_tmp45_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp44_, NULL);
			_tmp46_ = _tmp45_;
			_tmp47_ = g_strdup_printf ("%s_parent_class", _tmp46_);
			_tmp48_ = _tmp47_;
			_tmp49_ = vala_ccode_identifier_new (_tmp48_);
			_tmp50_ = _tmp49_;
			vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp50_);
			_vala_ccode_node_unref0 (_tmp50_);
			_g_free0 (_tmp48_);
			_g_free0 (_tmp46_);
			_tmp51_ = expr;
			_tmp52_ = vcast;
			_tmp53_ = m;
			_tmp54_ = vala_symbol_get_name ((ValaSymbol*) _tmp53_);
			_tmp55_ = _tmp54_;
			_tmp56_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp52_, _tmp55_);
			_tmp57_ = _tmp56_;
			vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp51_, (ValaCCodeExpression*) _tmp57_);
			_vala_ccode_node_unref0 (_tmp57_);
			_vala_ccode_node_unref0 (vcast);
			_vala_code_node_unref0 (base_class);
			_vala_code_node_unref0 (m);
			_vala_code_node_unref0 (cl);
			_vala_code_node_unref0 (sig);
			_vala_ccode_node_unref0 (pub_inst);
			return;
		}
		_tmp58_ = sig;
		_tmp59_ = vala_ccode_base_module_get_signal_has_emitter ((ValaCCodeBaseModule*) self, _tmp58_);
		if (_tmp59_) {
			ValaCCodeFunctionCall* ccall = NULL;
			ValaTypeSymbol* _tmp60_ = NULL;
			gchar* _tmp61_ = NULL;
			gchar* _tmp62_ = NULL;
			ValaSignal* _tmp63_ = NULL;
			const gchar* _tmp64_ = NULL;
			const gchar* _tmp65_ = NULL;
			gchar* _tmp66_ = NULL;
			gchar* _tmp67_ = NULL;
			ValaCCodeIdentifier* _tmp68_ = NULL;
			ValaCCodeIdentifier* _tmp69_ = NULL;
			ValaCCodeFunctionCall* _tmp70_ = NULL;
			ValaCCodeFunctionCall* _tmp71_ = NULL;
			ValaCCodeFunctionCall* _tmp72_ = NULL;
			ValaCCodeExpression* _tmp73_ = NULL;
			ValaMemberAccess* _tmp74_ = NULL;
			ValaCCodeFunctionCall* _tmp75_ = NULL;
			_tmp60_ = cl;
			_tmp61_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp60_, NULL);
			_tmp62_ = _tmp61_;
			_tmp63_ = sig;
			_tmp64_ = vala_symbol_get_name ((ValaSymbol*) _tmp63_);
			_tmp65_ = _tmp64_;
			_tmp66_ = g_strdup_printf ("%s_%s", _tmp62_, _tmp65_);
			_tmp67_ = _tmp66_;
			_tmp68_ = vala_ccode_identifier_new (_tmp67_);
			_tmp69_ = _tmp68_;
			_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
			_tmp71_ = _tmp70_;
			_vala_ccode_node_unref0 (_tmp69_);
			_g_free0 (_tmp67_);
			_g_free0 (_tmp62_);
			ccall = _tmp71_;
			_tmp72_ = ccall;
			_tmp73_ = pub_inst;
			vala_ccode_function_call_add_argument (_tmp72_, _tmp73_);
			_tmp74_ = expr;
			_tmp75_ = ccall;
			vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp74_, (ValaCCodeExpression*) _tmp75_);
			_vala_ccode_node_unref0 (ccall);
		} else {
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp76_ = NULL;
			ValaCCodeIdentifier* _tmp77_ = NULL;
			ValaCCodeFunctionCall* _tmp78_ = NULL;
			ValaCCodeFunctionCall* _tmp79_ = NULL;
			ValaCCodeFunctionCall* _tmp80_ = NULL;
			ValaCCodeExpression* _tmp81_ = NULL;
			ValaCCodeFunctionCall* _tmp82_ = NULL;
			ValaSignal* _tmp83_ = NULL;
			ValaCCodeConstant* _tmp84_ = NULL;
			ValaCCodeConstant* _tmp85_ = NULL;
			ValaMemberAccess* _tmp86_ = NULL;
			ValaCCodeFunctionCall* _tmp87_ = NULL;
			_tmp76_ = vala_ccode_identifier_new ("g_signal_emit_by_name");
			_tmp77_ = _tmp76_;
			_tmp78_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp77_);
			_tmp79_ = _tmp78_;
			_vala_ccode_node_unref0 (_tmp77_);
			ccall = _tmp79_;
			_tmp80_ = ccall;
			_tmp81_ = pub_inst;
			vala_ccode_function_call_add_argument (_tmp80_, _tmp81_);
			_tmp82_ = ccall;
			_tmp83_ = sig;
			_tmp84_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, _tmp83_, NULL);
			_tmp85_ = _tmp84_;
			vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp85_);
			_vala_ccode_node_unref0 (_tmp85_);
			_tmp86_ = expr;
			_tmp87_ = ccall;
			vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp86_, (ValaCCodeExpression*) _tmp87_);
			_vala_ccode_node_unref0 (ccall);
		}
		_vala_code_node_unref0 (cl);
		_vala_code_node_unref0 (sig);
		_vala_ccode_node_unref0 (pub_inst);
	} else {
		ValaMemberAccess* _tmp88_ = NULL;
		_tmp88_ = expr;
		VALA_CODE_VISITOR_CLASS (vala_gsignal_module_parent_class)->visit_member_access ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule), _tmp88_);
	}
}


static void vala_gsignal_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
	ValaGSignalModule * self;
	ValaMethodType* method_type = NULL;
	ValaMethodCall* _tmp0_ = NULL;
	ValaExpression* _tmp1_ = NULL;
	ValaExpression* _tmp2_ = NULL;
	ValaDataType* _tmp3_ = NULL;
	ValaDataType* _tmp4_ = NULL;
	ValaMethodType* _tmp5_ = NULL;
	gboolean _tmp6_ = FALSE;
	ValaMethodType* _tmp7_ = NULL;
	ValaSignal* sig = NULL;
	ValaMethodType* _tmp14_ = NULL;
	ValaMethod* _tmp15_ = NULL;
	ValaMethod* _tmp16_ = NULL;
	ValaSymbol* _tmp17_ = NULL;
	ValaSymbol* _tmp18_ = NULL;
	ValaSignal* _tmp19_ = NULL;
	ValaExpression* signal_access = NULL;
	ValaMethodCall* _tmp20_ = NULL;
	ValaExpression* _tmp21_ = NULL;
	ValaExpression* _tmp22_ = NULL;
	ValaExpression* _tmp23_ = NULL;
	ValaExpression* _tmp24_ = NULL;
	ValaExpression* _tmp25_ = NULL;
	ValaExpression* handler = NULL;
	ValaMethodCall* _tmp26_ = NULL;
	ValaList* _tmp27_ = NULL;
	ValaList* _tmp28_ = NULL;
	gpointer _tmp29_ = NULL;
	ValaExpression* _tmp30_ = NULL;
	gboolean disconnect = FALSE;
	ValaMethodType* _tmp31_ = NULL;
	ValaMethod* _tmp32_ = NULL;
	ValaMethod* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	const gchar* _tmp35_ = NULL;
	gboolean after = FALSE;
	ValaMethodType* _tmp36_ = NULL;
	ValaMethod* _tmp37_ = NULL;
	ValaMethod* _tmp38_ = NULL;
	const gchar* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	ValaCCodeExpression* cexpr = NULL;
	ValaSignal* _tmp41_ = NULL;
	ValaExpression* _tmp42_ = NULL;
	ValaExpression* _tmp43_ = NULL;
	gboolean _tmp44_ = FALSE;
	gboolean _tmp45_ = FALSE;
	ValaMethodCall* _tmp46_ = NULL;
	ValaCCodeExpression* _tmp47_ = NULL;
	ValaMethodCall* _tmp48_ = NULL;
	ValaCCodeExpression* _tmp49_ = NULL;
	self = (ValaGSignalModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_method_call_get_call (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_expression_get_value_type (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp4_) : NULL);
	method_type = _tmp5_;
	_tmp7_ = method_type;
	if (_tmp7_ == NULL) {
		_tmp6_ = TRUE;
	} else {
		ValaMethodType* _tmp8_ = NULL;
		ValaMethod* _tmp9_ = NULL;
		ValaMethod* _tmp10_ = NULL;
		ValaSymbol* _tmp11_ = NULL;
		ValaSymbol* _tmp12_ = NULL;
		_tmp8_ = method_type;
		_tmp9_ = vala_method_type_get_method_symbol (_tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp10_);
		_tmp12_ = _tmp11_;
		_tmp6_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_SIGNAL);
	}
	if (_tmp6_) {
		ValaMethodCall* _tmp13_ = NULL;
		_tmp13_ = expr;
		VALA_CODE_VISITOR_CLASS (vala_gsignal_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule), _tmp13_);
		_vala_code_node_unref0 (method_type);
		return;
	}
	_tmp14_ = method_type;
	_tmp15_ = vala_method_type_get_method_symbol (_tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, VALA_TYPE_SIGNAL, ValaSignal));
	sig = _tmp19_;
	_tmp20_ = expr;
	_tmp21_ = vala_method_call_get_call (_tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
	_tmp24_ = _tmp23_;
	_tmp25_ = _vala_code_node_ref0 (_tmp24_);
	signal_access = _tmp25_;
	_tmp26_ = expr;
	_tmp27_ = vala_method_call_get_argument_list (_tmp26_);
	_tmp28_ = _tmp27_;
	_tmp29_ = vala_list_get (_tmp28_, 0);
	_tmp30_ = (ValaExpression*) _tmp29_;
	_vala_iterable_unref0 (_tmp28_);
	handler = _tmp30_;
	_tmp31_ = method_type;
	_tmp32_ = vala_method_type_get_method_symbol (_tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_symbol_get_name ((ValaSymbol*) _tmp33_);
	_tmp35_ = _tmp34_;
	disconnect = g_strcmp0 (_tmp35_, "disconnect") == 0;
	_tmp36_ = method_type;
	_tmp37_ = vala_method_type_get_method_symbol (_tmp36_);
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_);
	_tmp40_ = _tmp39_;
	after = g_strcmp0 (_tmp40_, "connect_after") == 0;
	_tmp41_ = sig;
	_tmp42_ = signal_access;
	_tmp43_ = handler;
	_tmp44_ = disconnect;
	_tmp45_ = after;
	_tmp46_ = expr;
	_tmp47_ = vala_gsignal_module_connect_signal (self, _tmp41_, _tmp42_, _tmp43_, _tmp44_, _tmp45_, (ValaCodeNode*) _tmp46_);
	cexpr = _tmp47_;
	_tmp48_ = expr;
	_tmp49_ = cexpr;
	vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp48_, _tmp49_);
	_vala_ccode_node_unref0 (cexpr);
	_vala_code_node_unref0 (handler);
	_vala_code_node_unref0 (signal_access);
	_vala_code_node_unref0 (sig);
	_vala_code_node_unref0 (method_type);
}


static ValaCCodeExpression* vala_gsignal_module_connect_signal (ValaGSignalModule* self, ValaSignal* sig, ValaExpression* signal_access, ValaExpression* handler, gboolean disconnect, gboolean after, ValaCodeNode* expr) {
	ValaCCodeExpression* result = NULL;
	gchar* connect_func = NULL;
	ValaMethod* m = NULL;
	ValaExpression* _tmp0_ = NULL;
	ValaSymbol* _tmp1_ = NULL;
	ValaSymbol* _tmp2_ = NULL;
	ValaMethod* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	ValaCCodeFunctionCall* ccall = NULL;
	const gchar* _tmp29_ = NULL;
	ValaCCodeIdentifier* _tmp30_ = NULL;
	ValaCCodeIdentifier* _tmp31_ = NULL;
	ValaCCodeFunctionCall* _tmp32_ = NULL;
	ValaCCodeFunctionCall* _tmp33_ = NULL;
	ValaCCodeExpression* signal_name_cexpr = NULL;
	ValaMemberAccess* ma = NULL;
	ValaExpression* _tmp34_ = NULL;
	ValaMemberAccess* _tmp56_ = NULL;
	ValaExpression* _tmp57_ = NULL;
	ValaExpression* _tmp58_ = NULL;
	ValaSignal* _tmp68_ = NULL;
	ValaCCodeFunctionCall* _tmp157_ = NULL;
	ValaExpression* _tmp158_ = NULL;
	ValaCCodeExpression* _tmp159_ = NULL;
	ValaCCodeExpression* _tmp160_ = NULL;
	ValaCCodeCastExpression* _tmp161_ = NULL;
	ValaCCodeCastExpression* _tmp162_ = NULL;
	ValaMethod* _tmp163_ = NULL;
	gboolean _tmp164_ = FALSE;
	gboolean _tmp165_ = FALSE;
	gboolean _tmp220_ = FALSE;
	gboolean _tmp221_ = FALSE;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (sig != NULL, NULL);
	g_return_val_if_fail (signal_access != NULL, NULL);
	g_return_val_if_fail (handler != NULL, NULL);
	g_return_val_if_fail (expr != NULL, NULL);
	_tmp0_ = handler;
	_tmp1_ = vala_expression_get_symbol_reference (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_METHOD, ValaMethod));
	m = _tmp3_;
	_tmp4_ = disconnect;
	if (!_tmp4_) {
		ValaSignal* _tmp5_ = NULL;
		_tmp5_ = sig;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_DYNAMIC_SIGNAL)) {
			gboolean _tmp6_ = FALSE;
			_tmp6_ = after;
			if (!_tmp6_) {
				ValaSignal* _tmp7_ = NULL;
				gchar* _tmp8_ = NULL;
				_tmp7_ = sig;
				_tmp8_ = vala_ccode_base_module_get_dynamic_signal_connect_wrapper_name ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignal));
				_g_free0 (connect_func);
				connect_func = _tmp8_;
			} else {
				ValaSignal* _tmp9_ = NULL;
				gchar* _tmp10_ = NULL;
				_tmp9_ = sig;
				_tmp10_ = vala_ccode_base_module_get_dynamic_signal_connect_after_wrapper_name ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignal));
				_g_free0 (connect_func);
				connect_func = _tmp10_;
			}
		} else {
			ValaMethod* _tmp11_ = NULL;
			gboolean _tmp12_ = FALSE;
			gboolean _tmp13_ = FALSE;
			_tmp11_ = m;
			_tmp12_ = vala_method_get_closure (_tmp11_);
			_tmp13_ = _tmp12_;
			if (_tmp13_) {
				gchar* _tmp14_ = NULL;
				_tmp14_ = g_strdup ("g_signal_connect_data");
				_g_free0 (connect_func);
				connect_func = _tmp14_;
			} else {
				ValaMethod* _tmp15_ = NULL;
				gboolean _tmp16_ = FALSE;
				_tmp15_ = m;
				_tmp16_ = vala_gsignal_module_in_gobject_instance (self, _tmp15_);
				if (_tmp16_) {
					gchar* _tmp17_ = NULL;
					_tmp17_ = g_strdup ("g_signal_connect_object");
					_g_free0 (connect_func);
					connect_func = _tmp17_;
				} else {
					gboolean _tmp18_ = FALSE;
					_tmp18_ = after;
					if (!_tmp18_) {
						gchar* _tmp19_ = NULL;
						_tmp19_ = g_strdup ("g_signal_connect");
						_g_free0 (connect_func);
						connect_func = _tmp19_;
					} else {
						gchar* _tmp20_ = NULL;
						_tmp20_ = g_strdup ("g_signal_connect_after");
						_g_free0 (connect_func);
						connect_func = _tmp20_;
					}
				}
			}
		}
	} else {
		ValaExpression* _tmp21_ = NULL;
		ValaSignal* _tmp25_ = NULL;
		_tmp21_ = handler;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_LAMBDA_EXPRESSION)) {
			ValaExpression* _tmp22_ = NULL;
			ValaSourceReference* _tmp23_ = NULL;
			ValaSourceReference* _tmp24_ = NULL;
			_tmp22_ = handler;
			_tmp23_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp22_);
			_tmp24_ = _tmp23_;
			vala_report_error (_tmp24_, "Cannot disconnect lambda expression from signal. Use Object.disconnect" \
".");
		}
		_tmp25_ = sig;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_DYNAMIC_SIGNAL)) {
			ValaSignal* _tmp26_ = NULL;
			gchar* _tmp27_ = NULL;
			_tmp26_ = sig;
			_tmp27_ = vala_ccode_base_module_get_dynamic_signal_disconnect_wrapper_name ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignal));
			_g_free0 (connect_func);
			connect_func = _tmp27_;
		} else {
			gchar* _tmp28_ = NULL;
			_tmp28_ = g_strdup ("g_signal_handlers_disconnect_matched");
			_g_free0 (connect_func);
			connect_func = _tmp28_;
		}
	}
	_tmp29_ = connect_func;
	_tmp30_ = vala_ccode_identifier_new (_tmp29_);
	_tmp31_ = _tmp30_;
	_tmp32_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp31_);
	_tmp33_ = _tmp32_;
	_vala_ccode_node_unref0 (_tmp31_);
	ccall = _tmp33_;
	signal_name_cexpr = NULL;
	_tmp34_ = signal_access;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, VALA_TYPE_ELEMENT_ACCESS)) {
		ValaElementAccess* ea = NULL;
		ValaExpression* _tmp35_ = NULL;
		ValaElementAccess* _tmp36_ = NULL;
		ValaElementAccess* _tmp37_ = NULL;
		ValaExpression* _tmp38_ = NULL;
		ValaExpression* _tmp39_ = NULL;
		ValaMemberAccess* _tmp40_ = NULL;
		ValaExpression* detail_expr = NULL;
		ValaElementAccess* _tmp41_ = NULL;
		ValaList* _tmp42_ = NULL;
		ValaList* _tmp43_ = NULL;
		gpointer _tmp44_ = NULL;
		ValaExpression* _tmp45_ = NULL;
		ValaSignal* _tmp46_ = NULL;
		ValaExpression* _tmp47_ = NULL;
		ValaCodeNode* _tmp48_ = NULL;
		ValaCCodeExpression* _tmp49_ = NULL;
		ValaCCodeExpression* _tmp50_ = NULL;
		_tmp35_ = signal_access;
		_tmp36_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, VALA_TYPE_ELEMENT_ACCESS, ValaElementAccess));
		ea = _tmp36_;
		_tmp37_ = ea;
		_tmp38_ = vala_element_access_get_container (_tmp37_);
		_tmp39_ = _tmp38_;
		_tmp40_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp39_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
		_vala_code_node_unref0 (ma);
		ma = _tmp40_;
		_tmp41_ = ea;
		_tmp42_ = vala_element_access_get_indices (_tmp41_);
		_tmp43_ = _tmp42_;
		_tmp44_ = vala_list_get (_tmp43_, 0);
		_tmp45_ = (ValaExpression*) _tmp44_;
		_vala_iterable_unref0 (_tmp43_);
		detail_expr = _tmp45_;
		_tmp46_ = sig;
		_tmp47_ = detail_expr;
		_tmp48_ = expr;
		_tmp49_ = vala_gsignal_module_get_signal_name_cexpression (self, _tmp46_, _tmp47_, _tmp48_);
		_vala_ccode_node_unref0 (signal_name_cexpr);
		signal_name_cexpr = _tmp49_;
		_tmp50_ = signal_name_cexpr;
		if (_tmp50_ == NULL) {
			result = NULL;
			_vala_code_node_unref0 (detail_expr);
			_vala_code_node_unref0 (ea);
			_vala_code_node_unref0 (ma);
			_vala_ccode_node_unref0 (signal_name_cexpr);
			_vala_ccode_node_unref0 (ccall);
			_vala_code_node_unref0 (m);
			_g_free0 (connect_func);
			return result;
		}
		_vala_code_node_unref0 (detail_expr);
		_vala_code_node_unref0 (ea);
	} else {
		ValaExpression* _tmp51_ = NULL;
		ValaMemberAccess* _tmp52_ = NULL;
		ValaSignal* _tmp53_ = NULL;
		ValaCodeNode* _tmp54_ = NULL;
		ValaCCodeExpression* _tmp55_ = NULL;
		_tmp51_ = signal_access;
		_tmp52_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
		_vala_code_node_unref0 (ma);
		ma = _tmp52_;
		_tmp53_ = sig;
		_tmp54_ = expr;
		_tmp55_ = vala_gsignal_module_get_signal_name_cexpression (self, _tmp53_, NULL, _tmp54_);
		_vala_ccode_node_unref0 (signal_name_cexpr);
		signal_name_cexpr = _tmp55_;
	}
	_tmp56_ = ma;
	_tmp57_ = vala_member_access_get_inner (_tmp56_);
	_tmp58_ = _tmp57_;
	if (_tmp58_ != NULL) {
		ValaCCodeFunctionCall* _tmp59_ = NULL;
		ValaMemberAccess* _tmp60_ = NULL;
		ValaExpression* _tmp61_ = NULL;
		ValaExpression* _tmp62_ = NULL;
		ValaCCodeExpression* _tmp63_ = NULL;
		ValaCCodeExpression* _tmp64_ = NULL;
		_tmp59_ = ccall;
		_tmp60_ = ma;
		_tmp61_ = vala_member_access_get_inner (_tmp60_);
		_tmp62_ = _tmp61_;
		_tmp63_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp62_);
		_tmp64_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp63_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
		vala_ccode_function_call_add_argument (_tmp59_, _tmp64_);
		_vala_ccode_node_unref0 (_tmp64_);
	} else {
		ValaCCodeFunctionCall* _tmp65_ = NULL;
		ValaCCodeExpression* _tmp66_ = NULL;
		ValaCCodeExpression* _tmp67_ = NULL;
		_tmp65_ = ccall;
		_tmp66_ = vala_ccode_base_module_get_result_cexpression ((ValaCCodeBaseModule*) self, "self");
		_tmp67_ = _tmp66_;
		vala_ccode_function_call_add_argument (_tmp65_, _tmp67_);
		_vala_ccode_node_unref0 (_tmp67_);
	}
	_tmp68_ = sig;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp68_, VALA_TYPE_DYNAMIC_SIGNAL)) {
		ValaCCodeFunctionCall* _tmp69_ = NULL;
		ValaSignal* _tmp70_ = NULL;
		const gchar* _tmp71_ = NULL;
		const gchar* _tmp72_ = NULL;
		gchar* _tmp73_ = NULL;
		gchar* _tmp74_ = NULL;
		ValaCCodeConstant* _tmp75_ = NULL;
		ValaCCodeConstant* _tmp76_ = NULL;
		_tmp69_ = ccall;
		_tmp70_ = sig;
		_tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_);
		_tmp72_ = _tmp71_;
		_tmp73_ = g_strdup_printf ("\"%s\"", _tmp72_);
		_tmp74_ = _tmp73_;
		_tmp75_ = vala_ccode_constant_new (_tmp74_);
		_tmp76_ = _tmp75_;
		vala_ccode_function_call_add_argument (_tmp69_, (ValaCCodeExpression*) _tmp76_);
		_vala_ccode_node_unref0 (_tmp76_);
		_g_free0 (_tmp74_);
	} else {
		gboolean _tmp77_ = FALSE;
		_tmp77_ = disconnect;
		if (!_tmp77_) {
			ValaCCodeFunctionCall* _tmp78_ = NULL;
			ValaCCodeExpression* _tmp79_ = NULL;
			_tmp78_ = ccall;
			_tmp79_ = signal_name_cexpr;
			vala_ccode_function_call_add_argument (_tmp78_, _tmp79_);
		} else {
			ValaExpression* _tmp80_ = NULL;
			ValaLocalVariable* temp_decl = NULL;
			ValaDataType* _tmp87_ = NULL;
			ValaLocalVariable* _tmp88_ = NULL;
			ValaLocalVariable* _tmp89_ = NULL;
			ValaCCodeFunctionCall* parse_call = NULL;
			ValaCCodeIdentifier* _tmp90_ = NULL;
			ValaCCodeIdentifier* _tmp91_ = NULL;
			ValaCCodeFunctionCall* _tmp92_ = NULL;
			ValaCCodeFunctionCall* _tmp93_ = NULL;
			ValaCCodeFunctionCall* _tmp94_ = NULL;
			ValaCCodeExpression* _tmp95_ = NULL;
			ValaTypeSymbol* decl_type = NULL;
			ValaSignal* _tmp96_ = NULL;
			ValaSymbol* _tmp97_ = NULL;
			ValaSymbol* _tmp98_ = NULL;
			ValaTypeSymbol* _tmp99_ = NULL;
			ValaCCodeFunctionCall* _tmp100_ = NULL;
			ValaTypeSymbol* _tmp101_ = NULL;
			gchar* _tmp102_ = NULL;
			gchar* _tmp103_ = NULL;
			ValaCCodeIdentifier* _tmp104_ = NULL;
			ValaCCodeIdentifier* _tmp105_ = NULL;
			ValaCCodeFunctionCall* _tmp106_ = NULL;
			ValaLocalVariable* _tmp107_ = NULL;
			const gchar* _tmp108_ = NULL;
			const gchar* _tmp109_ = NULL;
			ValaCCodeExpression* _tmp110_ = NULL;
			ValaCCodeExpression* _tmp111_ = NULL;
			ValaCCodeUnaryExpression* _tmp112_ = NULL;
			ValaCCodeUnaryExpression* _tmp113_ = NULL;
			ValaLocalVariable* detail_temp_decl = NULL;
			ValaExpression* _tmp114_ = NULL;
			ValaCCodeFunction* _tmp135_ = NULL;
			ValaCCodeFunction* _tmp136_ = NULL;
			ValaCCodeFunctionCall* _tmp137_ = NULL;
			ValaCCodeFunctionCall* _tmp138_ = NULL;
			ValaLocalVariable* _tmp139_ = NULL;
			const gchar* _tmp140_ = NULL;
			const gchar* _tmp141_ = NULL;
			ValaCCodeExpression* _tmp142_ = NULL;
			ValaCCodeExpression* _tmp143_ = NULL;
			ValaLocalVariable* _tmp144_ = NULL;
			ValaCCodeFunctionCall* _tmp154_ = NULL;
			ValaCCodeConstant* _tmp155_ = NULL;
			ValaCCodeConstant* _tmp156_ = NULL;
			_tmp80_ = signal_access;
			if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_ELEMENT_ACCESS)) {
				ValaCCodeFunctionCall* _tmp81_ = NULL;
				ValaCCodeConstant* _tmp82_ = NULL;
				ValaCCodeConstant* _tmp83_ = NULL;
				_tmp81_ = ccall;
				_tmp82_ = vala_ccode_constant_new ("G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA");
				_tmp83_ = _tmp82_;
				vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp83_);
				_vala_ccode_node_unref0 (_tmp83_);
			} else {
				ValaCCodeFunctionCall* _tmp84_ = NULL;
				ValaCCodeConstant* _tmp85_ = NULL;
				ValaCCodeConstant* _tmp86_ = NULL;
				_tmp84_ = ccall;
				_tmp85_ = vala_ccode_constant_new ("G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SI" \
"GNAL_MATCH_DATA");
				_tmp86_ = _tmp85_;
				vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp86_);
				_vala_ccode_node_unref0 (_tmp86_);
			}
			_tmp87_ = ((ValaCCodeBaseModule*) self)->uint_type;
			_tmp88_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp87_, TRUE, NULL, TRUE);
			temp_decl = _tmp88_;
			_tmp89_ = temp_decl;
			vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp89_);
			_tmp90_ = vala_ccode_identifier_new ("g_signal_parse_name");
			_tmp91_ = _tmp90_;
			_tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
			_tmp93_ = _tmp92_;
			_vala_ccode_node_unref0 (_tmp91_);
			parse_call = _tmp93_;
			_tmp94_ = parse_call;
			_tmp95_ = signal_name_cexpr;
			vala_ccode_function_call_add_argument (_tmp94_, _tmp95_);
			_tmp96_ = sig;
			_tmp97_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp96_);
			_tmp98_ = _tmp97_;
			_tmp99_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp98_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
			decl_type = _tmp99_;
			_tmp100_ = parse_call;
			_tmp101_ = decl_type;
			_tmp102_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp101_);
			_tmp103_ = _tmp102_;
			_tmp104_ = vala_ccode_identifier_new (_tmp103_);
			_tmp105_ = _tmp104_;
			vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) _tmp105_);
			_vala_ccode_node_unref0 (_tmp105_);
			_g_free0 (_tmp103_);
			_tmp106_ = parse_call;
			_tmp107_ = temp_decl;
			_tmp108_ = vala_symbol_get_name ((ValaSymbol*) _tmp107_);
			_tmp109_ = _tmp108_;
			_tmp110_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp109_);
			_tmp111_ = _tmp110_;
			_tmp112_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp111_);
			_tmp113_ = _tmp112_;
			vala_ccode_function_call_add_argument (_tmp106_, (ValaCCodeExpression*) _tmp113_);
			_vala_ccode_node_unref0 (_tmp113_);
			_vala_ccode_node_unref0 (_tmp111_);
			detail_temp_decl = NULL;
			_tmp114_ = signal_access;
			if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp114_, VALA_TYPE_ELEMENT_ACCESS)) {
				ValaCCodeFunctionCall* _tmp115_ = NULL;
				ValaCCodeConstant* _tmp116_ = NULL;
				ValaCCodeConstant* _tmp117_ = NULL;
				ValaCCodeFunctionCall* _tmp118_ = NULL;
				ValaCCodeConstant* _tmp119_ = NULL;
				ValaCCodeConstant* _tmp120_ = NULL;
				_tmp115_ = parse_call;
				_tmp116_ = vala_ccode_constant_new ("NULL");
				_tmp117_ = _tmp116_;
				vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp117_);
				_vala_ccode_node_unref0 (_tmp117_);
				_tmp118_ = parse_call;
				_tmp119_ = vala_ccode_constant_new ("FALSE");
				_tmp120_ = _tmp119_;
				vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp120_);
				_vala_ccode_node_unref0 (_tmp120_);
			} else {
				ValaDataType* _tmp121_ = NULL;
				ValaLocalVariable* _tmp122_ = NULL;
				ValaLocalVariable* _tmp123_ = NULL;
				ValaCCodeFunctionCall* _tmp124_ = NULL;
				ValaLocalVariable* _tmp125_ = NULL;
				const gchar* _tmp126_ = NULL;
				const gchar* _tmp127_ = NULL;
				ValaCCodeExpression* _tmp128_ = NULL;
				ValaCCodeExpression* _tmp129_ = NULL;
				ValaCCodeUnaryExpression* _tmp130_ = NULL;
				ValaCCodeUnaryExpression* _tmp131_ = NULL;
				ValaCCodeFunctionCall* _tmp132_ = NULL;
				ValaCCodeConstant* _tmp133_ = NULL;
				ValaCCodeConstant* _tmp134_ = NULL;
				_tmp121_ = ((ValaCCodeBaseModule*) self)->gquark_type;
				_tmp122_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp121_, TRUE, NULL, TRUE);
				_vala_code_node_unref0 (detail_temp_decl);
				detail_temp_decl = _tmp122_;
				_tmp123_ = detail_temp_decl;
				vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp123_);
				_tmp124_ = parse_call;
				_tmp125_ = detail_temp_decl;
				_tmp126_ = vala_symbol_get_name ((ValaSymbol*) _tmp125_);
				_tmp127_ = _tmp126_;
				_tmp128_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp127_);
				_tmp129_ = _tmp128_;
				_tmp130_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp129_);
				_tmp131_ = _tmp130_;
				vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp131_);
				_vala_ccode_node_unref0 (_tmp131_);
				_vala_ccode_node_unref0 (_tmp129_);
				_tmp132_ = parse_call;
				_tmp133_ = vala_ccode_constant_new ("TRUE");
				_tmp134_ = _tmp133_;
				vala_ccode_function_call_add_argument (_tmp132_, (ValaCCodeExpression*) _tmp134_);
				_vala_ccode_node_unref0 (_tmp134_);
			}
			_tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp136_ = _tmp135_;
			_tmp137_ = parse_call;
			vala_ccode_function_add_expression (_tmp136_, (ValaCCodeExpression*) _tmp137_);
			_tmp138_ = ccall;
			_tmp139_ = temp_decl;
			_tmp140_ = vala_symbol_get_name ((ValaSymbol*) _tmp139_);
			_tmp141_ = _tmp140_;
			_tmp142_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp141_);
			_tmp143_ = _tmp142_;
			vala_ccode_function_call_add_argument (_tmp138_, _tmp143_);
			_vala_ccode_node_unref0 (_tmp143_);
			_tmp144_ = detail_temp_decl;
			if (_tmp144_ == NULL) {
				ValaCCodeFunctionCall* _tmp145_ = NULL;
				ValaCCodeConstant* _tmp146_ = NULL;
				ValaCCodeConstant* _tmp147_ = NULL;
				_tmp145_ = ccall;
				_tmp146_ = vala_ccode_constant_new ("0");
				_tmp147_ = _tmp146_;
				vala_ccode_function_call_add_argument (_tmp145_, (ValaCCodeExpression*) _tmp147_);
				_vala_ccode_node_unref0 (_tmp147_);
			} else {
				ValaCCodeFunctionCall* _tmp148_ = NULL;
				ValaLocalVariable* _tmp149_ = NULL;
				const gchar* _tmp150_ = NULL;
				const gchar* _tmp151_ = NULL;
				ValaCCodeExpression* _tmp152_ = NULL;
				ValaCCodeExpression* _tmp153_ = NULL;
				_tmp148_ = ccall;
				_tmp149_ = detail_temp_decl;
				_tmp150_ = vala_symbol_get_name ((ValaSymbol*) _tmp149_);
				_tmp151_ = _tmp150_;
				_tmp152_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp151_);
				_tmp153_ = _tmp152_;
				vala_ccode_function_call_add_argument (_tmp148_, _tmp153_);
				_vala_ccode_node_unref0 (_tmp153_);
			}
			_tmp154_ = ccall;
			_tmp155_ = vala_ccode_constant_new ("NULL");
			_tmp156_ = _tmp155_;
			vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp156_);
			_vala_ccode_node_unref0 (_tmp156_);
			_vala_code_node_unref0 (detail_temp_decl);
			_vala_code_node_unref0 (decl_type);
			_vala_ccode_node_unref0 (parse_call);
			_vala_code_node_unref0 (temp_decl);
		}
	}
	_tmp157_ = ccall;
	_tmp158_ = handler;
	_tmp159_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp158_);
	_tmp160_ = _tmp159_;
	_tmp161_ = vala_ccode_cast_expression_new (_tmp160_, "GCallback");
	_tmp162_ = _tmp161_;
	vala_ccode_function_call_add_argument (_tmp157_, (ValaCCodeExpression*) _tmp162_);
	_vala_ccode_node_unref0 (_tmp162_);
	_vala_ccode_node_unref0 (_tmp160_);
	_tmp163_ = m;
	_tmp164_ = vala_method_get_closure (_tmp163_);
	_tmp165_ = _tmp164_;
	if (_tmp165_) {
		ValaCCodeExpression* handler_destroy_notify = NULL;
		ValaCCodeFunctionCall* _tmp166_ = NULL;
		ValaExpression* _tmp167_ = NULL;
		ValaCCodeExpression* _tmp168_ = NULL;
		ValaCCodeExpression* _tmp169_ = NULL;
		ValaCCodeExpression* _tmp170_ = NULL;
		ValaCCodeFunctionCall* _tmp171_ = NULL;
		ValaCCodeExpression* _tmp172_ = NULL;
		ValaCCodeCastExpression* _tmp173_ = NULL;
		ValaCCodeCastExpression* _tmp174_ = NULL;
		gboolean _tmp175_ = FALSE;
		_tmp166_ = ccall;
		_tmp167_ = handler;
		_tmp169_ = vala_ccode_base_module_get_delegate_target_cexpression ((ValaCCodeBaseModule*) self, _tmp167_, &_tmp168_);
		_vala_ccode_node_unref0 (handler_destroy_notify);
		handler_destroy_notify = _tmp168_;
		_tmp170_ = _tmp169_;
		vala_ccode_function_call_add_argument (_tmp166_, _tmp170_);
		_vala_ccode_node_unref0 (_tmp170_);
		_tmp171_ = ccall;
		_tmp172_ = handler_destroy_notify;
		_tmp173_ = vala_ccode_cast_expression_new (_tmp172_, "GClosureNotify");
		_tmp174_ = _tmp173_;
		vala_ccode_function_call_add_argument (_tmp171_, (ValaCCodeExpression*) _tmp174_);
		_vala_ccode_node_unref0 (_tmp174_);
		_tmp175_ = after;
		if (!_tmp175_) {
			ValaCCodeFunctionCall* _tmp176_ = NULL;
			ValaCCodeConstant* _tmp177_ = NULL;
			ValaCCodeConstant* _tmp178_ = NULL;
			_tmp176_ = ccall;
			_tmp177_ = vala_ccode_constant_new ("0");
			_tmp178_ = _tmp177_;
			vala_ccode_function_call_add_argument (_tmp176_, (ValaCCodeExpression*) _tmp178_);
			_vala_ccode_node_unref0 (_tmp178_);
		} else {
			ValaCCodeFunctionCall* _tmp179_ = NULL;
			ValaCCodeConstant* _tmp180_ = NULL;
			ValaCCodeConstant* _tmp181_ = NULL;
			_tmp179_ = ccall;
			_tmp180_ = vala_ccode_constant_new ("G_CONNECT_AFTER");
			_tmp181_ = _tmp180_;
			vala_ccode_function_call_add_argument (_tmp179_, (ValaCCodeExpression*) _tmp181_);
			_vala_ccode_node_unref0 (_tmp181_);
		}
		_vala_ccode_node_unref0 (handler_destroy_notify);
	} else {
		ValaMethod* _tmp182_ = NULL;
		ValaMemberBinding _tmp183_ = 0;
		ValaMemberBinding _tmp184_ = 0;
		_tmp182_ = m;
		_tmp183_ = vala_method_get_binding (_tmp182_);
		_tmp184_ = _tmp183_;
		if (_tmp184_ == VALA_MEMBER_BINDING_INSTANCE) {
			ValaExpression* _tmp185_ = NULL;
			gboolean _tmp204_ = FALSE;
			gboolean _tmp205_ = FALSE;
			gboolean _tmp206_ = FALSE;
			_tmp185_ = handler;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp185_, VALA_TYPE_MEMBER_ACCESS)) {
				ValaMemberAccess* right_ma = NULL;
				ValaExpression* _tmp186_ = NULL;
				ValaMemberAccess* _tmp187_ = NULL;
				ValaMemberAccess* _tmp188_ = NULL;
				ValaExpression* _tmp189_ = NULL;
				ValaExpression* _tmp190_ = NULL;
				_tmp186_ = handler;
				_tmp187_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp186_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
				right_ma = _tmp187_;
				_tmp188_ = right_ma;
				_tmp189_ = vala_member_access_get_inner (_tmp188_);
				_tmp190_ = _tmp189_;
				if (_tmp190_ != NULL) {
					ValaCCodeFunctionCall* _tmp191_ = NULL;
					ValaMemberAccess* _tmp192_ = NULL;
					ValaExpression* _tmp193_ = NULL;
					ValaExpression* _tmp194_ = NULL;
					ValaCCodeExpression* _tmp195_ = NULL;
					ValaCCodeExpression* _tmp196_ = NULL;
					_tmp191_ = ccall;
					_tmp192_ = right_ma;
					_tmp193_ = vala_member_access_get_inner (_tmp192_);
					_tmp194_ = _tmp193_;
					_tmp195_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp194_);
					_tmp196_ = _tmp195_;
					vala_ccode_function_call_add_argument (_tmp191_, _tmp196_);
					_vala_ccode_node_unref0 (_tmp196_);
				} else {
					ValaCCodeFunctionCall* _tmp197_ = NULL;
					ValaCCodeExpression* _tmp198_ = NULL;
					ValaCCodeExpression* _tmp199_ = NULL;
					_tmp197_ = ccall;
					_tmp198_ = vala_ccode_base_module_get_result_cexpression ((ValaCCodeBaseModule*) self, "self");
					_tmp199_ = _tmp198_;
					vala_ccode_function_call_add_argument (_tmp197_, _tmp199_);
					_vala_ccode_node_unref0 (_tmp199_);
				}
				_vala_code_node_unref0 (right_ma);
			} else {
				ValaExpression* _tmp200_ = NULL;
				_tmp200_ = handler;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp200_, VALA_TYPE_LAMBDA_EXPRESSION)) {
					ValaCCodeFunctionCall* _tmp201_ = NULL;
					ValaCCodeExpression* _tmp202_ = NULL;
					ValaCCodeExpression* _tmp203_ = NULL;
					_tmp201_ = ccall;
					_tmp202_ = vala_ccode_base_module_get_result_cexpression ((ValaCCodeBaseModule*) self, "self");
					_tmp203_ = _tmp202_;
					vala_ccode_function_call_add_argument (_tmp201_, _tmp203_);
					_vala_ccode_node_unref0 (_tmp203_);
				}
			}
			_tmp206_ = disconnect;
			if (!_tmp206_) {
				ValaSignal* _tmp207_ = NULL;
				_tmp207_ = sig;
				_tmp205_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp207_, VALA_TYPE_DYNAMIC_SIGNAL);
			} else {
				_tmp205_ = FALSE;
			}
			if (_tmp205_) {
				ValaMethod* _tmp208_ = NULL;
				gboolean _tmp209_ = FALSE;
				_tmp208_ = m;
				_tmp209_ = vala_gsignal_module_in_gobject_instance (self, _tmp208_);
				_tmp204_ = _tmp209_;
			} else {
				_tmp204_ = FALSE;
			}
			if (_tmp204_) {
				gboolean _tmp210_ = FALSE;
				_tmp210_ = after;
				if (!_tmp210_) {
					ValaCCodeFunctionCall* _tmp211_ = NULL;
					ValaCCodeConstant* _tmp212_ = NULL;
					ValaCCodeConstant* _tmp213_ = NULL;
					_tmp211_ = ccall;
					_tmp212_ = vala_ccode_constant_new ("0");
					_tmp213_ = _tmp212_;
					vala_ccode_function_call_add_argument (_tmp211_, (ValaCCodeExpression*) _tmp213_);
					_vala_ccode_node_unref0 (_tmp213_);
				} else {
					ValaCCodeFunctionCall* _tmp214_ = NULL;
					ValaCCodeConstant* _tmp215_ = NULL;
					ValaCCodeConstant* _tmp216_ = NULL;
					_tmp214_ = ccall;
					_tmp215_ = vala_ccode_constant_new ("G_CONNECT_AFTER");
					_tmp216_ = _tmp215_;
					vala_ccode_function_call_add_argument (_tmp214_, (ValaCCodeExpression*) _tmp216_);
					_vala_ccode_node_unref0 (_tmp216_);
				}
			}
		} else {
			ValaCCodeFunctionCall* _tmp217_ = NULL;
			ValaCCodeConstant* _tmp218_ = NULL;
			ValaCCodeConstant* _tmp219_ = NULL;
			_tmp217_ = ccall;
			_tmp218_ = vala_ccode_constant_new ("NULL");
			_tmp219_ = _tmp218_;
			vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp219_);
			_vala_ccode_node_unref0 (_tmp219_);
		}
	}
	_tmp221_ = disconnect;
	if (_tmp221_) {
		_tmp220_ = TRUE;
	} else {
		ValaCodeNode* _tmp222_ = NULL;
		ValaCodeNode* _tmp223_ = NULL;
		ValaCodeNode* _tmp224_ = NULL;
		_tmp222_ = expr;
		_tmp223_ = vala_code_node_get_parent_node (_tmp222_);
		_tmp224_ = _tmp223_;
		_tmp220_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp224_, VALA_TYPE_EXPRESSION_STATEMENT);
	}
	if (_tmp220_) {
		ValaCCodeFunction* _tmp225_ = NULL;
		ValaCCodeFunction* _tmp226_ = NULL;
		ValaCCodeFunctionCall* _tmp227_ = NULL;
		_tmp225_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp226_ = _tmp225_;
		_tmp227_ = ccall;
		vala_ccode_function_add_expression (_tmp226_, (ValaCCodeExpression*) _tmp227_);
		result = NULL;
		_vala_code_node_unref0 (ma);
		_vala_ccode_node_unref0 (signal_name_cexpr);
		_vala_ccode_node_unref0 (ccall);
		_vala_code_node_unref0 (m);
		_g_free0 (connect_func);
		return result;
	} else {
		ValaLocalVariable* temp_var = NULL;
		ValaDataType* _tmp228_ = NULL;
		ValaLocalVariable* _tmp229_ = NULL;
		ValaCCodeExpression* temp_ref = NULL;
		ValaLocalVariable* _tmp230_ = NULL;
		const gchar* _tmp231_ = NULL;
		const gchar* _tmp232_ = NULL;
		ValaCCodeExpression* _tmp233_ = NULL;
		ValaLocalVariable* _tmp234_ = NULL;
		ValaCCodeFunction* _tmp235_ = NULL;
		ValaCCodeFunction* _tmp236_ = NULL;
		ValaCCodeExpression* _tmp237_ = NULL;
		ValaCCodeFunctionCall* _tmp238_ = NULL;
		_tmp228_ = ((ValaCCodeBaseModule*) self)->ulong_type;
		_tmp229_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp228_, TRUE, NULL, TRUE);
		temp_var = _tmp229_;
		_tmp230_ = temp_var;
		_tmp231_ = vala_symbol_get_name ((ValaSymbol*) _tmp230_);
		_tmp232_ = _tmp231_;
		_tmp233_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp232_);
		temp_ref = _tmp233_;
		_tmp234_ = temp_var;
		vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp234_);
		_tmp235_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp236_ = _tmp235_;
		_tmp237_ = temp_ref;
		_tmp238_ = ccall;
		vala_ccode_function_add_assignment (_tmp236_, _tmp237_, (ValaCCodeExpression*) _tmp238_);
		result = temp_ref;
		_vala_code_node_unref0 (temp_var);
		_vala_code_node_unref0 (ma);
		_vala_ccode_node_unref0 (signal_name_cexpr);
		_vala_ccode_node_unref0 (ccall);
		_vala_code_node_unref0 (m);
		_g_free0 (connect_func);
		return result;
	}
	_vala_code_node_unref0 (ma);
	_vala_ccode_node_unref0 (signal_name_cexpr);
	_vala_ccode_node_unref0 (ccall);
	_vala_code_node_unref0 (m);
	_g_free0 (connect_func);
}


ValaGSignalModule* vala_gsignal_module_construct (GType object_type) {
	ValaGSignalModule* self = NULL;
	self = (ValaGSignalModule*) vala_gobject_module_construct (object_type);
	return self;
}


ValaGSignalModule* vala_gsignal_module_new (void) {
	return vala_gsignal_module_construct (VALA_TYPE_GSIGNAL_MODULE);
}


static void vala_gsignal_module_class_init (ValaGSignalModuleClass * klass) {
	vala_gsignal_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->visit_signal = vala_gsignal_module_real_visit_signal;
	((ValaCCodeBaseModuleClass *) klass)->get_signal_creation = vala_gsignal_module_real_get_signal_creation;
	((ValaCodeVisitorClass *) klass)->visit_element_access = vala_gsignal_module_real_visit_element_access;
	((ValaCodeVisitorClass *) klass)->visit_assignment = vala_gsignal_module_real_visit_assignment;
	((ValaCodeVisitorClass *) klass)->visit_member_access = vala_gsignal_module_real_visit_member_access;
	((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gsignal_module_real_visit_method_call;
}


static void vala_gsignal_module_instance_init (ValaGSignalModule * self) {
}


GType vala_gsignal_module_get_type (void) {
	static volatile gsize vala_gsignal_module_type_id__volatile = 0;
	if (g_once_init_enter (&vala_gsignal_module_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValaGSignalModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gsignal_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGSignalModule), 0, (GInstanceInitFunc) vala_gsignal_module_instance_init, NULL };
		GType vala_gsignal_module_type_id;
		vala_gsignal_module_type_id = g_type_register_static (VALA_TYPE_GOBJECT_MODULE, "ValaGSignalModule", &g_define_type_info, 0);
		g_once_init_leave (&vala_gsignal_module_type_id__volatile, vala_gsignal_module_type_id);
	}
	return vala_gsignal_module_type_id__volatile;
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	if ((array != NULL) && (destroy_func != NULL)) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}


static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}



