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

/* valagdbusservermodule.vala
 *
 * Copyright (C) 2010-2011  Jürg Billeter
 *
 * 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>
 */

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

#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_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_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

static gpointer vala_gd_bus_server_module_parent_class = NULL;

static gchar* vala_gd_bus_server_module_generate_dbus_wrapper (ValaGDBusServerModule* self,
                                                        ValaMethod* m,
                                                        ValaObjectTypeSymbol* sym,
                                                        gboolean ready);
static gchar* vala_gd_bus_server_module_generate_dbus_signal_wrapper (ValaGDBusServerModule* self,
                                                               ValaSignal* sig,
                                                               ValaObjectTypeSymbol* sym,
                                                               const gchar* dbus_iface_name);
static gchar* vala_gd_bus_server_module_generate_dbus_property_get_wrapper (ValaGDBusServerModule* self,
                                                                     ValaProperty* prop,
                                                                     ValaObjectTypeSymbol* sym);
static gchar* vala_gd_bus_server_module_generate_dbus_property_set_wrapper (ValaGDBusServerModule* self,
                                                                     ValaProperty* prop,
                                                                     ValaObjectTypeSymbol* sym);
static void vala_gd_bus_server_module_handle_signals (ValaGDBusServerModule* self,
                                               ValaObjectTypeSymbol* sym,
                                               gboolean connect);
static void vala_gd_bus_server_module_generate_interface_method_call_function (ValaGDBusServerModule* self,
                                                                        ValaObjectTypeSymbol* sym);
static void vala_gd_bus_server_module_generate_interface_get_property_function (ValaGDBusServerModule* self,
                                                                         ValaObjectTypeSymbol* sym);
static void vala_gd_bus_server_module_generate_interface_set_property_function (ValaGDBusServerModule* self,
                                                                         ValaObjectTypeSymbol* sym);
static ValaCCodeExpression* vala_gd_bus_server_module_get_interface_vtable (ValaGDBusServerModule* self,
                                                                     ValaObjectTypeSymbol* sym);
static gchar* vala_gd_bus_server_module_generate_register_object_function (ValaGDBusServerModule* self);
static void vala_gd_bus_server_module_real_visit_method_call (ValaCodeVisitor* base,
                                                       ValaMethodCall* expr);
static void vala_gd_bus_server_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
                                                                ValaClass* cl,
                                                                ValaCCodeFile* decl_space);
static void vala_gd_bus_server_module_generate_object_type_symbol_declaration (ValaGDBusServerModule* self,
                                                                        ValaObjectTypeSymbol* sym,
                                                                        ValaCCodeFile* decl_space);
static void vala_gd_bus_server_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
                                                                    ValaInterface* iface,
                                                                    ValaCCodeFile* decl_space);
static void vala_gd_bus_server_module_real_visit_class (ValaCodeVisitor* base,
                                                 ValaClass* cl);
static void vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerModule* self,
                                                         ValaObjectTypeSymbol* sym);
static void vala_gd_bus_server_module_real_visit_interface (ValaCodeVisitor* base,
                                                     ValaInterface* iface);
static void vala_gd_bus_server_module_real_register_dbus_info (ValaCCodeBaseModule* base,
                                                        ValaCCodeBlock* block,
                                                        ValaObjectTypeSymbol* sym);
static GType vala_gd_bus_server_module_get_type_once (void);

static gpointer
_vala_ccode_node_ref0 (gpointer self)
{
	return self ? vala_ccode_node_ref (self) : NULL;
}

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

static gchar*
vala_gd_bus_server_module_generate_dbus_wrapper (ValaGDBusServerModule* self,
                                                 ValaMethod* m,
                                                 ValaObjectTypeSymbol* sym,
                                                 gboolean ready)
{
	gchar* wrapper_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gboolean need_goto_label = FALSE;
	ValaMethod* _tmp4_;
	ValaMethod* _tmp5_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeFunction* _tmp39_;
	ValaCCodeIdentifier* _tmp40_ = NULL;
	gboolean _tmp41_;
	gboolean _tmp42_;
	ValaCCodeIdentifier* ready_data_expr = NULL;
	ValaCCodeIdentifier* _tmp44_;
	gchar* ready_data_struct_name = NULL;
	gchar* _tmp45_;
	gchar* _tmp46_;
	gchar* _tmp47_;
	gchar* _tmp48_;
	gchar* _tmp49_;
	gchar* _tmp50_;
	ValaCCodeFunctionCall* connection = NULL;
	ValaCCodeIdentifier* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeFunctionCall* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeIdentifier* _tmp73_;
	gboolean no_reply = FALSE;
	gboolean uses_fd = FALSE;
	gboolean uses_error = FALSE;
	gboolean _tmp79_ = FALSE;
	gboolean _tmp80_;
	gboolean _tmp81_;
	ValaCCodeFunctionCall* ccall = NULL;
	gboolean _tmp450_ = FALSE;
	gboolean _tmp451_;
	gboolean _tmp452_;
	gboolean _tmp478_ = FALSE;
	gboolean _tmp479_;
	gboolean _tmp480_;
	gboolean _tmp491_ = FALSE;
	gboolean _tmp492_;
	gboolean _tmp493_;
	gboolean _tmp501_ = FALSE;
	gboolean _tmp788_ = FALSE;
	ValaCCodeFile* _tmp949_;
	ValaCCodeFunction* _tmp950_;
	ValaCCodeFile* _tmp951_;
	ValaCCodeFunction* _tmp952_;
	gboolean _tmp953_ = FALSE;
	gboolean _tmp954_;
	gboolean _tmp955_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (m != NULL, NULL);
	g_return_val_if_fail (sym != NULL, NULL);
	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) m);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strdup_printf ("_dbus_%s", _tmp1_);
	_tmp3_ = _tmp2_;
	_g_free0 (_tmp1_);
	wrapper_name = _tmp3_;
	need_goto_label = ready;
	_tmp4_ = vala_method_get_base_method (m);
	_tmp5_ = _tmp4_;
	if (_tmp5_ != NULL) {
		ValaMethod* _tmp6_;
		ValaMethod* _tmp7_;
		_tmp6_ = vala_method_get_base_method (m);
		_tmp7_ = _tmp6_;
		m = _tmp7_;
	} else {
		ValaMethod* _tmp8_;
		ValaMethod* _tmp9_;
		_tmp8_ = vala_method_get_base_interface_method (m);
		_tmp9_ = _tmp8_;
		if (_tmp9_ != NULL) {
			ValaMethod* _tmp10_;
			ValaMethod* _tmp11_;
			_tmp10_ = vala_method_get_base_interface_method (m);
			_tmp11_ = _tmp10_;
			m = _tmp11_;
		}
	}
	if (ready) {
		const gchar* _tmp12_;
		gchar* _tmp13_;
		_tmp12_ = wrapper_name;
		_tmp13_ = g_strconcat (_tmp12_, "_ready", NULL);
		_g_free0 (wrapper_name);
		wrapper_name = _tmp13_;
	}
	_tmp14_ = wrapper_name;
	_tmp15_ = vala_ccode_function_new (_tmp14_, "void");
	function = _tmp15_;
	_tmp16_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_STATIC);
	if (!ready) {
		ValaCCodeFunction* _tmp17_;
		gchar* _tmp18_;
		gchar* _tmp19_;
		gchar* _tmp20_;
		gchar* _tmp21_;
		ValaCCodeParameter* _tmp22_;
		ValaCCodeParameter* _tmp23_;
		ValaCCodeFunction* _tmp24_;
		ValaCCodeParameter* _tmp25_;
		ValaCCodeParameter* _tmp26_;
		ValaCCodeFunction* _tmp27_;
		ValaCCodeParameter* _tmp28_;
		ValaCCodeParameter* _tmp29_;
		_tmp17_ = function;
		_tmp18_ = vala_get_ccode_name ((ValaCodeNode*) sym);
		_tmp19_ = _tmp18_;
		_tmp20_ = g_strconcat (_tmp19_, "*", NULL);
		_tmp21_ = _tmp20_;
		_tmp22_ = vala_ccode_parameter_new ("self", _tmp21_);
		_tmp23_ = _tmp22_;
		vala_ccode_function_add_parameter (_tmp17_, _tmp23_);
		_vala_ccode_node_unref0 (_tmp23_);
		_g_free0 (_tmp21_);
		_g_free0 (_tmp19_);
		_tmp24_ = function;
		_tmp25_ = vala_ccode_parameter_new ("_parameters_", "GVariant*");
		_tmp26_ = _tmp25_;
		vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
		_vala_ccode_node_unref0 (_tmp26_);
		_tmp27_ = function;
		_tmp28_ = vala_ccode_parameter_new ("invocation", "GDBusMethodInvocation*");
		_tmp29_ = _tmp28_;
		vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
		_vala_ccode_node_unref0 (_tmp29_);
	} else {
		ValaCCodeFunction* _tmp30_;
		ValaCCodeParameter* _tmp31_;
		ValaCCodeParameter* _tmp32_;
		ValaCCodeFunction* _tmp33_;
		ValaCCodeParameter* _tmp34_;
		ValaCCodeParameter* _tmp35_;
		ValaCCodeFunction* _tmp36_;
		ValaCCodeParameter* _tmp37_;
		ValaCCodeParameter* _tmp38_;
		_tmp30_ = function;
		_tmp31_ = vala_ccode_parameter_new ("source_object", "GObject *");
		_tmp32_ = _tmp31_;
		vala_ccode_function_add_parameter (_tmp30_, _tmp32_);
		_vala_ccode_node_unref0 (_tmp32_);
		_tmp33_ = function;
		_tmp34_ = vala_ccode_parameter_new ("_res_", "GAsyncResult *");
		_tmp35_ = _tmp34_;
		vala_ccode_function_add_parameter (_tmp33_, _tmp35_);
		_vala_ccode_node_unref0 (_tmp35_);
		_tmp36_ = function;
		_tmp37_ = vala_ccode_parameter_new ("_user_data_", "gpointer");
		_tmp38_ = _tmp37_;
		vala_ccode_function_add_parameter (_tmp36_, _tmp38_);
		_vala_ccode_node_unref0 (_tmp38_);
	}
	_tmp39_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp39_);
	_tmp41_ = vala_method_get_coroutine (m);
	_tmp42_ = _tmp41_;
	if (_tmp42_) {
		ValaCCodeIdentifier* _tmp43_;
		_tmp43_ = vala_ccode_identifier_new ("_ready_data");
		_vala_ccode_node_unref0 (_tmp40_);
		_tmp40_ = _tmp43_;
	} else {
		_vala_ccode_node_unref0 (_tmp40_);
		_tmp40_ = NULL;
	}
	_tmp44_ = _vala_ccode_node_ref0 (_tmp40_);
	ready_data_expr = _tmp44_;
	_tmp45_ = vala_get_ccode_name ((ValaCodeNode*) m);
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_symbol_lower_case_to_camel_case (_tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = g_strconcat (_tmp48_, "ReadyData", NULL);
	_tmp50_ = _tmp49_;
	_g_free0 (_tmp48_);
	_g_free0 (_tmp46_);
	ready_data_struct_name = _tmp50_;
	if (ready) {
		ValaCCodeFunction* _tmp51_;
		ValaCCodeFunction* _tmp52_;
		const gchar* _tmp53_;
		gchar* _tmp54_;
		gchar* _tmp55_;
		ValaCCodeIdentifier* _tmp56_;
		ValaCCodeIdentifier* _tmp57_;
		ValaCCodeVariableDeclarator* _tmp58_;
		ValaCCodeVariableDeclarator* _tmp59_;
		ValaCCodeFunction* _tmp60_;
		ValaCCodeFunction* _tmp61_;
		ValaCCodeIdentifier* _tmp62_;
		ValaCCodeMemberAccess* _tmp63_;
		ValaCCodeMemberAccess* _tmp64_;
		ValaCCodeVariableDeclarator* _tmp65_;
		ValaCCodeVariableDeclarator* _tmp66_;
		_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp52_ = _tmp51_;
		_tmp53_ = ready_data_struct_name;
		_tmp54_ = g_strconcat (_tmp53_, "*", NULL);
		_tmp55_ = _tmp54_;
		_tmp56_ = vala_ccode_identifier_new ("_user_data_");
		_tmp57_ = _tmp56_;
		_tmp58_ = vala_ccode_variable_declarator_new ("_ready_data", (ValaCCodeExpression*) _tmp57_, NULL);
		_tmp59_ = _tmp58_;
		vala_ccode_function_add_declaration (_tmp52_, _tmp55_, (ValaCCodeDeclarator*) _tmp59_, 0);
		_vala_ccode_node_unref0 (_tmp59_);
		_vala_ccode_node_unref0 (_tmp57_);
		_g_free0 (_tmp55_);
		_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp61_ = _tmp60_;
		_tmp62_ = ready_data_expr;
		_tmp63_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp62_, "_invocation_");
		_tmp64_ = _tmp63_;
		_tmp65_ = vala_ccode_variable_declarator_new ("invocation", (ValaCCodeExpression*) _tmp64_, NULL);
		_tmp66_ = _tmp65_;
		vala_ccode_function_add_declaration (_tmp61_, "GDBusMethodInvocation*", (ValaCCodeDeclarator*) _tmp66_, 0);
		_vala_ccode_node_unref0 (_tmp66_);
		_vala_ccode_node_unref0 (_tmp64_);
	}
	_tmp67_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_connection");
	_tmp68_ = _tmp67_;
	_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
	_tmp70_ = _tmp69_;
	_vala_ccode_node_unref0 (_tmp68_);
	connection = _tmp70_;
	_tmp71_ = connection;
	_tmp72_ = vala_ccode_identifier_new ("invocation");
	_tmp73_ = _tmp72_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
	_vala_ccode_node_unref0 (_tmp73_);
	no_reply = vala_gd_bus_module_is_dbus_no_reply (m);
	uses_fd = vala_gd_bus_module_dbus_method_uses_file_descriptor ((ValaGDBusModule*) self, m);
	if (uses_fd) {
		ValaCCodeFile* _tmp74_;
		ValaCCodeFunction* _tmp75_;
		ValaCCodeFunction* _tmp76_;
		ValaCCodeVariableDeclarator* _tmp77_;
		ValaCCodeVariableDeclarator* _tmp78_;
		_tmp74_ = ((ValaCCodeBaseModule*) self)->cfile;
		vala_ccode_file_add_include (_tmp74_, "gio/gunixfdlist.h", FALSE);
		_tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp76_ = _tmp75_;
		_tmp77_ = vala_ccode_variable_declarator_new ("_fd_list", NULL, NULL);
		_tmp78_ = _tmp77_;
		vala_ccode_function_add_declaration (_tmp76_, "GUnixFDList*", (ValaCCodeDeclarator*) _tmp78_, 0);
		_vala_ccode_node_unref0 (_tmp78_);
	}
	uses_error = FALSE;
	_tmp80_ = vala_method_get_coroutine (m);
	_tmp81_ = _tmp80_;
	if (!_tmp81_) {
		_tmp79_ = TRUE;
	} else {
		_tmp79_ = ready;
	}
	if (_tmp79_) {
		ValaCCodeFunction* _tmp82_;
		ValaCCodeFunction* _tmp83_;
		ValaCCodeConstant* _tmp84_;
		ValaCCodeConstant* _tmp85_;
		ValaCCodeVariableDeclarator* _tmp86_;
		ValaCCodeVariableDeclarator* _tmp87_;
		_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp83_ = _tmp82_;
		_tmp84_ = vala_ccode_constant_new ("NULL");
		_tmp85_ = _tmp84_;
		_tmp86_ = vala_ccode_variable_declarator_new_zero ("error", (ValaCCodeExpression*) _tmp85_, NULL);
		_tmp87_ = _tmp86_;
		vala_ccode_function_add_declaration (_tmp83_, "GError*", (ValaCCodeDeclarator*) _tmp87_, 0);
		_vala_ccode_node_unref0 (_tmp87_);
		_vala_ccode_node_unref0 (_tmp85_);
		uses_error = TRUE;
	}
	if (!ready) {
		ValaCCodeFunction* _tmp88_;
		ValaCCodeFunction* _tmp89_;
		ValaCCodeVariableDeclarator* _tmp90_;
		ValaCCodeVariableDeclarator* _tmp91_;
		ValaCCodeFunctionCall* iter_init = NULL;
		ValaCCodeIdentifier* _tmp92_;
		ValaCCodeIdentifier* _tmp93_;
		ValaCCodeFunctionCall* _tmp94_;
		ValaCCodeFunctionCall* _tmp95_;
		ValaCCodeFunctionCall* _tmp96_;
		ValaCCodeIdentifier* _tmp97_;
		ValaCCodeIdentifier* _tmp98_;
		ValaCCodeUnaryExpression* _tmp99_;
		ValaCCodeUnaryExpression* _tmp100_;
		ValaCCodeFunctionCall* _tmp101_;
		ValaCCodeIdentifier* _tmp102_;
		ValaCCodeIdentifier* _tmp103_;
		ValaCCodeFunction* _tmp104_;
		ValaCCodeFunction* _tmp105_;
		ValaCCodeFunctionCall* _tmp106_;
		_tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_variable_declarator_new ("_arguments_iter", NULL, NULL);
		_tmp91_ = _tmp90_;
		vala_ccode_function_add_declaration (_tmp89_, "GVariantIter", (ValaCCodeDeclarator*) _tmp91_, 0);
		_vala_ccode_node_unref0 (_tmp91_);
		_tmp92_ = vala_ccode_identifier_new ("g_variant_iter_init");
		_tmp93_ = _tmp92_;
		_tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
		_tmp95_ = _tmp94_;
		_vala_ccode_node_unref0 (_tmp93_);
		iter_init = _tmp95_;
		_tmp96_ = iter_init;
		_tmp97_ = vala_ccode_identifier_new ("_arguments_iter");
		_tmp98_ = _tmp97_;
		_tmp99_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp98_);
		_tmp100_ = _tmp99_;
		vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp100_);
		_vala_ccode_node_unref0 (_tmp100_);
		_vala_ccode_node_unref0 (_tmp98_);
		_tmp101_ = iter_init;
		_tmp102_ = vala_ccode_identifier_new ("_parameters_");
		_tmp103_ = _tmp102_;
		vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_);
		_vala_ccode_node_unref0 (_tmp103_);
		_tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp105_ = _tmp104_;
		_tmp106_ = iter_init;
		vala_ccode_function_add_expression (_tmp105_, (ValaCCodeExpression*) _tmp106_);
		_vala_ccode_node_unref0 (iter_init);
	}
	if (!ready) {
		gchar* _tmp107_;
		gchar* _tmp108_;
		ValaCCodeIdentifier* _tmp109_;
		ValaCCodeIdentifier* _tmp110_;
		ValaCCodeFunctionCall* _tmp111_;
		ValaCCodeFunctionCall* _tmp112_;
		ValaCCodeIdentifier* _tmp113_;
		ValaCCodeIdentifier* _tmp114_;
		_tmp107_ = vala_get_ccode_name ((ValaCodeNode*) m);
		_tmp108_ = _tmp107_;
		_tmp109_ = vala_ccode_identifier_new (_tmp108_);
		_tmp110_ = _tmp109_;
		_tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp111_;
		_vala_ccode_node_unref0 (_tmp110_);
		_g_free0 (_tmp108_);
		_tmp112_ = ccall;
		_tmp113_ = vala_ccode_identifier_new ("self");
		_tmp114_ = _tmp113_;
		vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_);
		_vala_ccode_node_unref0 (_tmp114_);
	} else {
		gchar* _tmp115_;
		gchar* _tmp116_;
		ValaCCodeIdentifier* _tmp117_;
		ValaCCodeIdentifier* _tmp118_;
		ValaCCodeFunctionCall* _tmp119_;
		ValaCCodeFunctionCall* _tmp120_;
		ValaCCodeIdentifier* _tmp121_;
		ValaCCodeIdentifier* _tmp122_;
		gchar* _tmp123_;
		gchar* _tmp124_;
		gchar* _tmp125_;
		gchar* _tmp126_;
		ValaCCodeCastExpression* _tmp127_;
		ValaCCodeCastExpression* _tmp128_;
		ValaCCodeFunctionCall* _tmp129_;
		ValaCCodeIdentifier* _tmp130_;
		ValaCCodeIdentifier* _tmp131_;
		_tmp115_ = vala_get_ccode_finish_name (m);
		_tmp116_ = _tmp115_;
		_tmp117_ = vala_ccode_identifier_new (_tmp116_);
		_tmp118_ = _tmp117_;
		_tmp119_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp118_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp119_;
		_vala_ccode_node_unref0 (_tmp118_);
		_g_free0 (_tmp116_);
		_tmp120_ = ccall;
		_tmp121_ = vala_ccode_identifier_new ("source_object");
		_tmp122_ = _tmp121_;
		_tmp123_ = vala_get_ccode_name ((ValaCodeNode*) sym);
		_tmp124_ = _tmp123_;
		_tmp125_ = g_strconcat (_tmp124_, "*", NULL);
		_tmp126_ = _tmp125_;
		_tmp127_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp122_, _tmp126_);
		_tmp128_ = _tmp127_;
		vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp128_);
		_vala_ccode_node_unref0 (_tmp128_);
		_g_free0 (_tmp126_);
		_g_free0 (_tmp124_);
		_vala_ccode_node_unref0 (_tmp122_);
		_tmp129_ = ccall;
		_tmp130_ = vala_ccode_identifier_new ("_res_");
		_tmp131_ = _tmp130_;
		vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp131_);
		_vala_ccode_node_unref0 (_tmp131_);
	}
	if (!ready) {
		ValaCCodeStruct* ready_data_struct = NULL;
		gboolean _tmp142_;
		gboolean _tmp143_;
		if (uses_fd) {
			ValaCCodeFunction* _tmp132_;
			ValaCCodeFunction* _tmp133_;
			ValaCCodeConstant* _tmp134_;
			ValaCCodeConstant* _tmp135_;
			ValaCCodeVariableDeclarator* _tmp136_;
			ValaCCodeVariableDeclarator* _tmp137_;
			ValaCCodeFunction* _tmp138_;
			ValaCCodeFunction* _tmp139_;
			ValaCCodeVariableDeclarator* _tmp140_;
			ValaCCodeVariableDeclarator* _tmp141_;
			_tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp133_ = _tmp132_;
			_tmp134_ = vala_ccode_constant_new ("0");
			_tmp135_ = _tmp134_;
			_tmp136_ = vala_ccode_variable_declarator_new_zero ("_fd_index", (ValaCCodeExpression*) _tmp135_, NULL);
			_tmp137_ = _tmp136_;
			vala_ccode_function_add_declaration (_tmp133_, "gint", (ValaCCodeDeclarator*) _tmp137_, 0);
			_vala_ccode_node_unref0 (_tmp137_);
			_vala_ccode_node_unref0 (_tmp135_);
			_tmp138_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp139_ = _tmp138_;
			_tmp140_ = vala_ccode_variable_declarator_new ("_fd", NULL, NULL);
			_tmp141_ = _tmp140_;
			vala_ccode_function_add_declaration (_tmp139_, "gint", (ValaCCodeDeclarator*) _tmp141_, 0);
			_vala_ccode_node_unref0 (_tmp141_);
		}
		ready_data_struct = NULL;
		_tmp142_ = vala_method_get_coroutine (m);
		_tmp143_ = _tmp142_;
		if (_tmp143_) {
			const gchar* _tmp144_;
			gchar* _tmp145_;
			gchar* _tmp146_;
			ValaCCodeStruct* _tmp147_;
			ValaCCodeStruct* _tmp148_;
			ValaCCodeStruct* _tmp149_;
			ValaCCodeFunctionCall* ready_data_alloc = NULL;
			ValaCCodeIdentifier* _tmp150_;
			ValaCCodeIdentifier* _tmp151_;
			ValaCCodeFunctionCall* _tmp152_;
			ValaCCodeFunctionCall* _tmp153_;
			ValaCCodeFunctionCall* _tmp154_;
			const gchar* _tmp155_;
			ValaCCodeIdentifier* _tmp156_;
			ValaCCodeIdentifier* _tmp157_;
			ValaCCodeFunction* _tmp158_;
			ValaCCodeFunction* _tmp159_;
			const gchar* _tmp160_;
			gchar* _tmp161_;
			gchar* _tmp162_;
			ValaCCodeVariableDeclarator* _tmp163_;
			ValaCCodeVariableDeclarator* _tmp164_;
			ValaCCodeFunction* _tmp165_;
			ValaCCodeFunction* _tmp166_;
			ValaCCodeIdentifier* _tmp167_;
			ValaCCodeFunctionCall* _tmp168_;
			ValaCCodeFunction* _tmp169_;
			ValaCCodeFunction* _tmp170_;
			ValaCCodeIdentifier* _tmp171_;
			ValaCCodeMemberAccess* _tmp172_;
			ValaCCodeMemberAccess* _tmp173_;
			ValaCCodeIdentifier* _tmp174_;
			ValaCCodeIdentifier* _tmp175_;
			_tmp144_ = ready_data_struct_name;
			_tmp145_ = g_strconcat ("_", _tmp144_, NULL);
			_tmp146_ = _tmp145_;
			_tmp147_ = vala_ccode_struct_new (_tmp146_);
			_vala_ccode_node_unref0 (ready_data_struct);
			ready_data_struct = _tmp147_;
			_g_free0 (_tmp146_);
			_tmp148_ = ready_data_struct;
			vala_ccode_struct_add_field (_tmp148_, "GDBusMethodInvocation*", "_invocation_", 0, NULL);
			_tmp149_ = ready_data_struct;
			vala_gasync_module_append_struct ((ValaGAsyncModule*) self, _tmp149_);
			_tmp150_ = vala_ccode_identifier_new ("g_slice_new0");
			_tmp151_ = _tmp150_;
			_tmp152_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp151_);
			_tmp153_ = _tmp152_;
			_vala_ccode_node_unref0 (_tmp151_);
			ready_data_alloc = _tmp153_;
			_tmp154_ = ready_data_alloc;
			_tmp155_ = ready_data_struct_name;
			_tmp156_ = vala_ccode_identifier_new (_tmp155_);
			_tmp157_ = _tmp156_;
			vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp157_);
			_vala_ccode_node_unref0 (_tmp157_);
			_tmp158_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp159_ = _tmp158_;
			_tmp160_ = ready_data_struct_name;
			_tmp161_ = g_strconcat (_tmp160_, "*", NULL);
			_tmp162_ = _tmp161_;
			_tmp163_ = vala_ccode_variable_declarator_new ("_ready_data", NULL, NULL);
			_tmp164_ = _tmp163_;
			vala_ccode_function_add_declaration (_tmp159_, _tmp162_, (ValaCCodeDeclarator*) _tmp164_, 0);
			_vala_ccode_node_unref0 (_tmp164_);
			_g_free0 (_tmp162_);
			_tmp165_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp166_ = _tmp165_;
			_tmp167_ = ready_data_expr;
			_tmp168_ = ready_data_alloc;
			vala_ccode_function_add_assignment (_tmp166_, (ValaCCodeExpression*) _tmp167_, (ValaCCodeExpression*) _tmp168_);
			_tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp170_ = _tmp169_;
			_tmp171_ = ready_data_expr;
			_tmp172_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp171_, "_invocation_");
			_tmp173_ = _tmp172_;
			_tmp174_ = vala_ccode_identifier_new ("invocation");
			_tmp175_ = _tmp174_;
			vala_ccode_function_add_assignment (_tmp170_, (ValaCCodeExpression*) _tmp173_, (ValaCCodeExpression*) _tmp175_);
			_vala_ccode_node_unref0 (_tmp175_);
			_vala_ccode_node_unref0 (_tmp173_);
			_vala_ccode_node_unref0 (ready_data_alloc);
		}
		{
			ValaList* _param_list = NULL;
			ValaList* _tmp176_;
			gint _param_size = 0;
			ValaList* _tmp177_;
			gint _tmp178_;
			gint _tmp179_;
			gint _param_index = 0;
			_tmp176_ = vala_callable_get_parameters ((ValaCallable*) m);
			_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_;
				gint _tmp181_;
				ValaParameter* param = NULL;
				ValaList* _tmp182_;
				gpointer _tmp183_;
				gchar* param_name = NULL;
				ValaParameter* _tmp184_;
				const gchar* _tmp185_;
				const gchar* _tmp186_;
				gchar* _tmp187_;
				ValaParameter* _tmp188_;
				ValaParameterDirection _tmp189_;
				ValaParameterDirection _tmp190_;
				gboolean _tmp191_ = FALSE;
				ValaParameter* _tmp192_;
				ValaDataType* _tmp193_;
				ValaDataType* _tmp194_;
				gboolean _tmp202_ = FALSE;
				ValaParameter* _tmp203_;
				ValaDataType* _tmp204_;
				ValaDataType* _tmp205_;
				ValaCCodeExpression* param_expr = NULL;
				ValaCCodeIdentifier* _tmp213_;
				ValaDataType* owned_type = NULL;
				ValaParameter* _tmp219_;
				ValaDataType* _tmp220_;
				ValaDataType* _tmp221_;
				ValaDataType* _tmp222_;
				ValaDataType* _tmp223_;
				ValaCCodeStruct* _tmp224_;
				ValaArrayType* array_type = NULL;
				ValaParameter* _tmp243_;
				ValaDataType* _tmp244_;
				ValaDataType* _tmp245_;
				ValaArrayType* _tmp246_;
				ValaArrayType* _tmp247_;
				ValaCCodeFunctionCall* message_expr = NULL;
				ValaCCodeIdentifier* _tmp269_;
				ValaCCodeIdentifier* _tmp270_;
				ValaCCodeFunctionCall* _tmp271_;
				ValaCCodeFunctionCall* _tmp272_;
				ValaCCodeFunctionCall* _tmp273_;
				ValaCCodeIdentifier* _tmp274_;
				ValaCCodeIdentifier* _tmp275_;
				gboolean may_fail = FALSE;
				ValaParameter* _tmp276_;
				ValaDataType* _tmp277_;
				ValaDataType* _tmp278_;
				ValaCCodeFunctionCall* _tmp279_;
				ValaCCodeIdentifier* _tmp280_;
				ValaCCodeIdentifier* _tmp281_;
				ValaCCodeExpression* _tmp282_;
				ValaParameter* _tmp283_;
				ValaCCodeIdentifier* _tmp284_;
				ValaCCodeIdentifier* _tmp285_;
				ValaCCodeUnaryExpression* _tmp286_;
				ValaCCodeUnaryExpression* _tmp287_;
				gboolean _tmp288_ = FALSE;
				_param_index = _param_index + 1;
				_tmp180_ = _param_index;
				_tmp181_ = _param_size;
				if (!(_tmp180_ < _tmp181_)) {
					break;
				}
				_tmp182_ = _param_list;
				_tmp183_ = vala_list_get (_tmp182_, _param_index);
				param = (ValaParameter*) _tmp183_;
				_tmp184_ = param;
				_tmp185_ = vala_symbol_get_name ((ValaSymbol*) _tmp184_);
				_tmp186_ = _tmp185_;
				_tmp187_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp186_);
				param_name = _tmp187_;
				_tmp188_ = param;
				_tmp189_ = vala_parameter_get_direction (_tmp188_);
				_tmp190_ = _tmp189_;
				if (_tmp190_ != VALA_PARAMETER_DIRECTION_IN) {
					_g_free0 (param_name);
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp192_ = param;
				_tmp193_ = vala_variable_get_variable_type ((ValaVariable*) _tmp192_);
				_tmp194_ = _tmp193_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp194_, VALA_TYPE_OBJECT_TYPE)) {
					ValaParameter* _tmp195_;
					ValaDataType* _tmp196_;
					ValaDataType* _tmp197_;
					ValaTypeSymbol* _tmp198_;
					ValaTypeSymbol* _tmp199_;
					gchar* _tmp200_;
					gchar* _tmp201_;
					_tmp195_ = param;
					_tmp196_ = vala_variable_get_variable_type ((ValaVariable*) _tmp195_);
					_tmp197_ = _tmp196_;
					_tmp198_ = vala_data_type_get_type_symbol (_tmp197_);
					_tmp199_ = _tmp198_;
					_tmp200_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp199_);
					_tmp201_ = _tmp200_;
					_tmp191_ = g_strcmp0 (_tmp201_, "GLib.Cancellable") == 0;
					_g_free0 (_tmp201_);
				} else {
					_tmp191_ = FALSE;
				}
				if (_tmp191_) {
					_g_free0 (param_name);
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp203_ = param;
				_tmp204_ = vala_variable_get_variable_type ((ValaVariable*) _tmp203_);
				_tmp205_ = _tmp204_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp205_, VALA_TYPE_OBJECT_TYPE)) {
					ValaParameter* _tmp206_;
					ValaDataType* _tmp207_;
					ValaDataType* _tmp208_;
					ValaTypeSymbol* _tmp209_;
					ValaTypeSymbol* _tmp210_;
					gchar* _tmp211_;
					gchar* _tmp212_;
					_tmp206_ = param;
					_tmp207_ = vala_variable_get_variable_type ((ValaVariable*) _tmp206_);
					_tmp208_ = _tmp207_;
					_tmp209_ = vala_data_type_get_type_symbol (_tmp208_);
					_tmp210_ = _tmp209_;
					_tmp211_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp210_);
					_tmp212_ = _tmp211_;
					_tmp202_ = g_strcmp0 (_tmp212_, "GLib.BusName") == 0;
					_g_free0 (_tmp212_);
				} else {
					_tmp202_ = FALSE;
				}
				if (_tmp202_) {
					_g_free0 (param_name);
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp213_ = ready_data_expr;
				if (_tmp213_ != NULL) {
					ValaCCodeIdentifier* _tmp214_;
					const gchar* _tmp215_;
					ValaCCodeMemberAccess* _tmp216_;
					_tmp214_ = ready_data_expr;
					_tmp215_ = param_name;
					_tmp216_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp214_, _tmp215_);
					_vala_ccode_node_unref0 (param_expr);
					param_expr = (ValaCCodeExpression*) _tmp216_;
				} else {
					const gchar* _tmp217_;
					ValaCCodeIdentifier* _tmp218_;
					_tmp217_ = param_name;
					_tmp218_ = vala_ccode_identifier_new (_tmp217_);
					_vala_ccode_node_unref0 (param_expr);
					param_expr = (ValaCCodeExpression*) _tmp218_;
				}
				_tmp219_ = param;
				_tmp220_ = vala_variable_get_variable_type ((ValaVariable*) _tmp219_);
				_tmp221_ = _tmp220_;
				_tmp222_ = vala_data_type_copy (_tmp221_);
				owned_type = _tmp222_;
				_tmp223_ = owned_type;
				vala_data_type_set_value_owned (_tmp223_, TRUE);
				_tmp224_ = ready_data_struct;
				if (_tmp224_ != NULL) {
					ValaCCodeStruct* _tmp225_;
					ValaDataType* _tmp226_;
					gchar* _tmp227_;
					gchar* _tmp228_;
					const gchar* _tmp229_;
					_tmp225_ = ready_data_struct;
					_tmp226_ = owned_type;
					_tmp227_ = vala_get_ccode_name ((ValaCodeNode*) _tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = param_name;
					vala_ccode_struct_add_field (_tmp225_, _tmp228_, _tmp229_, 0, NULL);
					_g_free0 (_tmp228_);
				} else {
					ValaCCodeFunction* _tmp230_;
					ValaCCodeFunction* _tmp231_;
					ValaDataType* _tmp232_;
					gchar* _tmp233_;
					gchar* _tmp234_;
					const gchar* _tmp235_;
					ValaParameter* _tmp236_;
					ValaDataType* _tmp237_;
					ValaDataType* _tmp238_;
					ValaCCodeExpression* _tmp239_;
					ValaCCodeExpression* _tmp240_;
					ValaCCodeVariableDeclarator* _tmp241_;
					ValaCCodeVariableDeclarator* _tmp242_;
					_tmp230_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp231_ = _tmp230_;
					_tmp232_ = owned_type;
					_tmp233_ = vala_get_ccode_name ((ValaCodeNode*) _tmp232_);
					_tmp234_ = _tmp233_;
					_tmp235_ = param_name;
					_tmp236_ = param;
					_tmp237_ = vala_variable_get_variable_type ((ValaVariable*) _tmp236_);
					_tmp238_ = _tmp237_;
					_tmp239_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp238_, TRUE, FALSE);
					_tmp240_ = _tmp239_;
					_tmp241_ = vala_ccode_variable_declarator_new_zero (_tmp235_, _tmp240_, NULL);
					_tmp242_ = _tmp241_;
					vala_ccode_function_add_declaration (_tmp231_, _tmp234_, (ValaCCodeDeclarator*) _tmp242_, 0);
					_vala_ccode_node_unref0 (_tmp242_);
					_vala_ccode_node_unref0 (_tmp240_);
					_g_free0 (_tmp234_);
				}
				_tmp243_ = param;
				_tmp244_ = vala_variable_get_variable_type ((ValaVariable*) _tmp243_);
				_tmp245_ = _tmp244_;
				_tmp246_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp245_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp245_) : NULL);
				array_type = _tmp246_;
				_tmp247_ = array_type;
				if (_tmp247_ != NULL) {
					gchar* length_ctype = NULL;
					ValaArrayType* _tmp248_;
					gchar* _tmp249_;
					_tmp248_ = array_type;
					_tmp249_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp248_);
					length_ctype = _tmp249_;
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp250_ = FALSE;
							_tmp250_ = TRUE;
							while (TRUE) {
								ValaArrayType* _tmp252_;
								gint _tmp253_;
								gint _tmp254_;
								gchar* length_cname = NULL;
								ValaParameter* _tmp255_;
								gchar* _tmp256_;
								ValaCCodeStruct* _tmp257_;
								if (!_tmp250_) {
									gint _tmp251_;
									_tmp251_ = dim;
									dim = _tmp251_ + 1;
								}
								_tmp250_ = FALSE;
								_tmp252_ = array_type;
								_tmp253_ = vala_array_type_get_rank (_tmp252_);
								_tmp254_ = _tmp253_;
								if (!(dim <= _tmp254_)) {
									break;
								}
								_tmp255_ = param;
								_tmp256_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp255_, dim);
								length_cname = _tmp256_;
								_tmp257_ = ready_data_struct;
								if (_tmp257_ != NULL) {
									ValaCCodeStruct* _tmp258_;
									const gchar* _tmp259_;
									const gchar* _tmp260_;
									_tmp258_ = ready_data_struct;
									_tmp259_ = length_ctype;
									_tmp260_ = length_cname;
									vala_ccode_struct_add_field (_tmp258_, _tmp259_, _tmp260_, 0, NULL);
								} else {
									ValaCCodeFunction* _tmp261_;
									ValaCCodeFunction* _tmp262_;
									const gchar* _tmp263_;
									const gchar* _tmp264_;
									ValaCCodeConstant* _tmp265_;
									ValaCCodeConstant* _tmp266_;
									ValaCCodeVariableDeclarator* _tmp267_;
									ValaCCodeVariableDeclarator* _tmp268_;
									_tmp261_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
									_tmp262_ = _tmp261_;
									_tmp263_ = length_ctype;
									_tmp264_ = length_cname;
									_tmp265_ = vala_ccode_constant_new ("0");
									_tmp266_ = _tmp265_;
									_tmp267_ = vala_ccode_variable_declarator_new_zero (_tmp264_, (ValaCCodeExpression*) _tmp266_, NULL);
									_tmp268_ = _tmp267_;
									vala_ccode_function_add_declaration (_tmp262_, _tmp263_, (ValaCCodeDeclarator*) _tmp268_, 0);
									_vala_ccode_node_unref0 (_tmp268_);
									_vala_ccode_node_unref0 (_tmp266_);
								}
								_g_free0 (length_cname);
							}
						}
					}
					_g_free0 (length_ctype);
				}
				_tmp269_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_message");
				_tmp270_ = _tmp269_;
				_tmp271_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp270_);
				_tmp272_ = _tmp271_;
				_vala_ccode_node_unref0 (_tmp270_);
				message_expr = _tmp272_;
				_tmp273_ = message_expr;
				_tmp274_ = vala_ccode_identifier_new ("invocation");
				_tmp275_ = _tmp274_;
				vala_ccode_function_call_add_argument (_tmp273_, (ValaCCodeExpression*) _tmp275_);
				_vala_ccode_node_unref0 (_tmp275_);
				_tmp276_ = param;
				_tmp277_ = vala_variable_get_variable_type ((ValaVariable*) _tmp276_);
				_tmp278_ = _tmp277_;
				_tmp279_ = message_expr;
				_tmp280_ = vala_ccode_identifier_new ("_arguments_iter");
				_tmp281_ = _tmp280_;
				_tmp282_ = param_expr;
				_tmp283_ = param;
				_tmp284_ = vala_ccode_identifier_new ("error");
				_tmp285_ = _tmp284_;
				_tmp286_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp285_);
				_tmp287_ = _tmp286_;
				vala_gd_bus_module_receive_dbus_value ((ValaGDBusModule*) self, _tmp278_, (ValaCCodeExpression*) _tmp279_, (ValaCCodeExpression*) _tmp281_, _tmp282_, (ValaSymbol*) _tmp283_, (ValaCCodeExpression*) _tmp287_, &_tmp288_);
				may_fail = _tmp288_;
				_vala_ccode_node_unref0 (_tmp287_);
				_vala_ccode_node_unref0 (_tmp285_);
				_vala_ccode_node_unref0 (_tmp281_);
				if (may_fail) {
					ValaCCodeFunction* _tmp295_;
					ValaCCodeFunction* _tmp296_;
					ValaCCodeIdentifier* _tmp297_;
					ValaCCodeIdentifier* _tmp298_;
					ValaCCodeFunctionCall* return_error = NULL;
					ValaCCodeIdentifier* _tmp299_;
					ValaCCodeIdentifier* _tmp300_;
					ValaCCodeFunctionCall* _tmp301_;
					ValaCCodeFunctionCall* _tmp302_;
					ValaCCodeFunctionCall* _tmp303_;
					ValaCCodeIdentifier* _tmp304_;
					ValaCCodeIdentifier* _tmp305_;
					ValaCCodeFunctionCall* _tmp306_;
					ValaCCodeIdentifier* _tmp307_;
					ValaCCodeIdentifier* _tmp308_;
					ValaCCodeFunction* _tmp309_;
					ValaCCodeFunction* _tmp310_;
					ValaCCodeFunctionCall* _tmp311_;
					gboolean _tmp312_ = FALSE;
					ValaCCodeFunction* _tmp318_;
					ValaCCodeFunction* _tmp319_;
					if (!uses_error) {
						ValaCCodeFunction* _tmp289_;
						ValaCCodeFunction* _tmp290_;
						ValaCCodeConstant* _tmp291_;
						ValaCCodeConstant* _tmp292_;
						ValaCCodeVariableDeclarator* _tmp293_;
						ValaCCodeVariableDeclarator* _tmp294_;
						_tmp289_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp290_ = _tmp289_;
						_tmp291_ = vala_ccode_constant_new ("NULL");
						_tmp292_ = _tmp291_;
						_tmp293_ = vala_ccode_variable_declarator_new_zero ("error", (ValaCCodeExpression*) _tmp292_, NULL);
						_tmp294_ = _tmp293_;
						vala_ccode_function_add_declaration (_tmp290_, "GError*", (ValaCCodeDeclarator*) _tmp294_, 0);
						_vala_ccode_node_unref0 (_tmp294_);
						_vala_ccode_node_unref0 (_tmp292_);
						uses_error = TRUE;
					}
					_tmp295_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp296_ = _tmp295_;
					_tmp297_ = vala_ccode_identifier_new ("error");
					_tmp298_ = _tmp297_;
					vala_ccode_function_open_if (_tmp296_, (ValaCCodeExpression*) _tmp298_);
					_vala_ccode_node_unref0 (_tmp298_);
					_tmp299_ = vala_ccode_identifier_new ("g_dbus_method_invocation_take_error");
					_tmp300_ = _tmp299_;
					_tmp301_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp300_);
					_tmp302_ = _tmp301_;
					_vala_ccode_node_unref0 (_tmp300_);
					return_error = _tmp302_;
					_tmp303_ = return_error;
					_tmp304_ = vala_ccode_identifier_new ("invocation");
					_tmp305_ = _tmp304_;
					vala_ccode_function_call_add_argument (_tmp303_, (ValaCCodeExpression*) _tmp305_);
					_vala_ccode_node_unref0 (_tmp305_);
					_tmp306_ = return_error;
					_tmp307_ = vala_ccode_identifier_new ("error");
					_tmp308_ = _tmp307_;
					vala_ccode_function_call_add_argument (_tmp306_, (ValaCCodeExpression*) _tmp308_);
					_vala_ccode_node_unref0 (_tmp308_);
					_tmp309_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp310_ = _tmp309_;
					_tmp311_ = return_error;
					vala_ccode_function_add_expression (_tmp310_, (ValaCCodeExpression*) _tmp311_);
					if (need_goto_label) {
						_tmp312_ = TRUE;
					} else {
						ValaDataType* _tmp313_;
						_tmp313_ = owned_type;
						_tmp312_ = vala_ccode_base_module_requires_destroy (_tmp313_);
					}
					if (_tmp312_) {
						ValaCCodeFunction* _tmp314_;
						ValaCCodeFunction* _tmp315_;
						_tmp314_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp315_ = _tmp314_;
						vala_ccode_function_add_goto (_tmp315_, "_error");
						need_goto_label = TRUE;
					} else {
						ValaCCodeFunction* _tmp316_;
						ValaCCodeFunction* _tmp317_;
						_tmp316_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp317_ = _tmp316_;
						vala_ccode_function_add_return (_tmp317_, NULL);
					}
					_tmp318_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp319_ = _tmp318_;
					vala_ccode_function_close (_tmp319_);
					_vala_ccode_node_unref0 (return_error);
				} else {
					gboolean _tmp320_ = FALSE;
					gboolean _tmp321_ = FALSE;
					if (!need_goto_label) {
						gboolean _tmp322_;
						gboolean _tmp323_;
						_tmp322_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
						_tmp323_ = _tmp322_;
						_tmp321_ = _tmp323_;
					} else {
						_tmp321_ = FALSE;
					}
					if (_tmp321_) {
						ValaDataType* _tmp324_;
						_tmp324_ = owned_type;
						_tmp320_ = vala_ccode_base_module_requires_destroy (_tmp324_);
					} else {
						_tmp320_ = FALSE;
					}
					if (_tmp320_) {
						need_goto_label = TRUE;
					}
				}
				_vala_ccode_node_unref0 (message_expr);
				_vala_code_node_unref0 (array_type);
				_vala_code_node_unref0 (owned_type);
				_vala_ccode_node_unref0 (param_expr);
				_g_free0 (param_name);
				_vala_code_node_unref0 (param);
			}
		}
		_vala_ccode_node_unref0 (ready_data_struct);
	}
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp325_;
		gint _param_size = 0;
		ValaList* _tmp326_;
		gint _tmp327_;
		gint _tmp328_;
		gint _param_index = 0;
		_tmp325_ = vala_callable_get_parameters ((ValaCallable*) m);
		_param_list = _tmp325_;
		_tmp326_ = _param_list;
		_tmp327_ = vala_collection_get_size ((ValaCollection*) _tmp326_);
		_tmp328_ = _tmp327_;
		_param_size = _tmp328_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp329_;
			gint _tmp330_;
			ValaParameter* param = NULL;
			ValaList* _tmp331_;
			gpointer _tmp332_;
			gchar* param_name = NULL;
			ValaParameter* _tmp333_;
			const gchar* _tmp334_;
			const gchar* _tmp335_;
			gchar* _tmp336_;
			ValaCCodeExpression* param_expr = NULL;
			gboolean _tmp337_ = FALSE;
			ValaCCodeIdentifier* _tmp338_;
			gboolean _tmp347_ = FALSE;
			ValaParameter* _tmp348_;
			ValaParameterDirection _tmp349_;
			ValaParameterDirection _tmp350_;
			ValaArrayType* array_type = NULL;
			ValaParameter* _tmp410_;
			ValaDataType* _tmp411_;
			ValaDataType* _tmp412_;
			ValaArrayType* _tmp413_;
			ValaArrayType* _tmp414_;
			_param_index = _param_index + 1;
			_tmp329_ = _param_index;
			_tmp330_ = _param_size;
			if (!(_tmp329_ < _tmp330_)) {
				break;
			}
			_tmp331_ = _param_list;
			_tmp332_ = vala_list_get (_tmp331_, _param_index);
			param = (ValaParameter*) _tmp332_;
			_tmp333_ = param;
			_tmp334_ = vala_symbol_get_name ((ValaSymbol*) _tmp333_);
			_tmp335_ = _tmp334_;
			_tmp336_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp335_);
			param_name = _tmp336_;
			_tmp338_ = ready_data_expr;
			if (_tmp338_ != NULL) {
				ValaParameter* _tmp339_;
				ValaParameterDirection _tmp340_;
				ValaParameterDirection _tmp341_;
				_tmp339_ = param;
				_tmp340_ = vala_parameter_get_direction (_tmp339_);
				_tmp341_ = _tmp340_;
				_tmp337_ = _tmp341_ == VALA_PARAMETER_DIRECTION_IN;
			} else {
				_tmp337_ = FALSE;
			}
			if (_tmp337_) {
				ValaCCodeIdentifier* _tmp342_;
				const gchar* _tmp343_;
				ValaCCodeMemberAccess* _tmp344_;
				_tmp342_ = ready_data_expr;
				_tmp343_ = param_name;
				_tmp344_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp342_, _tmp343_);
				_vala_ccode_node_unref0 (param_expr);
				param_expr = (ValaCCodeExpression*) _tmp344_;
			} else {
				const gchar* _tmp345_;
				ValaCCodeIdentifier* _tmp346_;
				_tmp345_ = param_name;
				_tmp346_ = vala_ccode_identifier_new (_tmp345_);
				_vala_ccode_node_unref0 (param_expr);
				param_expr = (ValaCCodeExpression*) _tmp346_;
			}
			_tmp348_ = param;
			_tmp349_ = vala_parameter_get_direction (_tmp348_);
			_tmp350_ = _tmp349_;
			if (_tmp350_ == VALA_PARAMETER_DIRECTION_IN) {
				_tmp347_ = !ready;
			} else {
				_tmp347_ = FALSE;
			}
			if (_tmp347_) {
				gboolean _tmp351_ = FALSE;
				ValaParameter* _tmp352_;
				ValaDataType* _tmp353_;
				ValaDataType* _tmp354_;
				gboolean _tmp365_ = FALSE;
				ValaParameter* _tmp366_;
				ValaDataType* _tmp367_;
				ValaDataType* _tmp368_;
				ValaStruct* st = NULL;
				ValaParameter* _tmp385_;
				ValaDataType* _tmp386_;
				ValaDataType* _tmp387_;
				ValaTypeSymbol* _tmp388_;
				ValaTypeSymbol* _tmp389_;
				gboolean _tmp390_ = FALSE;
				ValaStruct* _tmp391_;
				_tmp352_ = param;
				_tmp353_ = vala_variable_get_variable_type ((ValaVariable*) _tmp352_);
				_tmp354_ = _tmp353_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp354_, VALA_TYPE_OBJECT_TYPE)) {
					ValaParameter* _tmp355_;
					ValaDataType* _tmp356_;
					ValaDataType* _tmp357_;
					ValaTypeSymbol* _tmp358_;
					ValaTypeSymbol* _tmp359_;
					gchar* _tmp360_;
					gchar* _tmp361_;
					_tmp355_ = param;
					_tmp356_ = vala_variable_get_variable_type ((ValaVariable*) _tmp355_);
					_tmp357_ = _tmp356_;
					_tmp358_ = vala_data_type_get_type_symbol (_tmp357_);
					_tmp359_ = _tmp358_;
					_tmp360_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp359_);
					_tmp361_ = _tmp360_;
					_tmp351_ = g_strcmp0 (_tmp361_, "GLib.Cancellable") == 0;
					_g_free0 (_tmp361_);
				} else {
					_tmp351_ = FALSE;
				}
				if (_tmp351_) {
					ValaCCodeFunctionCall* _tmp362_;
					ValaCCodeConstant* _tmp363_;
					ValaCCodeConstant* _tmp364_;
					_tmp362_ = ccall;
					_tmp363_ = vala_ccode_constant_new ("NULL");
					_tmp364_ = _tmp363_;
					vala_ccode_function_call_add_argument (_tmp362_, (ValaCCodeExpression*) _tmp364_);
					_vala_ccode_node_unref0 (_tmp364_);
					_vala_ccode_node_unref0 (param_expr);
					_g_free0 (param_name);
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp366_ = param;
				_tmp367_ = vala_variable_get_variable_type ((ValaVariable*) _tmp366_);
				_tmp368_ = _tmp367_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp368_, VALA_TYPE_OBJECT_TYPE)) {
					ValaParameter* _tmp369_;
					ValaDataType* _tmp370_;
					ValaDataType* _tmp371_;
					ValaTypeSymbol* _tmp372_;
					ValaTypeSymbol* _tmp373_;
					gchar* _tmp374_;
					gchar* _tmp375_;
					_tmp369_ = param;
					_tmp370_ = vala_variable_get_variable_type ((ValaVariable*) _tmp369_);
					_tmp371_ = _tmp370_;
					_tmp372_ = vala_data_type_get_type_symbol (_tmp371_);
					_tmp373_ = _tmp372_;
					_tmp374_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp373_);
					_tmp375_ = _tmp374_;
					_tmp365_ = g_strcmp0 (_tmp375_, "GLib.BusName") == 0;
					_g_free0 (_tmp375_);
				} else {
					_tmp365_ = FALSE;
				}
				if (_tmp365_) {
					ValaCCodeFunctionCall* sender = NULL;
					ValaCCodeIdentifier* _tmp376_;
					ValaCCodeIdentifier* _tmp377_;
					ValaCCodeFunctionCall* _tmp378_;
					ValaCCodeFunctionCall* _tmp379_;
					ValaCCodeFunctionCall* _tmp380_;
					ValaCCodeIdentifier* _tmp381_;
					ValaCCodeIdentifier* _tmp382_;
					ValaCCodeFunctionCall* _tmp383_;
					ValaCCodeFunctionCall* _tmp384_;
					_tmp376_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_sender");
					_tmp377_ = _tmp376_;
					_tmp378_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp377_);
					_tmp379_ = _tmp378_;
					_vala_ccode_node_unref0 (_tmp377_);
					sender = _tmp379_;
					_tmp380_ = sender;
					_tmp381_ = vala_ccode_identifier_new ("invocation");
					_tmp382_ = _tmp381_;
					vala_ccode_function_call_add_argument (_tmp380_, (ValaCCodeExpression*) _tmp382_);
					_vala_ccode_node_unref0 (_tmp382_);
					_tmp383_ = ccall;
					_tmp384_ = sender;
					vala_ccode_function_call_add_argument (_tmp383_, (ValaCCodeExpression*) _tmp384_);
					_vala_ccode_node_unref0 (sender);
					_vala_ccode_node_unref0 (param_expr);
					_g_free0 (param_name);
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp385_ = param;
				_tmp386_ = vala_variable_get_variable_type ((ValaVariable*) _tmp385_);
				_tmp387_ = _tmp386_;
				_tmp388_ = vala_data_type_get_type_symbol (_tmp387_);
				_tmp389_ = _tmp388_;
				st = G_TYPE_CHECK_INSTANCE_TYPE (_tmp389_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp389_) : NULL;
				_tmp391_ = st;
				if (_tmp391_ != NULL) {
					ValaStruct* _tmp392_;
					_tmp392_ = st;
					_tmp390_ = !vala_struct_is_simple_type (_tmp392_);
				} else {
					_tmp390_ = FALSE;
				}
				if (_tmp390_) {
					ValaCCodeFunctionCall* _tmp393_;
					ValaCCodeExpression* _tmp394_;
					ValaCCodeUnaryExpression* _tmp395_;
					ValaCCodeUnaryExpression* _tmp396_;
					_tmp393_ = ccall;
					_tmp394_ = param_expr;
					_tmp395_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp394_);
					_tmp396_ = _tmp395_;
					vala_ccode_function_call_add_argument (_tmp393_, (ValaCCodeExpression*) _tmp396_);
					_vala_ccode_node_unref0 (_tmp396_);
				} else {
					ValaCCodeFunctionCall* _tmp397_;
					ValaCCodeExpression* _tmp398_;
					_tmp397_ = ccall;
					_tmp398_ = param_expr;
					vala_ccode_function_call_add_argument (_tmp397_, _tmp398_);
				}
			} else {
				gboolean _tmp399_ = FALSE;
				ValaParameter* _tmp400_;
				ValaParameterDirection _tmp401_;
				ValaParameterDirection _tmp402_;
				_tmp400_ = param;
				_tmp401_ = vala_parameter_get_direction (_tmp400_);
				_tmp402_ = _tmp401_;
				if (_tmp402_ == VALA_PARAMETER_DIRECTION_OUT) {
					gboolean _tmp403_ = FALSE;
					gboolean _tmp404_;
					gboolean _tmp405_;
					_tmp404_ = vala_method_get_coroutine (m);
					_tmp405_ = _tmp404_;
					if (!_tmp405_) {
						_tmp403_ = TRUE;
					} else {
						_tmp403_ = ready;
					}
					_tmp399_ = _tmp403_;
				} else {
					_tmp399_ = FALSE;
				}
				if (_tmp399_) {
					ValaCCodeFunctionCall* _tmp406_;
					ValaCCodeExpression* _tmp407_;
					ValaCCodeUnaryExpression* _tmp408_;
					ValaCCodeUnaryExpression* _tmp409_;
					_tmp406_ = ccall;
					_tmp407_ = param_expr;
					_tmp408_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp407_);
					_tmp409_ = _tmp408_;
					vala_ccode_function_call_add_argument (_tmp406_, (ValaCCodeExpression*) _tmp409_);
					_vala_ccode_node_unref0 (_tmp409_);
				}
			}
			_tmp410_ = param;
			_tmp411_ = vala_variable_get_variable_type ((ValaVariable*) _tmp410_);
			_tmp412_ = _tmp411_;
			_tmp413_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp412_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp412_) : NULL);
			array_type = _tmp413_;
			_tmp414_ = array_type;
			if (_tmp414_ != NULL) {
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp415_ = FALSE;
						_tmp415_ = TRUE;
						while (TRUE) {
							ValaArrayType* _tmp417_;
							gint _tmp418_;
							gint _tmp419_;
							gchar* length_cname = NULL;
							ValaParameter* _tmp420_;
							gchar* _tmp421_;
							ValaCCodeExpression* length_expr = NULL;
							gboolean _tmp422_ = FALSE;
							ValaCCodeIdentifier* _tmp423_;
							gboolean _tmp432_ = FALSE;
							ValaParameter* _tmp433_;
							ValaParameterDirection _tmp434_;
							ValaParameterDirection _tmp435_;
							if (!_tmp415_) {
								gint _tmp416_;
								_tmp416_ = dim;
								dim = _tmp416_ + 1;
							}
							_tmp415_ = FALSE;
							_tmp417_ = array_type;
							_tmp418_ = vala_array_type_get_rank (_tmp417_);
							_tmp419_ = _tmp418_;
							if (!(dim <= _tmp419_)) {
								break;
							}
							_tmp420_ = param;
							_tmp421_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp420_, dim);
							length_cname = _tmp421_;
							_tmp423_ = ready_data_expr;
							if (_tmp423_ != NULL) {
								ValaParameter* _tmp424_;
								ValaParameterDirection _tmp425_;
								ValaParameterDirection _tmp426_;
								_tmp424_ = param;
								_tmp425_ = vala_parameter_get_direction (_tmp424_);
								_tmp426_ = _tmp425_;
								_tmp422_ = _tmp426_ == VALA_PARAMETER_DIRECTION_IN;
							} else {
								_tmp422_ = FALSE;
							}
							if (_tmp422_) {
								ValaCCodeIdentifier* _tmp427_;
								const gchar* _tmp428_;
								ValaCCodeMemberAccess* _tmp429_;
								_tmp427_ = ready_data_expr;
								_tmp428_ = length_cname;
								_tmp429_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp427_, _tmp428_);
								_vala_ccode_node_unref0 (length_expr);
								length_expr = (ValaCCodeExpression*) _tmp429_;
							} else {
								const gchar* _tmp430_;
								ValaCCodeIdentifier* _tmp431_;
								_tmp430_ = length_cname;
								_tmp431_ = vala_ccode_identifier_new (_tmp430_);
								_vala_ccode_node_unref0 (length_expr);
								length_expr = (ValaCCodeExpression*) _tmp431_;
							}
							_tmp433_ = param;
							_tmp434_ = vala_parameter_get_direction (_tmp433_);
							_tmp435_ = _tmp434_;
							if (_tmp435_ == VALA_PARAMETER_DIRECTION_IN) {
								_tmp432_ = !ready;
							} else {
								_tmp432_ = FALSE;
							}
							if (_tmp432_) {
								ValaCCodeFunctionCall* _tmp436_;
								ValaCCodeExpression* _tmp437_;
								_tmp436_ = ccall;
								_tmp437_ = length_expr;
								vala_ccode_function_call_add_argument (_tmp436_, _tmp437_);
							} else {
								gboolean _tmp438_ = FALSE;
								gboolean _tmp439_ = FALSE;
								ValaParameter* _tmp440_;
								ValaParameterDirection _tmp441_;
								ValaParameterDirection _tmp442_;
								_tmp440_ = param;
								_tmp441_ = vala_parameter_get_direction (_tmp440_);
								_tmp442_ = _tmp441_;
								if (_tmp442_ == VALA_PARAMETER_DIRECTION_OUT) {
									_tmp439_ = !no_reply;
								} else {
									_tmp439_ = FALSE;
								}
								if (_tmp439_) {
									gboolean _tmp443_ = FALSE;
									gboolean _tmp444_;
									gboolean _tmp445_;
									_tmp444_ = vala_method_get_coroutine (m);
									_tmp445_ = _tmp444_;
									if (!_tmp445_) {
										_tmp443_ = TRUE;
									} else {
										_tmp443_ = ready;
									}
									_tmp438_ = _tmp443_;
								} else {
									_tmp438_ = FALSE;
								}
								if (_tmp438_) {
									ValaCCodeFunctionCall* _tmp446_;
									ValaCCodeExpression* _tmp447_;
									ValaCCodeUnaryExpression* _tmp448_;
									ValaCCodeUnaryExpression* _tmp449_;
									_tmp446_ = ccall;
									_tmp447_ = length_expr;
									_tmp448_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp447_);
									_tmp449_ = _tmp448_;
									vala_ccode_function_call_add_argument (_tmp446_, (ValaCCodeExpression*) _tmp449_);
									_vala_ccode_node_unref0 (_tmp449_);
								}
							}
							_vala_ccode_node_unref0 (length_expr);
							_g_free0 (length_cname);
						}
					}
				}
			}
			_vala_code_node_unref0 (array_type);
			_vala_ccode_node_unref0 (param_expr);
			_g_free0 (param_name);
			_vala_code_node_unref0 (param);
		}
	}
	_tmp451_ = vala_method_get_coroutine (m);
	_tmp452_ = _tmp451_;
	if (!_tmp452_) {
		_tmp450_ = TRUE;
	} else {
		_tmp450_ = ready;
	}
	if (_tmp450_) {
		ValaDataType* _tmp453_;
		ValaDataType* _tmp454_;
		_tmp453_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp454_ = _tmp453_;
		if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp454_, VALA_TYPE_VOID_TYPE)) {
			ValaDataType* _tmp455_;
			ValaDataType* _tmp456_;
			_tmp455_ = vala_callable_get_return_type ((ValaCallable*) m);
			_tmp456_ = _tmp455_;
			if (vala_data_type_is_real_non_null_struct_type (_tmp456_)) {
				ValaCCodeFunctionCall* _tmp457_;
				ValaCCodeIdentifier* _tmp458_;
				ValaCCodeIdentifier* _tmp459_;
				ValaCCodeUnaryExpression* _tmp460_;
				ValaCCodeUnaryExpression* _tmp461_;
				_tmp457_ = ccall;
				_tmp458_ = vala_ccode_identifier_new ("result");
				_tmp459_ = _tmp458_;
				_tmp460_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp459_);
				_tmp461_ = _tmp460_;
				vala_ccode_function_call_add_argument (_tmp457_, (ValaCCodeExpression*) _tmp461_);
				_vala_ccode_node_unref0 (_tmp461_);
				_vala_ccode_node_unref0 (_tmp459_);
			} else {
				ValaArrayType* array_type = NULL;
				ValaDataType* _tmp462_;
				ValaDataType* _tmp463_;
				ValaArrayType* _tmp464_;
				ValaArrayType* _tmp465_;
				_tmp462_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp463_ = _tmp462_;
				_tmp464_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp463_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp463_) : NULL);
				array_type = _tmp464_;
				_tmp465_ = array_type;
				if (_tmp465_ != NULL) {
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp466_ = FALSE;
							_tmp466_ = TRUE;
							while (TRUE) {
								ValaArrayType* _tmp468_;
								gint _tmp469_;
								gint _tmp470_;
								gchar* length_cname = NULL;
								gchar* _tmp471_;
								ValaCCodeFunctionCall* _tmp472_;
								const gchar* _tmp473_;
								ValaCCodeIdentifier* _tmp474_;
								ValaCCodeIdentifier* _tmp475_;
								ValaCCodeUnaryExpression* _tmp476_;
								ValaCCodeUnaryExpression* _tmp477_;
								if (!_tmp466_) {
									gint _tmp467_;
									_tmp467_ = dim;
									dim = _tmp467_ + 1;
								}
								_tmp466_ = FALSE;
								_tmp468_ = array_type;
								_tmp469_ = vala_array_type_get_rank (_tmp468_);
								_tmp470_ = _tmp469_;
								if (!(dim <= _tmp470_)) {
									break;
								}
								_tmp471_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
								length_cname = _tmp471_;
								_tmp472_ = ccall;
								_tmp473_ = length_cname;
								_tmp474_ = vala_ccode_identifier_new (_tmp473_);
								_tmp475_ = _tmp474_;
								_tmp476_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp475_);
								_tmp477_ = _tmp476_;
								vala_ccode_function_call_add_argument (_tmp472_, (ValaCCodeExpression*) _tmp477_);
								_vala_ccode_node_unref0 (_tmp477_);
								_vala_ccode_node_unref0 (_tmp475_);
								_g_free0 (length_cname);
							}
						}
					}
				}
				_vala_code_node_unref0 (array_type);
			}
		}
	}
	_tmp479_ = vala_method_get_coroutine (m);
	_tmp480_ = _tmp479_;
	if (_tmp480_) {
		_tmp478_ = !ready;
	} else {
		_tmp478_ = FALSE;
	}
	if (_tmp478_) {
		ValaCCodeFunctionCall* _tmp481_;
		const gchar* _tmp482_;
		gchar* _tmp483_;
		gchar* _tmp484_;
		ValaCCodeIdentifier* _tmp485_;
		ValaCCodeIdentifier* _tmp486_;
		ValaCCodeCastExpression* _tmp487_;
		ValaCCodeCastExpression* _tmp488_;
		ValaCCodeFunctionCall* _tmp489_;
		ValaCCodeIdentifier* _tmp490_;
		_tmp481_ = ccall;
		_tmp482_ = wrapper_name;
		_tmp483_ = g_strconcat (_tmp482_, "_ready", NULL);
		_tmp484_ = _tmp483_;
		_tmp485_ = vala_ccode_identifier_new (_tmp484_);
		_tmp486_ = _tmp485_;
		_tmp487_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp486_, "GAsyncReadyCallback");
		_tmp488_ = _tmp487_;
		vala_ccode_function_call_add_argument (_tmp481_, (ValaCCodeExpression*) _tmp488_);
		_vala_ccode_node_unref0 (_tmp488_);
		_vala_ccode_node_unref0 (_tmp486_);
		_g_free0 (_tmp484_);
		_tmp489_ = ccall;
		_tmp490_ = ready_data_expr;
		vala_ccode_function_call_add_argument (_tmp489_, (ValaCCodeExpression*) _tmp490_);
	}
	_tmp492_ = vala_method_get_coroutine (m);
	_tmp493_ = _tmp492_;
	if (!_tmp493_) {
		_tmp491_ = TRUE;
	} else {
		_tmp491_ = ready;
	}
	if (_tmp491_) {
		gboolean _tmp494_;
		gboolean _tmp495_;
		_tmp494_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
		_tmp495_ = _tmp494_;
		if (_tmp495_) {
			ValaCCodeFunctionCall* _tmp496_;
			ValaCCodeIdentifier* _tmp497_;
			ValaCCodeIdentifier* _tmp498_;
			ValaCCodeUnaryExpression* _tmp499_;
			ValaCCodeUnaryExpression* _tmp500_;
			_tmp496_ = ccall;
			_tmp497_ = vala_ccode_identifier_new ("error");
			_tmp498_ = _tmp497_;
			_tmp499_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp498_);
			_tmp500_ = _tmp499_;
			vala_ccode_function_call_add_argument (_tmp496_, (ValaCCodeExpression*) _tmp500_);
			_vala_ccode_node_unref0 (_tmp500_);
			_vala_ccode_node_unref0 (_tmp498_);
		}
	}
	if (!no_reply) {
		gboolean _tmp502_ = FALSE;
		gboolean _tmp503_;
		gboolean _tmp504_;
		_tmp503_ = vala_method_get_coroutine (m);
		_tmp504_ = _tmp503_;
		if (!_tmp504_) {
			_tmp502_ = TRUE;
		} else {
			_tmp502_ = ready;
		}
		_tmp501_ = _tmp502_;
	} else {
		_tmp501_ = FALSE;
	}
	if (_tmp501_) {
		gboolean _tmp505_ = FALSE;
		ValaDataType* _tmp506_;
		ValaDataType* _tmp507_;
		gboolean _tmp518_;
		gboolean _tmp519_;
		ValaCCodeFunction* _tmp543_;
		ValaCCodeFunction* _tmp544_;
		ValaCCodeConstant* _tmp545_;
		ValaCCodeConstant* _tmp546_;
		ValaCCodeVariableDeclarator* _tmp547_;
		ValaCCodeVariableDeclarator* _tmp548_;
		ValaCCodeFunctionCall* message_expr = NULL;
		ValaCCodeIdentifier* _tmp549_;
		ValaCCodeIdentifier* _tmp550_;
		ValaCCodeFunctionCall* _tmp551_;
		ValaCCodeFunctionCall* _tmp552_;
		ValaCCodeFunctionCall* _tmp553_;
		ValaCCodeIdentifier* _tmp554_;
		ValaCCodeIdentifier* _tmp555_;
		ValaCCodeIdentifier* _tmp556_;
		ValaCCodeIdentifier* _tmp557_;
		ValaCCodeFunctionCall* _tmp558_;
		ValaCCodeFunctionCall* _tmp559_;
		ValaCCodeFunctionCall* _tmp560_;
		ValaCCodeFunction* _tmp561_;
		ValaCCodeFunction* _tmp562_;
		ValaCCodeIdentifier* _tmp563_;
		ValaCCodeIdentifier* _tmp564_;
		ValaCCodeFunctionCall* _tmp565_;
		ValaCCodeFunction* _tmp566_;
		ValaCCodeFunction* _tmp567_;
		ValaCCodeVariableDeclarator* _tmp568_;
		ValaCCodeVariableDeclarator* _tmp569_;
		ValaCCodeFunction* _tmp570_;
		ValaCCodeFunction* _tmp571_;
		ValaCCodeVariableDeclarator* _tmp572_;
		ValaCCodeVariableDeclarator* _tmp573_;
		ValaCCodeFunctionCall* builder_init = NULL;
		ValaCCodeIdentifier* _tmp574_;
		ValaCCodeIdentifier* _tmp575_;
		ValaCCodeFunctionCall* _tmp576_;
		ValaCCodeFunctionCall* _tmp577_;
		ValaCCodeFunctionCall* _tmp578_;
		ValaCCodeIdentifier* _tmp579_;
		ValaCCodeIdentifier* _tmp580_;
		ValaCCodeUnaryExpression* _tmp581_;
		ValaCCodeUnaryExpression* _tmp582_;
		ValaCCodeFunctionCall* _tmp583_;
		ValaCCodeIdentifier* _tmp584_;
		ValaCCodeIdentifier* _tmp585_;
		ValaCCodeFunction* _tmp586_;
		ValaCCodeFunction* _tmp587_;
		ValaCCodeFunctionCall* _tmp588_;
		ValaDataType* _tmp661_;
		ValaDataType* _tmp662_;
		ValaCCodeFunctionCall* builder_end = NULL;
		ValaCCodeIdentifier* _tmp737_;
		ValaCCodeIdentifier* _tmp738_;
		ValaCCodeFunctionCall* _tmp739_;
		ValaCCodeFunctionCall* _tmp740_;
		ValaCCodeFunctionCall* _tmp741_;
		ValaCCodeIdentifier* _tmp742_;
		ValaCCodeIdentifier* _tmp743_;
		ValaCCodeUnaryExpression* _tmp744_;
		ValaCCodeUnaryExpression* _tmp745_;
		ValaCCodeFunction* _tmp746_;
		ValaCCodeFunction* _tmp747_;
		ValaCCodeIdentifier* _tmp748_;
		ValaCCodeIdentifier* _tmp749_;
		ValaCCodeFunctionCall* _tmp750_;
		ValaCCodeFunctionCall* set_body = NULL;
		ValaCCodeIdentifier* _tmp751_;
		ValaCCodeIdentifier* _tmp752_;
		ValaCCodeFunctionCall* _tmp753_;
		ValaCCodeFunctionCall* _tmp754_;
		ValaCCodeFunctionCall* _tmp755_;
		ValaCCodeIdentifier* _tmp756_;
		ValaCCodeIdentifier* _tmp757_;
		ValaCCodeFunctionCall* _tmp758_;
		ValaCCodeIdentifier* _tmp759_;
		ValaCCodeIdentifier* _tmp760_;
		ValaCCodeFunction* _tmp761_;
		ValaCCodeFunction* _tmp762_;
		ValaCCodeFunctionCall* _tmp763_;
		_tmp506_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp507_ = _tmp506_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp507_, VALA_TYPE_VOID_TYPE)) {
			_tmp505_ = TRUE;
		} else {
			ValaDataType* _tmp508_;
			ValaDataType* _tmp509_;
			_tmp508_ = vala_callable_get_return_type ((ValaCallable*) m);
			_tmp509_ = _tmp508_;
			_tmp505_ = vala_data_type_is_real_non_null_struct_type (_tmp509_);
		}
		if (_tmp505_) {
			ValaCCodeFunction* _tmp510_;
			ValaCCodeFunction* _tmp511_;
			ValaCCodeFunctionCall* _tmp512_;
			_tmp510_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp511_ = _tmp510_;
			_tmp512_ = ccall;
			vala_ccode_function_add_expression (_tmp511_, (ValaCCodeExpression*) _tmp512_);
		} else {
			ValaCCodeFunction* _tmp513_;
			ValaCCodeFunction* _tmp514_;
			ValaCCodeIdentifier* _tmp515_;
			ValaCCodeIdentifier* _tmp516_;
			ValaCCodeFunctionCall* _tmp517_;
			_tmp513_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp514_ = _tmp513_;
			_tmp515_ = vala_ccode_identifier_new ("result");
			_tmp516_ = _tmp515_;
			_tmp517_ = ccall;
			vala_ccode_function_add_assignment (_tmp514_, (ValaCCodeExpression*) _tmp516_, (ValaCCodeExpression*) _tmp517_);
			_vala_ccode_node_unref0 (_tmp516_);
		}
		_tmp518_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
		_tmp519_ = _tmp518_;
		if (_tmp519_) {
			ValaCCodeFunction* _tmp520_;
			ValaCCodeFunction* _tmp521_;
			ValaCCodeIdentifier* _tmp522_;
			ValaCCodeIdentifier* _tmp523_;
			ValaCCodeFunctionCall* return_error = NULL;
			ValaCCodeIdentifier* _tmp524_;
			ValaCCodeIdentifier* _tmp525_;
			ValaCCodeFunctionCall* _tmp526_;
			ValaCCodeFunctionCall* _tmp527_;
			ValaCCodeFunctionCall* _tmp528_;
			ValaCCodeIdentifier* _tmp529_;
			ValaCCodeIdentifier* _tmp530_;
			ValaCCodeFunctionCall* _tmp531_;
			ValaCCodeIdentifier* _tmp532_;
			ValaCCodeIdentifier* _tmp533_;
			ValaCCodeFunction* _tmp534_;
			ValaCCodeFunction* _tmp535_;
			ValaCCodeFunctionCall* _tmp536_;
			ValaCCodeFunction* _tmp541_;
			ValaCCodeFunction* _tmp542_;
			_tmp520_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp521_ = _tmp520_;
			_tmp522_ = vala_ccode_identifier_new ("error");
			_tmp523_ = _tmp522_;
			vala_ccode_function_open_if (_tmp521_, (ValaCCodeExpression*) _tmp523_);
			_vala_ccode_node_unref0 (_tmp523_);
			_tmp524_ = vala_ccode_identifier_new ("g_dbus_method_invocation_take_error");
			_tmp525_ = _tmp524_;
			_tmp526_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp525_);
			_tmp527_ = _tmp526_;
			_vala_ccode_node_unref0 (_tmp525_);
			return_error = _tmp527_;
			_tmp528_ = return_error;
			_tmp529_ = vala_ccode_identifier_new ("invocation");
			_tmp530_ = _tmp529_;
			vala_ccode_function_call_add_argument (_tmp528_, (ValaCCodeExpression*) _tmp530_);
			_vala_ccode_node_unref0 (_tmp530_);
			_tmp531_ = return_error;
			_tmp532_ = vala_ccode_identifier_new ("error");
			_tmp533_ = _tmp532_;
			vala_ccode_function_call_add_argument (_tmp531_, (ValaCCodeExpression*) _tmp533_);
			_vala_ccode_node_unref0 (_tmp533_);
			_tmp534_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp535_ = _tmp534_;
			_tmp536_ = return_error;
			vala_ccode_function_add_expression (_tmp535_, (ValaCCodeExpression*) _tmp536_);
			if (need_goto_label) {
				ValaCCodeFunction* _tmp537_;
				ValaCCodeFunction* _tmp538_;
				_tmp537_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp538_ = _tmp537_;
				vala_ccode_function_add_goto (_tmp538_, "_error");
			} else {
				ValaCCodeFunction* _tmp539_;
				ValaCCodeFunction* _tmp540_;
				_tmp539_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp540_ = _tmp539_;
				vala_ccode_function_add_return (_tmp540_, NULL);
			}
			_tmp541_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp542_ = _tmp541_;
			vala_ccode_function_close (_tmp542_);
			_vala_ccode_node_unref0 (return_error);
		}
		_tmp543_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp544_ = _tmp543_;
		_tmp545_ = vala_ccode_constant_new ("NULL");
		_tmp546_ = _tmp545_;
		_tmp547_ = vala_ccode_variable_declarator_new_zero ("_reply_message", (ValaCCodeExpression*) _tmp546_, NULL);
		_tmp548_ = _tmp547_;
		vala_ccode_function_add_declaration (_tmp544_, "GDBusMessage*", (ValaCCodeDeclarator*) _tmp548_, 0);
		_vala_ccode_node_unref0 (_tmp548_);
		_vala_ccode_node_unref0 (_tmp546_);
		_tmp549_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_message");
		_tmp550_ = _tmp549_;
		_tmp551_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp550_);
		_tmp552_ = _tmp551_;
		_vala_ccode_node_unref0 (_tmp550_);
		message_expr = _tmp552_;
		_tmp553_ = message_expr;
		_tmp554_ = vala_ccode_identifier_new ("invocation");
		_tmp555_ = _tmp554_;
		vala_ccode_function_call_add_argument (_tmp553_, (ValaCCodeExpression*) _tmp555_);
		_vala_ccode_node_unref0 (_tmp555_);
		_tmp556_ = vala_ccode_identifier_new ("g_dbus_message_new_method_reply");
		_tmp557_ = _tmp556_;
		_tmp558_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp557_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp558_;
		_vala_ccode_node_unref0 (_tmp557_);
		_tmp559_ = ccall;
		_tmp560_ = message_expr;
		vala_ccode_function_call_add_argument (_tmp559_, (ValaCCodeExpression*) _tmp560_);
		_tmp561_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp562_ = _tmp561_;
		_tmp563_ = vala_ccode_identifier_new ("_reply_message");
		_tmp564_ = _tmp563_;
		_tmp565_ = ccall;
		vala_ccode_function_add_assignment (_tmp562_, (ValaCCodeExpression*) _tmp564_, (ValaCCodeExpression*) _tmp565_);
		_vala_ccode_node_unref0 (_tmp564_);
		_tmp566_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp567_ = _tmp566_;
		_tmp568_ = vala_ccode_variable_declarator_new ("_reply", NULL, NULL);
		_tmp569_ = _tmp568_;
		vala_ccode_function_add_declaration (_tmp567_, "GVariant*", (ValaCCodeDeclarator*) _tmp569_, 0);
		_vala_ccode_node_unref0 (_tmp569_);
		_tmp570_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp571_ = _tmp570_;
		_tmp572_ = vala_ccode_variable_declarator_new ("_reply_builder", NULL, NULL);
		_tmp573_ = _tmp572_;
		vala_ccode_function_add_declaration (_tmp571_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp573_, 0);
		_vala_ccode_node_unref0 (_tmp573_);
		_tmp574_ = vala_ccode_identifier_new ("g_variant_builder_init");
		_tmp575_ = _tmp574_;
		_tmp576_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp575_);
		_tmp577_ = _tmp576_;
		_vala_ccode_node_unref0 (_tmp575_);
		builder_init = _tmp577_;
		_tmp578_ = builder_init;
		_tmp579_ = vala_ccode_identifier_new ("_reply_builder");
		_tmp580_ = _tmp579_;
		_tmp581_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp580_);
		_tmp582_ = _tmp581_;
		vala_ccode_function_call_add_argument (_tmp578_, (ValaCCodeExpression*) _tmp582_);
		_vala_ccode_node_unref0 (_tmp582_);
		_vala_ccode_node_unref0 (_tmp580_);
		_tmp583_ = builder_init;
		_tmp584_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
		_tmp585_ = _tmp584_;
		vala_ccode_function_call_add_argument (_tmp583_, (ValaCCodeExpression*) _tmp585_);
		_vala_ccode_node_unref0 (_tmp585_);
		_tmp586_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp587_ = _tmp586_;
		_tmp588_ = builder_init;
		vala_ccode_function_add_expression (_tmp587_, (ValaCCodeExpression*) _tmp588_);
		if (uses_fd) {
			ValaCCodeFunction* _tmp589_;
			ValaCCodeFunction* _tmp590_;
			ValaCCodeIdentifier* _tmp591_;
			ValaCCodeIdentifier* _tmp592_;
			ValaCCodeIdentifier* _tmp593_;
			ValaCCodeIdentifier* _tmp594_;
			ValaCCodeFunctionCall* _tmp595_;
			ValaCCodeFunctionCall* _tmp596_;
			_tmp589_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp590_ = _tmp589_;
			_tmp591_ = vala_ccode_identifier_new ("_fd_list");
			_tmp592_ = _tmp591_;
			_tmp593_ = vala_ccode_identifier_new ("g_unix_fd_list_new");
			_tmp594_ = _tmp593_;
			_tmp595_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp594_);
			_tmp596_ = _tmp595_;
			vala_ccode_function_add_assignment (_tmp590_, (ValaCCodeExpression*) _tmp592_, (ValaCCodeExpression*) _tmp596_);
			_vala_ccode_node_unref0 (_tmp596_);
			_vala_ccode_node_unref0 (_tmp594_);
			_vala_ccode_node_unref0 (_tmp592_);
		}
		{
			ValaList* _param_list = NULL;
			ValaList* _tmp597_;
			gint _param_size = 0;
			ValaList* _tmp598_;
			gint _tmp599_;
			gint _tmp600_;
			gint _param_index = 0;
			_tmp597_ = vala_callable_get_parameters ((ValaCallable*) m);
			_param_list = _tmp597_;
			_tmp598_ = _param_list;
			_tmp599_ = vala_collection_get_size ((ValaCollection*) _tmp598_);
			_tmp600_ = _tmp599_;
			_param_size = _tmp600_;
			_param_index = -1;
			while (TRUE) {
				gint _tmp601_;
				gint _tmp602_;
				ValaParameter* param = NULL;
				ValaList* _tmp603_;
				gpointer _tmp604_;
				ValaParameter* _tmp605_;
				ValaParameterDirection _tmp606_;
				ValaParameterDirection _tmp607_;
				gchar* param_name = NULL;
				ValaParameter* _tmp608_;
				const gchar* _tmp609_;
				const gchar* _tmp610_;
				gchar* _tmp611_;
				ValaDataType* owned_type = NULL;
				ValaParameter* _tmp612_;
				ValaDataType* _tmp613_;
				ValaDataType* _tmp614_;
				ValaDataType* _tmp615_;
				ValaDataType* _tmp616_;
				ValaCCodeFunction* _tmp617_;
				ValaCCodeFunction* _tmp618_;
				ValaDataType* _tmp619_;
				gchar* _tmp620_;
				gchar* _tmp621_;
				const gchar* _tmp622_;
				ValaParameter* _tmp623_;
				ValaDataType* _tmp624_;
				ValaDataType* _tmp625_;
				ValaCCodeExpression* _tmp626_;
				ValaCCodeExpression* _tmp627_;
				ValaCCodeVariableDeclarator* _tmp628_;
				ValaCCodeVariableDeclarator* _tmp629_;
				ValaArrayType* array_type = NULL;
				ValaParameter* _tmp630_;
				ValaDataType* _tmp631_;
				ValaDataType* _tmp632_;
				ValaArrayType* _tmp633_;
				ValaArrayType* _tmp634_;
				ValaParameter* _tmp652_;
				ValaDataType* _tmp653_;
				ValaDataType* _tmp654_;
				ValaCCodeIdentifier* _tmp655_;
				ValaCCodeIdentifier* _tmp656_;
				const gchar* _tmp657_;
				ValaCCodeIdentifier* _tmp658_;
				ValaCCodeIdentifier* _tmp659_;
				ValaParameter* _tmp660_;
				_param_index = _param_index + 1;
				_tmp601_ = _param_index;
				_tmp602_ = _param_size;
				if (!(_tmp601_ < _tmp602_)) {
					break;
				}
				_tmp603_ = _param_list;
				_tmp604_ = vala_list_get (_tmp603_, _param_index);
				param = (ValaParameter*) _tmp604_;
				_tmp605_ = param;
				_tmp606_ = vala_parameter_get_direction (_tmp605_);
				_tmp607_ = _tmp606_;
				if (_tmp607_ != VALA_PARAMETER_DIRECTION_OUT) {
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp608_ = param;
				_tmp609_ = vala_symbol_get_name ((ValaSymbol*) _tmp608_);
				_tmp610_ = _tmp609_;
				_tmp611_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp610_);
				param_name = _tmp611_;
				_tmp612_ = param;
				_tmp613_ = vala_variable_get_variable_type ((ValaVariable*) _tmp612_);
				_tmp614_ = _tmp613_;
				_tmp615_ = vala_data_type_copy (_tmp614_);
				owned_type = _tmp615_;
				_tmp616_ = owned_type;
				vala_data_type_set_value_owned (_tmp616_, TRUE);
				_tmp617_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp618_ = _tmp617_;
				_tmp619_ = owned_type;
				_tmp620_ = vala_get_ccode_name ((ValaCodeNode*) _tmp619_);
				_tmp621_ = _tmp620_;
				_tmp622_ = param_name;
				_tmp623_ = param;
				_tmp624_ = vala_variable_get_variable_type ((ValaVariable*) _tmp623_);
				_tmp625_ = _tmp624_;
				_tmp626_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp625_, TRUE, FALSE);
				_tmp627_ = _tmp626_;
				_tmp628_ = vala_ccode_variable_declarator_new_zero (_tmp622_, _tmp627_, NULL);
				_tmp629_ = _tmp628_;
				vala_ccode_function_add_declaration (_tmp618_, _tmp621_, (ValaCCodeDeclarator*) _tmp629_, 0);
				_vala_ccode_node_unref0 (_tmp629_);
				_vala_ccode_node_unref0 (_tmp627_);
				_g_free0 (_tmp621_);
				_tmp630_ = param;
				_tmp631_ = vala_variable_get_variable_type ((ValaVariable*) _tmp630_);
				_tmp632_ = _tmp631_;
				_tmp633_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp632_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp632_) : NULL);
				array_type = _tmp633_;
				_tmp634_ = array_type;
				if (_tmp634_ != NULL) {
					gchar* length_ctype = NULL;
					ValaArrayType* _tmp635_;
					gchar* _tmp636_;
					_tmp635_ = array_type;
					_tmp636_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp635_);
					length_ctype = _tmp636_;
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp637_ = FALSE;
							_tmp637_ = TRUE;
							while (TRUE) {
								ValaArrayType* _tmp639_;
								gint _tmp640_;
								gint _tmp641_;
								gchar* length_cname = NULL;
								ValaParameter* _tmp642_;
								gchar* _tmp643_;
								ValaCCodeFunction* _tmp644_;
								ValaCCodeFunction* _tmp645_;
								const gchar* _tmp646_;
								const gchar* _tmp647_;
								ValaCCodeConstant* _tmp648_;
								ValaCCodeConstant* _tmp649_;
								ValaCCodeVariableDeclarator* _tmp650_;
								ValaCCodeVariableDeclarator* _tmp651_;
								if (!_tmp637_) {
									gint _tmp638_;
									_tmp638_ = dim;
									dim = _tmp638_ + 1;
								}
								_tmp637_ = FALSE;
								_tmp639_ = array_type;
								_tmp640_ = vala_array_type_get_rank (_tmp639_);
								_tmp641_ = _tmp640_;
								if (!(dim <= _tmp641_)) {
									break;
								}
								_tmp642_ = param;
								_tmp643_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp642_, dim);
								length_cname = _tmp643_;
								_tmp644_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
								_tmp645_ = _tmp644_;
								_tmp646_ = length_ctype;
								_tmp647_ = length_cname;
								_tmp648_ = vala_ccode_constant_new ("0");
								_tmp649_ = _tmp648_;
								_tmp650_ = vala_ccode_variable_declarator_new_zero (_tmp647_, (ValaCCodeExpression*) _tmp649_, NULL);
								_tmp651_ = _tmp650_;
								vala_ccode_function_add_declaration (_tmp645_, _tmp646_, (ValaCCodeDeclarator*) _tmp651_, 0);
								_vala_ccode_node_unref0 (_tmp651_);
								_vala_ccode_node_unref0 (_tmp649_);
								_g_free0 (length_cname);
							}
						}
					}
					_g_free0 (length_ctype);
				}
				_tmp652_ = param;
				_tmp653_ = vala_variable_get_variable_type ((ValaVariable*) _tmp652_);
				_tmp654_ = _tmp653_;
				_tmp655_ = vala_ccode_identifier_new ("_reply_builder");
				_tmp656_ = _tmp655_;
				_tmp657_ = param_name;
				_tmp658_ = vala_ccode_identifier_new (_tmp657_);
				_tmp659_ = _tmp658_;
				_tmp660_ = param;
				vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp654_, (ValaCCodeExpression*) _tmp656_, (ValaCCodeExpression*) _tmp659_, (ValaSymbol*) _tmp660_);
				_vala_ccode_node_unref0 (_tmp659_);
				_vala_ccode_node_unref0 (_tmp656_);
				_vala_code_node_unref0 (array_type);
				_vala_code_node_unref0 (owned_type);
				_g_free0 (param_name);
				_vala_code_node_unref0 (param);
			}
		}
		_tmp661_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp662_ = _tmp661_;
		if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp662_, VALA_TYPE_VOID_TYPE)) {
			ValaDataType* _tmp663_;
			ValaDataType* _tmp664_;
			_tmp663_ = vala_callable_get_return_type ((ValaCallable*) m);
			_tmp664_ = _tmp663_;
			if (vala_data_type_is_real_non_null_struct_type (_tmp664_)) {
				ValaCCodeFunction* _tmp665_;
				ValaCCodeFunction* _tmp666_;
				ValaDataType* _tmp667_;
				ValaDataType* _tmp668_;
				gchar* _tmp669_;
				gchar* _tmp670_;
				ValaDataType* _tmp671_;
				ValaDataType* _tmp672_;
				ValaCCodeExpression* _tmp673_;
				ValaCCodeExpression* _tmp674_;
				ValaCCodeVariableDeclarator* _tmp675_;
				ValaCCodeVariableDeclarator* _tmp676_;
				ValaDataType* _tmp677_;
				ValaDataType* _tmp678_;
				ValaCCodeIdentifier* _tmp679_;
				ValaCCodeIdentifier* _tmp680_;
				ValaCCodeIdentifier* _tmp681_;
				ValaCCodeIdentifier* _tmp682_;
				ValaDataType* _tmp683_;
				ValaDataType* _tmp684_;
				_tmp665_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp666_ = _tmp665_;
				_tmp667_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp668_ = _tmp667_;
				_tmp669_ = vala_get_ccode_name ((ValaCodeNode*) _tmp668_);
				_tmp670_ = _tmp669_;
				_tmp671_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp672_ = _tmp671_;
				_tmp673_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp672_, TRUE, FALSE);
				_tmp674_ = _tmp673_;
				_tmp675_ = vala_ccode_variable_declarator_new_zero ("result", _tmp674_, NULL);
				_tmp676_ = _tmp675_;
				vala_ccode_function_add_declaration (_tmp666_, _tmp670_, (ValaCCodeDeclarator*) _tmp676_, 0);
				_vala_ccode_node_unref0 (_tmp676_);
				_vala_ccode_node_unref0 (_tmp674_);
				_g_free0 (_tmp670_);
				_tmp677_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp678_ = _tmp677_;
				_tmp679_ = vala_ccode_identifier_new ("_reply_builder");
				_tmp680_ = _tmp679_;
				_tmp681_ = vala_ccode_identifier_new ("result");
				_tmp682_ = _tmp681_;
				vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp678_, (ValaCCodeExpression*) _tmp680_, (ValaCCodeExpression*) _tmp682_, (ValaSymbol*) m);
				_vala_ccode_node_unref0 (_tmp682_);
				_vala_ccode_node_unref0 (_tmp680_);
				_tmp683_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp684_ = _tmp683_;
				if (vala_ccode_base_module_requires_destroy (_tmp684_)) {
					ValaLocalVariable* local = NULL;
					ValaDataType* _tmp685_;
					ValaDataType* _tmp686_;
					ValaLocalVariable* _tmp687_;
					ValaCCodeFunction* _tmp688_;
					ValaCCodeFunction* _tmp689_;
					ValaLocalVariable* _tmp690_;
					ValaCCodeExpression* _tmp691_;
					ValaCCodeExpression* _tmp692_;
					_tmp685_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp686_ = _tmp685_;
					_tmp687_ = vala_local_variable_new (_tmp686_, ".result", NULL, NULL);
					local = _tmp687_;
					_tmp688_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp689_ = _tmp688_;
					_tmp690_ = local;
					_tmp691_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp690_);
					_tmp692_ = _tmp691_;
					vala_ccode_function_add_expression (_tmp689_, _tmp692_);
					_vala_ccode_node_unref0 (_tmp692_);
					_vala_code_node_unref0 (local);
				}
			} else {
				ValaCCodeFunction* _tmp693_;
				ValaCCodeFunction* _tmp694_;
				ValaDataType* _tmp695_;
				ValaDataType* _tmp696_;
				gchar* _tmp697_;
				gchar* _tmp698_;
				ValaCCodeVariableDeclarator* _tmp699_;
				ValaCCodeVariableDeclarator* _tmp700_;
				ValaArrayType* array_type = NULL;
				ValaDataType* _tmp701_;
				ValaDataType* _tmp702_;
				ValaArrayType* _tmp703_;
				ValaArrayType* _tmp704_;
				ValaDataType* _tmp721_;
				ValaDataType* _tmp722_;
				ValaCCodeIdentifier* _tmp723_;
				ValaCCodeIdentifier* _tmp724_;
				ValaCCodeIdentifier* _tmp725_;
				ValaCCodeIdentifier* _tmp726_;
				ValaDataType* _tmp727_;
				ValaDataType* _tmp728_;
				_tmp693_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp694_ = _tmp693_;
				_tmp695_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp696_ = _tmp695_;
				_tmp697_ = vala_get_ccode_name ((ValaCodeNode*) _tmp696_);
				_tmp698_ = _tmp697_;
				_tmp699_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
				_tmp700_ = _tmp699_;
				vala_ccode_function_add_declaration (_tmp694_, _tmp698_, (ValaCCodeDeclarator*) _tmp700_, 0);
				_vala_ccode_node_unref0 (_tmp700_);
				_g_free0 (_tmp698_);
				_tmp701_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp702_ = _tmp701_;
				_tmp703_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp702_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp702_) : NULL);
				array_type = _tmp703_;
				_tmp704_ = array_type;
				if (_tmp704_ != NULL) {
					gchar* length_ctype = NULL;
					ValaArrayType* _tmp705_;
					gchar* _tmp706_;
					_tmp705_ = array_type;
					_tmp706_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp705_);
					length_ctype = _tmp706_;
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp707_ = FALSE;
							_tmp707_ = TRUE;
							while (TRUE) {
								ValaArrayType* _tmp709_;
								gint _tmp710_;
								gint _tmp711_;
								gchar* length_cname = NULL;
								gchar* _tmp712_;
								ValaCCodeFunction* _tmp713_;
								ValaCCodeFunction* _tmp714_;
								const gchar* _tmp715_;
								const gchar* _tmp716_;
								ValaCCodeConstant* _tmp717_;
								ValaCCodeConstant* _tmp718_;
								ValaCCodeVariableDeclarator* _tmp719_;
								ValaCCodeVariableDeclarator* _tmp720_;
								if (!_tmp707_) {
									gint _tmp708_;
									_tmp708_ = dim;
									dim = _tmp708_ + 1;
								}
								_tmp707_ = FALSE;
								_tmp709_ = array_type;
								_tmp710_ = vala_array_type_get_rank (_tmp709_);
								_tmp711_ = _tmp710_;
								if (!(dim <= _tmp711_)) {
									break;
								}
								_tmp712_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
								length_cname = _tmp712_;
								_tmp713_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
								_tmp714_ = _tmp713_;
								_tmp715_ = length_ctype;
								_tmp716_ = length_cname;
								_tmp717_ = vala_ccode_constant_new ("0");
								_tmp718_ = _tmp717_;
								_tmp719_ = vala_ccode_variable_declarator_new_zero (_tmp716_, (ValaCCodeExpression*) _tmp718_, NULL);
								_tmp720_ = _tmp719_;
								vala_ccode_function_add_declaration (_tmp714_, _tmp715_, (ValaCCodeDeclarator*) _tmp720_, 0);
								_vala_ccode_node_unref0 (_tmp720_);
								_vala_ccode_node_unref0 (_tmp718_);
								_g_free0 (length_cname);
							}
						}
					}
					_g_free0 (length_ctype);
				}
				_tmp721_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp722_ = _tmp721_;
				_tmp723_ = vala_ccode_identifier_new ("_reply_builder");
				_tmp724_ = _tmp723_;
				_tmp725_ = vala_ccode_identifier_new ("result");
				_tmp726_ = _tmp725_;
				vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp722_, (ValaCCodeExpression*) _tmp724_, (ValaCCodeExpression*) _tmp726_, (ValaSymbol*) m);
				_vala_ccode_node_unref0 (_tmp726_);
				_vala_ccode_node_unref0 (_tmp724_);
				_tmp727_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp728_ = _tmp727_;
				if (vala_ccode_base_module_requires_destroy (_tmp728_)) {
					ValaLocalVariable* local = NULL;
					ValaDataType* _tmp729_;
					ValaDataType* _tmp730_;
					ValaLocalVariable* _tmp731_;
					ValaCCodeFunction* _tmp732_;
					ValaCCodeFunction* _tmp733_;
					ValaLocalVariable* _tmp734_;
					ValaCCodeExpression* _tmp735_;
					ValaCCodeExpression* _tmp736_;
					_tmp729_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp730_ = _tmp729_;
					_tmp731_ = vala_local_variable_new (_tmp730_, ".result", NULL, NULL);
					local = _tmp731_;
					_tmp732_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp733_ = _tmp732_;
					_tmp734_ = local;
					_tmp735_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp734_);
					_tmp736_ = _tmp735_;
					vala_ccode_function_add_expression (_tmp733_, _tmp736_);
					_vala_ccode_node_unref0 (_tmp736_);
					_vala_code_node_unref0 (local);
				}
				_vala_code_node_unref0 (array_type);
			}
		}
		_tmp737_ = vala_ccode_identifier_new ("g_variant_builder_end");
		_tmp738_ = _tmp737_;
		_tmp739_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp738_);
		_tmp740_ = _tmp739_;
		_vala_ccode_node_unref0 (_tmp738_);
		builder_end = _tmp740_;
		_tmp741_ = builder_end;
		_tmp742_ = vala_ccode_identifier_new ("_reply_builder");
		_tmp743_ = _tmp742_;
		_tmp744_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp743_);
		_tmp745_ = _tmp744_;
		vala_ccode_function_call_add_argument (_tmp741_, (ValaCCodeExpression*) _tmp745_);
		_vala_ccode_node_unref0 (_tmp745_);
		_vala_ccode_node_unref0 (_tmp743_);
		_tmp746_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp747_ = _tmp746_;
		_tmp748_ = vala_ccode_identifier_new ("_reply");
		_tmp749_ = _tmp748_;
		_tmp750_ = builder_end;
		vala_ccode_function_add_assignment (_tmp747_, (ValaCCodeExpression*) _tmp749_, (ValaCCodeExpression*) _tmp750_);
		_vala_ccode_node_unref0 (_tmp749_);
		_tmp751_ = vala_ccode_identifier_new ("g_dbus_message_set_body");
		_tmp752_ = _tmp751_;
		_tmp753_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp752_);
		_tmp754_ = _tmp753_;
		_vala_ccode_node_unref0 (_tmp752_);
		set_body = _tmp754_;
		_tmp755_ = set_body;
		_tmp756_ = vala_ccode_identifier_new ("_reply_message");
		_tmp757_ = _tmp756_;
		vala_ccode_function_call_add_argument (_tmp755_, (ValaCCodeExpression*) _tmp757_);
		_vala_ccode_node_unref0 (_tmp757_);
		_tmp758_ = set_body;
		_tmp759_ = vala_ccode_identifier_new ("_reply");
		_tmp760_ = _tmp759_;
		vala_ccode_function_call_add_argument (_tmp758_, (ValaCCodeExpression*) _tmp760_);
		_vala_ccode_node_unref0 (_tmp760_);
		_tmp761_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp762_ = _tmp761_;
		_tmp763_ = set_body;
		vala_ccode_function_add_expression (_tmp762_, (ValaCCodeExpression*) _tmp763_);
		if (uses_fd) {
			ValaCCodeIdentifier* _tmp764_;
			ValaCCodeIdentifier* _tmp765_;
			ValaCCodeFunctionCall* _tmp766_;
			ValaCCodeFunctionCall* _tmp767_;
			ValaCCodeIdentifier* _tmp768_;
			ValaCCodeIdentifier* _tmp769_;
			ValaCCodeFunctionCall* _tmp770_;
			ValaCCodeIdentifier* _tmp771_;
			ValaCCodeIdentifier* _tmp772_;
			ValaCCodeFunction* _tmp773_;
			ValaCCodeFunction* _tmp774_;
			ValaCCodeFunctionCall* _tmp775_;
			ValaCCodeIdentifier* _tmp776_;
			ValaCCodeIdentifier* _tmp777_;
			ValaCCodeFunctionCall* _tmp778_;
			ValaCCodeFunctionCall* _tmp779_;
			ValaCCodeIdentifier* _tmp780_;
			ValaCCodeIdentifier* _tmp781_;
			ValaCCodeFunction* _tmp782_;
			ValaCCodeFunction* _tmp783_;
			ValaCCodeFunctionCall* _tmp784_;
			_tmp764_ = vala_ccode_identifier_new ("g_dbus_message_set_unix_fd_list");
			_tmp765_ = _tmp764_;
			_tmp766_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp765_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp766_;
			_vala_ccode_node_unref0 (_tmp765_);
			_tmp767_ = ccall;
			_tmp768_ = vala_ccode_identifier_new ("_reply_message");
			_tmp769_ = _tmp768_;
			vala_ccode_function_call_add_argument (_tmp767_, (ValaCCodeExpression*) _tmp769_);
			_vala_ccode_node_unref0 (_tmp769_);
			_tmp770_ = ccall;
			_tmp771_ = vala_ccode_identifier_new ("_fd_list");
			_tmp772_ = _tmp771_;
			vala_ccode_function_call_add_argument (_tmp770_, (ValaCCodeExpression*) _tmp772_);
			_vala_ccode_node_unref0 (_tmp772_);
			_tmp773_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp774_ = _tmp773_;
			_tmp775_ = ccall;
			vala_ccode_function_add_expression (_tmp774_, (ValaCCodeExpression*) _tmp775_);
			_tmp776_ = vala_ccode_identifier_new ("g_object_unref");
			_tmp777_ = _tmp776_;
			_tmp778_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp777_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp778_;
			_vala_ccode_node_unref0 (_tmp777_);
			_tmp779_ = ccall;
			_tmp780_ = vala_ccode_identifier_new ("_fd_list");
			_tmp781_ = _tmp780_;
			vala_ccode_function_call_add_argument (_tmp779_, (ValaCCodeExpression*) _tmp781_);
			_vala_ccode_node_unref0 (_tmp781_);
			_tmp782_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp783_ = _tmp782_;
			_tmp784_ = ccall;
			vala_ccode_function_add_expression (_tmp783_, (ValaCCodeExpression*) _tmp784_);
		}
		_vala_ccode_node_unref0 (set_body);
		_vala_ccode_node_unref0 (builder_end);
		_vala_ccode_node_unref0 (builder_init);
		_vala_ccode_node_unref0 (message_expr);
	} else {
		ValaCCodeFunction* _tmp785_;
		ValaCCodeFunction* _tmp786_;
		ValaCCodeFunctionCall* _tmp787_;
		_tmp785_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp786_ = _tmp785_;
		_tmp787_ = ccall;
		vala_ccode_function_add_expression (_tmp786_, (ValaCCodeExpression*) _tmp787_);
	}
	if (!no_reply) {
		gboolean _tmp789_ = FALSE;
		gboolean _tmp790_;
		gboolean _tmp791_;
		_tmp790_ = vala_method_get_coroutine (m);
		_tmp791_ = _tmp790_;
		if (!_tmp791_) {
			_tmp789_ = TRUE;
		} else {
			_tmp789_ = ready;
		}
		_tmp788_ = _tmp789_;
	} else {
		_tmp788_ = FALSE;
	}
	if (_tmp788_) {
		ValaCCodeFunctionCall* return_value = NULL;
		ValaCCodeIdentifier* _tmp792_;
		ValaCCodeIdentifier* _tmp793_;
		ValaCCodeFunctionCall* _tmp794_;
		ValaCCodeFunctionCall* _tmp795_;
		ValaCCodeFunctionCall* _tmp796_;
		ValaCCodeFunctionCall* _tmp797_;
		ValaCCodeFunctionCall* _tmp798_;
		ValaCCodeIdentifier* _tmp799_;
		ValaCCodeIdentifier* _tmp800_;
		ValaCCodeFunctionCall* _tmp801_;
		ValaCCodeConstant* _tmp802_;
		ValaCCodeConstant* _tmp803_;
		ValaCCodeFunctionCall* _tmp804_;
		ValaCCodeConstant* _tmp805_;
		ValaCCodeConstant* _tmp806_;
		ValaCCodeFunctionCall* _tmp807_;
		ValaCCodeConstant* _tmp808_;
		ValaCCodeConstant* _tmp809_;
		ValaCCodeFunction* _tmp810_;
		ValaCCodeFunction* _tmp811_;
		ValaCCodeFunctionCall* _tmp812_;
		ValaCCodeFunctionCall* unref_call = NULL;
		ValaCCodeIdentifier* _tmp813_;
		ValaCCodeIdentifier* _tmp814_;
		ValaCCodeFunctionCall* _tmp815_;
		ValaCCodeFunctionCall* _tmp816_;
		ValaCCodeFunctionCall* _tmp817_;
		ValaCCodeIdentifier* _tmp818_;
		ValaCCodeIdentifier* _tmp819_;
		ValaCCodeFunction* _tmp820_;
		ValaCCodeFunction* _tmp821_;
		ValaCCodeFunctionCall* _tmp822_;
		ValaCCodeIdentifier* _tmp823_;
		ValaCCodeIdentifier* _tmp824_;
		ValaCCodeFunctionCall* _tmp825_;
		ValaCCodeFunctionCall* _tmp826_;
		ValaCCodeIdentifier* _tmp827_;
		ValaCCodeIdentifier* _tmp828_;
		ValaCCodeFunction* _tmp829_;
		ValaCCodeFunction* _tmp830_;
		ValaCCodeFunctionCall* _tmp831_;
		_tmp792_ = vala_ccode_identifier_new ("g_dbus_connection_send_message");
		_tmp793_ = _tmp792_;
		_tmp794_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp793_);
		_tmp795_ = _tmp794_;
		_vala_ccode_node_unref0 (_tmp793_);
		return_value = _tmp795_;
		_tmp796_ = return_value;
		_tmp797_ = connection;
		vala_ccode_function_call_add_argument (_tmp796_, (ValaCCodeExpression*) _tmp797_);
		_tmp798_ = return_value;
		_tmp799_ = vala_ccode_identifier_new ("_reply_message");
		_tmp800_ = _tmp799_;
		vala_ccode_function_call_add_argument (_tmp798_, (ValaCCodeExpression*) _tmp800_);
		_vala_ccode_node_unref0 (_tmp800_);
		_tmp801_ = return_value;
		_tmp802_ = vala_ccode_constant_new ("G_DBUS_SEND_MESSAGE_FLAGS_NONE");
		_tmp803_ = _tmp802_;
		vala_ccode_function_call_add_argument (_tmp801_, (ValaCCodeExpression*) _tmp803_);
		_vala_ccode_node_unref0 (_tmp803_);
		_tmp804_ = return_value;
		_tmp805_ = vala_ccode_constant_new ("NULL");
		_tmp806_ = _tmp805_;
		vala_ccode_function_call_add_argument (_tmp804_, (ValaCCodeExpression*) _tmp806_);
		_vala_ccode_node_unref0 (_tmp806_);
		_tmp807_ = return_value;
		_tmp808_ = vala_ccode_constant_new ("NULL");
		_tmp809_ = _tmp808_;
		vala_ccode_function_call_add_argument (_tmp807_, (ValaCCodeExpression*) _tmp809_);
		_vala_ccode_node_unref0 (_tmp809_);
		_tmp810_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp811_ = _tmp810_;
		_tmp812_ = return_value;
		vala_ccode_function_add_expression (_tmp811_, (ValaCCodeExpression*) _tmp812_);
		_tmp813_ = vala_ccode_identifier_new ("g_object_unref");
		_tmp814_ = _tmp813_;
		_tmp815_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp814_);
		_tmp816_ = _tmp815_;
		_vala_ccode_node_unref0 (_tmp814_);
		unref_call = _tmp816_;
		_tmp817_ = unref_call;
		_tmp818_ = vala_ccode_identifier_new ("invocation");
		_tmp819_ = _tmp818_;
		vala_ccode_function_call_add_argument (_tmp817_, (ValaCCodeExpression*) _tmp819_);
		_vala_ccode_node_unref0 (_tmp819_);
		_tmp820_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp821_ = _tmp820_;
		_tmp822_ = unref_call;
		vala_ccode_function_add_expression (_tmp821_, (ValaCCodeExpression*) _tmp822_);
		_tmp823_ = vala_ccode_identifier_new ("g_object_unref");
		_tmp824_ = _tmp823_;
		_tmp825_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp824_);
		_vala_ccode_node_unref0 (unref_call);
		unref_call = _tmp825_;
		_vala_ccode_node_unref0 (_tmp824_);
		_tmp826_ = unref_call;
		_tmp827_ = vala_ccode_identifier_new ("_reply_message");
		_tmp828_ = _tmp827_;
		vala_ccode_function_call_add_argument (_tmp826_, (ValaCCodeExpression*) _tmp828_);
		_vala_ccode_node_unref0 (_tmp828_);
		_tmp829_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp830_ = _tmp829_;
		_tmp831_ = unref_call;
		vala_ccode_function_add_expression (_tmp830_, (ValaCCodeExpression*) _tmp831_);
		_vala_ccode_node_unref0 (unref_call);
		_vala_ccode_node_unref0 (return_value);
	}
	if (need_goto_label) {
		ValaCCodeFunction* _tmp832_;
		ValaCCodeFunction* _tmp833_;
		_tmp832_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp833_ = _tmp832_;
		vala_ccode_function_add_label (_tmp833_, "_error");
	}
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp834_;
		gint _param_size = 0;
		ValaList* _tmp835_;
		gint _tmp836_;
		gint _tmp837_;
		gint _param_index = 0;
		_tmp834_ = vala_callable_get_parameters ((ValaCallable*) m);
		_param_list = _tmp834_;
		_tmp835_ = _param_list;
		_tmp836_ = vala_collection_get_size ((ValaCollection*) _tmp835_);
		_tmp837_ = _tmp836_;
		_param_size = _tmp837_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp838_;
			gint _tmp839_;
			ValaParameter* param = NULL;
			ValaList* _tmp840_;
			gpointer _tmp841_;
			gboolean _tmp842_ = FALSE;
			gboolean _tmp843_ = FALSE;
			ValaParameter* _tmp844_;
			ValaParameterDirection _tmp845_;
			ValaParameterDirection _tmp846_;
			_param_index = _param_index + 1;
			_tmp838_ = _param_index;
			_tmp839_ = _param_size;
			if (!(_tmp838_ < _tmp839_)) {
				break;
			}
			_tmp840_ = _param_list;
			_tmp841_ = vala_list_get (_tmp840_, _param_index);
			param = (ValaParameter*) _tmp841_;
			_tmp844_ = param;
			_tmp845_ = vala_parameter_get_direction (_tmp844_);
			_tmp846_ = _tmp845_;
			if (_tmp846_ == VALA_PARAMETER_DIRECTION_IN) {
				gboolean _tmp847_ = FALSE;
				ValaCCodeIdentifier* _tmp848_;
				_tmp848_ = ready_data_expr;
				if (_tmp848_ == NULL) {
					_tmp847_ = TRUE;
				} else {
					_tmp847_ = ready;
				}
				_tmp843_ = _tmp847_;
			} else {
				_tmp843_ = FALSE;
			}
			if (_tmp843_) {
				_tmp842_ = TRUE;
			} else {
				gboolean _tmp849_ = FALSE;
				gboolean _tmp850_ = FALSE;
				ValaParameter* _tmp851_;
				ValaParameterDirection _tmp852_;
				ValaParameterDirection _tmp853_;
				_tmp851_ = param;
				_tmp852_ = vala_parameter_get_direction (_tmp851_);
				_tmp853_ = _tmp852_;
				if (_tmp853_ == VALA_PARAMETER_DIRECTION_OUT) {
					_tmp850_ = !no_reply;
				} else {
					_tmp850_ = FALSE;
				}
				if (_tmp850_) {
					gboolean _tmp854_ = FALSE;
					gboolean _tmp855_;
					gboolean _tmp856_;
					_tmp855_ = vala_method_get_coroutine (m);
					_tmp856_ = _tmp855_;
					if (!_tmp856_) {
						_tmp854_ = TRUE;
					} else {
						_tmp854_ = ready;
					}
					_tmp849_ = _tmp854_;
				} else {
					_tmp849_ = FALSE;
				}
				_tmp842_ = _tmp849_;
			}
			if (_tmp842_) {
				gboolean _tmp857_ = FALSE;
				ValaParameter* _tmp858_;
				ValaDataType* _tmp859_;
				ValaDataType* _tmp860_;
				gboolean _tmp868_ = FALSE;
				ValaParameter* _tmp869_;
				ValaDataType* _tmp870_;
				ValaDataType* _tmp871_;
				ValaDataType* owned_type = NULL;
				ValaParameter* _tmp879_;
				ValaDataType* _tmp880_;
				ValaDataType* _tmp881_;
				ValaDataType* _tmp882_;
				ValaDataType* _tmp883_;
				ValaDataType* _tmp884_;
				_tmp858_ = param;
				_tmp859_ = vala_variable_get_variable_type ((ValaVariable*) _tmp858_);
				_tmp860_ = _tmp859_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp860_, VALA_TYPE_OBJECT_TYPE)) {
					ValaParameter* _tmp861_;
					ValaDataType* _tmp862_;
					ValaDataType* _tmp863_;
					ValaTypeSymbol* _tmp864_;
					ValaTypeSymbol* _tmp865_;
					gchar* _tmp866_;
					gchar* _tmp867_;
					_tmp861_ = param;
					_tmp862_ = vala_variable_get_variable_type ((ValaVariable*) _tmp861_);
					_tmp863_ = _tmp862_;
					_tmp864_ = vala_data_type_get_type_symbol (_tmp863_);
					_tmp865_ = _tmp864_;
					_tmp866_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp865_);
					_tmp867_ = _tmp866_;
					_tmp857_ = g_strcmp0 (_tmp867_, "GLib.Cancellable") == 0;
					_g_free0 (_tmp867_);
				} else {
					_tmp857_ = FALSE;
				}
				if (_tmp857_) {
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp869_ = param;
				_tmp870_ = vala_variable_get_variable_type ((ValaVariable*) _tmp869_);
				_tmp871_ = _tmp870_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp871_, VALA_TYPE_OBJECT_TYPE)) {
					ValaParameter* _tmp872_;
					ValaDataType* _tmp873_;
					ValaDataType* _tmp874_;
					ValaTypeSymbol* _tmp875_;
					ValaTypeSymbol* _tmp876_;
					gchar* _tmp877_;
					gchar* _tmp878_;
					_tmp872_ = param;
					_tmp873_ = vala_variable_get_variable_type ((ValaVariable*) _tmp872_);
					_tmp874_ = _tmp873_;
					_tmp875_ = vala_data_type_get_type_symbol (_tmp874_);
					_tmp876_ = _tmp875_;
					_tmp877_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp876_);
					_tmp878_ = _tmp877_;
					_tmp868_ = g_strcmp0 (_tmp878_, "GLib.BusName") == 0;
					_g_free0 (_tmp878_);
				} else {
					_tmp868_ = FALSE;
				}
				if (_tmp868_) {
					_vala_code_node_unref0 (param);
					continue;
				}
				_tmp879_ = param;
				_tmp880_ = vala_variable_get_variable_type ((ValaVariable*) _tmp879_);
				_tmp881_ = _tmp880_;
				_tmp882_ = vala_data_type_copy (_tmp881_);
				owned_type = _tmp882_;
				_tmp883_ = owned_type;
				vala_data_type_set_value_owned (_tmp883_, TRUE);
				_tmp884_ = owned_type;
				if (vala_ccode_base_module_requires_destroy (_tmp884_)) {
					gboolean _tmp885_ = FALSE;
					ValaCCodeIdentifier* _tmp886_;
					_tmp886_ = ready_data_expr;
					if (_tmp886_ != NULL) {
						ValaParameter* _tmp887_;
						ValaParameterDirection _tmp888_;
						ValaParameterDirection _tmp889_;
						_tmp887_ = param;
						_tmp888_ = vala_parameter_get_direction (_tmp887_);
						_tmp889_ = _tmp888_;
						_tmp885_ = _tmp889_ == VALA_PARAMETER_DIRECTION_IN;
					} else {
						_tmp885_ = FALSE;
					}
					if (_tmp885_) {
						ValaGLibValue* target = NULL;
						ValaDataType* _tmp890_;
						ValaCCodeIdentifier* _tmp891_;
						ValaParameter* _tmp892_;
						const gchar* _tmp893_;
						const gchar* _tmp894_;
						ValaCCodeMemberAccess* _tmp895_;
						ValaCCodeMemberAccess* _tmp896_;
						ValaGLibValue* _tmp897_;
						ValaGLibValue* _tmp898_;
						ValaArrayType* array_type = NULL;
						ValaDataType* _tmp899_;
						ValaArrayType* _tmp900_;
						ValaArrayType* _tmp901_;
						ValaCCodeFunction* _tmp914_;
						ValaCCodeFunction* _tmp915_;
						ValaGLibValue* _tmp916_;
						ValaCCodeExpression* _tmp917_;
						ValaCCodeExpression* _tmp918_;
						_tmp890_ = owned_type;
						_tmp891_ = ready_data_expr;
						_tmp892_ = param;
						_tmp893_ = vala_symbol_get_name ((ValaSymbol*) _tmp892_);
						_tmp894_ = _tmp893_;
						_tmp895_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp891_, _tmp894_);
						_tmp896_ = _tmp895_;
						_tmp897_ = vala_glib_value_new (_tmp890_, (ValaCCodeExpression*) _tmp896_, TRUE);
						_tmp898_ = _tmp897_;
						_vala_ccode_node_unref0 (_tmp896_);
						target = _tmp898_;
						_tmp899_ = owned_type;
						_tmp900_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp899_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp899_) : NULL);
						array_type = _tmp900_;
						_tmp901_ = array_type;
						if (_tmp901_ != NULL) {
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp902_ = FALSE;
									_tmp902_ = TRUE;
									while (TRUE) {
										ValaArrayType* _tmp904_;
										gint _tmp905_;
										gint _tmp906_;
										gchar* length_cname = NULL;
										ValaParameter* _tmp907_;
										gchar* _tmp908_;
										ValaGLibValue* _tmp909_;
										ValaCCodeIdentifier* _tmp910_;
										const gchar* _tmp911_;
										ValaCCodeMemberAccess* _tmp912_;
										ValaCCodeMemberAccess* _tmp913_;
										if (!_tmp902_) {
											gint _tmp903_;
											_tmp903_ = dim;
											dim = _tmp903_ + 1;
										}
										_tmp902_ = FALSE;
										_tmp904_ = array_type;
										_tmp905_ = vala_array_type_get_rank (_tmp904_);
										_tmp906_ = _tmp905_;
										if (!(dim <= _tmp906_)) {
											break;
										}
										_tmp907_ = param;
										_tmp908_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp907_, dim);
										length_cname = _tmp908_;
										_tmp909_ = target;
										_tmp910_ = ready_data_expr;
										_tmp911_ = length_cname;
										_tmp912_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp910_, _tmp911_);
										_tmp913_ = _tmp912_;
										vala_glib_value_append_array_length_cvalue (_tmp909_, (ValaCCodeExpression*) _tmp913_);
										_vala_ccode_node_unref0 (_tmp913_);
										_g_free0 (length_cname);
									}
								}
							}
						}
						_tmp914_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp915_ = _tmp914_;
						_tmp916_ = target;
						_tmp917_ = vala_ccode_base_module_destroy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp916_, FALSE);
						_tmp918_ = _tmp917_;
						vala_ccode_function_add_expression (_tmp915_, _tmp918_);
						_vala_ccode_node_unref0 (_tmp918_);
						_vala_code_node_unref0 (array_type);
						_vala_target_value_unref0 (target);
					} else {
						ValaLocalVariable* local = NULL;
						ValaDataType* _tmp919_;
						ValaParameter* _tmp920_;
						const gchar* _tmp921_;
						const gchar* _tmp922_;
						gchar* _tmp923_;
						gchar* _tmp924_;
						ValaLocalVariable* _tmp925_;
						ValaLocalVariable* _tmp926_;
						ValaCCodeFunction* _tmp927_;
						ValaCCodeFunction* _tmp928_;
						ValaLocalVariable* _tmp929_;
						ValaCCodeExpression* _tmp930_;
						ValaCCodeExpression* _tmp931_;
						_tmp919_ = owned_type;
						_tmp920_ = param;
						_tmp921_ = vala_symbol_get_name ((ValaSymbol*) _tmp920_);
						_tmp922_ = _tmp921_;
						_tmp923_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp922_);
						_tmp924_ = _tmp923_;
						_tmp925_ = vala_local_variable_new (_tmp919_, _tmp924_, NULL, NULL);
						_tmp926_ = _tmp925_;
						_g_free0 (_tmp924_);
						local = _tmp926_;
						_tmp927_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp928_ = _tmp927_;
						_tmp929_ = local;
						_tmp930_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp929_);
						_tmp931_ = _tmp930_;
						vala_ccode_function_add_expression (_tmp928_, _tmp931_);
						_vala_ccode_node_unref0 (_tmp931_);
						_vala_code_node_unref0 (local);
					}
				}
				_vala_code_node_unref0 (owned_type);
			}
			_vala_code_node_unref0 (param);
		}
	}
	if (ready) {
		ValaCCodeFunctionCall* freecall = NULL;
		ValaCCodeIdentifier* _tmp932_;
		ValaCCodeIdentifier* _tmp933_;
		ValaCCodeFunctionCall* _tmp934_;
		ValaCCodeFunctionCall* _tmp935_;
		ValaCCodeFunctionCall* _tmp936_;
		const gchar* _tmp937_;
		ValaCCodeIdentifier* _tmp938_;
		ValaCCodeIdentifier* _tmp939_;
		ValaCCodeFunctionCall* _tmp940_;
		ValaCCodeIdentifier* _tmp941_;
		ValaCCodeFunction* _tmp942_;
		ValaCCodeFunction* _tmp943_;
		ValaCCodeFunctionCall* _tmp944_;
		_tmp932_ = vala_ccode_identifier_new ("g_slice_free");
		_tmp933_ = _tmp932_;
		_tmp934_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp933_);
		_tmp935_ = _tmp934_;
		_vala_ccode_node_unref0 (_tmp933_);
		freecall = _tmp935_;
		_tmp936_ = freecall;
		_tmp937_ = ready_data_struct_name;
		_tmp938_ = vala_ccode_identifier_new (_tmp937_);
		_tmp939_ = _tmp938_;
		vala_ccode_function_call_add_argument (_tmp936_, (ValaCCodeExpression*) _tmp939_);
		_vala_ccode_node_unref0 (_tmp939_);
		_tmp940_ = freecall;
		_tmp941_ = ready_data_expr;
		vala_ccode_function_call_add_argument (_tmp940_, (ValaCCodeExpression*) _tmp941_);
		_tmp942_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp943_ = _tmp942_;
		_tmp944_ = freecall;
		vala_ccode_function_add_expression (_tmp943_, (ValaCCodeExpression*) _tmp944_);
		_vala_ccode_node_unref0 (freecall);
	} else {
		if (need_goto_label) {
			ValaCCodeFunction* _tmp945_;
			ValaCCodeFunction* _tmp946_;
			ValaCCodeEmptyStatement* _tmp947_;
			ValaCCodeEmptyStatement* _tmp948_;
			_tmp945_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp946_ = _tmp945_;
			_tmp947_ = vala_ccode_empty_statement_new ();
			_tmp948_ = _tmp947_;
			vala_ccode_function_add_statement (_tmp946_, (ValaCCodeNode*) _tmp948_);
			_vala_ccode_node_unref0 (_tmp948_);
		}
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp949_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp950_ = function;
	vala_ccode_file_add_function_declaration (_tmp949_, _tmp950_);
	_tmp951_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp952_ = function;
	vala_ccode_file_add_function (_tmp951_, _tmp952_);
	_tmp954_ = vala_method_get_coroutine (m);
	_tmp955_ = _tmp954_;
	if (_tmp955_) {
		_tmp953_ = !ready;
	} else {
		_tmp953_ = FALSE;
	}
	if (_tmp953_) {
		gchar* _tmp956_;
		gchar* _tmp957_;
		_tmp956_ = vala_gd_bus_server_module_generate_dbus_wrapper (self, m, sym, TRUE);
		_tmp957_ = _tmp956_;
		_g_free0 (_tmp957_);
	}
	result = wrapper_name;
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (connection);
	_g_free0 (ready_data_struct_name);
	_vala_ccode_node_unref0 (ready_data_expr);
	_vala_ccode_node_unref0 (_tmp40_);
	_vala_ccode_node_unref0 (function);
	return result;
}

static gchar*
vala_gd_bus_server_module_generate_dbus_signal_wrapper (ValaGDBusServerModule* self,
                                                        ValaSignal* sig,
                                                        ValaObjectTypeSymbol* sym,
                                                        const gchar* dbus_iface_name)
{
	gchar* wrapper_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp52_;
	ValaCCodeParameter* _tmp53_;
	ValaCCodeParameter* _tmp54_;
	ValaCCodeFunction* _tmp55_;
	ValaCCodeFunction* _tmp56_;
	ValaCCodeFunction* _tmp57_;
	ValaCCodeIdentifier* _tmp58_;
	ValaCCodeIdentifier* _tmp59_;
	ValaCCodeConstant* _tmp60_;
	ValaCCodeConstant* _tmp61_;
	ValaCCodeElementAccess* _tmp62_;
	ValaCCodeElementAccess* _tmp63_;
	ValaCCodeVariableDeclarator* _tmp64_;
	ValaCCodeVariableDeclarator* _tmp65_;
	ValaCCodeFunction* _tmp66_;
	ValaCCodeFunction* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeIdentifier* _tmp69_;
	ValaCCodeConstant* _tmp70_;
	ValaCCodeConstant* _tmp71_;
	ValaCCodeElementAccess* _tmp72_;
	ValaCCodeElementAccess* _tmp73_;
	ValaCCodeVariableDeclarator* _tmp74_;
	ValaCCodeVariableDeclarator* _tmp75_;
	ValaCCodeFunction* _tmp76_;
	ValaCCodeFunction* _tmp77_;
	ValaCCodeVariableDeclarator* _tmp78_;
	ValaCCodeVariableDeclarator* _tmp79_;
	ValaCCodeFunction* _tmp80_;
	ValaCCodeFunction* _tmp81_;
	ValaCCodeVariableDeclarator* _tmp82_;
	ValaCCodeVariableDeclarator* _tmp83_;
	ValaCCodeFunctionCall* builder_init = NULL;
	ValaCCodeIdentifier* _tmp84_;
	ValaCCodeIdentifier* _tmp85_;
	ValaCCodeFunctionCall* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeFunctionCall* _tmp88_;
	ValaCCodeIdentifier* _tmp89_;
	ValaCCodeIdentifier* _tmp90_;
	ValaCCodeUnaryExpression* _tmp91_;
	ValaCCodeUnaryExpression* _tmp92_;
	ValaCCodeFunctionCall* _tmp93_;
	ValaCCodeIdentifier* _tmp94_;
	ValaCCodeIdentifier* _tmp95_;
	ValaCCodeFunction* _tmp96_;
	ValaCCodeFunction* _tmp97_;
	ValaCCodeFunctionCall* _tmp98_;
	ValaCCodeFunctionCall* builder_end = NULL;
	ValaCCodeIdentifier* _tmp125_;
	ValaCCodeIdentifier* _tmp126_;
	ValaCCodeFunctionCall* _tmp127_;
	ValaCCodeFunctionCall* _tmp128_;
	ValaCCodeIdentifier* _tmp129_;
	ValaCCodeIdentifier* _tmp130_;
	ValaCCodeUnaryExpression* _tmp131_;
	ValaCCodeUnaryExpression* _tmp132_;
	ValaCCodeFunction* _tmp133_;
	ValaCCodeFunction* _tmp134_;
	ValaCCodeIdentifier* _tmp135_;
	ValaCCodeIdentifier* _tmp136_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp137_;
	ValaCCodeIdentifier* _tmp138_;
	ValaCCodeFunctionCall* _tmp139_;
	ValaCCodeFunctionCall* _tmp140_;
	ValaCCodeIdentifier* _tmp141_;
	ValaCCodeIdentifier* _tmp142_;
	ValaCCodeConstant* _tmp143_;
	ValaCCodeConstant* _tmp144_;
	ValaCCodeIdentifier* _tmp145_;
	ValaCCodeIdentifier* _tmp146_;
	gchar* _tmp147_;
	gchar* _tmp148_;
	ValaCCodeConstant* _tmp149_;
	ValaCCodeConstant* _tmp150_;
	gchar* _tmp151_;
	gchar* _tmp152_;
	gchar* _tmp153_;
	gchar* _tmp154_;
	ValaCCodeConstant* _tmp155_;
	ValaCCodeConstant* _tmp156_;
	ValaCCodeIdentifier* _tmp157_;
	ValaCCodeIdentifier* _tmp158_;
	ValaCCodeConstant* _tmp159_;
	ValaCCodeConstant* _tmp160_;
	ValaCCodeFunction* _tmp161_;
	ValaCCodeFunction* _tmp162_;
	ValaCCodeFile* _tmp163_;
	ValaCCodeFunction* _tmp164_;
	ValaCCodeFile* _tmp165_;
	ValaCCodeFunction* _tmp166_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (sig != NULL, NULL);
	g_return_val_if_fail (sym != NULL, NULL);
	g_return_val_if_fail (dbus_iface_name != NULL, NULL);
	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sig, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("_dbus_%s_%s", _tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	_g_free0 (_tmp1_);
	wrapper_name = _tmp5_;
	_tmp6_ = wrapper_name;
	_tmp7_ = vala_ccode_function_new (_tmp6_, "void");
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = vala_ccode_parameter_new ("_sender", "GObject*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp12_;
		gint _param_size = 0;
		ValaList* _tmp13_;
		gint _tmp14_;
		gint _tmp15_;
		gint _param_index = 0;
		_tmp12_ = vala_callable_get_parameters ((ValaCallable*) sig);
		_param_list = _tmp12_;
		_tmp13_ = _param_list;
		_tmp14_ = vala_collection_get_size ((ValaCollection*) _tmp13_);
		_tmp15_ = _tmp14_;
		_param_size = _tmp15_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp16_;
			gint _tmp17_;
			ValaParameter* param = NULL;
			ValaList* _tmp18_;
			gpointer _tmp19_;
			ValaCCodeParameter* cparam = NULL;
			ValaParameter* _tmp20_;
			ValaCCodeFile* _tmp21_;
			GHashFunc _tmp22_;
			GEqualFunc _tmp23_;
			GEqualFunc _tmp24_;
			ValaHashMap* _tmp25_;
			ValaHashMap* _tmp26_;
			ValaCCodeParameter* _tmp27_;
			ValaCCodeParameter* _tmp28_;
			ValaCCodeFunction* _tmp29_;
			ValaCCodeParameter* _tmp30_;
			ValaParameter* _tmp31_;
			ValaDataType* _tmp32_;
			ValaDataType* _tmp33_;
			_param_index = _param_index + 1;
			_tmp16_ = _param_index;
			_tmp17_ = _param_size;
			if (!(_tmp16_ < _tmp17_)) {
				break;
			}
			_tmp18_ = _param_list;
			_tmp19_ = vala_list_get (_tmp18_, _param_index);
			param = (ValaParameter*) _tmp19_;
			_tmp20_ = param;
			_tmp21_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp22_ = g_direct_hash;
			_tmp23_ = g_direct_equal;
			_tmp24_ = g_direct_equal;
			_tmp25_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp22_, _tmp23_, _tmp24_);
			_tmp26_ = _tmp25_;
			_tmp27_ = vala_ccode_method_module_generate_parameter ((ValaCCodeMethodModule*) self, _tmp20_, _tmp21_, (ValaMap*) _tmp26_, NULL);
			_tmp28_ = _tmp27_;
			_vala_map_unref0 (_tmp26_);
			cparam = _tmp28_;
			_tmp29_ = function;
			_tmp30_ = cparam;
			vala_ccode_function_add_parameter (_tmp29_, _tmp30_);
			_tmp31_ = param;
			_tmp32_ = vala_variable_get_variable_type ((ValaVariable*) _tmp31_);
			_tmp33_ = _tmp32_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_ARRAY_TYPE)) {
				ValaArrayType* array_type = NULL;
				ValaParameter* _tmp34_;
				ValaDataType* _tmp35_;
				ValaDataType* _tmp36_;
				ValaArrayType* _tmp37_;
				gchar* length_ctype = NULL;
				ValaArrayType* _tmp38_;
				gchar* _tmp39_;
				_tmp34_ = param;
				_tmp35_ = vala_variable_get_variable_type ((ValaVariable*) _tmp34_);
				_tmp36_ = _tmp35_;
				_tmp37_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
				array_type = _tmp37_;
				_tmp38_ = array_type;
				_tmp39_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp38_);
				length_ctype = _tmp39_;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp40_ = FALSE;
						_tmp40_ = TRUE;
						while (TRUE) {
							ValaArrayType* _tmp42_;
							gint _tmp43_;
							gint _tmp44_;
							ValaCCodeFunction* _tmp45_;
							ValaParameter* _tmp46_;
							gchar* _tmp47_;
							gchar* _tmp48_;
							const gchar* _tmp49_;
							ValaCCodeParameter* _tmp50_;
							ValaCCodeParameter* _tmp51_;
							if (!_tmp40_) {
								gint _tmp41_;
								_tmp41_ = dim;
								dim = _tmp41_ + 1;
							}
							_tmp40_ = FALSE;
							_tmp42_ = array_type;
							_tmp43_ = vala_array_type_get_rank (_tmp42_);
							_tmp44_ = _tmp43_;
							if (!(dim <= _tmp44_)) {
								break;
							}
							_tmp45_ = function;
							_tmp46_ = param;
							_tmp47_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp46_, dim);
							_tmp48_ = _tmp47_;
							_tmp49_ = length_ctype;
							_tmp50_ = vala_ccode_parameter_new (_tmp48_, _tmp49_);
							_tmp51_ = _tmp50_;
							vala_ccode_function_add_parameter (_tmp45_, _tmp51_);
							_vala_ccode_node_unref0 (_tmp51_);
							_g_free0 (_tmp48_);
						}
					}
				}
				_g_free0 (length_ctype);
				_vala_code_node_unref0 (array_type);
			}
			_vala_ccode_node_unref0 (cparam);
			_vala_code_node_unref0 (param);
		}
	}
	_tmp52_ = function;
	_tmp53_ = vala_ccode_parameter_new ("_data", "gpointer*");
	_tmp54_ = _tmp53_;
	vala_ccode_function_add_parameter (_tmp52_, _tmp54_);
	_vala_ccode_node_unref0 (_tmp54_);
	_tmp55_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp55_);
	_tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp57_ = _tmp56_;
	_tmp58_ = vala_ccode_identifier_new ("_data");
	_tmp59_ = _tmp58_;
	_tmp60_ = vala_ccode_constant_new ("1");
	_tmp61_ = _tmp60_;
	_tmp62_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp59_, (ValaCCodeExpression*) _tmp61_);
	_tmp63_ = _tmp62_;
	_tmp64_ = vala_ccode_variable_declarator_new ("_connection", (ValaCCodeExpression*) _tmp63_, NULL);
	_tmp65_ = _tmp64_;
	vala_ccode_function_add_declaration (_tmp57_, "GDBusConnection *", (ValaCCodeDeclarator*) _tmp65_, 0);
	_vala_ccode_node_unref0 (_tmp65_);
	_vala_ccode_node_unref0 (_tmp63_);
	_vala_ccode_node_unref0 (_tmp61_);
	_vala_ccode_node_unref0 (_tmp59_);
	_tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp67_ = _tmp66_;
	_tmp68_ = vala_ccode_identifier_new ("_data");
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_constant_new ("2");
	_tmp71_ = _tmp70_;
	_tmp72_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp71_);
	_tmp73_ = _tmp72_;
	_tmp74_ = vala_ccode_variable_declarator_new ("_path", (ValaCCodeExpression*) _tmp73_, NULL);
	_tmp75_ = _tmp74_;
	vala_ccode_function_add_declaration (_tmp67_, "const gchar *", (ValaCCodeDeclarator*) _tmp75_, 0);
	_vala_ccode_node_unref0 (_tmp75_);
	_vala_ccode_node_unref0 (_tmp73_);
	_vala_ccode_node_unref0 (_tmp71_);
	_vala_ccode_node_unref0 (_tmp69_);
	_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp77_ = _tmp76_;
	_tmp78_ = vala_ccode_variable_declarator_new ("*_arguments", NULL, NULL);
	_tmp79_ = _tmp78_;
	vala_ccode_function_add_declaration (_tmp77_, "GVariant", (ValaCCodeDeclarator*) _tmp79_, 0);
	_vala_ccode_node_unref0 (_tmp79_);
	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_variable_declarator_new ("_arguments_builder", NULL, NULL);
	_tmp83_ = _tmp82_;
	vala_ccode_function_add_declaration (_tmp81_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp83_, 0);
	_vala_ccode_node_unref0 (_tmp83_);
	_tmp84_ = vala_ccode_identifier_new ("g_variant_builder_init");
	_tmp85_ = _tmp84_;
	_tmp86_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp85_);
	_tmp87_ = _tmp86_;
	_vala_ccode_node_unref0 (_tmp85_);
	builder_init = _tmp87_;
	_tmp88_ = builder_init;
	_tmp89_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp90_ = _tmp89_;
	_tmp91_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp90_);
	_tmp92_ = _tmp91_;
	vala_ccode_function_call_add_argument (_tmp88_, (ValaCCodeExpression*) _tmp92_);
	_vala_ccode_node_unref0 (_tmp92_);
	_vala_ccode_node_unref0 (_tmp90_);
	_tmp93_ = builder_init;
	_tmp94_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
	_tmp95_ = _tmp94_;
	vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_);
	_vala_ccode_node_unref0 (_tmp95_);
	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp97_ = _tmp96_;
	_tmp98_ = builder_init;
	vala_ccode_function_add_expression (_tmp97_, (ValaCCodeExpression*) _tmp98_);
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp99_;
		gint _param_size = 0;
		ValaList* _tmp100_;
		gint _tmp101_;
		gint _tmp102_;
		gint _param_index = 0;
		_tmp99_ = vala_callable_get_parameters ((ValaCallable*) sig);
		_param_list = _tmp99_;
		_tmp100_ = _param_list;
		_tmp101_ = vala_collection_get_size ((ValaCollection*) _tmp100_);
		_tmp102_ = _tmp101_;
		_param_size = _tmp102_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp103_;
			gint _tmp104_;
			ValaParameter* param = NULL;
			ValaList* _tmp105_;
			gpointer _tmp106_;
			gchar* param_name = NULL;
			ValaParameter* _tmp107_;
			const gchar* _tmp108_;
			const gchar* _tmp109_;
			gchar* _tmp110_;
			ValaCCodeExpression* expr = NULL;
			const gchar* _tmp111_;
			ValaCCodeIdentifier* _tmp112_;
			ValaParameter* _tmp113_;
			ValaDataType* _tmp114_;
			ValaDataType* _tmp115_;
			ValaParameter* _tmp118_;
			ValaDataType* _tmp119_;
			ValaDataType* _tmp120_;
			ValaCCodeIdentifier* _tmp121_;
			ValaCCodeIdentifier* _tmp122_;
			ValaCCodeExpression* _tmp123_;
			ValaParameter* _tmp124_;
			_param_index = _param_index + 1;
			_tmp103_ = _param_index;
			_tmp104_ = _param_size;
			if (!(_tmp103_ < _tmp104_)) {
				break;
			}
			_tmp105_ = _param_list;
			_tmp106_ = vala_list_get (_tmp105_, _param_index);
			param = (ValaParameter*) _tmp106_;
			_tmp107_ = param;
			_tmp108_ = vala_symbol_get_name ((ValaSymbol*) _tmp107_);
			_tmp109_ = _tmp108_;
			_tmp110_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp109_);
			param_name = _tmp110_;
			_tmp111_ = param_name;
			_tmp112_ = vala_ccode_identifier_new (_tmp111_);
			expr = (ValaCCodeExpression*) _tmp112_;
			_tmp113_ = param;
			_tmp114_ = vala_variable_get_variable_type ((ValaVariable*) _tmp113_);
			_tmp115_ = _tmp114_;
			if (vala_data_type_is_real_struct_type (_tmp115_)) {
				ValaCCodeExpression* _tmp116_;
				ValaCCodeUnaryExpression* _tmp117_;
				_tmp116_ = expr;
				_tmp117_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp116_);
				_vala_ccode_node_unref0 (expr);
				expr = (ValaCCodeExpression*) _tmp117_;
			}
			_tmp118_ = param;
			_tmp119_ = vala_variable_get_variable_type ((ValaVariable*) _tmp118_);
			_tmp120_ = _tmp119_;
			_tmp121_ = vala_ccode_identifier_new ("_arguments_builder");
			_tmp122_ = _tmp121_;
			_tmp123_ = expr;
			_tmp124_ = param;
			vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp120_, (ValaCCodeExpression*) _tmp122_, _tmp123_, (ValaSymbol*) _tmp124_);
			_vala_ccode_node_unref0 (_tmp122_);
			_vala_ccode_node_unref0 (expr);
			_g_free0 (param_name);
			_vala_code_node_unref0 (param);
		}
	}
	_tmp125_ = vala_ccode_identifier_new ("g_variant_builder_end");
	_tmp126_ = _tmp125_;
	_tmp127_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp126_);
	_tmp128_ = _tmp127_;
	_vala_ccode_node_unref0 (_tmp126_);
	builder_end = _tmp128_;
	_tmp129_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp130_ = _tmp129_;
	_tmp131_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp130_);
	_tmp132_ = _tmp131_;
	vala_ccode_function_call_add_argument (builder_end, (ValaCCodeExpression*) _tmp132_);
	_vala_ccode_node_unref0 (_tmp132_);
	_vala_ccode_node_unref0 (_tmp130_);
	_tmp133_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp134_ = _tmp133_;
	_tmp135_ = vala_ccode_identifier_new ("_arguments");
	_tmp136_ = _tmp135_;
	vala_ccode_function_add_assignment (_tmp134_, (ValaCCodeExpression*) _tmp136_, (ValaCCodeExpression*) builder_end);
	_vala_ccode_node_unref0 (_tmp136_);
	_tmp137_ = vala_ccode_identifier_new ("g_dbus_connection_emit_signal");
	_tmp138_ = _tmp137_;
	_tmp139_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp138_);
	_tmp140_ = _tmp139_;
	_vala_ccode_node_unref0 (_tmp138_);
	ccall = _tmp140_;
	_tmp141_ = vala_ccode_identifier_new ("_connection");
	_tmp142_ = _tmp141_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp142_);
	_vala_ccode_node_unref0 (_tmp142_);
	_tmp143_ = vala_ccode_constant_new ("NULL");
	_tmp144_ = _tmp143_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp144_);
	_vala_ccode_node_unref0 (_tmp144_);
	_tmp145_ = vala_ccode_identifier_new ("_path");
	_tmp146_ = _tmp145_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp146_);
	_vala_ccode_node_unref0 (_tmp146_);
	_tmp147_ = g_strdup_printf ("\"%s\"", dbus_iface_name);
	_tmp148_ = _tmp147_;
	_tmp149_ = vala_ccode_constant_new (_tmp148_);
	_tmp150_ = _tmp149_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp150_);
	_vala_ccode_node_unref0 (_tmp150_);
	_g_free0 (_tmp148_);
	_tmp151_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) sig);
	_tmp152_ = _tmp151_;
	_tmp153_ = g_strdup_printf ("\"%s\"", _tmp152_);
	_tmp154_ = _tmp153_;
	_tmp155_ = vala_ccode_constant_new (_tmp154_);
	_tmp156_ = _tmp155_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp156_);
	_vala_ccode_node_unref0 (_tmp156_);
	_g_free0 (_tmp154_);
	_g_free0 (_tmp152_);
	_tmp157_ = vala_ccode_identifier_new ("_arguments");
	_tmp158_ = _tmp157_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp158_);
	_vala_ccode_node_unref0 (_tmp158_);
	_tmp159_ = vala_ccode_constant_new ("NULL");
	_tmp160_ = _tmp159_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp160_);
	_vala_ccode_node_unref0 (_tmp160_);
	_tmp161_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp162_ = _tmp161_;
	vala_ccode_function_add_expression (_tmp162_, (ValaCCodeExpression*) ccall);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp163_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp164_ = function;
	vala_ccode_file_add_function_declaration (_tmp163_, _tmp164_);
	_tmp165_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp166_ = function;
	vala_ccode_file_add_function (_tmp165_, _tmp166_);
	result = wrapper_name;
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (builder_end);
	_vala_ccode_node_unref0 (builder_init);
	_vala_ccode_node_unref0 (function);
	return result;
}

static gchar*
vala_gd_bus_server_module_generate_dbus_property_get_wrapper (ValaGDBusServerModule* self,
                                                              ValaProperty* prop,
                                                              ValaObjectTypeSymbol* sym)
{
	gchar* wrapper_name = NULL;
	ValaPropertyAccessor* _tmp0_;
	ValaPropertyAccessor* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaPropertyAccessor* _tmp17_;
	ValaPropertyAccessor* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	ValaCCodeIdentifier* _tmp21_;
	ValaCCodeIdentifier* _tmp22_;
	ValaCCodeFunctionCall* _tmp23_;
	ValaCCodeFunctionCall* _tmp24_;
	ValaCCodeFunctionCall* _tmp25_;
	ValaCCodeIdentifier* _tmp26_;
	ValaCCodeIdentifier* _tmp27_;
	ValaPropertyAccessor* _tmp28_;
	ValaPropertyAccessor* _tmp29_;
	ValaDataType* _tmp30_;
	ValaDataType* _tmp31_;
	ValaCCodeFunction* _tmp99_;
	ValaCCodeFunction* _tmp100_;
	ValaCCodeVariableDeclarator* _tmp101_;
	ValaCCodeVariableDeclarator* _tmp102_;
	gchar* _tmp103_;
	gchar* _tmp104_;
	gboolean _tmp105_;
	ValaCCodeFunction* _tmp139_;
	ValaCCodeFunction* _tmp140_;
	ValaCCodeIdentifier* _tmp141_;
	ValaCCodeIdentifier* _tmp142_;
	ValaCCodeFile* _tmp143_;
	ValaCCodeFunction* _tmp144_;
	ValaCCodeFile* _tmp145_;
	ValaCCodeFunction* _tmp146_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (prop != NULL, NULL);
	g_return_val_if_fail (sym != NULL, NULL);
	_tmp0_ = vala_property_get_get_accessor (prop);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_get_ccode_name ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("_dbus_%s", _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	wrapper_name = _tmp5_;
	_tmp6_ = wrapper_name;
	_tmp7_ = vala_ccode_function_new (_tmp6_, "GVariant*");
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) sym);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strconcat (_tmp11_, "*", NULL);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_g_free0 (_tmp13_);
	_g_free0 (_tmp11_);
	_tmp16_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp16_);
	_tmp17_ = vala_property_get_get_accessor (prop);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_get_ccode_name ((ValaCodeNode*) _tmp18_);
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_identifier_new (_tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp22_);
	_tmp24_ = _tmp23_;
	_vala_ccode_node_unref0 (_tmp22_);
	_g_free0 (_tmp20_);
	ccall = _tmp24_;
	_tmp25_ = ccall;
	_tmp26_ = vala_ccode_identifier_new ("self");
	_tmp27_ = _tmp26_;
	vala_ccode_function_call_add_argument (_tmp25_, (ValaCCodeExpression*) _tmp27_);
	_vala_ccode_node_unref0 (_tmp27_);
	_tmp28_ = vala_property_get_get_accessor (prop);
	_tmp29_ = _tmp28_;
	_tmp30_ = vala_property_accessor_get_value_type (_tmp29_);
	_tmp31_ = _tmp30_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp31_)) {
		ValaCCodeFunction* _tmp32_;
		ValaCCodeFunction* _tmp33_;
		ValaPropertyAccessor* _tmp34_;
		ValaPropertyAccessor* _tmp35_;
		ValaDataType* _tmp36_;
		ValaDataType* _tmp37_;
		gchar* _tmp38_;
		gchar* _tmp39_;
		ValaPropertyAccessor* _tmp40_;
		ValaPropertyAccessor* _tmp41_;
		ValaDataType* _tmp42_;
		ValaDataType* _tmp43_;
		ValaCCodeExpression* _tmp44_;
		ValaCCodeExpression* _tmp45_;
		ValaCCodeVariableDeclarator* _tmp46_;
		ValaCCodeVariableDeclarator* _tmp47_;
		ValaCCodeFunctionCall* _tmp48_;
		ValaCCodeIdentifier* _tmp49_;
		ValaCCodeIdentifier* _tmp50_;
		ValaCCodeUnaryExpression* _tmp51_;
		ValaCCodeUnaryExpression* _tmp52_;
		ValaCCodeFunction* _tmp53_;
		ValaCCodeFunction* _tmp54_;
		ValaCCodeFunctionCall* _tmp55_;
		_tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp33_ = _tmp32_;
		_tmp34_ = vala_property_get_get_accessor (prop);
		_tmp35_ = _tmp34_;
		_tmp36_ = vala_property_accessor_get_value_type (_tmp35_);
		_tmp37_ = _tmp36_;
		_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
		_tmp39_ = _tmp38_;
		_tmp40_ = vala_property_get_get_accessor (prop);
		_tmp41_ = _tmp40_;
		_tmp42_ = vala_property_accessor_get_value_type (_tmp41_);
		_tmp43_ = _tmp42_;
		_tmp44_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp43_, TRUE, FALSE);
		_tmp45_ = _tmp44_;
		_tmp46_ = vala_ccode_variable_declarator_new_zero ("result", _tmp45_, NULL);
		_tmp47_ = _tmp46_;
		vala_ccode_function_add_declaration (_tmp33_, _tmp39_, (ValaCCodeDeclarator*) _tmp47_, 0);
		_vala_ccode_node_unref0 (_tmp47_);
		_vala_ccode_node_unref0 (_tmp45_);
		_g_free0 (_tmp39_);
		_tmp48_ = ccall;
		_tmp49_ = vala_ccode_identifier_new ("result");
		_tmp50_ = _tmp49_;
		_tmp51_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp50_);
		_tmp52_ = _tmp51_;
		vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp52_);
		_vala_ccode_node_unref0 (_tmp52_);
		_vala_ccode_node_unref0 (_tmp50_);
		_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp54_ = _tmp53_;
		_tmp55_ = ccall;
		vala_ccode_function_add_expression (_tmp54_, (ValaCCodeExpression*) _tmp55_);
	} else {
		ValaCCodeFunction* _tmp56_;
		ValaCCodeFunction* _tmp57_;
		ValaPropertyAccessor* _tmp58_;
		ValaPropertyAccessor* _tmp59_;
		ValaDataType* _tmp60_;
		ValaDataType* _tmp61_;
		gchar* _tmp62_;
		gchar* _tmp63_;
		ValaCCodeVariableDeclarator* _tmp64_;
		ValaCCodeVariableDeclarator* _tmp65_;
		ValaCCodeFunction* _tmp66_;
		ValaCCodeFunction* _tmp67_;
		ValaCCodeIdentifier* _tmp68_;
		ValaCCodeIdentifier* _tmp69_;
		ValaCCodeFunctionCall* _tmp70_;
		ValaArrayType* array_type = NULL;
		ValaPropertyAccessor* _tmp71_;
		ValaPropertyAccessor* _tmp72_;
		ValaDataType* _tmp73_;
		ValaDataType* _tmp74_;
		ValaArrayType* _tmp75_;
		ValaArrayType* _tmp76_;
		_tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp57_ = _tmp56_;
		_tmp58_ = vala_property_get_get_accessor (prop);
		_tmp59_ = _tmp58_;
		_tmp60_ = vala_property_accessor_get_value_type (_tmp59_);
		_tmp61_ = _tmp60_;
		_tmp62_ = vala_get_ccode_name ((ValaCodeNode*) _tmp61_);
		_tmp63_ = _tmp62_;
		_tmp64_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
		_tmp65_ = _tmp64_;
		vala_ccode_function_add_declaration (_tmp57_, _tmp63_, (ValaCCodeDeclarator*) _tmp65_, 0);
		_vala_ccode_node_unref0 (_tmp65_);
		_g_free0 (_tmp63_);
		_tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp67_ = _tmp66_;
		_tmp68_ = vala_ccode_identifier_new ("result");
		_tmp69_ = _tmp68_;
		_tmp70_ = ccall;
		vala_ccode_function_add_assignment (_tmp67_, (ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp70_);
		_vala_ccode_node_unref0 (_tmp69_);
		_tmp71_ = vala_property_get_get_accessor (prop);
		_tmp72_ = _tmp71_;
		_tmp73_ = vala_property_accessor_get_value_type (_tmp72_);
		_tmp74_ = _tmp73_;
		_tmp75_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp74_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp74_) : NULL);
		array_type = _tmp75_;
		_tmp76_ = array_type;
		if (_tmp76_ != NULL) {
			gchar* length_ctype = NULL;
			ValaArrayType* _tmp77_;
			gchar* _tmp78_;
			_tmp77_ = array_type;
			_tmp78_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp77_);
			length_ctype = _tmp78_;
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp79_ = FALSE;
					_tmp79_ = TRUE;
					while (TRUE) {
						ValaArrayType* _tmp81_;
						gint _tmp82_;
						gint _tmp83_;
						gchar* length_cname = NULL;
						gchar* _tmp84_;
						ValaCCodeFunction* _tmp85_;
						ValaCCodeFunction* _tmp86_;
						const gchar* _tmp87_;
						const gchar* _tmp88_;
						ValaCCodeConstant* _tmp89_;
						ValaCCodeConstant* _tmp90_;
						ValaCCodeVariableDeclarator* _tmp91_;
						ValaCCodeVariableDeclarator* _tmp92_;
						ValaCCodeFunctionCall* _tmp93_;
						const gchar* _tmp94_;
						ValaCCodeIdentifier* _tmp95_;
						ValaCCodeIdentifier* _tmp96_;
						ValaCCodeUnaryExpression* _tmp97_;
						ValaCCodeUnaryExpression* _tmp98_;
						if (!_tmp79_) {
							gint _tmp80_;
							_tmp80_ = dim;
							dim = _tmp80_ + 1;
						}
						_tmp79_ = FALSE;
						_tmp81_ = array_type;
						_tmp82_ = vala_array_type_get_rank (_tmp81_);
						_tmp83_ = _tmp82_;
						if (!(dim <= _tmp83_)) {
							break;
						}
						_tmp84_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
						length_cname = _tmp84_;
						_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp86_ = _tmp85_;
						_tmp87_ = length_ctype;
						_tmp88_ = length_cname;
						_tmp89_ = vala_ccode_constant_new ("0");
						_tmp90_ = _tmp89_;
						_tmp91_ = vala_ccode_variable_declarator_new_zero (_tmp88_, (ValaCCodeExpression*) _tmp90_, NULL);
						_tmp92_ = _tmp91_;
						vala_ccode_function_add_declaration (_tmp86_, _tmp87_, (ValaCCodeDeclarator*) _tmp92_, 0);
						_vala_ccode_node_unref0 (_tmp92_);
						_vala_ccode_node_unref0 (_tmp90_);
						_tmp93_ = ccall;
						_tmp94_ = length_cname;
						_tmp95_ = vala_ccode_identifier_new (_tmp94_);
						_tmp96_ = _tmp95_;
						_tmp97_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp96_);
						_tmp98_ = _tmp97_;
						vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp98_);
						_vala_ccode_node_unref0 (_tmp98_);
						_vala_ccode_node_unref0 (_tmp96_);
						_g_free0 (length_cname);
					}
				}
			}
			_g_free0 (length_ctype);
		}
		_vala_code_node_unref0 (array_type);
	}
	_tmp99_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp100_ = _tmp99_;
	_tmp101_ = vala_ccode_variable_declarator_new ("_reply", NULL, NULL);
	_tmp102_ = _tmp101_;
	vala_ccode_function_add_declaration (_tmp100_, "GVariant*", (ValaCCodeDeclarator*) _tmp102_, 0);
	_vala_ccode_node_unref0 (_tmp102_);
	_tmp103_ = vala_gvariant_module_get_dbus_signature ((ValaSymbol*) prop);
	_tmp104_ = _tmp103_;
	_tmp105_ = _tmp104_ != NULL;
	_g_free0 (_tmp104_);
	if (_tmp105_) {
		ValaCCodeFunction* _tmp106_;
		ValaCCodeFunction* _tmp107_;
		ValaCCodeIdentifier* _tmp108_;
		ValaCCodeIdentifier* _tmp109_;
		ValaCCodeIdentifier* _tmp110_;
		ValaCCodeIdentifier* _tmp111_;
		_tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp107_ = _tmp106_;
		_tmp108_ = vala_ccode_identifier_new ("_reply");
		_tmp109_ = _tmp108_;
		_tmp110_ = vala_ccode_identifier_new ("result");
		_tmp111_ = _tmp110_;
		vala_ccode_function_add_assignment (_tmp107_, (ValaCCodeExpression*) _tmp109_, (ValaCCodeExpression*) _tmp111_);
		_vala_ccode_node_unref0 (_tmp111_);
		_vala_ccode_node_unref0 (_tmp109_);
	} else {
		ValaCCodeExpression* reply_expr = NULL;
		ValaPropertyAccessor* _tmp112_;
		ValaPropertyAccessor* _tmp113_;
		ValaDataType* _tmp114_;
		ValaDataType* _tmp115_;
		ValaCCodeIdentifier* _tmp116_;
		ValaCCodeIdentifier* _tmp117_;
		ValaCCodeExpression* _tmp118_;
		ValaCCodeExpression* _tmp119_;
		ValaCCodeFunction* _tmp120_;
		ValaCCodeFunction* _tmp121_;
		ValaCCodeIdentifier* _tmp122_;
		ValaCCodeIdentifier* _tmp123_;
		ValaCCodeExpression* _tmp124_;
		ValaPropertyAccessor* _tmp125_;
		ValaPropertyAccessor* _tmp126_;
		ValaDataType* _tmp127_;
		ValaDataType* _tmp128_;
		_tmp112_ = vala_property_get_get_accessor (prop);
		_tmp113_ = _tmp112_;
		_tmp114_ = vala_property_accessor_get_value_type (_tmp113_);
		_tmp115_ = _tmp114_;
		_tmp116_ = vala_ccode_identifier_new ("result");
		_tmp117_ = _tmp116_;
		_tmp118_ = vala_ccode_base_module_serialize_expression ((ValaCCodeBaseModule*) self, _tmp115_, (ValaCCodeExpression*) _tmp117_);
		_tmp119_ = _tmp118_;
		_vala_ccode_node_unref0 (_tmp117_);
		reply_expr = _tmp119_;
		_tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp121_ = _tmp120_;
		_tmp122_ = vala_ccode_identifier_new ("_reply");
		_tmp123_ = _tmp122_;
		_tmp124_ = reply_expr;
		vala_ccode_function_add_assignment (_tmp121_, (ValaCCodeExpression*) _tmp123_, _tmp124_);
		_vala_ccode_node_unref0 (_tmp123_);
		_tmp125_ = vala_property_get_get_accessor (prop);
		_tmp126_ = _tmp125_;
		_tmp127_ = vala_property_accessor_get_value_type (_tmp126_);
		_tmp128_ = _tmp127_;
		if (vala_ccode_base_module_requires_destroy (_tmp128_)) {
			ValaLocalVariable* local = NULL;
			ValaPropertyAccessor* _tmp129_;
			ValaPropertyAccessor* _tmp130_;
			ValaDataType* _tmp131_;
			ValaDataType* _tmp132_;
			ValaLocalVariable* _tmp133_;
			ValaCCodeFunction* _tmp134_;
			ValaCCodeFunction* _tmp135_;
			ValaLocalVariable* _tmp136_;
			ValaCCodeExpression* _tmp137_;
			ValaCCodeExpression* _tmp138_;
			_tmp129_ = vala_property_get_get_accessor (prop);
			_tmp130_ = _tmp129_;
			_tmp131_ = vala_property_accessor_get_value_type (_tmp130_);
			_tmp132_ = _tmp131_;
			_tmp133_ = vala_local_variable_new (_tmp132_, ".result", NULL, NULL);
			local = _tmp133_;
			_tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp135_ = _tmp134_;
			_tmp136_ = local;
			_tmp137_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp136_);
			_tmp138_ = _tmp137_;
			vala_ccode_function_add_expression (_tmp135_, _tmp138_);
			_vala_ccode_node_unref0 (_tmp138_);
			_vala_code_node_unref0 (local);
		}
		_vala_ccode_node_unref0 (reply_expr);
	}
	_tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp140_ = _tmp139_;
	_tmp141_ = vala_ccode_identifier_new ("_reply");
	_tmp142_ = _tmp141_;
	vala_ccode_function_add_return (_tmp140_, (ValaCCodeExpression*) _tmp142_);
	_vala_ccode_node_unref0 (_tmp142_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp143_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp144_ = function;
	vala_ccode_file_add_function_declaration (_tmp143_, _tmp144_);
	_tmp145_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp146_ = function;
	vala_ccode_file_add_function (_tmp145_, _tmp146_);
	result = wrapper_name;
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (function);
	return result;
}

static gchar*
vala_gd_bus_server_module_generate_dbus_property_set_wrapper (ValaGDBusServerModule* self,
                                                              ValaProperty* prop,
                                                              ValaObjectTypeSymbol* sym)
{
	gchar* wrapper_name = NULL;
	ValaPropertyAccessor* _tmp0_;
	ValaPropertyAccessor* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeParameter* _tmp18_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaPropertyAccessor* _tmp20_;
	ValaPropertyAccessor* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	ValaCCodeIdentifier* _tmp24_;
	ValaCCodeIdentifier* _tmp25_;
	ValaCCodeFunctionCall* _tmp26_;
	ValaCCodeFunctionCall* _tmp27_;
	ValaCCodeFunctionCall* _tmp28_;
	ValaCCodeIdentifier* _tmp29_;
	ValaCCodeIdentifier* _tmp30_;
	ValaDataType* owned_type = NULL;
	ValaDataType* _tmp31_;
	ValaDataType* _tmp32_;
	ValaDataType* _tmp33_;
	ValaDataType* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaDataType* _tmp37_;
	gchar* _tmp38_;
	gchar* _tmp39_;
	ValaDataType* _tmp40_;
	ValaDataType* _tmp41_;
	ValaCCodeExpression* _tmp42_;
	ValaCCodeExpression* _tmp43_;
	ValaCCodeVariableDeclarator* _tmp44_;
	ValaCCodeVariableDeclarator* _tmp45_;
	ValaStruct* st = NULL;
	ValaDataType* _tmp46_;
	ValaDataType* _tmp47_;
	ValaTypeSymbol* _tmp48_;
	ValaTypeSymbol* _tmp49_;
	gboolean _tmp50_ = FALSE;
	ValaStruct* _tmp51_;
	ValaCCodeIdentifier* target = NULL;
	ValaCCodeIdentifier* _tmp84_;
	gchar* _tmp85_;
	gchar* _tmp86_;
	gboolean _tmp87_;
	ValaCCodeFile* _tmp118_;
	ValaCCodeFunction* _tmp119_;
	ValaCCodeFile* _tmp120_;
	ValaCCodeFunction* _tmp121_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (prop != NULL, NULL);
	g_return_val_if_fail (sym != NULL, NULL);
	_tmp0_ = vala_property_get_set_accessor (prop);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_get_ccode_name ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("_dbus_%s", _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	wrapper_name = _tmp5_;
	_tmp6_ = wrapper_name;
	_tmp7_ = vala_ccode_function_new (_tmp6_, "void");
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) sym);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strconcat (_tmp11_, "*", NULL);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_g_free0 (_tmp13_);
	_g_free0 (_tmp11_);
	_tmp16_ = function;
	_tmp17_ = vala_ccode_parameter_new ("_value", "GVariant*");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_tmp19_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = vala_property_get_set_accessor (prop);
	_tmp21_ = _tmp20_;
	_tmp22_ = vala_get_ccode_name ((ValaCodeNode*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_identifier_new (_tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
	_tmp27_ = _tmp26_;
	_vala_ccode_node_unref0 (_tmp25_);
	_g_free0 (_tmp23_);
	ccall = _tmp27_;
	_tmp28_ = ccall;
	_tmp29_ = vala_ccode_identifier_new ("self");
	_tmp30_ = _tmp29_;
	vala_ccode_function_call_add_argument (_tmp28_, (ValaCCodeExpression*) _tmp30_);
	_vala_ccode_node_unref0 (_tmp30_);
	_tmp31_ = vala_property_get_property_type (prop);
	_tmp32_ = _tmp31_;
	_tmp33_ = vala_data_type_copy (_tmp32_);
	owned_type = _tmp33_;
	_tmp34_ = owned_type;
	vala_data_type_set_value_owned (_tmp34_, TRUE);
	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp36_ = _tmp35_;
	_tmp37_ = owned_type;
	_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_property_get_property_type (prop);
	_tmp41_ = _tmp40_;
	_tmp42_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp41_, TRUE, FALSE);
	_tmp43_ = _tmp42_;
	_tmp44_ = vala_ccode_variable_declarator_new_zero ("value", _tmp43_, NULL);
	_tmp45_ = _tmp44_;
	vala_ccode_function_add_declaration (_tmp36_, _tmp39_, (ValaCCodeDeclarator*) _tmp45_, 0);
	_vala_ccode_node_unref0 (_tmp45_);
	_vala_ccode_node_unref0 (_tmp43_);
	_g_free0 (_tmp39_);
	_tmp46_ = vala_property_get_property_type (prop);
	_tmp47_ = _tmp46_;
	_tmp48_ = vala_data_type_get_type_symbol (_tmp47_);
	_tmp49_ = _tmp48_;
	st = G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp49_) : NULL;
	_tmp51_ = st;
	if (_tmp51_ != NULL) {
		ValaStruct* _tmp52_;
		_tmp52_ = st;
		_tmp50_ = !vala_struct_is_simple_type (_tmp52_);
	} else {
		_tmp50_ = FALSE;
	}
	if (_tmp50_) {
		ValaCCodeFunctionCall* _tmp53_;
		ValaCCodeIdentifier* _tmp54_;
		ValaCCodeIdentifier* _tmp55_;
		ValaCCodeUnaryExpression* _tmp56_;
		ValaCCodeUnaryExpression* _tmp57_;
		_tmp53_ = ccall;
		_tmp54_ = vala_ccode_identifier_new ("value");
		_tmp55_ = _tmp54_;
		_tmp56_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp55_);
		_tmp57_ = _tmp56_;
		vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) _tmp57_);
		_vala_ccode_node_unref0 (_tmp57_);
		_vala_ccode_node_unref0 (_tmp55_);
	} else {
		ValaCCodeFunctionCall* _tmp58_;
		ValaCCodeIdentifier* _tmp59_;
		ValaCCodeIdentifier* _tmp60_;
		ValaArrayType* array_type = NULL;
		ValaDataType* _tmp61_;
		ValaDataType* _tmp62_;
		ValaArrayType* _tmp63_;
		ValaArrayType* _tmp64_;
		_tmp58_ = ccall;
		_tmp59_ = vala_ccode_identifier_new ("value");
		_tmp60_ = _tmp59_;
		vala_ccode_function_call_add_argument (_tmp58_, (ValaCCodeExpression*) _tmp60_);
		_vala_ccode_node_unref0 (_tmp60_);
		_tmp61_ = vala_property_get_property_type (prop);
		_tmp62_ = _tmp61_;
		_tmp63_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp62_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp62_) : NULL);
		array_type = _tmp63_;
		_tmp64_ = array_type;
		if (_tmp64_ != NULL) {
			gchar* length_ctype = NULL;
			ValaArrayType* _tmp65_;
			gchar* _tmp66_;
			_tmp65_ = array_type;
			_tmp66_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp65_);
			length_ctype = _tmp66_;
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp67_ = FALSE;
					_tmp67_ = TRUE;
					while (TRUE) {
						ValaArrayType* _tmp69_;
						gint _tmp70_;
						gint _tmp71_;
						ValaCCodeFunction* _tmp72_;
						ValaCCodeFunction* _tmp73_;
						const gchar* _tmp74_;
						gchar* _tmp75_;
						gchar* _tmp76_;
						ValaCCodeVariableDeclarator* _tmp77_;
						ValaCCodeVariableDeclarator* _tmp78_;
						ValaCCodeFunctionCall* _tmp79_;
						gchar* _tmp80_;
						gchar* _tmp81_;
						ValaCCodeIdentifier* _tmp82_;
						ValaCCodeIdentifier* _tmp83_;
						if (!_tmp67_) {
							gint _tmp68_;
							_tmp68_ = dim;
							dim = _tmp68_ + 1;
						}
						_tmp67_ = FALSE;
						_tmp69_ = array_type;
						_tmp70_ = vala_array_type_get_rank (_tmp69_);
						_tmp71_ = _tmp70_;
						if (!(dim <= _tmp71_)) {
							break;
						}
						_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp73_ = _tmp72_;
						_tmp74_ = length_ctype;
						_tmp75_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
						_tmp76_ = _tmp75_;
						_tmp77_ = vala_ccode_variable_declarator_new (_tmp76_, NULL, NULL);
						_tmp78_ = _tmp77_;
						vala_ccode_function_add_declaration (_tmp73_, _tmp74_, (ValaCCodeDeclarator*) _tmp78_, 0);
						_vala_ccode_node_unref0 (_tmp78_);
						_g_free0 (_tmp76_);
						_tmp79_ = ccall;
						_tmp80_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
						_tmp81_ = _tmp80_;
						_tmp82_ = vala_ccode_identifier_new (_tmp81_);
						_tmp83_ = _tmp82_;
						vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp83_);
						_vala_ccode_node_unref0 (_tmp83_);
						_g_free0 (_tmp81_);
					}
				}
			}
			_g_free0 (length_ctype);
		}
		_vala_code_node_unref0 (array_type);
	}
	_tmp84_ = vala_ccode_identifier_new ("value");
	target = _tmp84_;
	_tmp85_ = vala_gvariant_module_get_dbus_signature ((ValaSymbol*) prop);
	_tmp86_ = _tmp85_;
	_tmp87_ = _tmp86_ != NULL;
	_g_free0 (_tmp86_);
	if (_tmp87_) {
		ValaCCodeFunction* _tmp88_;
		ValaCCodeFunction* _tmp89_;
		ValaCCodeIdentifier* _tmp90_;
		ValaCCodeIdentifier* _tmp91_;
		ValaCCodeIdentifier* _tmp92_;
		ValaCCodeFunction* _tmp93_;
		ValaCCodeFunction* _tmp94_;
		ValaCCodeFunctionCall* _tmp95_;
		_tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp89_ = _tmp88_;
		_tmp90_ = target;
		_tmp91_ = vala_ccode_identifier_new ("_value");
		_tmp92_ = _tmp91_;
		vala_ccode_function_add_assignment (_tmp89_, (ValaCCodeExpression*) _tmp90_, (ValaCCodeExpression*) _tmp92_);
		_vala_ccode_node_unref0 (_tmp92_);
		_tmp93_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp94_ = _tmp93_;
		_tmp95_ = ccall;
		vala_ccode_function_add_expression (_tmp94_, (ValaCCodeExpression*) _tmp95_);
	} else {
		ValaCCodeExpression* expr = NULL;
		ValaDataType* _tmp96_;
		ValaDataType* _tmp97_;
		ValaCCodeIdentifier* _tmp98_;
		ValaCCodeIdentifier* _tmp99_;
		ValaCCodeIdentifier* _tmp100_;
		ValaCCodeExpression* _tmp101_;
		ValaCCodeExpression* _tmp102_;
		ValaCCodeFunction* _tmp103_;
		ValaCCodeFunction* _tmp104_;
		ValaCCodeIdentifier* _tmp105_;
		ValaCCodeExpression* _tmp106_;
		ValaCCodeFunction* _tmp107_;
		ValaCCodeFunction* _tmp108_;
		ValaCCodeFunctionCall* _tmp109_;
		ValaDataType* _tmp110_;
		_tmp96_ = vala_property_get_property_type (prop);
		_tmp97_ = _tmp96_;
		_tmp98_ = vala_ccode_identifier_new ("_value");
		_tmp99_ = _tmp98_;
		_tmp100_ = target;
		_tmp101_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp97_, (ValaCCodeExpression*) _tmp99_, (ValaCCodeExpression*) _tmp100_, NULL, NULL);
		_tmp102_ = _tmp101_;
		_vala_ccode_node_unref0 (_tmp99_);
		expr = _tmp102_;
		_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp104_ = _tmp103_;
		_tmp105_ = target;
		_tmp106_ = expr;
		vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) _tmp105_, _tmp106_);
		_tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp108_ = _tmp107_;
		_tmp109_ = ccall;
		vala_ccode_function_add_expression (_tmp108_, (ValaCCodeExpression*) _tmp109_);
		_tmp110_ = owned_type;
		if (vala_ccode_base_module_requires_destroy (_tmp110_)) {
			ValaLocalVariable* local = NULL;
			ValaDataType* _tmp111_;
			ValaLocalVariable* _tmp112_;
			ValaCCodeFunction* _tmp113_;
			ValaCCodeFunction* _tmp114_;
			ValaLocalVariable* _tmp115_;
			ValaCCodeExpression* _tmp116_;
			ValaCCodeExpression* _tmp117_;
			_tmp111_ = owned_type;
			_tmp112_ = vala_local_variable_new (_tmp111_, "value", NULL, NULL);
			local = _tmp112_;
			_tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp114_ = _tmp113_;
			_tmp115_ = local;
			_tmp116_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp115_);
			_tmp117_ = _tmp116_;
			vala_ccode_function_add_expression (_tmp114_, _tmp117_);
			_vala_ccode_node_unref0 (_tmp117_);
			_vala_code_node_unref0 (local);
		}
		_vala_ccode_node_unref0 (expr);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp118_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp119_ = function;
	vala_ccode_file_add_function_declaration (_tmp118_, _tmp119_);
	_tmp120_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp121_ = function;
	vala_ccode_file_add_function (_tmp120_, _tmp121_);
	result = wrapper_name;
	_vala_ccode_node_unref0 (target);
	_vala_code_node_unref0 (owned_type);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (function);
	return result;
}

static void
vala_gd_bus_server_module_handle_signals (ValaGDBusServerModule* self,
                                          ValaObjectTypeSymbol* sym,
                                          gboolean connect)
{
	gchar* dbus_iface_name = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
	dbus_iface_name = _tmp0_;
	_tmp1_ = dbus_iface_name;
	if (_tmp1_ == NULL) {
		_g_free0 (dbus_iface_name);
		return;
	}
	{
		ValaList* _sig_list = NULL;
		ValaList* _tmp2_;
		gint _sig_size = 0;
		ValaList* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _sig_index = 0;
		_tmp2_ = vala_object_type_symbol_get_signals (sym);
		_sig_list = _tmp2_;
		_tmp3_ = _sig_list;
		_tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_sig_size = _tmp5_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			ValaSignal* sig = NULL;
			ValaList* _tmp8_;
			gpointer _tmp9_;
			ValaSignal* _tmp10_;
			ValaSymbolAccessibility _tmp11_;
			ValaSymbolAccessibility _tmp12_;
			ValaSignal* _tmp13_;
			_sig_index = _sig_index + 1;
			_tmp6_ = _sig_index;
			_tmp7_ = _sig_size;
			if (!(_tmp6_ < _tmp7_)) {
				break;
			}
			_tmp8_ = _sig_list;
			_tmp9_ = vala_list_get (_tmp8_, _sig_index);
			sig = (ValaSignal*) _tmp9_;
			_tmp10_ = sig;
			_tmp11_ = vala_symbol_get_access ((ValaSymbol*) _tmp10_);
			_tmp12_ = _tmp11_;
			if (_tmp12_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			_tmp13_ = sig;
			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp13_)) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			if (connect) {
				ValaCCodeFunctionCall* connect_call = NULL;
				ValaCCodeIdentifier* _tmp14_;
				ValaCCodeIdentifier* _tmp15_;
				ValaCCodeFunctionCall* _tmp16_;
				ValaCCodeFunctionCall* _tmp17_;
				ValaCCodeFunctionCall* _tmp18_;
				ValaCCodeIdentifier* _tmp19_;
				ValaCCodeIdentifier* _tmp20_;
				ValaCCodeFunctionCall* _tmp21_;
				ValaSignal* _tmp22_;
				ValaCCodeConstant* _tmp23_;
				ValaCCodeConstant* _tmp24_;
				ValaCCodeFunctionCall* _tmp25_;
				ValaSignal* _tmp26_;
				const gchar* _tmp27_;
				gchar* _tmp28_;
				gchar* _tmp29_;
				ValaCCodeIdentifier* _tmp30_;
				ValaCCodeIdentifier* _tmp31_;
				ValaCCodeCastExpression* _tmp32_;
				ValaCCodeCastExpression* _tmp33_;
				ValaCCodeFunctionCall* _tmp34_;
				ValaCCodeIdentifier* _tmp35_;
				ValaCCodeIdentifier* _tmp36_;
				ValaCCodeFunction* _tmp37_;
				ValaCCodeFunction* _tmp38_;
				ValaCCodeFunctionCall* _tmp39_;
				_tmp14_ = vala_ccode_identifier_new ("g_signal_connect");
				_tmp15_ = _tmp14_;
				_tmp16_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp15_);
				_tmp17_ = _tmp16_;
				_vala_ccode_node_unref0 (_tmp15_);
				connect_call = _tmp17_;
				_tmp18_ = connect_call;
				_tmp19_ = vala_ccode_identifier_new ("object");
				_tmp20_ = _tmp19_;
				vala_ccode_function_call_add_argument (_tmp18_, (ValaCCodeExpression*) _tmp20_);
				_vala_ccode_node_unref0 (_tmp20_);
				_tmp21_ = connect_call;
				_tmp22_ = sig;
				_tmp23_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, _tmp22_, NULL);
				_tmp24_ = _tmp23_;
				vala_ccode_function_call_add_argument (_tmp21_, (ValaCCodeExpression*) _tmp24_);
				_vala_ccode_node_unref0 (_tmp24_);
				_tmp25_ = connect_call;
				_tmp26_ = sig;
				_tmp27_ = dbus_iface_name;
				_tmp28_ = vala_gd_bus_server_module_generate_dbus_signal_wrapper (self, _tmp26_, sym, _tmp27_);
				_tmp29_ = _tmp28_;
				_tmp30_ = vala_ccode_identifier_new (_tmp29_);
				_tmp31_ = _tmp30_;
				_tmp32_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp31_, "GCallback");
				_tmp33_ = _tmp32_;
				vala_ccode_function_call_add_argument (_tmp25_, (ValaCCodeExpression*) _tmp33_);
				_vala_ccode_node_unref0 (_tmp33_);
				_vala_ccode_node_unref0 (_tmp31_);
				_g_free0 (_tmp29_);
				_tmp34_ = connect_call;
				_tmp35_ = vala_ccode_identifier_new ("data");
				_tmp36_ = _tmp35_;
				vala_ccode_function_call_add_argument (_tmp34_, (ValaCCodeExpression*) _tmp36_);
				_vala_ccode_node_unref0 (_tmp36_);
				_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp38_ = _tmp37_;
				_tmp39_ = connect_call;
				vala_ccode_function_add_expression (_tmp38_, (ValaCCodeExpression*) _tmp39_);
				_vala_ccode_node_unref0 (connect_call);
			} else {
				ValaCCodeFunctionCall* disconnect_call = NULL;
				ValaCCodeIdentifier* _tmp40_;
				ValaCCodeIdentifier* _tmp41_;
				ValaCCodeFunctionCall* _tmp42_;
				ValaCCodeFunctionCall* _tmp43_;
				ValaCCodeFunctionCall* _tmp44_;
				ValaCCodeIdentifier* _tmp45_;
				ValaCCodeIdentifier* _tmp46_;
				ValaCCodeConstant* _tmp47_;
				ValaCCodeConstant* _tmp48_;
				ValaCCodeElementAccess* _tmp49_;
				ValaCCodeElementAccess* _tmp50_;
				ValaCCodeFunctionCall* _tmp51_;
				gchar* _tmp52_;
				gchar* _tmp53_;
				ValaSignal* _tmp54_;
				gchar* _tmp55_;
				gchar* _tmp56_;
				gchar* _tmp57_;
				gchar* _tmp58_;
				ValaCCodeIdentifier* _tmp59_;
				ValaCCodeIdentifier* _tmp60_;
				ValaCCodeFunctionCall* _tmp61_;
				ValaCCodeIdentifier* _tmp62_;
				ValaCCodeIdentifier* _tmp63_;
				ValaCCodeFunction* _tmp64_;
				ValaCCodeFunction* _tmp65_;
				ValaCCodeFunctionCall* _tmp66_;
				_tmp40_ = vala_ccode_identifier_new ("g_signal_handlers_disconnect_by_func");
				_tmp41_ = _tmp40_;
				_tmp42_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp41_);
				_tmp43_ = _tmp42_;
				_vala_ccode_node_unref0 (_tmp41_);
				disconnect_call = _tmp43_;
				_tmp44_ = disconnect_call;
				_tmp45_ = vala_ccode_identifier_new ("data");
				_tmp46_ = _tmp45_;
				_tmp47_ = vala_ccode_constant_new ("0");
				_tmp48_ = _tmp47_;
				_tmp49_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp46_, (ValaCCodeExpression*) _tmp48_);
				_tmp50_ = _tmp49_;
				vala_ccode_function_call_add_argument (_tmp44_, (ValaCCodeExpression*) _tmp50_);
				_vala_ccode_node_unref0 (_tmp50_);
				_vala_ccode_node_unref0 (_tmp48_);
				_vala_ccode_node_unref0 (_tmp46_);
				_tmp51_ = disconnect_call;
				_tmp52_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
				_tmp53_ = _tmp52_;
				_tmp54_ = sig;
				_tmp55_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp54_, NULL);
				_tmp56_ = _tmp55_;
				_tmp57_ = g_strdup_printf ("_dbus_%s_%s", _tmp53_, _tmp56_);
				_tmp58_ = _tmp57_;
				_tmp59_ = vala_ccode_identifier_new (_tmp58_);
				_tmp60_ = _tmp59_;
				vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp60_);
				_vala_ccode_node_unref0 (_tmp60_);
				_g_free0 (_tmp58_);
				_g_free0 (_tmp56_);
				_g_free0 (_tmp53_);
				_tmp61_ = disconnect_call;
				_tmp62_ = vala_ccode_identifier_new ("data");
				_tmp63_ = _tmp62_;
				vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp63_);
				_vala_ccode_node_unref0 (_tmp63_);
				_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp65_ = _tmp64_;
				_tmp66_ = disconnect_call;
				vala_ccode_function_add_expression (_tmp65_, (ValaCCodeExpression*) _tmp66_);
				_vala_ccode_node_unref0 (disconnect_call);
			}
			_vala_code_node_unref0 (sig);
		}
	}
	_g_free0 (dbus_iface_name);
}

static void
vala_gd_bus_server_module_generate_interface_method_call_function (ValaGDBusServerModule* self,
                                                                   ValaObjectTypeSymbol* sym)
{
	ValaCCodeFunction* cfunc = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeParameter* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	ValaCCodeParameter* _tmp22_;
	ValaCCodeParameter* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaCCodeParameter* _tmp25_;
	ValaCCodeParameter* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeParameter* _tmp28_;
	ValaCCodeParameter* _tmp29_;
	ValaCCodeFunction* _tmp30_;
	ValaCCodeFunction* _tmp31_;
	ValaCCodeModifiers _tmp32_;
	ValaCCodeModifiers _tmp33_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeIdentifier* _tmp37_;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeVariableDeclarator* _tmp39_;
	ValaCCodeVariableDeclarator* _tmp40_;
	ValaCCodeFunction* _tmp41_;
	ValaCCodeFunction* _tmp42_;
	ValaCCodeIdentifier* _tmp43_;
	ValaCCodeIdentifier* _tmp44_;
	ValaCCodeConstant* _tmp45_;
	ValaCCodeConstant* _tmp46_;
	ValaCCodeElementAccess* _tmp47_;
	ValaCCodeElementAccess* _tmp48_;
	ValaCCodeVariableDeclarator* _tmp49_;
	ValaCCodeVariableDeclarator* _tmp50_;
	gboolean first = FALSE;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp124_;
	ValaCCodeIdentifier* _tmp125_;
	ValaCCodeFunctionCall* _tmp126_;
	ValaCCodeFunctionCall* _tmp127_;
	ValaCCodeFunctionCall* _tmp128_;
	ValaCCodeIdentifier* _tmp129_;
	ValaCCodeIdentifier* _tmp130_;
	ValaCCodeFunction* _tmp131_;
	ValaCCodeFunction* _tmp132_;
	ValaCCodeFunctionCall* _tmp133_;
	ValaCCodeFile* _tmp136_;
	ValaCCodeFunction* _tmp137_;
	ValaCCodeFile* _tmp138_;
	ValaCCodeFunction* _tmp139_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strconcat (_tmp1_, "dbus_interface_method_call", NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	_g_free0 (_tmp1_);
	cfunc = _tmp5_;
	_tmp6_ = cfunc;
	_tmp7_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = cfunc;
	_tmp10_ = vala_ccode_parameter_new ("sender", "const gchar*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = cfunc;
	_tmp13_ = vala_ccode_parameter_new ("object_path", "const gchar*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = cfunc;
	_tmp16_ = vala_ccode_parameter_new ("interface_name", "const gchar*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = cfunc;
	_tmp19_ = vala_ccode_parameter_new ("method_name", "const gchar*");
	_tmp20_ = _tmp19_;
	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	_tmp21_ = cfunc;
	_tmp22_ = vala_ccode_parameter_new ("parameters", "GVariant*");
	_tmp23_ = _tmp22_;
	vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
	_vala_ccode_node_unref0 (_tmp23_);
	_tmp24_ = cfunc;
	_tmp25_ = vala_ccode_parameter_new ("invocation", "GDBusMethodInvocation*");
	_tmp26_ = _tmp25_;
	vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
	_vala_ccode_node_unref0 (_tmp26_);
	_tmp27_ = cfunc;
	_tmp28_ = vala_ccode_parameter_new ("user_data", "gpointer");
	_tmp29_ = _tmp28_;
	vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
	_vala_ccode_node_unref0 (_tmp29_);
	_tmp30_ = cfunc;
	_tmp31_ = cfunc;
	_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_STATIC);
	_tmp34_ = cfunc;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp34_);
	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_identifier_new ("user_data");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp38_, NULL);
	_tmp40_ = _tmp39_;
	vala_ccode_function_add_declaration (_tmp36_, "gpointer*", (ValaCCodeDeclarator*) _tmp40_, 0);
	_vala_ccode_node_unref0 (_tmp40_);
	_vala_ccode_node_unref0 (_tmp38_);
	_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp42_ = _tmp41_;
	_tmp43_ = vala_ccode_identifier_new ("data");
	_tmp44_ = _tmp43_;
	_tmp45_ = vala_ccode_constant_new ("0");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp44_, (ValaCCodeExpression*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) _tmp48_, NULL);
	_tmp50_ = _tmp49_;
	vala_ccode_function_add_declaration (_tmp42_, "gpointer", (ValaCCodeDeclarator*) _tmp50_, 0);
	_vala_ccode_node_unref0 (_tmp50_);
	_vala_ccode_node_unref0 (_tmp48_);
	_vala_ccode_node_unref0 (_tmp46_);
	_vala_ccode_node_unref0 (_tmp44_);
	first = TRUE;
	{
		ValaList* _m_list = NULL;
		ValaList* _tmp51_;
		gint _m_size = 0;
		ValaList* _tmp52_;
		gint _tmp53_;
		gint _tmp54_;
		gint _m_index = 0;
		_tmp51_ = vala_object_type_symbol_get_methods (sym);
		_m_list = _tmp51_;
		_tmp52_ = _m_list;
		_tmp53_ = vala_collection_get_size ((ValaCollection*) _tmp52_);
		_tmp54_ = _tmp53_;
		_m_size = _tmp54_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp55_;
			gint _tmp56_;
			ValaMethod* m = NULL;
			ValaList* _tmp57_;
			gpointer _tmp58_;
			gboolean _tmp59_ = FALSE;
			gboolean _tmp60_ = FALSE;
			gboolean _tmp61_ = FALSE;
			ValaMethod* _tmp62_;
			ValaMethod* _tmp72_;
			ValaCCodeFile* _tmp73_;
			ValaCCodeFunctionCall* ccheck = NULL;
			ValaCCodeIdentifier* _tmp74_;
			ValaCCodeIdentifier* _tmp75_;
			ValaCCodeFunctionCall* _tmp76_;
			ValaCCodeFunctionCall* _tmp77_;
			ValaCCodeFunctionCall* _tmp78_;
			ValaCCodeIdentifier* _tmp79_;
			ValaCCodeIdentifier* _tmp80_;
			ValaCCodeFunctionCall* _tmp81_;
			ValaMethod* _tmp82_;
			gchar* _tmp83_;
			gchar* _tmp84_;
			gchar* _tmp85_;
			gchar* _tmp86_;
			ValaCCodeConstant* _tmp87_;
			ValaCCodeConstant* _tmp88_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaMethod* _tmp103_;
			gchar* _tmp104_;
			gchar* _tmp105_;
			ValaCCodeIdentifier* _tmp106_;
			ValaCCodeIdentifier* _tmp107_;
			ValaCCodeFunctionCall* _tmp108_;
			ValaCCodeFunctionCall* _tmp109_;
			ValaCCodeFunctionCall* _tmp110_;
			ValaCCodeIdentifier* _tmp111_;
			ValaCCodeIdentifier* _tmp112_;
			ValaCCodeFunctionCall* _tmp113_;
			ValaCCodeIdentifier* _tmp114_;
			ValaCCodeIdentifier* _tmp115_;
			ValaCCodeFunctionCall* _tmp116_;
			ValaCCodeIdentifier* _tmp117_;
			ValaCCodeIdentifier* _tmp118_;
			ValaCCodeFunction* _tmp119_;
			ValaCCodeFunction* _tmp120_;
			ValaCCodeFunctionCall* _tmp121_;
			_m_index = _m_index + 1;
			_tmp55_ = _m_index;
			_tmp56_ = _m_size;
			if (!(_tmp55_ < _tmp56_)) {
				break;
			}
			_tmp57_ = _m_list;
			_tmp58_ = vala_list_get (_tmp57_, _m_index);
			m = (ValaMethod*) _tmp58_;
			_tmp62_ = m;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp62_, VALA_TYPE_CREATION_METHOD)) {
				_tmp61_ = TRUE;
			} else {
				ValaMethod* _tmp63_;
				ValaMemberBinding _tmp64_;
				ValaMemberBinding _tmp65_;
				_tmp63_ = m;
				_tmp64_ = vala_method_get_binding (_tmp63_);
				_tmp65_ = _tmp64_;
				_tmp61_ = _tmp65_ != VALA_MEMBER_BINDING_INSTANCE;
			}
			if (_tmp61_) {
				_tmp60_ = TRUE;
			} else {
				ValaMethod* _tmp66_;
				gboolean _tmp67_;
				gboolean _tmp68_;
				_tmp66_ = m;
				_tmp67_ = vala_method_get_overrides (_tmp66_);
				_tmp68_ = _tmp67_;
				_tmp60_ = _tmp68_;
			}
			if (_tmp60_) {
				_tmp59_ = TRUE;
			} else {
				ValaMethod* _tmp69_;
				ValaSymbolAccessibility _tmp70_;
				ValaSymbolAccessibility _tmp71_;
				_tmp69_ = m;
				_tmp70_ = vala_symbol_get_access ((ValaSymbol*) _tmp69_);
				_tmp71_ = _tmp70_;
				_tmp59_ = _tmp71_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
			}
			if (_tmp59_) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp72_ = m;
			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp72_)) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp73_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_file_add_include (_tmp73_, "string.h", FALSE);
			_tmp74_ = vala_ccode_identifier_new ("strcmp");
			_tmp75_ = _tmp74_;
			_tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
			_tmp77_ = _tmp76_;
			_vala_ccode_node_unref0 (_tmp75_);
			ccheck = _tmp77_;
			_tmp78_ = ccheck;
			_tmp79_ = vala_ccode_identifier_new ("method_name");
			_tmp80_ = _tmp79_;
			vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp80_);
			_vala_ccode_node_unref0 (_tmp80_);
			_tmp81_ = ccheck;
			_tmp82_ = m;
			_tmp83_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp82_);
			_tmp84_ = _tmp83_;
			_tmp85_ = g_strdup_printf ("\"%s\"", _tmp84_);
			_tmp86_ = _tmp85_;
			_tmp87_ = vala_ccode_constant_new (_tmp86_);
			_tmp88_ = _tmp87_;
			vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp88_);
			_vala_ccode_node_unref0 (_tmp88_);
			_g_free0 (_tmp86_);
			_g_free0 (_tmp84_);
			if (first) {
				ValaCCodeFunction* _tmp89_;
				ValaCCodeFunction* _tmp90_;
				ValaCCodeFunctionCall* _tmp91_;
				ValaCCodeConstant* _tmp92_;
				ValaCCodeConstant* _tmp93_;
				ValaCCodeBinaryExpression* _tmp94_;
				ValaCCodeBinaryExpression* _tmp95_;
				_tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp90_ = _tmp89_;
				_tmp91_ = ccheck;
				_tmp92_ = vala_ccode_constant_new ("0");
				_tmp93_ = _tmp92_;
				_tmp94_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp91_, (ValaCCodeExpression*) _tmp93_);
				_tmp95_ = _tmp94_;
				vala_ccode_function_open_if (_tmp90_, (ValaCCodeExpression*) _tmp95_);
				_vala_ccode_node_unref0 (_tmp95_);
				_vala_ccode_node_unref0 (_tmp93_);
				first = FALSE;
			} else {
				ValaCCodeFunction* _tmp96_;
				ValaCCodeFunction* _tmp97_;
				ValaCCodeFunctionCall* _tmp98_;
				ValaCCodeConstant* _tmp99_;
				ValaCCodeConstant* _tmp100_;
				ValaCCodeBinaryExpression* _tmp101_;
				ValaCCodeBinaryExpression* _tmp102_;
				_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp97_ = _tmp96_;
				_tmp98_ = ccheck;
				_tmp99_ = vala_ccode_constant_new ("0");
				_tmp100_ = _tmp99_;
				_tmp101_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp98_, (ValaCCodeExpression*) _tmp100_);
				_tmp102_ = _tmp101_;
				vala_ccode_function_else_if (_tmp97_, (ValaCCodeExpression*) _tmp102_);
				_vala_ccode_node_unref0 (_tmp102_);
				_vala_ccode_node_unref0 (_tmp100_);
			}
			_tmp103_ = m;
			_tmp104_ = vala_gd_bus_server_module_generate_dbus_wrapper (self, _tmp103_, sym, FALSE);
			_tmp105_ = _tmp104_;
			_tmp106_ = vala_ccode_identifier_new (_tmp105_);
			_tmp107_ = _tmp106_;
			_tmp108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp107_);
			_tmp109_ = _tmp108_;
			_vala_ccode_node_unref0 (_tmp107_);
			_g_free0 (_tmp105_);
			ccall = _tmp109_;
			_tmp110_ = ccall;
			_tmp111_ = vala_ccode_identifier_new ("object");
			_tmp112_ = _tmp111_;
			vala_ccode_function_call_add_argument (_tmp110_, (ValaCCodeExpression*) _tmp112_);
			_vala_ccode_node_unref0 (_tmp112_);
			_tmp113_ = ccall;
			_tmp114_ = vala_ccode_identifier_new ("parameters");
			_tmp115_ = _tmp114_;
			vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp115_);
			_vala_ccode_node_unref0 (_tmp115_);
			_tmp116_ = ccall;
			_tmp117_ = vala_ccode_identifier_new ("invocation");
			_tmp118_ = _tmp117_;
			vala_ccode_function_call_add_argument (_tmp116_, (ValaCCodeExpression*) _tmp118_);
			_vala_ccode_node_unref0 (_tmp118_);
			_tmp119_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp120_ = _tmp119_;
			_tmp121_ = ccall;
			vala_ccode_function_add_expression (_tmp120_, (ValaCCodeExpression*) _tmp121_);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (ccheck);
			_vala_code_node_unref0 (m);
		}
	}
	if (!first) {
		ValaCCodeFunction* _tmp122_;
		ValaCCodeFunction* _tmp123_;
		_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp123_ = _tmp122_;
		vala_ccode_function_add_else (_tmp123_);
	}
	_tmp124_ = vala_ccode_identifier_new ("g_object_unref");
	_tmp125_ = _tmp124_;
	_tmp126_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp125_);
	_tmp127_ = _tmp126_;
	_vala_ccode_node_unref0 (_tmp125_);
	ccall = _tmp127_;
	_tmp128_ = ccall;
	_tmp129_ = vala_ccode_identifier_new ("invocation");
	_tmp130_ = _tmp129_;
	vala_ccode_function_call_add_argument (_tmp128_, (ValaCCodeExpression*) _tmp130_);
	_vala_ccode_node_unref0 (_tmp130_);
	_tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp132_ = _tmp131_;
	_tmp133_ = ccall;
	vala_ccode_function_add_expression (_tmp132_, (ValaCCodeExpression*) _tmp133_);
	if (!first) {
		ValaCCodeFunction* _tmp134_;
		ValaCCodeFunction* _tmp135_;
		_tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp135_ = _tmp134_;
		vala_ccode_function_close (_tmp135_);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp136_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp137_ = cfunc;
	vala_ccode_file_add_function_declaration (_tmp136_, _tmp137_);
	_tmp138_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp139_ = cfunc;
	vala_ccode_file_add_function (_tmp138_, _tmp139_);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (cfunc);
}

static void
vala_gd_bus_server_module_generate_interface_get_property_function (ValaGDBusServerModule* self,
                                                                    ValaObjectTypeSymbol* sym)
{
	ValaCCodeFunction* cfunc = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeParameter* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	ValaCCodeParameter* _tmp22_;
	ValaCCodeParameter* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaCCodeParameter* _tmp25_;
	ValaCCodeParameter* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeFunction* _tmp28_;
	ValaCCodeModifiers _tmp29_;
	ValaCCodeModifiers _tmp30_;
	ValaCCodeFile* _tmp31_;
	ValaCCodeFunction* _tmp32_;
	ValaCCodeFunction* _tmp33_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeIdentifier* _tmp36_;
	ValaCCodeIdentifier* _tmp37_;
	ValaCCodeVariableDeclarator* _tmp38_;
	ValaCCodeVariableDeclarator* _tmp39_;
	ValaCCodeFunction* _tmp40_;
	ValaCCodeFunction* _tmp41_;
	ValaCCodeIdentifier* _tmp42_;
	ValaCCodeIdentifier* _tmp43_;
	ValaCCodeConstant* _tmp44_;
	ValaCCodeConstant* _tmp45_;
	ValaCCodeElementAccess* _tmp46_;
	ValaCCodeElementAccess* _tmp47_;
	ValaCCodeVariableDeclarator* _tmp48_;
	ValaCCodeVariableDeclarator* _tmp49_;
	gboolean firstif = FALSE;
	ValaCCodeFunction* _tmp115_;
	ValaCCodeFunction* _tmp116_;
	ValaCCodeConstant* _tmp117_;
	ValaCCodeConstant* _tmp118_;
	ValaCCodeFile* _tmp119_;
	ValaCCodeFunction* _tmp120_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strconcat (_tmp1_, "dbus_interface_get_property", NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_function_new (_tmp3_, "GVariant*");
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	_g_free0 (_tmp1_);
	cfunc = _tmp5_;
	_tmp6_ = cfunc;
	_tmp7_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = cfunc;
	_tmp10_ = vala_ccode_parameter_new ("sender", "const gchar*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = cfunc;
	_tmp13_ = vala_ccode_parameter_new ("object_path", "const gchar*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = cfunc;
	_tmp16_ = vala_ccode_parameter_new ("interface_name", "const gchar*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = cfunc;
	_tmp19_ = vala_ccode_parameter_new ("property_name", "const gchar*");
	_tmp20_ = _tmp19_;
	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	_tmp21_ = cfunc;
	_tmp22_ = vala_ccode_parameter_new ("error", "GError**");
	_tmp23_ = _tmp22_;
	vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
	_vala_ccode_node_unref0 (_tmp23_);
	_tmp24_ = cfunc;
	_tmp25_ = vala_ccode_parameter_new ("user_data", "gpointer");
	_tmp26_ = _tmp25_;
	vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
	_vala_ccode_node_unref0 (_tmp26_);
	_tmp27_ = cfunc;
	_tmp28_ = cfunc;
	_tmp29_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp28_);
	_tmp30_ = _tmp29_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp28_, _tmp30_ | VALA_CCODE_MODIFIERS_STATIC);
	_tmp31_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp32_ = cfunc;
	vala_ccode_file_add_function_declaration (_tmp31_, _tmp32_);
	_tmp33_ = cfunc;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
	_tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_identifier_new ("user_data");
	_tmp37_ = _tmp36_;
	_tmp38_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp37_, NULL);
	_tmp39_ = _tmp38_;
	vala_ccode_function_add_declaration (_tmp35_, "gpointer*", (ValaCCodeDeclarator*) _tmp39_, 0);
	_vala_ccode_node_unref0 (_tmp39_);
	_vala_ccode_node_unref0 (_tmp37_);
	_tmp40_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp41_ = _tmp40_;
	_tmp42_ = vala_ccode_identifier_new ("data");
	_tmp43_ = _tmp42_;
	_tmp44_ = vala_ccode_constant_new ("0");
	_tmp45_ = _tmp44_;
	_tmp46_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp43_, (ValaCCodeExpression*) _tmp45_);
	_tmp47_ = _tmp46_;
	_tmp48_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) _tmp47_, NULL);
	_tmp49_ = _tmp48_;
	vala_ccode_function_add_declaration (_tmp41_, "gpointer", (ValaCCodeDeclarator*) _tmp49_, 0);
	_vala_ccode_node_unref0 (_tmp49_);
	_vala_ccode_node_unref0 (_tmp47_);
	_vala_ccode_node_unref0 (_tmp45_);
	_vala_ccode_node_unref0 (_tmp43_);
	firstif = TRUE;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp50_;
		gint _prop_size = 0;
		ValaList* _tmp51_;
		gint _tmp52_;
		gint _tmp53_;
		gint _prop_index = 0;
		_tmp50_ = vala_object_type_symbol_get_properties (sym);
		_prop_list = _tmp50_;
		_tmp51_ = _prop_list;
		_tmp52_ = vala_collection_get_size ((ValaCollection*) _tmp51_);
		_tmp53_ = _tmp52_;
		_prop_size = _tmp53_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp54_;
			gint _tmp55_;
			ValaProperty* prop = NULL;
			ValaList* _tmp56_;
			gpointer _tmp57_;
			gboolean _tmp58_ = FALSE;
			gboolean _tmp59_ = FALSE;
			ValaProperty* _tmp60_;
			ValaMemberBinding _tmp61_;
			ValaMemberBinding _tmp62_;
			ValaProperty* _tmp69_;
			ValaProperty* _tmp70_;
			ValaPropertyAccessor* _tmp71_;
			ValaPropertyAccessor* _tmp72_;
			ValaCCodeFile* _tmp73_;
			ValaCCodeFunctionCall* ccheck = NULL;
			ValaCCodeIdentifier* _tmp74_;
			ValaCCodeIdentifier* _tmp75_;
			ValaCCodeFunctionCall* _tmp76_;
			ValaCCodeFunctionCall* _tmp77_;
			ValaCCodeFunctionCall* _tmp78_;
			ValaCCodeIdentifier* _tmp79_;
			ValaCCodeIdentifier* _tmp80_;
			ValaCCodeFunctionCall* _tmp81_;
			ValaProperty* _tmp82_;
			gchar* _tmp83_;
			gchar* _tmp84_;
			gchar* _tmp85_;
			gchar* _tmp86_;
			ValaCCodeConstant* _tmp87_;
			ValaCCodeConstant* _tmp88_;
			ValaCCodeBinaryExpression* cond = NULL;
			ValaCCodeFunctionCall* _tmp89_;
			ValaCCodeConstant* _tmp90_;
			ValaCCodeConstant* _tmp91_;
			ValaCCodeBinaryExpression* _tmp92_;
			ValaCCodeBinaryExpression* _tmp93_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaProperty* _tmp100_;
			gchar* _tmp101_;
			gchar* _tmp102_;
			ValaCCodeIdentifier* _tmp103_;
			ValaCCodeIdentifier* _tmp104_;
			ValaCCodeFunctionCall* _tmp105_;
			ValaCCodeFunctionCall* _tmp106_;
			ValaCCodeFunctionCall* _tmp107_;
			ValaCCodeIdentifier* _tmp108_;
			ValaCCodeIdentifier* _tmp109_;
			ValaCCodeFunction* _tmp110_;
			ValaCCodeFunction* _tmp111_;
			ValaCCodeFunctionCall* _tmp112_;
			_prop_index = _prop_index + 1;
			_tmp54_ = _prop_index;
			_tmp55_ = _prop_size;
			if (!(_tmp54_ < _tmp55_)) {
				break;
			}
			_tmp56_ = _prop_list;
			_tmp57_ = vala_list_get (_tmp56_, _prop_index);
			prop = (ValaProperty*) _tmp57_;
			_tmp60_ = prop;
			_tmp61_ = vala_property_get_binding (_tmp60_);
			_tmp62_ = _tmp61_;
			if (_tmp62_ != VALA_MEMBER_BINDING_INSTANCE) {
				_tmp59_ = TRUE;
			} else {
				ValaProperty* _tmp63_;
				gboolean _tmp64_;
				gboolean _tmp65_;
				_tmp63_ = prop;
				_tmp64_ = vala_property_get_overrides (_tmp63_);
				_tmp65_ = _tmp64_;
				_tmp59_ = _tmp65_;
			}
			if (_tmp59_) {
				_tmp58_ = TRUE;
			} else {
				ValaProperty* _tmp66_;
				ValaSymbolAccessibility _tmp67_;
				ValaSymbolAccessibility _tmp68_;
				_tmp66_ = prop;
				_tmp67_ = vala_symbol_get_access ((ValaSymbol*) _tmp66_);
				_tmp68_ = _tmp67_;
				_tmp58_ = _tmp68_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
			}
			if (_tmp58_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp69_ = prop;
			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp69_)) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp70_ = prop;
			_tmp71_ = vala_property_get_get_accessor (_tmp70_);
			_tmp72_ = _tmp71_;
			if (_tmp72_ == NULL) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp73_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_file_add_include (_tmp73_, "string.h", FALSE);
			_tmp74_ = vala_ccode_identifier_new ("strcmp");
			_tmp75_ = _tmp74_;
			_tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
			_tmp77_ = _tmp76_;
			_vala_ccode_node_unref0 (_tmp75_);
			ccheck = _tmp77_;
			_tmp78_ = ccheck;
			_tmp79_ = vala_ccode_identifier_new ("property_name");
			_tmp80_ = _tmp79_;
			vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp80_);
			_vala_ccode_node_unref0 (_tmp80_);
			_tmp81_ = ccheck;
			_tmp82_ = prop;
			_tmp83_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp82_);
			_tmp84_ = _tmp83_;
			_tmp85_ = g_strdup_printf ("\"%s\"", _tmp84_);
			_tmp86_ = _tmp85_;
			_tmp87_ = vala_ccode_constant_new (_tmp86_);
			_tmp88_ = _tmp87_;
			vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp88_);
			_vala_ccode_node_unref0 (_tmp88_);
			_g_free0 (_tmp86_);
			_g_free0 (_tmp84_);
			_tmp89_ = ccheck;
			_tmp90_ = vala_ccode_constant_new ("0");
			_tmp91_ = _tmp90_;
			_tmp92_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp89_, (ValaCCodeExpression*) _tmp91_);
			_tmp93_ = _tmp92_;
			_vala_ccode_node_unref0 (_tmp91_);
			cond = _tmp93_;
			if (firstif) {
				ValaCCodeFunction* _tmp94_;
				ValaCCodeFunction* _tmp95_;
				ValaCCodeBinaryExpression* _tmp96_;
				_tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp95_ = _tmp94_;
				_tmp96_ = cond;
				vala_ccode_function_open_if (_tmp95_, (ValaCCodeExpression*) _tmp96_);
				firstif = FALSE;
			} else {
				ValaCCodeFunction* _tmp97_;
				ValaCCodeFunction* _tmp98_;
				ValaCCodeBinaryExpression* _tmp99_;
				_tmp97_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp98_ = _tmp97_;
				_tmp99_ = cond;
				vala_ccode_function_else_if (_tmp98_, (ValaCCodeExpression*) _tmp99_);
			}
			_tmp100_ = prop;
			_tmp101_ = vala_gd_bus_server_module_generate_dbus_property_get_wrapper (self, _tmp100_, sym);
			_tmp102_ = _tmp101_;
			_tmp103_ = vala_ccode_identifier_new (_tmp102_);
			_tmp104_ = _tmp103_;
			_tmp105_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp104_);
			_tmp106_ = _tmp105_;
			_vala_ccode_node_unref0 (_tmp104_);
			_g_free0 (_tmp102_);
			ccall = _tmp106_;
			_tmp107_ = ccall;
			_tmp108_ = vala_ccode_identifier_new ("object");
			_tmp109_ = _tmp108_;
			vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) _tmp109_);
			_vala_ccode_node_unref0 (_tmp109_);
			_tmp110_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp111_ = _tmp110_;
			_tmp112_ = ccall;
			vala_ccode_function_add_return (_tmp111_, (ValaCCodeExpression*) _tmp112_);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (cond);
			_vala_ccode_node_unref0 (ccheck);
			_vala_code_node_unref0 (prop);
		}
	}
	if (!firstif) {
		ValaCCodeFunction* _tmp113_;
		ValaCCodeFunction* _tmp114_;
		_tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp114_ = _tmp113_;
		vala_ccode_function_close (_tmp114_);
	}
	_tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp116_ = _tmp115_;
	_tmp117_ = vala_ccode_constant_new ("NULL");
	_tmp118_ = _tmp117_;
	vala_ccode_function_add_return (_tmp116_, (ValaCCodeExpression*) _tmp118_);
	_vala_ccode_node_unref0 (_tmp118_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp119_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp120_ = cfunc;
	vala_ccode_file_add_function (_tmp119_, _tmp120_);
	_vala_ccode_node_unref0 (cfunc);
}

static void
vala_gd_bus_server_module_generate_interface_set_property_function (ValaGDBusServerModule* self,
                                                                    ValaObjectTypeSymbol* sym)
{
	ValaCCodeFunction* cfunc = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeParameter* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	ValaCCodeParameter* _tmp22_;
	ValaCCodeParameter* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaCCodeParameter* _tmp25_;
	ValaCCodeParameter* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeParameter* _tmp28_;
	ValaCCodeParameter* _tmp29_;
	ValaCCodeFunction* _tmp30_;
	ValaCCodeFunction* _tmp31_;
	ValaCCodeModifiers _tmp32_;
	ValaCCodeModifiers _tmp33_;
	ValaCCodeFile* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeFunction* _tmp37_;
	ValaCCodeFunction* _tmp38_;
	ValaCCodeIdentifier* _tmp39_;
	ValaCCodeIdentifier* _tmp40_;
	ValaCCodeVariableDeclarator* _tmp41_;
	ValaCCodeVariableDeclarator* _tmp42_;
	ValaCCodeFunction* _tmp43_;
	ValaCCodeFunction* _tmp44_;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeIdentifier* _tmp46_;
	ValaCCodeConstant* _tmp47_;
	ValaCCodeConstant* _tmp48_;
	ValaCCodeElementAccess* _tmp49_;
	ValaCCodeElementAccess* _tmp50_;
	ValaCCodeVariableDeclarator* _tmp51_;
	ValaCCodeVariableDeclarator* _tmp52_;
	gboolean firstif = FALSE;
	ValaCCodeFunction* _tmp125_;
	ValaCCodeFunction* _tmp126_;
	ValaCCodeConstant* _tmp127_;
	ValaCCodeConstant* _tmp128_;
	ValaCCodeFile* _tmp129_;
	ValaCCodeFunction* _tmp130_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strconcat (_tmp1_, "dbus_interface_set_property", NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_function_new (_tmp3_, "gboolean");
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	_g_free0 (_tmp1_);
	cfunc = _tmp5_;
	_tmp6_ = cfunc;
	_tmp7_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = cfunc;
	_tmp10_ = vala_ccode_parameter_new ("sender", "const gchar*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = cfunc;
	_tmp13_ = vala_ccode_parameter_new ("object_path", "const gchar*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = cfunc;
	_tmp16_ = vala_ccode_parameter_new ("interface_name", "const gchar*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = cfunc;
	_tmp19_ = vala_ccode_parameter_new ("property_name", "const gchar*");
	_tmp20_ = _tmp19_;
	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	_tmp21_ = cfunc;
	_tmp22_ = vala_ccode_parameter_new ("value", "GVariant*");
	_tmp23_ = _tmp22_;
	vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
	_vala_ccode_node_unref0 (_tmp23_);
	_tmp24_ = cfunc;
	_tmp25_ = vala_ccode_parameter_new ("error", "GError**");
	_tmp26_ = _tmp25_;
	vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
	_vala_ccode_node_unref0 (_tmp26_);
	_tmp27_ = cfunc;
	_tmp28_ = vala_ccode_parameter_new ("user_data", "gpointer");
	_tmp29_ = _tmp28_;
	vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
	_vala_ccode_node_unref0 (_tmp29_);
	_tmp30_ = cfunc;
	_tmp31_ = cfunc;
	_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_STATIC);
	_tmp34_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp35_ = cfunc;
	vala_ccode_file_add_function_declaration (_tmp34_, _tmp35_);
	_tmp36_ = cfunc;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp36_);
	_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_identifier_new ("user_data");
	_tmp40_ = _tmp39_;
	_tmp41_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp40_, NULL);
	_tmp42_ = _tmp41_;
	vala_ccode_function_add_declaration (_tmp38_, "gpointer*", (ValaCCodeDeclarator*) _tmp42_, 0);
	_vala_ccode_node_unref0 (_tmp42_);
	_vala_ccode_node_unref0 (_tmp40_);
	_tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp44_ = _tmp43_;
	_tmp45_ = vala_ccode_identifier_new ("data");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_constant_new ("0");
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp46_, (ValaCCodeExpression*) _tmp48_);
	_tmp50_ = _tmp49_;
	_tmp51_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) _tmp50_, NULL);
	_tmp52_ = _tmp51_;
	vala_ccode_function_add_declaration (_tmp44_, "gpointer", (ValaCCodeDeclarator*) _tmp52_, 0);
	_vala_ccode_node_unref0 (_tmp52_);
	_vala_ccode_node_unref0 (_tmp50_);
	_vala_ccode_node_unref0 (_tmp48_);
	_vala_ccode_node_unref0 (_tmp46_);
	firstif = TRUE;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp53_;
		gint _prop_size = 0;
		ValaList* _tmp54_;
		gint _tmp55_;
		gint _tmp56_;
		gint _prop_index = 0;
		_tmp53_ = vala_object_type_symbol_get_properties (sym);
		_prop_list = _tmp53_;
		_tmp54_ = _prop_list;
		_tmp55_ = vala_collection_get_size ((ValaCollection*) _tmp54_);
		_tmp56_ = _tmp55_;
		_prop_size = _tmp56_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp57_;
			gint _tmp58_;
			ValaProperty* prop = NULL;
			ValaList* _tmp59_;
			gpointer _tmp60_;
			gboolean _tmp61_ = FALSE;
			gboolean _tmp62_ = FALSE;
			ValaProperty* _tmp63_;
			ValaMemberBinding _tmp64_;
			ValaMemberBinding _tmp65_;
			ValaProperty* _tmp72_;
			ValaProperty* _tmp73_;
			ValaPropertyAccessor* _tmp74_;
			ValaPropertyAccessor* _tmp75_;
			ValaCCodeFile* _tmp76_;
			ValaCCodeFunctionCall* ccheck = NULL;
			ValaCCodeIdentifier* _tmp77_;
			ValaCCodeIdentifier* _tmp78_;
			ValaCCodeFunctionCall* _tmp79_;
			ValaCCodeFunctionCall* _tmp80_;
			ValaCCodeFunctionCall* _tmp81_;
			ValaCCodeIdentifier* _tmp82_;
			ValaCCodeIdentifier* _tmp83_;
			ValaCCodeFunctionCall* _tmp84_;
			ValaProperty* _tmp85_;
			gchar* _tmp86_;
			gchar* _tmp87_;
			gchar* _tmp88_;
			gchar* _tmp89_;
			ValaCCodeConstant* _tmp90_;
			ValaCCodeConstant* _tmp91_;
			ValaCCodeBinaryExpression* cond = NULL;
			ValaCCodeFunctionCall* _tmp92_;
			ValaCCodeConstant* _tmp93_;
			ValaCCodeConstant* _tmp94_;
			ValaCCodeBinaryExpression* _tmp95_;
			ValaCCodeBinaryExpression* _tmp96_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaProperty* _tmp103_;
			gchar* _tmp104_;
			gchar* _tmp105_;
			ValaCCodeIdentifier* _tmp106_;
			ValaCCodeIdentifier* _tmp107_;
			ValaCCodeFunctionCall* _tmp108_;
			ValaCCodeFunctionCall* _tmp109_;
			ValaCCodeFunctionCall* _tmp110_;
			ValaCCodeIdentifier* _tmp111_;
			ValaCCodeIdentifier* _tmp112_;
			ValaCCodeFunctionCall* _tmp113_;
			ValaCCodeIdentifier* _tmp114_;
			ValaCCodeIdentifier* _tmp115_;
			ValaCCodeFunction* _tmp116_;
			ValaCCodeFunction* _tmp117_;
			ValaCCodeFunctionCall* _tmp118_;
			ValaCCodeFunction* _tmp119_;
			ValaCCodeFunction* _tmp120_;
			ValaCCodeConstant* _tmp121_;
			ValaCCodeConstant* _tmp122_;
			_prop_index = _prop_index + 1;
			_tmp57_ = _prop_index;
			_tmp58_ = _prop_size;
			if (!(_tmp57_ < _tmp58_)) {
				break;
			}
			_tmp59_ = _prop_list;
			_tmp60_ = vala_list_get (_tmp59_, _prop_index);
			prop = (ValaProperty*) _tmp60_;
			_tmp63_ = prop;
			_tmp64_ = vala_property_get_binding (_tmp63_);
			_tmp65_ = _tmp64_;
			if (_tmp65_ != VALA_MEMBER_BINDING_INSTANCE) {
				_tmp62_ = TRUE;
			} else {
				ValaProperty* _tmp66_;
				gboolean _tmp67_;
				gboolean _tmp68_;
				_tmp66_ = prop;
				_tmp67_ = vala_property_get_overrides (_tmp66_);
				_tmp68_ = _tmp67_;
				_tmp62_ = _tmp68_;
			}
			if (_tmp62_) {
				_tmp61_ = TRUE;
			} else {
				ValaProperty* _tmp69_;
				ValaSymbolAccessibility _tmp70_;
				ValaSymbolAccessibility _tmp71_;
				_tmp69_ = prop;
				_tmp70_ = vala_symbol_get_access ((ValaSymbol*) _tmp69_);
				_tmp71_ = _tmp70_;
				_tmp61_ = _tmp71_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
			}
			if (_tmp61_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp72_ = prop;
			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp72_)) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp73_ = prop;
			_tmp74_ = vala_property_get_set_accessor (_tmp73_);
			_tmp75_ = _tmp74_;
			if (_tmp75_ == NULL) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp76_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_file_add_include (_tmp76_, "string.h", FALSE);
			_tmp77_ = vala_ccode_identifier_new ("strcmp");
			_tmp78_ = _tmp77_;
			_tmp79_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp78_);
			_tmp80_ = _tmp79_;
			_vala_ccode_node_unref0 (_tmp78_);
			ccheck = _tmp80_;
			_tmp81_ = ccheck;
			_tmp82_ = vala_ccode_identifier_new ("property_name");
			_tmp83_ = _tmp82_;
			vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp83_);
			_vala_ccode_node_unref0 (_tmp83_);
			_tmp84_ = ccheck;
			_tmp85_ = prop;
			_tmp86_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp85_);
			_tmp87_ = _tmp86_;
			_tmp88_ = g_strdup_printf ("\"%s\"", _tmp87_);
			_tmp89_ = _tmp88_;
			_tmp90_ = vala_ccode_constant_new (_tmp89_);
			_tmp91_ = _tmp90_;
			vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp91_);
			_vala_ccode_node_unref0 (_tmp91_);
			_g_free0 (_tmp89_);
			_g_free0 (_tmp87_);
			_tmp92_ = ccheck;
			_tmp93_ = vala_ccode_constant_new ("0");
			_tmp94_ = _tmp93_;
			_tmp95_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp94_);
			_tmp96_ = _tmp95_;
			_vala_ccode_node_unref0 (_tmp94_);
			cond = _tmp96_;
			if (firstif) {
				ValaCCodeFunction* _tmp97_;
				ValaCCodeFunction* _tmp98_;
				ValaCCodeBinaryExpression* _tmp99_;
				_tmp97_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp98_ = _tmp97_;
				_tmp99_ = cond;
				vala_ccode_function_open_if (_tmp98_, (ValaCCodeExpression*) _tmp99_);
				firstif = FALSE;
			} else {
				ValaCCodeFunction* _tmp100_;
				ValaCCodeFunction* _tmp101_;
				ValaCCodeBinaryExpression* _tmp102_;
				_tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp101_ = _tmp100_;
				_tmp102_ = cond;
				vala_ccode_function_else_if (_tmp101_, (ValaCCodeExpression*) _tmp102_);
			}
			_tmp103_ = prop;
			_tmp104_ = vala_gd_bus_server_module_generate_dbus_property_set_wrapper (self, _tmp103_, sym);
			_tmp105_ = _tmp104_;
			_tmp106_ = vala_ccode_identifier_new (_tmp105_);
			_tmp107_ = _tmp106_;
			_tmp108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp107_);
			_tmp109_ = _tmp108_;
			_vala_ccode_node_unref0 (_tmp107_);
			_g_free0 (_tmp105_);
			ccall = _tmp109_;
			_tmp110_ = ccall;
			_tmp111_ = vala_ccode_identifier_new ("object");
			_tmp112_ = _tmp111_;
			vala_ccode_function_call_add_argument (_tmp110_, (ValaCCodeExpression*) _tmp112_);
			_vala_ccode_node_unref0 (_tmp112_);
			_tmp113_ = ccall;
			_tmp114_ = vala_ccode_identifier_new ("value");
			_tmp115_ = _tmp114_;
			vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp115_);
			_vala_ccode_node_unref0 (_tmp115_);
			_tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp117_ = _tmp116_;
			_tmp118_ = ccall;
			vala_ccode_function_add_expression (_tmp117_, (ValaCCodeExpression*) _tmp118_);
			_tmp119_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp120_ = _tmp119_;
			_tmp121_ = vala_ccode_constant_new ("TRUE");
			_tmp122_ = _tmp121_;
			vala_ccode_function_add_return (_tmp120_, (ValaCCodeExpression*) _tmp122_);
			_vala_ccode_node_unref0 (_tmp122_);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (cond);
			_vala_ccode_node_unref0 (ccheck);
			_vala_code_node_unref0 (prop);
		}
	}
	if (!firstif) {
		ValaCCodeFunction* _tmp123_;
		ValaCCodeFunction* _tmp124_;
		_tmp123_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp124_ = _tmp123_;
		vala_ccode_function_close (_tmp124_);
	}
	_tmp125_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp126_ = _tmp125_;
	_tmp127_ = vala_ccode_constant_new ("FALSE");
	_tmp128_ = _tmp127_;
	vala_ccode_function_add_return (_tmp126_, (ValaCCodeExpression*) _tmp128_);
	_vala_ccode_node_unref0 (_tmp128_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp129_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp130_ = cfunc;
	vala_ccode_file_add_function (_tmp129_, _tmp130_);
	_vala_ccode_node_unref0 (cfunc);
}

static ValaCCodeExpression*
vala_gd_bus_server_module_get_interface_vtable (ValaGDBusServerModule* self,
                                                ValaObjectTypeSymbol* sym)
{
	ValaCCodeInitializerList* vtable = NULL;
	ValaCCodeInitializerList* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeIdentifier* _tmp5_;
	ValaCCodeIdentifier* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	ValaCCodeIdentifier* _tmp11_;
	ValaCCodeIdentifier* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	ValaCCodeIdentifier* _tmp17_;
	ValaCCodeIdentifier* _tmp18_;
	ValaCCodeDeclaration* _cdecl_ = NULL;
	ValaCCodeDeclaration* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	ValaCCodeVariableDeclarator* _tmp26_;
	ValaCCodeVariableDeclarator* _tmp27_;
	ValaCCodeFile* _tmp28_;
	gchar* _tmp29_;
	gchar* _tmp30_;
	gchar* _tmp31_;
	gchar* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeExpression* _tmp36_;
	ValaCCodeExpression* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (sym != NULL, NULL);
	_tmp0_ = vala_ccode_initializer_list_new ();
	vtable = _tmp0_;
	_tmp1_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strconcat (_tmp2_, "dbus_interface_method_call", NULL);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_identifier_new (_tmp4_);
	_tmp6_ = _tmp5_;
	vala_ccode_initializer_list_append (vtable, (ValaCCodeExpression*) _tmp6_);
	_vala_ccode_node_unref0 (_tmp6_);
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	_tmp7_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp8_ = _tmp7_;
	_tmp9_ = g_strconcat (_tmp8_, "dbus_interface_get_property", NULL);
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_identifier_new (_tmp10_);
	_tmp12_ = _tmp11_;
	vala_ccode_initializer_list_append (vtable, (ValaCCodeExpression*) _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_g_free0 (_tmp10_);
	_g_free0 (_tmp8_);
	_tmp13_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp14_ = _tmp13_;
	_tmp15_ = g_strconcat (_tmp14_, "dbus_interface_set_property", NULL);
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_identifier_new (_tmp16_);
	_tmp18_ = _tmp17_;
	vala_ccode_initializer_list_append (vtable, (ValaCCodeExpression*) _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_g_free0 (_tmp16_);
	_g_free0 (_tmp14_);
	vala_gd_bus_server_module_generate_interface_method_call_function (self, sym);
	vala_gd_bus_server_module_generate_interface_get_property_function (self, sym);
	vala_gd_bus_server_module_generate_interface_set_property_function (self, sym);
	_tmp19_ = vala_ccode_declaration_new ("const GDBusInterfaceVTable");
	_cdecl_ = _tmp19_;
	_tmp20_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp21_ = _tmp20_;
	_tmp22_ = g_strconcat ("_", _tmp21_, NULL);
	_tmp23_ = _tmp22_;
	_tmp24_ = g_strconcat (_tmp23_, "dbus_interface_vtable", NULL);
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_variable_declarator_new (_tmp25_, (ValaCCodeExpression*) vtable, NULL);
	_tmp27_ = _tmp26_;
	vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp27_);
	_vala_ccode_node_unref0 (_tmp27_);
	_g_free0 (_tmp25_);
	_g_free0 (_tmp23_);
	_g_free0 (_tmp21_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _cdecl_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp28_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_constant_declaration (_tmp28_, (ValaCCodeNode*) _cdecl_);
	_tmp29_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp30_ = _tmp29_;
	_tmp31_ = g_strconcat ("_", _tmp30_, NULL);
	_tmp32_ = _tmp31_;
	_tmp33_ = g_strconcat (_tmp32_, "dbus_interface_vtable", NULL);
	_tmp34_ = _tmp33_;
	_tmp35_ = vala_ccode_identifier_new (_tmp34_);
	_tmp36_ = (ValaCCodeExpression*) _tmp35_;
	_g_free0 (_tmp34_);
	_g_free0 (_tmp32_);
	_g_free0 (_tmp30_);
	result = _tmp36_;
	_vala_ccode_node_unref0 (_cdecl_);
	_vala_ccode_node_unref0 (vtable);
	return result;
}

static gchar*
vala_gd_bus_server_module_generate_register_object_function (ValaGDBusServerModule* self)
{
	gchar* register_object_func = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	ValaCCodeFile* _tmp2_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeParameter* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	ValaCCodeFunctionCall* quark = NULL;
	ValaCCodeIdentifier* _tmp22_;
	ValaCCodeIdentifier* _tmp23_;
	ValaCCodeFunctionCall* _tmp24_;
	ValaCCodeFunctionCall* _tmp25_;
	ValaCCodeFunctionCall* _tmp26_;
	ValaCCodeConstant* _tmp27_;
	ValaCCodeConstant* _tmp28_;
	ValaCCodeFunctionCall* get_qdata = NULL;
	ValaCCodeIdentifier* _tmp29_;
	ValaCCodeIdentifier* _tmp30_;
	ValaCCodeFunctionCall* _tmp31_;
	ValaCCodeFunctionCall* _tmp32_;
	ValaCCodeFunctionCall* _tmp33_;
	ValaCCodeIdentifier* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeFunctionCall* _tmp36_;
	ValaCCodeFunctionCall* _tmp37_;
	ValaCCodeFunction* _tmp38_;
	ValaCCodeFunction* _tmp39_;
	ValaCCodeVariableDeclarator* _tmp40_;
	ValaCCodeVariableDeclarator* _tmp41_;
	ValaCCodeFunction* _tmp42_;
	ValaCCodeFunction* _tmp43_;
	ValaCCodeIdentifier* _tmp44_;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeFunctionCall* _tmp46_;
	ValaCCodeFunction* _tmp47_;
	ValaCCodeFunction* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaCCodeUnaryExpression* _tmp51_;
	ValaCCodeUnaryExpression* _tmp52_;
	ValaCCodeFunctionCall* set_error = NULL;
	ValaCCodeIdentifier* _tmp53_;
	ValaCCodeIdentifier* _tmp54_;
	ValaCCodeFunctionCall* _tmp55_;
	ValaCCodeFunctionCall* _tmp56_;
	ValaCCodeFunctionCall* _tmp57_;
	ValaCCodeIdentifier* _tmp58_;
	ValaCCodeIdentifier* _tmp59_;
	ValaCCodeFunctionCall* _tmp60_;
	ValaCCodeIdentifier* _tmp61_;
	ValaCCodeIdentifier* _tmp62_;
	ValaCCodeFunctionCall* _tmp63_;
	ValaCCodeIdentifier* _tmp64_;
	ValaCCodeIdentifier* _tmp65_;
	ValaCCodeFunctionCall* _tmp66_;
	ValaCCodeConstant* _tmp67_;
	ValaCCodeConstant* _tmp68_;
	ValaCCodeFunction* _tmp69_;
	ValaCCodeFunction* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeFunction* _tmp72_;
	ValaCCodeFunction* _tmp73_;
	ValaCCodeConstant* _tmp74_;
	ValaCCodeConstant* _tmp75_;
	ValaCCodeFunction* _tmp76_;
	ValaCCodeFunction* _tmp77_;
	ValaCCodeCastExpression* register_object = NULL;
	ValaCCodeIdentifier* _tmp78_;
	ValaCCodeIdentifier* _tmp79_;
	ValaCCodeCastExpression* _tmp80_;
	ValaCCodeCastExpression* _tmp81_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeCastExpression* _tmp82_;
	ValaCCodeFunctionCall* _tmp83_;
	ValaCCodeFunctionCall* _tmp84_;
	ValaCCodeIdentifier* _tmp85_;
	ValaCCodeIdentifier* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeIdentifier* _tmp88_;
	ValaCCodeIdentifier* _tmp89_;
	ValaCCodeFunctionCall* _tmp90_;
	ValaCCodeIdentifier* _tmp91_;
	ValaCCodeIdentifier* _tmp92_;
	ValaCCodeFunctionCall* _tmp93_;
	ValaCCodeIdentifier* _tmp94_;
	ValaCCodeIdentifier* _tmp95_;
	ValaCCodeFunction* _tmp96_;
	ValaCCodeFunction* _tmp97_;
	ValaCCodeFunctionCall* _tmp98_;
	ValaCCodeFile* _tmp99_;
	ValaCCodeFunction* _tmp100_;
	ValaCCodeFile* _tmp101_;
	ValaCCodeFunction* _tmp102_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_strdup ("_vala_g_dbus_connection_register_object");
	register_object_func = _tmp0_;
	_tmp1_ = register_object_func;
	if (!vala_ccode_base_module_add_wrapper ((ValaCCodeBaseModule*) self, _tmp1_)) {
		result = register_object_func;
		return result;
	}
	_tmp2_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_include (_tmp2_, "gio/gio.h", FALSE);
	_tmp3_ = register_object_func;
	_tmp4_ = vala_ccode_function_new (_tmp3_, "guint");
	function = _tmp4_;
	_tmp5_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp5_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp6_ = function;
	_tmp7_ = vala_ccode_parameter_new ("type", "GType");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = function;
	_tmp10_ = vala_ccode_parameter_new ("object", "void*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = function;
	_tmp13_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = function;
	_tmp16_ = vala_ccode_parameter_new ("path", "const gchar*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = function;
	_tmp19_ = vala_ccode_parameter_new ("error", "GError**");
	_tmp20_ = _tmp19_;
	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	_tmp21_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp21_);
	_tmp22_ = vala_ccode_identifier_new ("g_quark_from_static_string");
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
	_tmp25_ = _tmp24_;
	_vala_ccode_node_unref0 (_tmp23_);
	quark = _tmp25_;
	_tmp26_ = quark;
	_tmp27_ = vala_ccode_constant_new ("\"vala-dbus-register-object\"");
	_tmp28_ = _tmp27_;
	vala_ccode_function_call_add_argument (_tmp26_, (ValaCCodeExpression*) _tmp28_);
	_vala_ccode_node_unref0 (_tmp28_);
	_tmp29_ = vala_ccode_identifier_new ("g_type_get_qdata");
	_tmp30_ = _tmp29_;
	_tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
	_tmp32_ = _tmp31_;
	_vala_ccode_node_unref0 (_tmp30_);
	get_qdata = _tmp32_;
	_tmp33_ = get_qdata;
	_tmp34_ = vala_ccode_identifier_new ("type");
	_tmp35_ = _tmp34_;
	vala_ccode_function_call_add_argument (_tmp33_, (ValaCCodeExpression*) _tmp35_);
	_vala_ccode_node_unref0 (_tmp35_);
	_tmp36_ = get_qdata;
	_tmp37_ = quark;
	vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp37_);
	_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_variable_declarator_new ("*func", NULL, NULL);
	_tmp41_ = _tmp40_;
	vala_ccode_function_add_declaration (_tmp39_, "void", (ValaCCodeDeclarator*) _tmp41_, 0);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp43_ = _tmp42_;
	_tmp44_ = vala_ccode_identifier_new ("func");
	_tmp45_ = _tmp44_;
	_tmp46_ = get_qdata;
	vala_ccode_function_add_assignment (_tmp43_, (ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_);
	_vala_ccode_node_unref0 (_tmp45_);
	_tmp47_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_identifier_new ("func");
	_tmp50_ = _tmp49_;
	_tmp51_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp50_);
	_tmp52_ = _tmp51_;
	vala_ccode_function_open_if (_tmp48_, (ValaCCodeExpression*) _tmp52_);
	_vala_ccode_node_unref0 (_tmp52_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp53_ = vala_ccode_identifier_new ("g_set_error_literal");
	_tmp54_ = _tmp53_;
	_tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
	_tmp56_ = _tmp55_;
	_vala_ccode_node_unref0 (_tmp54_);
	set_error = _tmp56_;
	_tmp57_ = set_error;
	_tmp58_ = vala_ccode_identifier_new ("error");
	_tmp59_ = _tmp58_;
	vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp59_);
	_vala_ccode_node_unref0 (_tmp59_);
	_tmp60_ = set_error;
	_tmp61_ = vala_ccode_identifier_new ("G_IO_ERROR");
	_tmp62_ = _tmp61_;
	vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp62_);
	_vala_ccode_node_unref0 (_tmp62_);
	_tmp63_ = set_error;
	_tmp64_ = vala_ccode_identifier_new ("G_IO_ERROR_FAILED");
	_tmp65_ = _tmp64_;
	vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_);
	_vala_ccode_node_unref0 (_tmp65_);
	_tmp66_ = set_error;
	_tmp67_ = vala_ccode_constant_new ("\"The specified type does not support D-Bus registration\"");
	_tmp68_ = _tmp67_;
	vala_ccode_function_call_add_argument (_tmp66_, (ValaCCodeExpression*) _tmp68_);
	_vala_ccode_node_unref0 (_tmp68_);
	_tmp69_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp70_ = _tmp69_;
	_tmp71_ = set_error;
	vala_ccode_function_add_expression (_tmp70_, (ValaCCodeExpression*) _tmp71_);
	_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp73_ = _tmp72_;
	_tmp74_ = vala_ccode_constant_new ("0");
	_tmp75_ = _tmp74_;
	vala_ccode_function_add_return (_tmp73_, (ValaCCodeExpression*) _tmp75_);
	_vala_ccode_node_unref0 (_tmp75_);
	_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp77_ = _tmp76_;
	vala_ccode_function_close (_tmp77_);
	_tmp78_ = vala_ccode_identifier_new ("func");
	_tmp79_ = _tmp78_;
	_tmp80_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp79_, "guint (*) (void *, GDBusConnection *, const gchar *, GError **)");
	_tmp81_ = _tmp80_;
	_vala_ccode_node_unref0 (_tmp79_);
	register_object = _tmp81_;
	_tmp82_ = register_object;
	_tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
	ccall = _tmp83_;
	_tmp84_ = ccall;
	_tmp85_ = vala_ccode_identifier_new ("object");
	_tmp86_ = _tmp85_;
	vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp86_);
	_vala_ccode_node_unref0 (_tmp86_);
	_tmp87_ = ccall;
	_tmp88_ = vala_ccode_identifier_new ("connection");
	_tmp89_ = _tmp88_;
	vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp89_);
	_vala_ccode_node_unref0 (_tmp89_);
	_tmp90_ = ccall;
	_tmp91_ = vala_ccode_identifier_new ("path");
	_tmp92_ = _tmp91_;
	vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_);
	_vala_ccode_node_unref0 (_tmp92_);
	_tmp93_ = ccall;
	_tmp94_ = vala_ccode_identifier_new ("error");
	_tmp95_ = _tmp94_;
	vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_);
	_vala_ccode_node_unref0 (_tmp95_);
	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp97_ = _tmp96_;
	_tmp98_ = ccall;
	vala_ccode_function_add_return (_tmp97_, (ValaCCodeExpression*) _tmp98_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp99_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp100_ = function;
	vala_ccode_file_add_function_declaration (_tmp99_, _tmp100_);
	_tmp101_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp102_ = function;
	vala_ccode_file_add_function (_tmp101_, _tmp102_);
	result = register_object_func;
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (register_object);
	_vala_ccode_node_unref0 (set_error);
	_vala_ccode_node_unref0 (get_qdata);
	_vala_ccode_node_unref0 (quark);
	_vala_ccode_node_unref0 (function);
	return result;
}

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

static void
vala_gd_bus_server_module_real_visit_method_call (ValaCodeVisitor* base,
                                                  ValaMethodCall* expr)
{
	ValaGDBusServerModule * self;
	ValaMethodType* mtype = NULL;
	ValaExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValaDataType* _tmp2_;
	ValaDataType* _tmp3_;
	ValaMethodType* _tmp4_;
	gboolean _tmp5_ = FALSE;
	ValaMethodType* _tmp6_;
	ValaMemberAccess* ma = NULL;
	ValaExpression* _tmp12_;
	ValaExpression* _tmp13_;
	ValaMemberAccess* _tmp14_;
	ValaDataType* type_arg = NULL;
	ValaMemberAccess* _tmp15_;
	ValaList* _tmp16_;
	gpointer _tmp17_;
	ValaCCodeFunctionCall* cregister = NULL;
	ValaObjectType* object_type = NULL;
	ValaDataType* _tmp18_;
	ValaObjectType* _tmp19_;
	ValaObjectType* _tmp20_;
	ValaList* args = NULL;
	ValaList* _tmp48_;
	ValaList* _tmp49_;
	ValaExpression* path_arg = NULL;
	ValaList* _tmp50_;
	gpointer _tmp51_;
	ValaExpression* obj_arg = NULL;
	ValaList* _tmp52_;
	gpointer _tmp53_;
	ValaCCodeFunctionCall* _tmp54_;
	ValaExpression* _tmp55_;
	ValaCCodeExpression* _tmp56_;
	ValaCCodeFunctionCall* _tmp57_;
	ValaMemberAccess* _tmp58_;
	ValaExpression* _tmp59_;
	ValaExpression* _tmp60_;
	ValaCCodeExpression* _tmp61_;
	ValaCCodeFunctionCall* _tmp62_;
	ValaExpression* _tmp63_;
	ValaCCodeExpression* _tmp64_;
	ValaCCodeFunctionCall* _tmp65_;
	ValaCCodeExpression* _tmp66_;
	ValaCCodeExpression* _tmp67_;
	ValaCCodeUnaryExpression* _tmp68_;
	ValaCCodeUnaryExpression* _tmp69_;
	ValaCodeNode* _tmp70_;
	ValaCodeNode* _tmp71_;
	self = (ValaGDBusServerModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = vala_callable_expression_get_call ((ValaCallableExpression*) expr);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_expression_get_value_type (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp3_) : NULL);
	mtype = _tmp4_;
	_tmp6_ = mtype;
	if (_tmp6_ == NULL) {
		_tmp5_ = TRUE;
	} else {
		ValaMethodType* _tmp7_;
		ValaMethod* _tmp8_;
		ValaMethod* _tmp9_;
		gchar* _tmp10_;
		gchar* _tmp11_;
		_tmp7_ = mtype;
		_tmp8_ = vala_method_type_get_method_symbol (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) _tmp9_);
		_tmp11_ = _tmp10_;
		_tmp5_ = g_strcmp0 (_tmp11_, "g_dbus_connection_register_object") != 0;
		_g_free0 (_tmp11_);
	}
	if (_tmp5_) {
		VALA_CODE_VISITOR_CLASS (vala_gd_bus_server_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), expr);
		_vala_code_node_unref0 (mtype);
		return;
	}
	_tmp12_ = vala_callable_expression_get_call ((ValaCallableExpression*) expr);
	_tmp13_ = _tmp12_;
	_tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
	ma = _tmp14_;
	_tmp15_ = ma;
	_tmp16_ = vala_member_access_get_type_arguments (_tmp15_);
	_tmp17_ = vala_list_get (_tmp16_, 0);
	type_arg = (ValaDataType*) _tmp17_;
	_tmp18_ = type_arg;
	_tmp19_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_OBJECT_TYPE) ? ((ValaObjectType*) _tmp18_) : NULL);
	object_type = _tmp19_;
	_tmp20_ = object_type;
	if (_tmp20_ != NULL) {
		ValaObjectType* _tmp21_;
		ValaTypeSymbol* _tmp22_;
		ValaTypeSymbol* _tmp23_;
		gchar* _tmp24_;
		gchar* _tmp25_;
		gboolean _tmp26_;
		ValaObjectType* _tmp29_;
		ValaTypeSymbol* _tmp30_;
		ValaTypeSymbol* _tmp31_;
		gchar* _tmp32_;
		gchar* _tmp33_;
		gchar* _tmp34_;
		gchar* _tmp35_;
		ValaCCodeIdentifier* _tmp36_;
		ValaCCodeIdentifier* _tmp37_;
		ValaCCodeFunctionCall* _tmp38_;
		_tmp21_ = object_type;
		_tmp22_ = vala_data_type_get_type_symbol ((ValaDataType*) _tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_gd_bus_module_get_dbus_name (_tmp23_);
		_tmp25_ = _tmp24_;
		_tmp26_ = _tmp25_ == NULL;
		_g_free0 (_tmp25_);
		if (_tmp26_) {
			ValaSourceReference* _tmp27_;
			ValaSourceReference* _tmp28_;
			_tmp27_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
			_tmp28_ = _tmp27_;
			vala_report_error (_tmp28_, "DBusConnection.register_object requires type argument with [DBus (name" \
" = ...)] attribute");
			_vala_code_node_unref0 (object_type);
			_vala_ccode_node_unref0 (cregister);
			_vala_code_node_unref0 (type_arg);
			_vala_code_node_unref0 (ma);
			_vala_code_node_unref0 (mtype);
			return;
		}
		_tmp29_ = object_type;
		_tmp30_ = vala_data_type_get_type_symbol ((ValaDataType*) _tmp29_);
		_tmp31_ = _tmp30_;
		_tmp32_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp31_);
		_tmp33_ = _tmp32_;
		_tmp34_ = g_strdup_printf ("%sregister_object", _tmp33_);
		_tmp35_ = _tmp34_;
		_tmp36_ = vala_ccode_identifier_new (_tmp35_);
		_tmp37_ = _tmp36_;
		_tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
		_vala_ccode_node_unref0 (cregister);
		cregister = _tmp38_;
		_vala_ccode_node_unref0 (_tmp37_);
		_g_free0 (_tmp35_);
		_g_free0 (_tmp33_);
	} else {
		gchar* _tmp39_;
		gchar* _tmp40_;
		ValaCCodeIdentifier* _tmp41_;
		ValaCCodeIdentifier* _tmp42_;
		ValaCCodeFunctionCall* _tmp43_;
		ValaCCodeFunctionCall* _tmp44_;
		ValaDataType* _tmp45_;
		ValaCCodeExpression* _tmp46_;
		ValaCCodeExpression* _tmp47_;
		_tmp39_ = vala_gd_bus_server_module_generate_register_object_function (self);
		_tmp40_ = _tmp39_;
		_tmp41_ = vala_ccode_identifier_new (_tmp40_);
		_tmp42_ = _tmp41_;
		_tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
		_vala_ccode_node_unref0 (cregister);
		cregister = _tmp43_;
		_vala_ccode_node_unref0 (_tmp42_);
		_g_free0 (_tmp40_);
		_tmp44_ = cregister;
		_tmp45_ = type_arg;
		_tmp46_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp45_, FALSE);
		_tmp47_ = _tmp46_;
		vala_ccode_function_call_add_argument (_tmp44_, _tmp47_);
		_vala_ccode_node_unref0 (_tmp47_);
	}
	_tmp48_ = vala_callable_expression_get_argument_list ((ValaCallableExpression*) expr);
	_tmp49_ = _vala_iterable_ref0 (_tmp48_);
	args = _tmp49_;
	_tmp50_ = args;
	_tmp51_ = vala_list_get (_tmp50_, 0);
	path_arg = (ValaExpression*) _tmp51_;
	_tmp52_ = args;
	_tmp53_ = vala_list_get (_tmp52_, 1);
	obj_arg = (ValaExpression*) _tmp53_;
	vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
	_tmp54_ = cregister;
	_tmp55_ = obj_arg;
	_tmp56_ = vala_get_cvalue (_tmp55_);
	vala_ccode_function_call_add_argument (_tmp54_, _tmp56_);
	_tmp57_ = cregister;
	_tmp58_ = ma;
	_tmp59_ = vala_member_access_get_inner (_tmp58_);
	_tmp60_ = _tmp59_;
	_tmp61_ = vala_get_cvalue (_tmp60_);
	vala_ccode_function_call_add_argument (_tmp57_, _tmp61_);
	_tmp62_ = cregister;
	_tmp63_ = path_arg;
	_tmp64_ = vala_get_cvalue (_tmp63_);
	vala_ccode_function_call_add_argument (_tmp62_, _tmp64_);
	_tmp65_ = cregister;
	_tmp66_ = vala_ccode_base_module_get_inner_error_cexpression ((ValaCCodeBaseModule*) self);
	_tmp67_ = _tmp66_;
	_tmp68_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp67_);
	_tmp69_ = _tmp68_;
	vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp69_);
	_vala_ccode_node_unref0 (_tmp69_);
	_vala_ccode_node_unref0 (_tmp67_);
	_tmp70_ = vala_code_node_get_parent_node ((ValaCodeNode*) expr);
	_tmp71_ = _tmp70_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp71_, VALA_TYPE_EXPRESSION_STATEMENT)) {
		ValaCCodeFunction* _tmp72_;
		ValaCCodeFunction* _tmp73_;
		ValaCCodeFunctionCall* _tmp74_;
		_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp73_ = _tmp72_;
		_tmp74_ = cregister;
		vala_ccode_function_add_expression (_tmp73_, (ValaCCodeExpression*) _tmp74_);
	} else {
		ValaLocalVariable* temp_var = NULL;
		ValaDataType* _tmp75_;
		ValaDataType* _tmp76_;
		ValaDataType* _tmp77_;
		ValaDataType* _tmp78_;
		gboolean _tmp79_;
		gboolean _tmp80_;
		ValaLocalVariable* _tmp81_;
		ValaCCodeExpression* temp_ref = NULL;
		ValaLocalVariable* _tmp82_;
		const gchar* _tmp83_;
		const gchar* _tmp84_;
		ValaCCodeExpression* _tmp85_;
		ValaLocalVariable* _tmp86_;
		ValaCCodeFunction* _tmp87_;
		ValaCCodeFunction* _tmp88_;
		ValaCCodeExpression* _tmp89_;
		ValaCCodeFunctionCall* _tmp90_;
		ValaCCodeExpression* _tmp91_;
		_tmp75_ = vala_expression_get_value_type ((ValaExpression*) expr);
		_tmp76_ = _tmp75_;
		_tmp77_ = vala_expression_get_value_type ((ValaExpression*) expr);
		_tmp78_ = _tmp77_;
		_tmp79_ = vala_data_type_get_value_owned (_tmp78_);
		_tmp80_ = _tmp79_;
		_tmp81_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp76_, _tmp80_, NULL, FALSE);
		temp_var = _tmp81_;
		_tmp82_ = temp_var;
		_tmp83_ = vala_symbol_get_name ((ValaSymbol*) _tmp82_);
		_tmp84_ = _tmp83_;
		_tmp85_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp84_);
		temp_ref = _tmp85_;
		_tmp86_ = temp_var;
		vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp86_, FALSE);
		_tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp88_ = _tmp87_;
		_tmp89_ = temp_ref;
		_tmp90_ = cregister;
		vala_ccode_function_add_assignment (_tmp88_, _tmp89_, (ValaCCodeExpression*) _tmp90_);
		_tmp91_ = temp_ref;
		vala_set_cvalue ((ValaExpression*) expr, _tmp91_);
		_vala_ccode_node_unref0 (temp_ref);
		_vala_code_node_unref0 (temp_var);
	}
	_vala_code_node_unref0 (obj_arg);
	_vala_code_node_unref0 (path_arg);
	_vala_iterable_unref0 (args);
	_vala_code_node_unref0 (object_type);
	_vala_ccode_node_unref0 (cregister);
	_vala_code_node_unref0 (type_arg);
	_vala_code_node_unref0 (ma);
	_vala_code_node_unref0 (mtype);
}

static void
vala_gd_bus_server_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
                                                           ValaClass* cl,
                                                           ValaCCodeFile* decl_space)
{
	ValaGDBusServerModule * self;
	self = (ValaGDBusServerModule*) base;
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_server_module_parent_class)->generate_class_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), cl, decl_space);
	vala_gd_bus_server_module_generate_object_type_symbol_declaration (self, (ValaObjectTypeSymbol*) cl, decl_space);
}

static void
vala_gd_bus_server_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
                                                               ValaInterface* iface,
                                                               ValaCCodeFile* decl_space)
{
	ValaGDBusServerModule * self;
	self = (ValaGDBusServerModule*) base;
	g_return_if_fail (iface != NULL);
	g_return_if_fail (decl_space != NULL);
	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_server_module_parent_class)->generate_interface_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), iface, decl_space);
	vala_gd_bus_server_module_generate_object_type_symbol_declaration (self, (ValaObjectTypeSymbol*) iface, decl_space);
}

static void
vala_gd_bus_server_module_real_visit_class (ValaCodeVisitor* base,
                                            ValaClass* cl)
{
	ValaGDBusServerModule * self;
	self = (ValaGDBusServerModule*) base;
	g_return_if_fail (cl != NULL);
	VALA_CODE_VISITOR_CLASS (vala_gd_bus_server_module_parent_class)->visit_class ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), cl);
	vala_gd_bus_server_module_visit_object_type_symbol (self, (ValaObjectTypeSymbol*) cl);
}

static void
vala_gd_bus_server_module_real_visit_interface (ValaCodeVisitor* base,
                                                ValaInterface* iface)
{
	ValaGDBusServerModule * self;
	self = (ValaGDBusServerModule*) base;
	g_return_if_fail (iface != NULL);
	VALA_CODE_VISITOR_CLASS (vala_gd_bus_server_module_parent_class)->visit_interface ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), iface);
	vala_gd_bus_server_module_visit_object_type_symbol (self, (ValaObjectTypeSymbol*) iface);
}

static void
vala_gd_bus_server_module_generate_object_type_symbol_declaration (ValaGDBusServerModule* self,
                                                                   ValaObjectTypeSymbol* sym,
                                                                   ValaCCodeFile* decl_space)
{
	gchar* dbus_iface_name = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	gchar* register_object_name = NULL;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	const gchar* _tmp6_;
	ValaCCodeFunction* cfunc = NULL;
	const gchar* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeParameter* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeFunction* _tmp38_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
	dbus_iface_name = _tmp0_;
	_tmp1_ = dbus_iface_name;
	if (_tmp1_ == NULL) {
		_g_free0 (dbus_iface_name);
		return;
	}
	_tmp2_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sregister_object", _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	register_object_name = _tmp5_;
	_tmp6_ = register_object_name;
	if (vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) sym, _tmp6_)) {
		_g_free0 (register_object_name);
		_g_free0 (dbus_iface_name);
		return;
	}
	vala_ccode_file_add_include (decl_space, "gio/gio.h", FALSE);
	_tmp7_ = register_object_name;
	_tmp8_ = vala_ccode_function_new (_tmp7_, "guint");
	cfunc = _tmp8_;
	_tmp9_ = cfunc;
	_tmp10_ = vala_ccode_parameter_new ("object", "void*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = cfunc;
	_tmp13_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = cfunc;
	_tmp16_ = vala_ccode_parameter_new ("path", "const gchar*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = cfunc;
	_tmp19_ = vala_ccode_parameter_new ("error", "GError**");
	_tmp20_ = _tmp19_;
	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	if (vala_symbol_is_private_symbol ((ValaSymbol*) sym)) {
		ValaCCodeFunction* _tmp21_;
		ValaCCodeFunction* _tmp22_;
		ValaCCodeModifiers _tmp23_;
		ValaCCodeModifiers _tmp24_;
		_tmp21_ = cfunc;
		_tmp22_ = cfunc;
		_tmp23_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp22_);
		_tmp24_ = _tmp23_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp22_, _tmp24_ | VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp25_ = FALSE;
		ValaCodeContext* _tmp26_;
		ValaCodeContext* _tmp27_;
		gboolean _tmp28_;
		gboolean _tmp29_;
		_tmp26_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp27_ = _tmp26_;
		_tmp28_ = vala_code_context_get_hide_internal (_tmp27_);
		_tmp29_ = _tmp28_;
		if (_tmp29_) {
			_tmp25_ = vala_symbol_is_internal_symbol ((ValaSymbol*) sym);
		} else {
			_tmp25_ = FALSE;
		}
		if (_tmp25_) {
			ValaCCodeFunction* _tmp30_;
			ValaCCodeFunction* _tmp31_;
			ValaCCodeModifiers _tmp32_;
			ValaCCodeModifiers _tmp33_;
			_tmp30_ = cfunc;
			_tmp31_ = cfunc;
			_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
			_tmp33_ = _tmp32_;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_INTERNAL);
		} else {
			ValaCCodeFunction* _tmp34_;
			ValaCCodeFunction* _tmp35_;
			ValaCCodeModifiers _tmp36_;
			ValaCCodeModifiers _tmp37_;
			_tmp34_ = cfunc;
			_tmp35_ = cfunc;
			_tmp36_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp35_);
			_tmp37_ = _tmp36_;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp35_, _tmp37_ | VALA_CCODE_MODIFIERS_EXTERN);
			((ValaCCodeBaseModule*) self)->requires_vala_extern = TRUE;
		}
	}
	_tmp38_ = cfunc;
	vala_ccode_file_add_function_declaration (decl_space, _tmp38_);
	_vala_ccode_node_unref0 (cfunc);
	_g_free0 (register_object_name);
	_g_free0 (dbus_iface_name);
}

static void
vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerModule* self,
                                                    ValaObjectTypeSymbol* sym)
{
	gchar* dbus_iface_name = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	ValaCCodeFile* _tmp2_;
	ValaCCodeFunction* cfunc = NULL;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeParameter* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeVariableDeclarator* _tmp37_;
	ValaCCodeVariableDeclarator* _tmp38_;
	ValaCCodeFunction* _tmp39_;
	ValaCCodeFunction* _tmp40_;
	ValaCCodeVariableDeclarator* _tmp41_;
	ValaCCodeVariableDeclarator* _tmp42_;
	ValaCCodeFunctionCall* alloc_data = NULL;
	ValaCCodeIdentifier* _tmp43_;
	ValaCCodeIdentifier* _tmp44_;
	ValaCCodeFunctionCall* _tmp45_;
	ValaCCodeFunctionCall* _tmp46_;
	ValaCCodeFunctionCall* _tmp47_;
	ValaCCodeIdentifier* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeFunctionCall* _tmp50_;
	ValaCCodeConstant* _tmp51_;
	ValaCCodeConstant* _tmp52_;
	ValaCCodeFunction* _tmp53_;
	ValaCCodeFunction* _tmp54_;
	ValaCCodeIdentifier* _tmp55_;
	ValaCCodeIdentifier* _tmp56_;
	ValaCCodeFunctionCall* _tmp57_;
	gchar* ref_function = NULL;
	gchar* _tmp58_;
	gboolean _tmp59_ = FALSE;
	ValaCCodeFunctionCall* ref_object = NULL;
	const gchar* _tmp65_;
	ValaCCodeIdentifier* _tmp66_;
	ValaCCodeIdentifier* _tmp67_;
	ValaCCodeFunctionCall* _tmp68_;
	ValaCCodeFunctionCall* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeIdentifier* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeFunction* _tmp73_;
	ValaCCodeFunction* _tmp74_;
	ValaCCodeIdentifier* _tmp75_;
	ValaCCodeIdentifier* _tmp76_;
	ValaCCodeConstant* _tmp77_;
	ValaCCodeConstant* _tmp78_;
	ValaCCodeElementAccess* _tmp79_;
	ValaCCodeElementAccess* _tmp80_;
	ValaCCodeFunctionCall* _tmp81_;
	ValaCCodeIdentifier* _tmp82_;
	ValaCCodeIdentifier* _tmp83_;
	ValaCCodeFunctionCall* _tmp84_;
	ValaCCodeFunctionCall* _tmp85_;
	ValaCCodeIdentifier* _tmp86_;
	ValaCCodeIdentifier* _tmp87_;
	ValaCCodeFunction* _tmp88_;
	ValaCCodeFunction* _tmp89_;
	ValaCCodeIdentifier* _tmp90_;
	ValaCCodeIdentifier* _tmp91_;
	ValaCCodeConstant* _tmp92_;
	ValaCCodeConstant* _tmp93_;
	ValaCCodeElementAccess* _tmp94_;
	ValaCCodeElementAccess* _tmp95_;
	ValaCCodeFunctionCall* _tmp96_;
	ValaCCodeFunctionCall* dup_path = NULL;
	ValaCCodeIdentifier* _tmp97_;
	ValaCCodeIdentifier* _tmp98_;
	ValaCCodeFunctionCall* _tmp99_;
	ValaCCodeFunctionCall* _tmp100_;
	ValaCCodeFunctionCall* _tmp101_;
	ValaCCodeIdentifier* _tmp102_;
	ValaCCodeIdentifier* _tmp103_;
	ValaCCodeFunction* _tmp104_;
	ValaCCodeFunction* _tmp105_;
	ValaCCodeIdentifier* _tmp106_;
	ValaCCodeIdentifier* _tmp107_;
	ValaCCodeConstant* _tmp108_;
	ValaCCodeConstant* _tmp109_;
	ValaCCodeElementAccess* _tmp110_;
	ValaCCodeElementAccess* _tmp111_;
	ValaCCodeFunctionCall* _tmp112_;
	ValaCCodeFunctionCall* cregister = NULL;
	ValaCCodeIdentifier* _tmp113_;
	ValaCCodeIdentifier* _tmp114_;
	ValaCCodeFunctionCall* _tmp115_;
	ValaCCodeFunctionCall* _tmp116_;
	ValaCCodeFunctionCall* _tmp117_;
	ValaCCodeIdentifier* _tmp118_;
	ValaCCodeIdentifier* _tmp119_;
	ValaCCodeFunctionCall* _tmp120_;
	ValaCCodeIdentifier* _tmp121_;
	ValaCCodeIdentifier* _tmp122_;
	ValaCCodeFunctionCall* _tmp123_;
	ValaCCodeExpression* _tmp124_;
	ValaCCodeExpression* _tmp125_;
	ValaCCodeUnaryExpression* _tmp126_;
	ValaCCodeUnaryExpression* _tmp127_;
	ValaCCodeCastExpression* _tmp128_;
	ValaCCodeCastExpression* _tmp129_;
	ValaCCodeFunctionCall* _tmp130_;
	ValaCCodeExpression* _tmp131_;
	ValaCCodeExpression* _tmp132_;
	ValaCCodeUnaryExpression* _tmp133_;
	ValaCCodeUnaryExpression* _tmp134_;
	ValaCCodeFunctionCall* _tmp135_;
	ValaCCodeIdentifier* _tmp136_;
	ValaCCodeIdentifier* _tmp137_;
	ValaCCodeFunctionCall* _tmp138_;
	gchar* _tmp139_;
	gchar* _tmp140_;
	gchar* _tmp141_;
	gchar* _tmp142_;
	gchar* _tmp143_;
	gchar* _tmp144_;
	ValaCCodeIdentifier* _tmp145_;
	ValaCCodeIdentifier* _tmp146_;
	ValaCCodeFunctionCall* _tmp147_;
	ValaCCodeIdentifier* _tmp148_;
	ValaCCodeIdentifier* _tmp149_;
	ValaCCodeFunction* _tmp150_;
	ValaCCodeFunction* _tmp151_;
	ValaCCodeIdentifier* _tmp152_;
	ValaCCodeIdentifier* _tmp153_;
	ValaCCodeFunctionCall* _tmp154_;
	ValaCCodeFunction* _tmp155_;
	ValaCCodeFunction* _tmp156_;
	ValaCCodeIdentifier* _tmp157_;
	ValaCCodeIdentifier* _tmp158_;
	ValaCCodeUnaryExpression* _tmp159_;
	ValaCCodeUnaryExpression* _tmp160_;
	ValaCCodeFunction* _tmp161_;
	ValaCCodeFunction* _tmp162_;
	ValaCCodeConstant* _tmp163_;
	ValaCCodeConstant* _tmp164_;
	ValaCCodeFunction* _tmp165_;
	ValaCCodeFunction* _tmp166_;
	ValaCCodeFunction* _tmp167_;
	ValaCCodeFunction* _tmp168_;
	ValaCCodeIdentifier* _tmp169_;
	ValaCCodeIdentifier* _tmp170_;
	ValaCCodeFile* _tmp171_;
	ValaCCodeFunction* _tmp172_;
	gchar* _tmp173_;
	gchar* _tmp174_;
	gchar* _tmp175_;
	gchar* _tmp176_;
	gchar* _tmp177_;
	gchar* _tmp178_;
	ValaCCodeFunction* _tmp179_;
	ValaCCodeFunction* _tmp180_;
	ValaCCodeParameter* _tmp181_;
	ValaCCodeParameter* _tmp182_;
	ValaCCodeFunction* _tmp183_;
	ValaCCodeFunction* _tmp184_;
	ValaCCodeModifiers _tmp185_;
	ValaCCodeModifiers _tmp186_;
	ValaCCodeFunction* _tmp187_;
	ValaCCodeFunction* _tmp188_;
	ValaCCodeFunction* _tmp189_;
	ValaCCodeIdentifier* _tmp190_;
	ValaCCodeIdentifier* _tmp191_;
	ValaCCodeVariableDeclarator* _tmp192_;
	ValaCCodeVariableDeclarator* _tmp193_;
	ValaCCodeFunctionCall* unref_object = NULL;
	gchar* _tmp194_;
	gchar* _tmp195_;
	ValaCCodeIdentifier* _tmp196_;
	ValaCCodeIdentifier* _tmp197_;
	ValaCCodeFunctionCall* _tmp198_;
	ValaCCodeFunctionCall* _tmp199_;
	ValaCCodeFunctionCall* _tmp200_;
	ValaCCodeIdentifier* _tmp201_;
	ValaCCodeIdentifier* _tmp202_;
	ValaCCodeConstant* _tmp203_;
	ValaCCodeConstant* _tmp204_;
	ValaCCodeElementAccess* _tmp205_;
	ValaCCodeElementAccess* _tmp206_;
	ValaCCodeFunction* _tmp207_;
	ValaCCodeFunction* _tmp208_;
	ValaCCodeFunctionCall* _tmp209_;
	ValaCCodeIdentifier* _tmp210_;
	ValaCCodeIdentifier* _tmp211_;
	ValaCCodeFunctionCall* _tmp212_;
	ValaCCodeFunctionCall* _tmp213_;
	ValaCCodeIdentifier* _tmp214_;
	ValaCCodeIdentifier* _tmp215_;
	ValaCCodeConstant* _tmp216_;
	ValaCCodeConstant* _tmp217_;
	ValaCCodeElementAccess* _tmp218_;
	ValaCCodeElementAccess* _tmp219_;
	ValaCCodeFunction* _tmp220_;
	ValaCCodeFunction* _tmp221_;
	ValaCCodeFunctionCall* _tmp222_;
	ValaCCodeFunctionCall* free_path = NULL;
	ValaCCodeIdentifier* _tmp223_;
	ValaCCodeIdentifier* _tmp224_;
	ValaCCodeFunctionCall* _tmp225_;
	ValaCCodeFunctionCall* _tmp226_;
	ValaCCodeFunctionCall* _tmp227_;
	ValaCCodeIdentifier* _tmp228_;
	ValaCCodeIdentifier* _tmp229_;
	ValaCCodeConstant* _tmp230_;
	ValaCCodeConstant* _tmp231_;
	ValaCCodeElementAccess* _tmp232_;
	ValaCCodeElementAccess* _tmp233_;
	ValaCCodeFunction* _tmp234_;
	ValaCCodeFunction* _tmp235_;
	ValaCCodeFunctionCall* _tmp236_;
	ValaCCodeFunctionCall* free_data = NULL;
	ValaCCodeIdentifier* _tmp237_;
	ValaCCodeIdentifier* _tmp238_;
	ValaCCodeFunctionCall* _tmp239_;
	ValaCCodeFunctionCall* _tmp240_;
	ValaCCodeFunctionCall* _tmp241_;
	ValaCCodeIdentifier* _tmp242_;
	ValaCCodeIdentifier* _tmp243_;
	ValaCCodeFunction* _tmp244_;
	ValaCCodeFunction* _tmp245_;
	ValaCCodeFunctionCall* _tmp246_;
	ValaCCodeFile* _tmp247_;
	ValaCCodeFunction* _tmp248_;
	ValaCCodeFile* _tmp249_;
	ValaCCodeFunction* _tmp250_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
	dbus_iface_name = _tmp0_;
	_tmp1_ = dbus_iface_name;
	if (_tmp1_ == NULL) {
		_g_free0 (dbus_iface_name);
		return;
	}
	_tmp2_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_include (_tmp2_, "gio/gio.h", FALSE);
	_tmp3_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp4_ = _tmp3_;
	_tmp5_ = g_strconcat (_tmp4_, "register_object", NULL);
	_tmp6_ = _tmp5_;
	_tmp7_ = vala_ccode_function_new (_tmp6_, "guint");
	_tmp8_ = _tmp7_;
	_g_free0 (_tmp6_);
	_g_free0 (_tmp4_);
	cfunc = _tmp8_;
	_tmp9_ = cfunc;
	_tmp10_ = vala_ccode_parameter_new ("object", "gpointer");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = cfunc;
	_tmp13_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = cfunc;
	_tmp16_ = vala_ccode_parameter_new ("path", "const gchar*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = cfunc;
	_tmp19_ = vala_ccode_parameter_new ("error", "GError**");
	_tmp20_ = _tmp19_;
	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	if (vala_symbol_is_private_symbol ((ValaSymbol*) sym)) {
		ValaCCodeFunction* _tmp21_;
		ValaCCodeFunction* _tmp22_;
		ValaCCodeModifiers _tmp23_;
		ValaCCodeModifiers _tmp24_;
		_tmp21_ = cfunc;
		_tmp22_ = cfunc;
		_tmp23_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp22_);
		_tmp24_ = _tmp23_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp22_, _tmp24_ | VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp25_ = FALSE;
		ValaCodeContext* _tmp26_;
		ValaCodeContext* _tmp27_;
		gboolean _tmp28_;
		gboolean _tmp29_;
		_tmp26_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp27_ = _tmp26_;
		_tmp28_ = vala_code_context_get_hide_internal (_tmp27_);
		_tmp29_ = _tmp28_;
		if (_tmp29_) {
			_tmp25_ = vala_symbol_is_internal_symbol ((ValaSymbol*) sym);
		} else {
			_tmp25_ = FALSE;
		}
		if (_tmp25_) {
			ValaCCodeFunction* _tmp30_;
			ValaCCodeFunction* _tmp31_;
			ValaCCodeModifiers _tmp32_;
			ValaCCodeModifiers _tmp33_;
			_tmp30_ = cfunc;
			_tmp31_ = cfunc;
			_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
			_tmp33_ = _tmp32_;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp34_ = cfunc;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp34_);
	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
	_tmp38_ = _tmp37_;
	vala_ccode_function_add_declaration (_tmp36_, "guint", (ValaCCodeDeclarator*) _tmp38_, 0);
	_vala_ccode_node_unref0 (_tmp38_);
	_tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp40_ = _tmp39_;
	_tmp41_ = vala_ccode_variable_declarator_new ("*data", NULL, NULL);
	_tmp42_ = _tmp41_;
	vala_ccode_function_add_declaration (_tmp40_, "gpointer", (ValaCCodeDeclarator*) _tmp42_, 0);
	_vala_ccode_node_unref0 (_tmp42_);
	_tmp43_ = vala_ccode_identifier_new ("g_new");
	_tmp44_ = _tmp43_;
	_tmp45_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp44_);
	_tmp46_ = _tmp45_;
	_vala_ccode_node_unref0 (_tmp44_);
	alloc_data = _tmp46_;
	_tmp47_ = alloc_data;
	_tmp48_ = vala_ccode_identifier_new ("gpointer");
	_tmp49_ = _tmp48_;
	vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp49_);
	_vala_ccode_node_unref0 (_tmp49_);
	_tmp50_ = alloc_data;
	_tmp51_ = vala_ccode_constant_new ("3");
	_tmp52_ = _tmp51_;
	vala_ccode_function_call_add_argument (_tmp50_, (ValaCCodeExpression*) _tmp52_);
	_vala_ccode_node_unref0 (_tmp52_);
	_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp54_ = _tmp53_;
	_tmp55_ = vala_ccode_identifier_new ("data");
	_tmp56_ = _tmp55_;
	_tmp57_ = alloc_data;
	vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) _tmp57_);
	_vala_ccode_node_unref0 (_tmp56_);
	_tmp58_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) sym);
	ref_function = _tmp58_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (sym, VALA_TYPE_INTERFACE)) {
		const gchar* _tmp60_;
		_tmp60_ = ref_function;
		_tmp59_ = _tmp60_ == NULL;
	} else {
		_tmp59_ = FALSE;
	}
	if (_tmp59_) {
		ValaSourceReference* _tmp61_;
		ValaSourceReference* _tmp62_;
		gchar* _tmp63_;
		gchar* _tmp64_;
		_tmp61_ = vala_code_node_get_source_reference ((ValaCodeNode*) sym);
		_tmp62_ = _tmp61_;
		_tmp63_ = vala_symbol_get_full_name ((ValaSymbol*) sym);
		_tmp64_ = _tmp63_;
		vala_report_error (_tmp62_, "missing class prerequisite for interface `%s', add GLib.Object to inte" \
"rface declaration if unsure", _tmp64_);
		_g_free0 (_tmp64_);
		_g_free0 (ref_function);
		_vala_ccode_node_unref0 (alloc_data);
		_vala_ccode_node_unref0 (cfunc);
		_g_free0 (dbus_iface_name);
		return;
	}
	_tmp65_ = ref_function;
	_tmp66_ = vala_ccode_identifier_new (_tmp65_);
	_tmp67_ = _tmp66_;
	_tmp68_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp67_);
	_tmp69_ = _tmp68_;
	_vala_ccode_node_unref0 (_tmp67_);
	ref_object = _tmp69_;
	_tmp70_ = ref_object;
	_tmp71_ = vala_ccode_identifier_new ("object");
	_tmp72_ = _tmp71_;
	vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp72_);
	_vala_ccode_node_unref0 (_tmp72_);
	_tmp73_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp74_ = _tmp73_;
	_tmp75_ = vala_ccode_identifier_new ("data");
	_tmp76_ = _tmp75_;
	_tmp77_ = vala_ccode_constant_new ("0");
	_tmp78_ = _tmp77_;
	_tmp79_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp76_, (ValaCCodeExpression*) _tmp78_);
	_tmp80_ = _tmp79_;
	_tmp81_ = ref_object;
	vala_ccode_function_add_assignment (_tmp74_, (ValaCCodeExpression*) _tmp80_, (ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (_tmp80_);
	_vala_ccode_node_unref0 (_tmp78_);
	_vala_ccode_node_unref0 (_tmp76_);
	_tmp82_ = vala_ccode_identifier_new ("g_object_ref");
	_tmp83_ = _tmp82_;
	_tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
	_vala_ccode_node_unref0 (ref_object);
	ref_object = _tmp84_;
	_vala_ccode_node_unref0 (_tmp83_);
	_tmp85_ = ref_object;
	_tmp86_ = vala_ccode_identifier_new ("connection");
	_tmp87_ = _tmp86_;
	vala_ccode_function_call_add_argument (_tmp85_, (ValaCCodeExpression*) _tmp87_);
	_vala_ccode_node_unref0 (_tmp87_);
	_tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp89_ = _tmp88_;
	_tmp90_ = vala_ccode_identifier_new ("data");
	_tmp91_ = _tmp90_;
	_tmp92_ = vala_ccode_constant_new ("1");
	_tmp93_ = _tmp92_;
	_tmp94_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp91_, (ValaCCodeExpression*) _tmp93_);
	_tmp95_ = _tmp94_;
	_tmp96_ = ref_object;
	vala_ccode_function_add_assignment (_tmp89_, (ValaCCodeExpression*) _tmp95_, (ValaCCodeExpression*) _tmp96_);
	_vala_ccode_node_unref0 (_tmp95_);
	_vala_ccode_node_unref0 (_tmp93_);
	_vala_ccode_node_unref0 (_tmp91_);
	_tmp97_ = vala_ccode_identifier_new ("g_strdup");
	_tmp98_ = _tmp97_;
	_tmp99_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp98_);
	_tmp100_ = _tmp99_;
	_vala_ccode_node_unref0 (_tmp98_);
	dup_path = _tmp100_;
	_tmp101_ = dup_path;
	_tmp102_ = vala_ccode_identifier_new ("path");
	_tmp103_ = _tmp102_;
	vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_);
	_vala_ccode_node_unref0 (_tmp103_);
	_tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp105_ = _tmp104_;
	_tmp106_ = vala_ccode_identifier_new ("data");
	_tmp107_ = _tmp106_;
	_tmp108_ = vala_ccode_constant_new ("2");
	_tmp109_ = _tmp108_;
	_tmp110_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp107_, (ValaCCodeExpression*) _tmp109_);
	_tmp111_ = _tmp110_;
	_tmp112_ = dup_path;
	vala_ccode_function_add_assignment (_tmp105_, (ValaCCodeExpression*) _tmp111_, (ValaCCodeExpression*) _tmp112_);
	_vala_ccode_node_unref0 (_tmp111_);
	_vala_ccode_node_unref0 (_tmp109_);
	_vala_ccode_node_unref0 (_tmp107_);
	_tmp113_ = vala_ccode_identifier_new ("g_dbus_connection_register_object");
	_tmp114_ = _tmp113_;
	_tmp115_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp114_);
	_tmp116_ = _tmp115_;
	_vala_ccode_node_unref0 (_tmp114_);
	cregister = _tmp116_;
	_tmp117_ = cregister;
	_tmp118_ = vala_ccode_identifier_new ("connection");
	_tmp119_ = _tmp118_;
	vala_ccode_function_call_add_argument (_tmp117_, (ValaCCodeExpression*) _tmp119_);
	_vala_ccode_node_unref0 (_tmp119_);
	_tmp120_ = cregister;
	_tmp121_ = vala_ccode_identifier_new ("path");
	_tmp122_ = _tmp121_;
	vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp122_);
	_vala_ccode_node_unref0 (_tmp122_);
	_tmp123_ = cregister;
	_tmp124_ = vala_gd_bus_module_get_interface_info ((ValaGDBusModule*) self, sym);
	_tmp125_ = _tmp124_;
	_tmp126_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp125_);
	_tmp127_ = _tmp126_;
	_tmp128_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp127_, "GDBusInterfaceInfo *");
	_tmp129_ = _tmp128_;
	vala_ccode_function_call_add_argument (_tmp123_, (ValaCCodeExpression*) _tmp129_);
	_vala_ccode_node_unref0 (_tmp129_);
	_vala_ccode_node_unref0 (_tmp127_);
	_vala_ccode_node_unref0 (_tmp125_);
	_tmp130_ = cregister;
	_tmp131_ = vala_gd_bus_server_module_get_interface_vtable (self, sym);
	_tmp132_ = _tmp131_;
	_tmp133_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp132_);
	_tmp134_ = _tmp133_;
	vala_ccode_function_call_add_argument (_tmp130_, (ValaCCodeExpression*) _tmp134_);
	_vala_ccode_node_unref0 (_tmp134_);
	_vala_ccode_node_unref0 (_tmp132_);
	_tmp135_ = cregister;
	_tmp136_ = vala_ccode_identifier_new ("data");
	_tmp137_ = _tmp136_;
	vala_ccode_function_call_add_argument (_tmp135_, (ValaCCodeExpression*) _tmp137_);
	_vala_ccode_node_unref0 (_tmp137_);
	_tmp138_ = cregister;
	_tmp139_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp140_ = _tmp139_;
	_tmp141_ = g_strconcat ("_", _tmp140_, NULL);
	_tmp142_ = _tmp141_;
	_tmp143_ = g_strconcat (_tmp142_, "unregister_object", NULL);
	_tmp144_ = _tmp143_;
	_tmp145_ = vala_ccode_identifier_new (_tmp144_);
	_tmp146_ = _tmp145_;
	vala_ccode_function_call_add_argument (_tmp138_, (ValaCCodeExpression*) _tmp146_);
	_vala_ccode_node_unref0 (_tmp146_);
	_g_free0 (_tmp144_);
	_g_free0 (_tmp142_);
	_g_free0 (_tmp140_);
	_tmp147_ = cregister;
	_tmp148_ = vala_ccode_identifier_new ("error");
	_tmp149_ = _tmp148_;
	vala_ccode_function_call_add_argument (_tmp147_, (ValaCCodeExpression*) _tmp149_);
	_vala_ccode_node_unref0 (_tmp149_);
	_tmp150_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp151_ = _tmp150_;
	_tmp152_ = vala_ccode_identifier_new ("result");
	_tmp153_ = _tmp152_;
	_tmp154_ = cregister;
	vala_ccode_function_add_assignment (_tmp151_, (ValaCCodeExpression*) _tmp153_, (ValaCCodeExpression*) _tmp154_);
	_vala_ccode_node_unref0 (_tmp153_);
	_tmp155_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp156_ = _tmp155_;
	_tmp157_ = vala_ccode_identifier_new ("result");
	_tmp158_ = _tmp157_;
	_tmp159_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp158_);
	_tmp160_ = _tmp159_;
	vala_ccode_function_open_if (_tmp156_, (ValaCCodeExpression*) _tmp160_);
	_vala_ccode_node_unref0 (_tmp160_);
	_vala_ccode_node_unref0 (_tmp158_);
	_tmp161_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp162_ = _tmp161_;
	_tmp163_ = vala_ccode_constant_new ("0");
	_tmp164_ = _tmp163_;
	vala_ccode_function_add_return (_tmp162_, (ValaCCodeExpression*) _tmp164_);
	_vala_ccode_node_unref0 (_tmp164_);
	_tmp165_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp166_ = _tmp165_;
	vala_ccode_function_close (_tmp166_);
	vala_gd_bus_server_module_handle_signals (self, sym, TRUE);
	_tmp167_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp168_ = _tmp167_;
	_tmp169_ = vala_ccode_identifier_new ("result");
	_tmp170_ = _tmp169_;
	vala_ccode_function_add_return (_tmp168_, (ValaCCodeExpression*) _tmp170_);
	_vala_ccode_node_unref0 (_tmp170_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp171_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp172_ = cfunc;
	vala_ccode_file_add_function (_tmp171_, _tmp172_);
	_tmp173_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp174_ = _tmp173_;
	_tmp175_ = g_strconcat ("_", _tmp174_, NULL);
	_tmp176_ = _tmp175_;
	_tmp177_ = g_strconcat (_tmp176_, "unregister_object", NULL);
	_tmp178_ = _tmp177_;
	_tmp179_ = vala_ccode_function_new (_tmp178_, "void");
	_vala_ccode_node_unref0 (cfunc);
	cfunc = _tmp179_;
	_g_free0 (_tmp178_);
	_g_free0 (_tmp176_);
	_g_free0 (_tmp174_);
	_tmp180_ = cfunc;
	_tmp181_ = vala_ccode_parameter_new ("user_data", "gpointer");
	_tmp182_ = _tmp181_;
	vala_ccode_function_add_parameter (_tmp180_, _tmp182_);
	_vala_ccode_node_unref0 (_tmp182_);
	_tmp183_ = cfunc;
	_tmp184_ = cfunc;
	_tmp185_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp184_);
	_tmp186_ = _tmp185_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp184_, _tmp186_ | VALA_CCODE_MODIFIERS_STATIC);
	_tmp187_ = cfunc;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp187_);
	_tmp188_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp189_ = _tmp188_;
	_tmp190_ = vala_ccode_identifier_new ("user_data");
	_tmp191_ = _tmp190_;
	_tmp192_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp191_, NULL);
	_tmp193_ = _tmp192_;
	vala_ccode_function_add_declaration (_tmp189_, "gpointer*", (ValaCCodeDeclarator*) _tmp193_, 0);
	_vala_ccode_node_unref0 (_tmp193_);
	_vala_ccode_node_unref0 (_tmp191_);
	vala_gd_bus_server_module_handle_signals (self, sym, FALSE);
	_tmp194_ = vala_get_ccode_unref_function (sym);
	_tmp195_ = _tmp194_;
	_tmp196_ = vala_ccode_identifier_new (_tmp195_);
	_tmp197_ = _tmp196_;
	_tmp198_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp197_);
	_tmp199_ = _tmp198_;
	_vala_ccode_node_unref0 (_tmp197_);
	_g_free0 (_tmp195_);
	unref_object = _tmp199_;
	_tmp200_ = unref_object;
	_tmp201_ = vala_ccode_identifier_new ("data");
	_tmp202_ = _tmp201_;
	_tmp203_ = vala_ccode_constant_new ("0");
	_tmp204_ = _tmp203_;
	_tmp205_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp202_, (ValaCCodeExpression*) _tmp204_);
	_tmp206_ = _tmp205_;
	vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp206_);
	_vala_ccode_node_unref0 (_tmp206_);
	_vala_ccode_node_unref0 (_tmp204_);
	_vala_ccode_node_unref0 (_tmp202_);
	_tmp207_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp208_ = _tmp207_;
	_tmp209_ = unref_object;
	vala_ccode_function_add_expression (_tmp208_, (ValaCCodeExpression*) _tmp209_);
	_tmp210_ = vala_ccode_identifier_new ("g_object_unref");
	_tmp211_ = _tmp210_;
	_tmp212_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp211_);
	_vala_ccode_node_unref0 (unref_object);
	unref_object = _tmp212_;
	_vala_ccode_node_unref0 (_tmp211_);
	_tmp213_ = unref_object;
	_tmp214_ = vala_ccode_identifier_new ("data");
	_tmp215_ = _tmp214_;
	_tmp216_ = vala_ccode_constant_new ("1");
	_tmp217_ = _tmp216_;
	_tmp218_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp215_, (ValaCCodeExpression*) _tmp217_);
	_tmp219_ = _tmp218_;
	vala_ccode_function_call_add_argument (_tmp213_, (ValaCCodeExpression*) _tmp219_);
	_vala_ccode_node_unref0 (_tmp219_);
	_vala_ccode_node_unref0 (_tmp217_);
	_vala_ccode_node_unref0 (_tmp215_);
	_tmp220_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp221_ = _tmp220_;
	_tmp222_ = unref_object;
	vala_ccode_function_add_expression (_tmp221_, (ValaCCodeExpression*) _tmp222_);
	_tmp223_ = vala_ccode_identifier_new ("g_free");
	_tmp224_ = _tmp223_;
	_tmp225_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp224_);
	_tmp226_ = _tmp225_;
	_vala_ccode_node_unref0 (_tmp224_);
	free_path = _tmp226_;
	_tmp227_ = free_path;
	_tmp228_ = vala_ccode_identifier_new ("data");
	_tmp229_ = _tmp228_;
	_tmp230_ = vala_ccode_constant_new ("2");
	_tmp231_ = _tmp230_;
	_tmp232_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp229_, (ValaCCodeExpression*) _tmp231_);
	_tmp233_ = _tmp232_;
	vala_ccode_function_call_add_argument (_tmp227_, (ValaCCodeExpression*) _tmp233_);
	_vala_ccode_node_unref0 (_tmp233_);
	_vala_ccode_node_unref0 (_tmp231_);
	_vala_ccode_node_unref0 (_tmp229_);
	_tmp234_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp235_ = _tmp234_;
	_tmp236_ = free_path;
	vala_ccode_function_add_expression (_tmp235_, (ValaCCodeExpression*) _tmp236_);
	_tmp237_ = vala_ccode_identifier_new ("g_free");
	_tmp238_ = _tmp237_;
	_tmp239_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp238_);
	_tmp240_ = _tmp239_;
	_vala_ccode_node_unref0 (_tmp238_);
	free_data = _tmp240_;
	_tmp241_ = free_data;
	_tmp242_ = vala_ccode_identifier_new ("data");
	_tmp243_ = _tmp242_;
	vala_ccode_function_call_add_argument (_tmp241_, (ValaCCodeExpression*) _tmp243_);
	_vala_ccode_node_unref0 (_tmp243_);
	_tmp244_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp245_ = _tmp244_;
	_tmp246_ = free_data;
	vala_ccode_function_add_expression (_tmp245_, (ValaCCodeExpression*) _tmp246_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp247_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp248_ = cfunc;
	vala_ccode_file_add_function_declaration (_tmp247_, _tmp248_);
	_tmp249_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp250_ = cfunc;
	vala_ccode_file_add_function (_tmp249_, _tmp250_);
	_vala_ccode_node_unref0 (free_data);
	_vala_ccode_node_unref0 (free_path);
	_vala_ccode_node_unref0 (unref_object);
	_vala_ccode_node_unref0 (cregister);
	_vala_ccode_node_unref0 (dup_path);
	_vala_ccode_node_unref0 (ref_object);
	_g_free0 (ref_function);
	_vala_ccode_node_unref0 (alloc_data);
	_vala_ccode_node_unref0 (cfunc);
	_g_free0 (dbus_iface_name);
}

static void
vala_gd_bus_server_module_real_register_dbus_info (ValaCCodeBaseModule* base,
                                                   ValaCCodeBlock* block,
                                                   ValaObjectTypeSymbol* sym)
{
	ValaGDBusServerModule * self;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	ValaCCodeFunctionCall* quark = NULL;
	ValaCCodeIdentifier* _tmp2_;
	ValaCCodeIdentifier* _tmp3_;
	ValaCCodeFunctionCall* _tmp4_;
	ValaCCodeFunctionCall* _tmp5_;
	ValaCCodeFunctionCall* _tmp6_;
	ValaCCodeConstant* _tmp7_;
	ValaCCodeConstant* _tmp8_;
	ValaCCodeFunctionCall* set_qdata = NULL;
	ValaCCodeIdentifier* _tmp9_;
	ValaCCodeIdentifier* _tmp10_;
	ValaCCodeFunctionCall* _tmp11_;
	ValaCCodeFunctionCall* _tmp12_;
	ValaCCodeFunctionCall* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	ValaCCodeIdentifier* _tmp18_;
	ValaCCodeIdentifier* _tmp19_;
	ValaCCodeFunctionCall* _tmp20_;
	ValaCCodeFunctionCall* _tmp21_;
	ValaCCodeFunctionCall* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	ValaCCodeIdentifier* _tmp27_;
	ValaCCodeIdentifier* _tmp28_;
	ValaCCodeCastExpression* _tmp29_;
	ValaCCodeCastExpression* _tmp30_;
	ValaCCodeFunctionCall* _tmp31_;
	ValaCCodeExpressionStatement* _tmp32_;
	ValaCCodeExpressionStatement* _tmp33_;
	self = (ValaGDBusServerModule*) base;
	g_return_if_fail (block != NULL);
	g_return_if_fail (sym != NULL);
	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
	dbus_iface_name = _tmp0_;
	_tmp1_ = dbus_iface_name;
	if (_tmp1_ == NULL) {
		_g_free0 (dbus_iface_name);
		return;
	}
	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_server_module_parent_class)->register_dbus_info ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), block, sym);
	_tmp2_ = vala_ccode_identifier_new ("g_quark_from_static_string");
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp3_);
	_tmp5_ = _tmp4_;
	_vala_ccode_node_unref0 (_tmp3_);
	quark = _tmp5_;
	_tmp6_ = quark;
	_tmp7_ = vala_ccode_constant_new ("\"vala-dbus-register-object\"");
	_tmp8_ = _tmp7_;
	vala_ccode_function_call_add_argument (_tmp6_, (ValaCCodeExpression*) _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_identifier_new ("g_type_set_qdata");
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp10_);
	_tmp12_ = _tmp11_;
	_vala_ccode_node_unref0 (_tmp10_);
	set_qdata = _tmp12_;
	_tmp13_ = set_qdata;
	_tmp14_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
	_tmp15_ = _tmp14_;
	_tmp16_ = g_strdup_printf ("%s_type_id", _tmp15_);
	_tmp17_ = _tmp16_;
	_tmp18_ = vala_ccode_identifier_new (_tmp17_);
	_tmp19_ = _tmp18_;
	vala_ccode_function_call_add_argument (_tmp13_, (ValaCCodeExpression*) _tmp19_);
	_vala_ccode_node_unref0 (_tmp19_);
	_g_free0 (_tmp17_);
	_g_free0 (_tmp15_);
	_tmp20_ = set_qdata;
	_tmp21_ = quark;
	vala_ccode_function_call_add_argument (_tmp20_, (ValaCCodeExpression*) _tmp21_);
	_tmp22_ = set_qdata;
	_tmp23_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp24_ = _tmp23_;
	_tmp25_ = g_strconcat (_tmp24_, "register_object", NULL);
	_tmp26_ = _tmp25_;
	_tmp27_ = vala_ccode_identifier_new (_tmp26_);
	_tmp28_ = _tmp27_;
	_tmp29_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp28_, "void*");
	_tmp30_ = _tmp29_;
	vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp30_);
	_vala_ccode_node_unref0 (_tmp30_);
	_vala_ccode_node_unref0 (_tmp28_);
	_g_free0 (_tmp26_);
	_g_free0 (_tmp24_);
	_tmp31_ = set_qdata;
	_tmp32_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp31_);
	_tmp33_ = _tmp32_;
	vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp33_);
	_vala_ccode_node_unref0 (_tmp33_);
	_vala_ccode_node_unref0 (set_qdata);
	_vala_ccode_node_unref0 (quark);
	_g_free0 (dbus_iface_name);
}

ValaGDBusServerModule*
vala_gd_bus_server_module_construct (GType object_type)
{
	ValaGDBusServerModule* self = NULL;
	self = (ValaGDBusServerModule*) vala_gd_bus_client_module_construct (object_type);
	return self;
}

ValaGDBusServerModule*
vala_gd_bus_server_module_new (void)
{
	return vala_gd_bus_server_module_construct (VALA_TYPE_GD_BUS_SERVER_MODULE);
}

static void
vala_gd_bus_server_module_class_init (ValaGDBusServerModuleClass * klass,
                                      gpointer klass_data)
{
	vala_gd_bus_server_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gd_bus_server_module_real_visit_method_call;
	((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = (void (*) (ValaCCodeBaseModule*, ValaClass*, ValaCCodeFile*)) vala_gd_bus_server_module_real_generate_class_declaration;
	((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = (void (*) (ValaCCodeBaseModule*, ValaInterface*, ValaCCodeFile*)) vala_gd_bus_server_module_real_generate_interface_declaration;
	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_gd_bus_server_module_real_visit_class;
	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor*, ValaInterface*)) vala_gd_bus_server_module_real_visit_interface;
	((ValaCCodeBaseModuleClass *) klass)->register_dbus_info = (void (*) (ValaCCodeBaseModule*, ValaCCodeBlock*, ValaObjectTypeSymbol*)) vala_gd_bus_server_module_real_register_dbus_info;
}

static void
vala_gd_bus_server_module_instance_init (ValaGDBusServerModule * self,
                                         gpointer klass)
{
}

static GType
vala_gd_bus_server_module_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ValaGDBusServerModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gd_bus_server_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGDBusServerModule), 0, (GInstanceInitFunc) vala_gd_bus_server_module_instance_init, NULL };
	GType vala_gd_bus_server_module_type_id;
	vala_gd_bus_server_module_type_id = g_type_register_static (VALA_TYPE_GD_BUS_CLIENT_MODULE, "ValaGDBusServerModule", &g_define_type_info, 0);
	return vala_gd_bus_server_module_type_id;
}

GType
vala_gd_bus_server_module_get_type (void)
{
	static volatile gsize vala_gd_bus_server_module_type_id__once = 0;
	if (g_once_init_enter (&vala_gd_bus_server_module_type_id__once)) {
		GType vala_gd_bus_server_module_type_id;
		vala_gd_bus_server_module_type_id = vala_gd_bus_server_module_get_type_once ();
		g_once_init_leave (&vala_gd_bus_server_module_type_id__once, vala_gd_bus_server_module_type_id);
	}
	return vala_gd_bus_server_module_type_id__once;
}

