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

/* valagdbusclientmodule.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>
 * 	Philip Van Hoof <pvanhoof@gnome.org>
 */

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

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

typedef enum  {
	VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC,
	VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_ASYNC,
	VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_FINISH,
	VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_NO_REPLY
} ValaGDBusClientModuleCallType;

#define VALA_GD_BUS_CLIENT_MODULE_TYPE_CALL_TYPE (vala_gd_bus_client_module_call_type_get_type ())
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

static gpointer vala_gd_bus_client_module_parent_class = NULL;

static GType vala_gd_bus_client_module_call_type_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static void vala_gd_bus_client_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* base,
                                                                     ValaDynamicMethod* method);
static void vala_gd_bus_client_module_generate_marshalling (ValaGDBusClientModule* self,
                                                     ValaMethod* m,
                                                     ValaGDBusClientModuleCallType call_type,
                                                     const gchar* iface_name,
                                                     const gchar* method_name,
                                                     gint method_timeout);
static void vala_gd_bus_client_module_generate_proxy_interface_init (ValaGDBusClientModule* self,
                                                              ValaInterface* main_iface,
                                                              ValaInterface* iface);
static gchar* vala_gd_bus_client_module_generate_dbus_proxy_method (ValaGDBusClientModule* self,
                                                             ValaInterface* main_iface,
                                                             ValaInterface* iface,
                                                             ValaMethod* m);
static gchar* vala_gd_bus_client_module_generate_async_dbus_proxy_method (ValaGDBusClientModule* self,
                                                                   ValaInterface* main_iface,
                                                                   ValaInterface* iface,
                                                                   ValaMethod* m);
static gchar* vala_gd_bus_client_module_generate_finish_dbus_proxy_method (ValaGDBusClientModule* self,
                                                                    ValaInterface* main_iface,
                                                                    ValaInterface* iface,
                                                                    ValaMethod* m);
static gchar* vala_gd_bus_client_module_generate_dbus_proxy_property_get (ValaGDBusClientModule* self,
                                                                   ValaInterface* main_iface,
                                                                   ValaInterface* iface,
                                                                   ValaProperty* prop);
static gchar* vala_gd_bus_client_module_generate_dbus_proxy_property_set (ValaGDBusClientModule* self,
                                                                   ValaInterface* main_iface,
                                                                   ValaInterface* iface,
                                                                   ValaProperty* prop);
static gchar* vala_gd_bus_client_module_implement_interface (ValaGDBusClientModule* self,
                                                      ValaCCodeFunctionCall* define_type,
                                                      ValaInterface* main_iface,
                                                      ValaInterface* iface);
static void vala_gd_bus_client_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
                                                                    ValaInterface* iface,
                                                                    ValaCCodeFile* decl_space);
static void vala_gd_bus_client_module_real_visit_interface (ValaCodeVisitor* base,
                                                     ValaInterface* iface);
static void vala_gd_bus_client_module_generate_signal_handler_function (ValaGDBusClientModule* self,
                                                                 ValaObjectTypeSymbol* sym);
static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* base,
                                                       ValaMethodCall* expr);
static gchar* vala_gd_bus_client_module_generate_dbus_signal_handler (ValaGDBusClientModule* self,
                                                               ValaSignal* sig,
                                                               ValaObjectTypeSymbol* sym);
static void vala_gd_bus_client_module_real_register_dbus_info (ValaCCodeBaseModule* base,
                                                        ValaCCodeBlock* block,
                                                        ValaObjectTypeSymbol* sym);
static GType vala_gd_bus_client_module_get_type_once (void);

static GType
vala_gd_bus_client_module_call_type_get_type_once (void)
{
	static const GEnumValue values[] = {{VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC, "VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC", "sync"}, {VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_ASYNC, "VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_ASYNC", "async"}, {VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_FINISH, "VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_FINISH", "finish"}, {VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_NO_REPLY, "VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_NO_REPLY", "no-reply"}, {0, NULL, NULL}};
	GType vala_gd_bus_client_module_call_type_type_id;
	vala_gd_bus_client_module_call_type_type_id = g_enum_register_static ("ValaGDBusClientModuleCallType", values);
	return vala_gd_bus_client_module_call_type_type_id;
}

static GType
vala_gd_bus_client_module_call_type_get_type (void)
{
	static volatile gsize vala_gd_bus_client_module_call_type_type_id__once = 0;
	if (g_once_init_enter (&vala_gd_bus_client_module_call_type_type_id__once)) {
		GType vala_gd_bus_client_module_call_type_type_id;
		vala_gd_bus_client_module_call_type_type_id = vala_gd_bus_client_module_call_type_get_type_once ();
		g_once_init_leave (&vala_gd_bus_client_module_call_type_type_id__once, vala_gd_bus_client_module_call_type_type_id);
	}
	return vala_gd_bus_client_module_call_type_type_id__once;
}

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

ValaCCodeConstant*
vala_gd_bus_client_module_get_dbus_timeout (ValaGDBusClientModule* self,
                                            ValaSymbol* symbol)
{
	gint timeout = 0;
	ValaAttribute* dbus = NULL;
	ValaAttribute* _tmp0_;
	ValaAttribute* _tmp1_;
	gboolean _tmp2_ = FALSE;
	ValaAttribute* _tmp3_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	ValaCCodeConstant* _tmp13_;
	ValaCCodeConstant* _tmp14_;
	ValaCCodeConstant* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (symbol != NULL, NULL);
	timeout = -1;
	_tmp0_ = vala_code_node_get_attribute ((ValaCodeNode*) symbol, "DBus");
	_tmp1_ = _vala_code_node_ref0 (_tmp0_);
	dbus = _tmp1_;
	_tmp3_ = dbus;
	if (_tmp3_ != NULL) {
		ValaAttribute* _tmp4_;
		_tmp4_ = dbus;
		_tmp2_ = vala_attribute_has_argument (_tmp4_, "timeout");
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		ValaAttribute* _tmp5_;
		_tmp5_ = dbus;
		timeout = vala_attribute_get_integer (_tmp5_, "timeout", 0);
	} else {
		ValaSymbol* _tmp6_;
		ValaSymbol* _tmp7_;
		_tmp6_ = vala_symbol_get_parent_symbol (symbol);
		_tmp7_ = _tmp6_;
		if (_tmp7_ != NULL) {
			ValaSymbol* _tmp8_;
			ValaSymbol* _tmp9_;
			ValaCCodeConstant* _tmp10_;
			_tmp8_ = vala_symbol_get_parent_symbol (symbol);
			_tmp9_ = _tmp8_;
			_tmp10_ = vala_gd_bus_client_module_get_dbus_timeout (self, _tmp9_);
			result = _tmp10_;
			_vala_code_node_unref0 (dbus);
			return result;
		}
	}
	_tmp11_ = g_strdup_printf ("%i", timeout);
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_constant_new (_tmp12_);
	_tmp14_ = _tmp13_;
	_g_free0 (_tmp12_);
	result = _tmp14_;
	_vala_code_node_unref0 (dbus);
	return result;
}

static void
vala_gd_bus_client_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* base,
                                                                ValaDynamicMethod* method)
{
	ValaGDBusClientModule * self;
	ValaCCodeFunction* func = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	ValaCCodeFunction* _tmp2_;
	ValaCCodeFunction* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp5_;
	GEqualFunc _tmp6_;
	GEqualFunc _tmp7_;
	ValaHashMap* _tmp8_;
	ValaCCodeFile* _tmp9_;
	ValaHashMap* _tmp10_;
	ValaCCodeFunction* _tmp11_;
	ValaCCodeFunction* _tmp12_;
	ValaDataType* _tmp13_;
	ValaDataType* _tmp14_;
	ValaTypeSymbol* _tmp15_;
	ValaTypeSymbol* _tmp16_;
	ValaTypeSymbol* _tmp17_;
	ValaCCodeFile* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeFile* _tmp28_;
	ValaCCodeFunction* _tmp29_;
	self = (ValaGDBusClientModule*) base;
	g_return_if_fail (method != NULL);
	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) method);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_ccode_function_new (_tmp1_, "void");
	_tmp3_ = _tmp2_;
	_g_free0 (_tmp1_);
	func = _tmp3_;
	_tmp4_ = func;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp4_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp5_ = g_direct_hash;
	_tmp6_ = g_direct_equal;
	_tmp7_ = g_direct_equal;
	_tmp8_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp5_, _tmp6_, _tmp7_);
	cparam_map = _tmp8_;
	_tmp9_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp10_ = cparam_map;
	_tmp11_ = func;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, (ValaMethod*) method, _tmp9_, (ValaMap*) _tmp10_, _tmp11_, NULL, NULL, NULL, 3);
	_tmp12_ = func;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp12_);
	_tmp13_ = vala_dynamic_method_get_dynamic_type (method);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_data_type_get_type_symbol (_tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = ((ValaCCodeBaseModule*) self)->dbus_proxy_type;
	if (_tmp16_ == _tmp17_) {
		const gchar* _tmp18_;
		const gchar* _tmp19_;
		_tmp18_ = vala_symbol_get_name ((ValaSymbol*) method);
		_tmp19_ = _tmp18_;
		vala_gd_bus_client_module_generate_marshalling (self, (ValaMethod*) method, VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC, NULL, _tmp19_, -1);
	} else {
		ValaSourceReference* _tmp20_;
		ValaSourceReference* _tmp21_;
		ValaDataType* _tmp22_;
		ValaDataType* _tmp23_;
		gchar* _tmp24_;
		gchar* _tmp25_;
		_tmp20_ = vala_code_node_get_source_reference ((ValaCodeNode*) method);
		_tmp21_ = _tmp20_;
		_tmp22_ = vala_dynamic_method_get_dynamic_type (method);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_code_node_to_string ((ValaCodeNode*) _tmp23_);
		_tmp25_ = _tmp24_;
		vala_report_error (_tmp21_, "dynamic methods are not supported for `%s'", _tmp25_);
		_g_free0 (_tmp25_);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp26_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp27_ = func;
	vala_ccode_file_add_function_declaration (_tmp26_, _tmp27_);
	_tmp28_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp29_ = func;
	vala_ccode_file_add_function (_tmp28_, _tmp29_);
	_vala_map_unref0 (cparam_map);
	_vala_ccode_node_unref0 (func);
}

static void
vala_gd_bus_client_module_generate_proxy_interface_init (ValaGDBusClientModule* self,
                                                         ValaInterface* main_iface,
                                                         ValaInterface* iface)
{
	gchar* lower_cname = NULL;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	ValaCCodeFunction* proxy_iface_init = NULL;
	const gchar* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeFunction* _tmp28_;
	ValaCCodeFunction* _tmp29_;
	gchar* _tmp30_;
	gchar* _tmp31_;
	gchar* _tmp32_;
	gchar* _tmp33_;
	ValaCCodeParameter* _tmp34_;
	ValaCCodeParameter* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeFunction* _tmp139_;
	ValaCCodeFile* _tmp140_;
	ValaCCodeFunction* _tmp141_;
	ValaCCodeFile* _tmp142_;
	ValaCCodeFunction* _tmp143_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (main_iface != NULL);
	g_return_if_fail (iface != NULL);
	{
		ValaList* _prereq_list = NULL;
		ValaList* _tmp0_;
		gint _prereq_size = 0;
		ValaList* _tmp1_;
		gint _tmp2_;
		gint _tmp3_;
		gint _prereq_index = 0;
		_tmp0_ = vala_interface_get_prerequisites (iface);
		_prereq_list = _tmp0_;
		_tmp1_ = _prereq_list;
		_tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
		_tmp3_ = _tmp2_;
		_prereq_size = _tmp3_;
		_prereq_index = -1;
		while (TRUE) {
			gint _tmp4_;
			gint _tmp5_;
			ValaDataType* prereq = NULL;
			ValaList* _tmp6_;
			gpointer _tmp7_;
			ValaDataType* _tmp8_;
			ValaTypeSymbol* _tmp9_;
			ValaTypeSymbol* _tmp10_;
			_prereq_index = _prereq_index + 1;
			_tmp4_ = _prereq_index;
			_tmp5_ = _prereq_size;
			if (!(_tmp4_ < _tmp5_)) {
				break;
			}
			_tmp6_ = _prereq_list;
			_tmp7_ = vala_list_get (_tmp6_, _prereq_index);
			prereq = (ValaDataType*) _tmp7_;
			_tmp8_ = prereq;
			_tmp9_ = vala_data_type_get_type_symbol (_tmp8_);
			_tmp10_ = _tmp9_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_INTERFACE)) {
				ValaDataType* _tmp11_;
				ValaTypeSymbol* _tmp12_;
				ValaTypeSymbol* _tmp13_;
				_tmp11_ = prereq;
				_tmp12_ = vala_data_type_get_type_symbol (_tmp11_);
				_tmp13_ = _tmp12_;
				vala_gd_bus_client_module_generate_proxy_interface_init (self, main_iface, G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_INTERFACE, ValaInterface));
			}
			_vala_code_node_unref0 (prereq);
		}
	}
	_tmp14_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp15_ = _tmp14_;
	_tmp16_ = g_strconcat (_tmp15_, "proxy", NULL);
	_tmp17_ = _tmp16_;
	_g_free0 (_tmp15_);
	lower_cname = _tmp17_;
	_tmp18_ = lower_cname;
	_tmp19_ = g_strconcat (_tmp18_, "_", NULL);
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) iface);
	_tmp22_ = _tmp21_;
	_tmp23_ = g_strconcat (_tmp20_, _tmp22_, NULL);
	_tmp24_ = _tmp23_;
	_tmp25_ = g_strconcat (_tmp24_, "interface_init", NULL);
	_tmp26_ = _tmp25_;
	_tmp27_ = vala_ccode_function_new (_tmp26_, "void");
	_tmp28_ = _tmp27_;
	_g_free0 (_tmp26_);
	_g_free0 (_tmp24_);
	_g_free0 (_tmp22_);
	_g_free0 (_tmp20_);
	proxy_iface_init = _tmp28_;
	_tmp29_ = proxy_iface_init;
	_tmp30_ = vala_get_ccode_name ((ValaCodeNode*) iface);
	_tmp31_ = _tmp30_;
	_tmp32_ = g_strconcat (_tmp31_, "Iface*", NULL);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_parameter_new ("iface", _tmp33_);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_parameter (_tmp29_, _tmp35_);
	_vala_ccode_node_unref0 (_tmp35_);
	_g_free0 (_tmp33_);
	_g_free0 (_tmp31_);
	_tmp36_ = proxy_iface_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp36_);
	{
		ValaList* _m_list = NULL;
		ValaList* _tmp37_;
		gint _m_size = 0;
		ValaList* _tmp38_;
		gint _tmp39_;
		gint _tmp40_;
		gint _m_index = 0;
		_tmp37_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) iface);
		_m_list = _tmp37_;
		_tmp38_ = _m_list;
		_tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_);
		_tmp40_ = _tmp39_;
		_m_size = _tmp40_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp41_;
			gint _tmp42_;
			ValaMethod* m = NULL;
			ValaList* _tmp43_;
			gpointer _tmp44_;
			ValaMethod* _tmp45_;
			gboolean _tmp46_;
			gboolean _tmp47_;
			ValaCCodeMemberAccess* vfunc_entry = NULL;
			ValaCCodeIdentifier* _tmp48_;
			ValaCCodeIdentifier* _tmp49_;
			ValaMethod* _tmp50_;
			gchar* _tmp51_;
			gchar* _tmp52_;
			ValaCCodeMemberAccess* _tmp53_;
			ValaCCodeMemberAccess* _tmp54_;
			ValaMethod* _tmp55_;
			gboolean _tmp56_;
			gboolean _tmp57_;
			_m_index = _m_index + 1;
			_tmp41_ = _m_index;
			_tmp42_ = _m_size;
			if (!(_tmp41_ < _tmp42_)) {
				break;
			}
			_tmp43_ = _m_list;
			_tmp44_ = vala_list_get (_tmp43_, _m_index);
			m = (ValaMethod*) _tmp44_;
			_tmp45_ = m;
			_tmp46_ = vala_method_get_is_abstract (_tmp45_);
			_tmp47_ = _tmp46_;
			if (!_tmp47_) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp48_ = vala_ccode_identifier_new ("iface");
			_tmp49_ = _tmp48_;
			_tmp50_ = m;
			_tmp51_ = vala_get_ccode_vfunc_name (_tmp50_);
			_tmp52_ = _tmp51_;
			_tmp53_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp49_, _tmp52_);
			_tmp54_ = _tmp53_;
			_g_free0 (_tmp52_);
			_vala_ccode_node_unref0 (_tmp49_);
			vfunc_entry = _tmp54_;
			_tmp55_ = m;
			_tmp56_ = vala_method_get_coroutine (_tmp55_);
			_tmp57_ = _tmp56_;
			if (!_tmp57_) {
				ValaCCodeFunction* _tmp58_;
				ValaCCodeFunction* _tmp59_;
				ValaCCodeMemberAccess* _tmp60_;
				ValaMethod* _tmp61_;
				gchar* _tmp62_;
				gchar* _tmp63_;
				ValaCCodeIdentifier* _tmp64_;
				ValaCCodeIdentifier* _tmp65_;
				_tmp58_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp59_ = _tmp58_;
				_tmp60_ = vfunc_entry;
				_tmp61_ = m;
				_tmp62_ = vala_gd_bus_client_module_generate_dbus_proxy_method (self, main_iface, iface, _tmp61_);
				_tmp63_ = _tmp62_;
				_tmp64_ = vala_ccode_identifier_new (_tmp63_);
				_tmp65_ = _tmp64_;
				vala_ccode_function_add_assignment (_tmp59_, (ValaCCodeExpression*) _tmp60_, (ValaCCodeExpression*) _tmp65_);
				_vala_ccode_node_unref0 (_tmp65_);
				_g_free0 (_tmp63_);
			} else {
				ValaCCodeFunction* _tmp66_;
				ValaCCodeFunction* _tmp67_;
				ValaCCodeMemberAccess* _tmp68_;
				ValaMethod* _tmp69_;
				gchar* _tmp70_;
				gchar* _tmp71_;
				ValaCCodeIdentifier* _tmp72_;
				ValaCCodeIdentifier* _tmp73_;
				ValaCCodeIdentifier* _tmp74_;
				ValaCCodeIdentifier* _tmp75_;
				ValaMethod* _tmp76_;
				gchar* _tmp77_;
				gchar* _tmp78_;
				ValaCCodeMemberAccess* _tmp79_;
				ValaCCodeFunction* _tmp80_;
				ValaCCodeFunction* _tmp81_;
				ValaCCodeMemberAccess* _tmp82_;
				ValaMethod* _tmp83_;
				gchar* _tmp84_;
				gchar* _tmp85_;
				ValaCCodeIdentifier* _tmp86_;
				ValaCCodeIdentifier* _tmp87_;
				_tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp67_ = _tmp66_;
				_tmp68_ = vfunc_entry;
				_tmp69_ = m;
				_tmp70_ = vala_gd_bus_client_module_generate_async_dbus_proxy_method (self, main_iface, iface, _tmp69_);
				_tmp71_ = _tmp70_;
				_tmp72_ = vala_ccode_identifier_new (_tmp71_);
				_tmp73_ = _tmp72_;
				vala_ccode_function_add_assignment (_tmp67_, (ValaCCodeExpression*) _tmp68_, (ValaCCodeExpression*) _tmp73_);
				_vala_ccode_node_unref0 (_tmp73_);
				_g_free0 (_tmp71_);
				_tmp74_ = vala_ccode_identifier_new ("iface");
				_tmp75_ = _tmp74_;
				_tmp76_ = m;
				_tmp77_ = vala_get_ccode_finish_vfunc_name (_tmp76_);
				_tmp78_ = _tmp77_;
				_tmp79_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp75_, _tmp78_);
				_vala_ccode_node_unref0 (vfunc_entry);
				vfunc_entry = _tmp79_;
				_g_free0 (_tmp78_);
				_vala_ccode_node_unref0 (_tmp75_);
				_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp81_ = _tmp80_;
				_tmp82_ = vfunc_entry;
				_tmp83_ = m;
				_tmp84_ = vala_gd_bus_client_module_generate_finish_dbus_proxy_method (self, main_iface, iface, _tmp83_);
				_tmp85_ = _tmp84_;
				_tmp86_ = vala_ccode_identifier_new (_tmp85_);
				_tmp87_ = _tmp86_;
				vala_ccode_function_add_assignment (_tmp81_, (ValaCCodeExpression*) _tmp82_, (ValaCCodeExpression*) _tmp87_);
				_vala_ccode_node_unref0 (_tmp87_);
				_g_free0 (_tmp85_);
			}
			_vala_ccode_node_unref0 (vfunc_entry);
			_vala_code_node_unref0 (m);
		}
	}
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp88_;
		gint _prop_size = 0;
		ValaList* _tmp89_;
		gint _tmp90_;
		gint _tmp91_;
		gint _prop_index = 0;
		_tmp88_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
		_prop_list = _tmp88_;
		_tmp89_ = _prop_list;
		_tmp90_ = vala_collection_get_size ((ValaCollection*) _tmp89_);
		_tmp91_ = _tmp90_;
		_prop_size = _tmp91_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp92_;
			gint _tmp93_;
			ValaProperty* prop = NULL;
			ValaList* _tmp94_;
			gpointer _tmp95_;
			ValaProperty* _tmp96_;
			gboolean _tmp97_;
			gboolean _tmp98_;
			ValaProperty* _tmp99_;
			ValaPropertyAccessor* _tmp100_;
			ValaPropertyAccessor* _tmp101_;
			ValaProperty* _tmp119_;
			ValaPropertyAccessor* _tmp120_;
			ValaPropertyAccessor* _tmp121_;
			_prop_index = _prop_index + 1;
			_tmp92_ = _prop_index;
			_tmp93_ = _prop_size;
			if (!(_tmp92_ < _tmp93_)) {
				break;
			}
			_tmp94_ = _prop_list;
			_tmp95_ = vala_list_get (_tmp94_, _prop_index);
			prop = (ValaProperty*) _tmp95_;
			_tmp96_ = prop;
			_tmp97_ = vala_property_get_is_abstract (_tmp96_);
			_tmp98_ = _tmp97_;
			if (!_tmp98_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp99_ = prop;
			_tmp100_ = vala_property_get_get_accessor (_tmp99_);
			_tmp101_ = _tmp100_;
			if (_tmp101_ != NULL) {
				ValaCCodeMemberAccess* vfunc_entry = NULL;
				ValaCCodeIdentifier* _tmp102_;
				ValaCCodeIdentifier* _tmp103_;
				ValaProperty* _tmp104_;
				const gchar* _tmp105_;
				const gchar* _tmp106_;
				gchar* _tmp107_;
				gchar* _tmp108_;
				ValaCCodeMemberAccess* _tmp109_;
				ValaCCodeMemberAccess* _tmp110_;
				ValaCCodeFunction* _tmp111_;
				ValaCCodeFunction* _tmp112_;
				ValaCCodeMemberAccess* _tmp113_;
				ValaProperty* _tmp114_;
				gchar* _tmp115_;
				gchar* _tmp116_;
				ValaCCodeIdentifier* _tmp117_;
				ValaCCodeIdentifier* _tmp118_;
				_tmp102_ = vala_ccode_identifier_new ("iface");
				_tmp103_ = _tmp102_;
				_tmp104_ = prop;
				_tmp105_ = vala_symbol_get_name ((ValaSymbol*) _tmp104_);
				_tmp106_ = _tmp105_;
				_tmp107_ = g_strconcat ("get_", _tmp106_, NULL);
				_tmp108_ = _tmp107_;
				_tmp109_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp103_, _tmp108_);
				_tmp110_ = _tmp109_;
				_g_free0 (_tmp108_);
				_vala_ccode_node_unref0 (_tmp103_);
				vfunc_entry = _tmp110_;
				_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp112_ = _tmp111_;
				_tmp113_ = vfunc_entry;
				_tmp114_ = prop;
				_tmp115_ = vala_gd_bus_client_module_generate_dbus_proxy_property_get (self, main_iface, iface, _tmp114_);
				_tmp116_ = _tmp115_;
				_tmp117_ = vala_ccode_identifier_new (_tmp116_);
				_tmp118_ = _tmp117_;
				vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) _tmp113_, (ValaCCodeExpression*) _tmp118_);
				_vala_ccode_node_unref0 (_tmp118_);
				_g_free0 (_tmp116_);
				_vala_ccode_node_unref0 (vfunc_entry);
			}
			_tmp119_ = prop;
			_tmp120_ = vala_property_get_set_accessor (_tmp119_);
			_tmp121_ = _tmp120_;
			if (_tmp121_ != NULL) {
				ValaCCodeMemberAccess* vfunc_entry = NULL;
				ValaCCodeIdentifier* _tmp122_;
				ValaCCodeIdentifier* _tmp123_;
				ValaProperty* _tmp124_;
				const gchar* _tmp125_;
				const gchar* _tmp126_;
				gchar* _tmp127_;
				gchar* _tmp128_;
				ValaCCodeMemberAccess* _tmp129_;
				ValaCCodeMemberAccess* _tmp130_;
				ValaCCodeFunction* _tmp131_;
				ValaCCodeFunction* _tmp132_;
				ValaCCodeMemberAccess* _tmp133_;
				ValaProperty* _tmp134_;
				gchar* _tmp135_;
				gchar* _tmp136_;
				ValaCCodeIdentifier* _tmp137_;
				ValaCCodeIdentifier* _tmp138_;
				_tmp122_ = vala_ccode_identifier_new ("iface");
				_tmp123_ = _tmp122_;
				_tmp124_ = prop;
				_tmp125_ = vala_symbol_get_name ((ValaSymbol*) _tmp124_);
				_tmp126_ = _tmp125_;
				_tmp127_ = g_strconcat ("set_", _tmp126_, NULL);
				_tmp128_ = _tmp127_;
				_tmp129_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp123_, _tmp128_);
				_tmp130_ = _tmp129_;
				_g_free0 (_tmp128_);
				_vala_ccode_node_unref0 (_tmp123_);
				vfunc_entry = _tmp130_;
				_tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp132_ = _tmp131_;
				_tmp133_ = vfunc_entry;
				_tmp134_ = prop;
				_tmp135_ = vala_gd_bus_client_module_generate_dbus_proxy_property_set (self, main_iface, iface, _tmp134_);
				_tmp136_ = _tmp135_;
				_tmp137_ = vala_ccode_identifier_new (_tmp136_);
				_tmp138_ = _tmp137_;
				vala_ccode_function_add_assignment (_tmp132_, (ValaCCodeExpression*) _tmp133_, (ValaCCodeExpression*) _tmp138_);
				_vala_ccode_node_unref0 (_tmp138_);
				_g_free0 (_tmp136_);
				_vala_ccode_node_unref0 (vfunc_entry);
			}
			_vala_code_node_unref0 (prop);
		}
	}
	_tmp139_ = proxy_iface_init;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp139_, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp140_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp141_ = proxy_iface_init;
	vala_ccode_file_add_function_declaration (_tmp140_, _tmp141_);
	_tmp142_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp143_ = proxy_iface_init;
	vala_ccode_file_add_function (_tmp142_, _tmp143_);
	_vala_ccode_node_unref0 (proxy_iface_init);
	_g_free0 (lower_cname);
}

static gchar*
vala_gd_bus_client_module_implement_interface (ValaGDBusClientModule* self,
                                               ValaCCodeFunctionCall* define_type,
                                               ValaInterface* main_iface,
                                               ValaInterface* iface)
{
	gchar* _result_ = NULL;
	gchar* _tmp0_;
	gchar* interface_macro = NULL;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
	gchar* _tmp29_;
	gchar* _tmp30_;
	gchar* _tmp31_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (define_type != NULL, NULL);
	g_return_val_if_fail (main_iface != NULL, NULL);
	g_return_val_if_fail (iface != NULL, NULL);
	_tmp0_ = g_strdup ("");
	_result_ = _tmp0_;
	{
		ValaList* _prereq_list = NULL;
		ValaList* _tmp1_;
		gint _prereq_size = 0;
		ValaList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _prereq_index = 0;
		_tmp1_ = vala_interface_get_prerequisites (iface);
		_prereq_list = _tmp1_;
		_tmp2_ = _prereq_list;
		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_prereq_size = _tmp4_;
		_prereq_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			ValaDataType* prereq = NULL;
			ValaList* _tmp7_;
			gpointer _tmp8_;
			ValaDataType* _tmp9_;
			ValaTypeSymbol* _tmp10_;
			ValaTypeSymbol* _tmp11_;
			_prereq_index = _prereq_index + 1;
			_tmp5_ = _prereq_index;
			_tmp6_ = _prereq_size;
			if (!(_tmp5_ < _tmp6_)) {
				break;
			}
			_tmp7_ = _prereq_list;
			_tmp8_ = vala_list_get (_tmp7_, _prereq_index);
			prereq = (ValaDataType*) _tmp8_;
			_tmp9_ = prereq;
			_tmp10_ = vala_data_type_get_type_symbol (_tmp9_);
			_tmp11_ = _tmp10_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_INTERFACE)) {
				const gchar* _tmp12_;
				ValaDataType* _tmp13_;
				ValaTypeSymbol* _tmp14_;
				ValaTypeSymbol* _tmp15_;
				gchar* _tmp16_;
				gchar* _tmp17_;
				gchar* _tmp18_;
				_tmp12_ = _result_;
				_tmp13_ = prereq;
				_tmp14_ = vala_data_type_get_type_symbol (_tmp13_);
				_tmp15_ = _tmp14_;
				_tmp16_ = vala_gd_bus_client_module_implement_interface (self, define_type, main_iface, G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_INTERFACE, ValaInterface));
				_tmp17_ = _tmp16_;
				_tmp18_ = g_strconcat (_tmp12_, _tmp17_, NULL);
				_g_free0 (_result_);
				_result_ = _tmp18_;
				_g_free0 (_tmp17_);
			}
			_vala_code_node_unref0 (prereq);
		}
	}
	if (((ValaCCodeBaseModule*) self)->in_plugin) {
		gchar* _tmp19_;
		_tmp19_ = g_strdup ("G_IMPLEMENT_INTERFACE_DYNAMIC");
		_g_free0 (interface_macro);
		interface_macro = _tmp19_;
	} else {
		gchar* _tmp20_;
		_tmp20_ = g_strdup ("G_IMPLEMENT_INTERFACE");
		_g_free0 (interface_macro);
		interface_macro = _tmp20_;
	}
	_tmp21_ = _result_;
	_tmp22_ = interface_macro;
	_tmp23_ = vala_get_ccode_upper_case_name ((ValaSymbol*) iface, "TYPE_");
	_tmp24_ = _tmp23_;
	_tmp25_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp26_ = _tmp25_;
	_tmp27_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) iface);
	_tmp28_ = _tmp27_;
	_tmp29_ = g_strdup_printf ("%s (%s, %sproxy_%sinterface_init) ", _tmp22_, _tmp24_, _tmp26_, _tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = g_strconcat (_tmp21_, _tmp30_, NULL);
	_g_free0 (_result_);
	_result_ = _tmp31_;
	_g_free0 (_tmp30_);
	_g_free0 (_tmp28_);
	_g_free0 (_tmp26_);
	_g_free0 (_tmp24_);
	result = _result_;
	_g_free0 (interface_macro);
	return result;
}

static void
vala_gd_bus_client_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
                                                               ValaInterface* iface,
                                                               ValaCCodeFile* decl_space)
{
	ValaGDBusClientModule * self;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	gchar* get_type_name = NULL;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	const gchar* _tmp6_;
	ValaCCodeNewline* _tmp7_;
	ValaCCodeNewline* _tmp8_;
	gchar* macro = NULL;
	const gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	const gchar* _tmp15_;
	ValaCCodeMacroReplacement* _tmp16_;
	ValaCCodeMacroReplacement* _tmp17_;
	ValaCCodeFunction* proxy_get_type = NULL;
	const gchar* _tmp18_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunction* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	self = (ValaGDBusClientModule*) base;
	g_return_if_fail (iface != NULL);
	g_return_if_fail (decl_space != NULL);
	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_client_module_parent_class)->generate_interface_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_MODULE, ValaGDBusModule), iface, decl_space);
	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) iface);
	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*) iface);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sproxy_get_type", _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	get_type_name = _tmp5_;
	_tmp6_ = get_type_name;
	if (vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) iface, _tmp6_)) {
		_g_free0 (get_type_name);
		_g_free0 (dbus_iface_name);
		return;
	}
	_tmp7_ = vala_ccode_newline_new ();
	_tmp8_ = _tmp7_;
	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = get_type_name;
	_tmp10_ = g_strdup_printf ("(%s ())", _tmp9_);
	macro = _tmp10_;
	_tmp11_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strdup_printf ("%s_PROXY", _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = macro;
	_tmp16_ = vala_ccode_macro_replacement_new (_tmp14_, _tmp15_);
	_tmp17_ = _tmp16_;
	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_g_free0 (_tmp14_);
	_g_free0 (_tmp12_);
	_tmp18_ = get_type_name;
	_tmp19_ = vala_ccode_function_new (_tmp18_, "GType");
	proxy_get_type = _tmp19_;
	_tmp20_ = proxy_get_type;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp20_, VALA_CCODE_MODIFIERS_CONST | VALA_CCODE_MODIFIERS_EXTERN);
	((ValaCCodeBaseModule*) self)->requires_vala_extern = TRUE;
	_tmp21_ = proxy_get_type;
	vala_ccode_file_add_function_declaration (decl_space, _tmp21_);
	if (((ValaCCodeBaseModule*) self)->in_plugin) {
		ValaCCodeFunction* proxy_register_type = NULL;
		gchar* _tmp22_;
		gchar* _tmp23_;
		gchar* _tmp24_;
		gchar* _tmp25_;
		ValaCCodeFunction* _tmp26_;
		ValaCCodeFunction* _tmp27_;
		ValaCCodeFunction* _tmp28_;
		ValaCCodeParameter* _tmp29_;
		ValaCCodeParameter* _tmp30_;
		ValaCCodeFunction* _tmp31_;
		ValaCCodeFunction* _tmp32_;
		ValaCCodeModifiers _tmp33_;
		ValaCCodeModifiers _tmp34_;
		ValaCCodeFunction* _tmp35_;
		_tmp22_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) iface);
		_tmp23_ = _tmp22_;
		_tmp24_ = g_strdup_printf ("%sproxy_register_dynamic_type", _tmp23_);
		_tmp25_ = _tmp24_;
		_tmp26_ = vala_ccode_function_new (_tmp25_, "void");
		_tmp27_ = _tmp26_;
		_g_free0 (_tmp25_);
		_g_free0 (_tmp23_);
		proxy_register_type = _tmp27_;
		_tmp28_ = proxy_register_type;
		_tmp29_ = vala_ccode_parameter_new ("module", "GTypeModule*");
		_tmp30_ = _tmp29_;
		vala_ccode_function_add_parameter (_tmp28_, _tmp30_);
		_vala_ccode_node_unref0 (_tmp30_);
		_tmp31_ = proxy_register_type;
		_tmp32_ = proxy_register_type;
		_tmp33_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp32_);
		_tmp34_ = _tmp33_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp32_, _tmp34_ | VALA_CCODE_MODIFIERS_EXTERN);
		((ValaCCodeBaseModule*) self)->requires_vala_extern = TRUE;
		_tmp35_ = proxy_register_type;
		vala_ccode_file_add_function_declaration (decl_space, _tmp35_);
		_vala_ccode_node_unref0 (proxy_register_type);
	}
	_vala_ccode_node_unref0 (proxy_get_type);
	_g_free0 (macro);
	_g_free0 (get_type_name);
	_g_free0 (dbus_iface_name);
}

static void
vala_gd_bus_client_module_real_visit_interface (ValaCodeVisitor* base,
                                                ValaInterface* iface)
{
	ValaGDBusClientModule * self;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	ValaCCodeFile* _tmp2_;
	gchar* cname = NULL;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* lower_cname = NULL;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	ValaCCodeFile* _tmp11_;
	const gchar* _tmp12_;
	ValaCCodeVariableDeclarator* _tmp13_;
	ValaCCodeVariableDeclarator* _tmp14_;
	ValaCCodeTypeDefinition* _tmp15_;
	ValaCCodeTypeDefinition* _tmp16_;
	ValaCCodeFile* _tmp17_;
	const gchar* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	ValaCCodeVariableDeclarator* _tmp21_;
	ValaCCodeVariableDeclarator* _tmp22_;
	ValaCCodeTypeDefinition* _tmp23_;
	ValaCCodeTypeDefinition* _tmp24_;
	gchar* type_macro = NULL;
	ValaCCodeFunctionCall* define_type = NULL;
	const gchar* _tmp27_;
	ValaCCodeIdentifier* _tmp28_;
	ValaCCodeIdentifier* _tmp29_;
	ValaCCodeFunctionCall* _tmp30_;
	ValaCCodeFunctionCall* _tmp31_;
	ValaCCodeFunctionCall* _tmp32_;
	const gchar* _tmp33_;
	ValaCCodeIdentifier* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeFunctionCall* _tmp36_;
	const gchar* _tmp37_;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeIdentifier* _tmp39_;
	ValaCCodeFunctionCall* _tmp40_;
	ValaCCodeIdentifier* _tmp41_;
	ValaCCodeIdentifier* _tmp42_;
	ValaCCodeFunctionCall* _tmp43_;
	ValaCCodeConstant* _tmp44_;
	ValaCCodeConstant* _tmp45_;
	ValaCCodeFunctionCall* _tmp46_;
	ValaCCodeFunctionCall* _tmp47_;
	gchar* _tmp48_;
	gchar* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaCCodeIdentifier* _tmp51_;
	ValaCCodeFile* _tmp52_;
	ValaCCodeFunctionCall* _tmp53_;
	ValaCCodeFunction* proxy_class_init = NULL;
	const gchar* _tmp54_;
	gchar* _tmp55_;
	gchar* _tmp56_;
	ValaCCodeFunction* _tmp57_;
	ValaCCodeFunction* _tmp58_;
	ValaCCodeFunction* _tmp59_;
	const gchar* _tmp60_;
	gchar* _tmp61_;
	gchar* _tmp62_;
	ValaCCodeParameter* _tmp63_;
	ValaCCodeParameter* _tmp64_;
	ValaCCodeFunction* _tmp65_;
	ValaCCodeFunction* _tmp66_;
	ValaCCodeFunctionCall* proxy_class = NULL;
	ValaCCodeIdentifier* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeFunctionCall* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeIdentifier* _tmp73_;
	ValaCCodeFunction* _tmp74_;
	ValaCCodeFunction* _tmp75_;
	ValaCCodeFunctionCall* _tmp76_;
	ValaCCodeMemberAccess* _tmp77_;
	ValaCCodeMemberAccess* _tmp78_;
	const gchar* _tmp79_;
	gchar* _tmp80_;
	gchar* _tmp81_;
	ValaCCodeIdentifier* _tmp82_;
	ValaCCodeIdentifier* _tmp83_;
	ValaCCodeFile* _tmp84_;
	ValaCCodeFunction* _tmp85_;
	ValaCCodeFunction* proxy_instance_init = NULL;
	const gchar* _tmp124_;
	gchar* _tmp125_;
	gchar* _tmp126_;
	ValaCCodeFunction* _tmp127_;
	ValaCCodeFunction* _tmp128_;
	ValaCCodeFunction* _tmp129_;
	const gchar* _tmp130_;
	gchar* _tmp131_;
	gchar* _tmp132_;
	ValaCCodeParameter* _tmp133_;
	ValaCCodeParameter* _tmp134_;
	ValaCCodeFunction* _tmp135_;
	ValaCCodeFunction* _tmp136_;
	ValaCCodeFunctionCall* dbus_proxy_cast = NULL;
	ValaCCodeIdentifier* _tmp137_;
	ValaCCodeIdentifier* _tmp138_;
	ValaCCodeFunctionCall* _tmp139_;
	ValaCCodeFunctionCall* _tmp140_;
	ValaCCodeFunctionCall* _tmp141_;
	ValaCCodeIdentifier* _tmp142_;
	ValaCCodeIdentifier* _tmp143_;
	ValaCCodeFunctionCall* set_interface_info = NULL;
	ValaCCodeIdentifier* _tmp144_;
	ValaCCodeIdentifier* _tmp145_;
	ValaCCodeFunctionCall* _tmp146_;
	ValaCCodeFunctionCall* _tmp147_;
	ValaCCodeFunctionCall* _tmp148_;
	ValaCCodeFunctionCall* _tmp149_;
	ValaCCodeFunctionCall* _tmp150_;
	ValaCCodeExpression* _tmp151_;
	ValaCCodeExpression* _tmp152_;
	ValaCCodeUnaryExpression* _tmp153_;
	ValaCCodeUnaryExpression* _tmp154_;
	ValaCCodeCastExpression* _tmp155_;
	ValaCCodeCastExpression* _tmp156_;
	ValaCCodeFunction* _tmp157_;
	ValaCCodeFunction* _tmp158_;
	ValaCCodeFunctionCall* _tmp159_;
	ValaCCodeFile* _tmp160_;
	ValaCCodeFunction* _tmp161_;
	self = (ValaGDBusClientModule*) base;
	g_return_if_fail (iface != NULL);
	VALA_CODE_VISITOR_CLASS (vala_gd_bus_client_module_parent_class)->visit_interface ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_MODULE, ValaGDBusModule), iface);
	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) iface);
	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_name ((ValaCodeNode*) iface);
	_tmp4_ = _tmp3_;
	_tmp5_ = g_strconcat (_tmp4_, "Proxy", NULL);
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	cname = _tmp6_;
	_tmp7_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) iface);
	_tmp8_ = _tmp7_;
	_tmp9_ = g_strconcat (_tmp8_, "proxy", NULL);
	_tmp10_ = _tmp9_;
	_g_free0 (_tmp8_);
	lower_cname = _tmp10_;
	_tmp11_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp12_ = cname;
	_tmp13_ = vala_ccode_variable_declarator_new (_tmp12_, NULL, NULL);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_type_definition_new ("GDBusProxy", (ValaCCodeDeclarator*) _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_file_add_type_declaration (_tmp11_, (ValaCCodeNode*) _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp17_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp18_ = cname;
	_tmp19_ = g_strconcat (_tmp18_, "Class", NULL);
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_variable_declarator_new (_tmp20_, NULL, NULL);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_type_definition_new ("GDBusProxyClass", (ValaCCodeDeclarator*) _tmp22_);
	_tmp24_ = _tmp23_;
	vala_ccode_file_add_type_declaration (_tmp17_, (ValaCCodeNode*) _tmp24_);
	_vala_ccode_node_unref0 (_tmp24_);
	_vala_ccode_node_unref0 (_tmp22_);
	_g_free0 (_tmp20_);
	if (((ValaCCodeBaseModule*) self)->in_plugin) {
		gchar* _tmp25_;
		_tmp25_ = g_strdup ("G_DEFINE_DYNAMIC_TYPE_EXTENDED");
		_g_free0 (type_macro);
		type_macro = _tmp25_;
	} else {
		gchar* _tmp26_;
		_tmp26_ = g_strdup ("G_DEFINE_TYPE_EXTENDED");
		_g_free0 (type_macro);
		type_macro = _tmp26_;
	}
	_tmp27_ = type_macro;
	_tmp28_ = vala_ccode_identifier_new (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
	_tmp31_ = _tmp30_;
	_vala_ccode_node_unref0 (_tmp29_);
	define_type = _tmp31_;
	_tmp32_ = define_type;
	_tmp33_ = cname;
	_tmp34_ = vala_ccode_identifier_new (_tmp33_);
	_tmp35_ = _tmp34_;
	vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp35_);
	_vala_ccode_node_unref0 (_tmp35_);
	_tmp36_ = define_type;
	_tmp37_ = lower_cname;
	_tmp38_ = vala_ccode_identifier_new (_tmp37_);
	_tmp39_ = _tmp38_;
	vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp39_);
	_vala_ccode_node_unref0 (_tmp39_);
	_tmp40_ = define_type;
	_tmp41_ = vala_ccode_identifier_new ("G_TYPE_DBUS_PROXY");
	_tmp42_ = _tmp41_;
	vala_ccode_function_call_add_argument (_tmp40_, (ValaCCodeExpression*) _tmp42_);
	_vala_ccode_node_unref0 (_tmp42_);
	_tmp43_ = define_type;
	_tmp44_ = vala_ccode_constant_new ("0");
	_tmp45_ = _tmp44_;
	vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp45_);
	_vala_ccode_node_unref0 (_tmp45_);
	_tmp46_ = define_type;
	_tmp47_ = define_type;
	_tmp48_ = vala_gd_bus_client_module_implement_interface (self, _tmp47_, iface, iface);
	_tmp49_ = _tmp48_;
	_tmp50_ = vala_ccode_identifier_new (_tmp49_);
	_tmp51_ = _tmp50_;
	vala_ccode_function_call_add_argument (_tmp46_, (ValaCCodeExpression*) _tmp51_);
	_vala_ccode_node_unref0 (_tmp51_);
	_g_free0 (_tmp49_);
	_tmp52_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp53_ = define_type;
	vala_ccode_file_add_type_member_definition (_tmp52_, (ValaCCodeNode*) _tmp53_);
	_tmp54_ = lower_cname;
	_tmp55_ = g_strconcat (_tmp54_, "_class_init", NULL);
	_tmp56_ = _tmp55_;
	_tmp57_ = vala_ccode_function_new (_tmp56_, "void");
	_tmp58_ = _tmp57_;
	_g_free0 (_tmp56_);
	proxy_class_init = _tmp58_;
	_tmp59_ = proxy_class_init;
	_tmp60_ = cname;
	_tmp61_ = g_strconcat (_tmp60_, "Class*", NULL);
	_tmp62_ = _tmp61_;
	_tmp63_ = vala_ccode_parameter_new ("klass", _tmp62_);
	_tmp64_ = _tmp63_;
	vala_ccode_function_add_parameter (_tmp59_, _tmp64_);
	_vala_ccode_node_unref0 (_tmp64_);
	_g_free0 (_tmp62_);
	_tmp65_ = proxy_class_init;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp65_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp66_ = proxy_class_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp66_);
	_tmp67_ = vala_ccode_identifier_new ("G_DBUS_PROXY_CLASS");
	_tmp68_ = _tmp67_;
	_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
	_tmp70_ = _tmp69_;
	_vala_ccode_node_unref0 (_tmp68_);
	proxy_class = _tmp70_;
	_tmp71_ = proxy_class;
	_tmp72_ = vala_ccode_identifier_new ("klass");
	_tmp73_ = _tmp72_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
	_vala_ccode_node_unref0 (_tmp73_);
	_tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp75_ = _tmp74_;
	_tmp76_ = proxy_class;
	_tmp77_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp76_, "g_signal");
	_tmp78_ = _tmp77_;
	_tmp79_ = lower_cname;
	_tmp80_ = g_strconcat (_tmp79_, "_g_signal", NULL);
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_identifier_new (_tmp81_);
	_tmp83_ = _tmp82_;
	vala_ccode_function_add_assignment (_tmp75_, (ValaCCodeExpression*) _tmp78_, (ValaCCodeExpression*) _tmp83_);
	_vala_ccode_node_unref0 (_tmp83_);
	_g_free0 (_tmp81_);
	_vala_ccode_node_unref0 (_tmp78_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp84_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp85_ = proxy_class_init;
	vala_ccode_file_add_function (_tmp84_, _tmp85_);
	vala_gd_bus_client_module_generate_signal_handler_function (self, (ValaObjectTypeSymbol*) iface);
	if (((ValaCCodeBaseModule*) self)->in_plugin) {
		ValaCCodeFunction* proxy_class_finalize = NULL;
		const gchar* _tmp86_;
		gchar* _tmp87_;
		gchar* _tmp88_;
		ValaCCodeFunction* _tmp89_;
		ValaCCodeFunction* _tmp90_;
		ValaCCodeFunction* _tmp91_;
		const gchar* _tmp92_;
		gchar* _tmp93_;
		gchar* _tmp94_;
		ValaCCodeParameter* _tmp95_;
		ValaCCodeParameter* _tmp96_;
		ValaCCodeFunction* _tmp97_;
		ValaCCodeFile* _tmp98_;
		ValaCCodeFunction* _tmp99_;
		ValaCCodeFunction* proxy_type_init = NULL;
		const gchar* _tmp100_;
		gchar* _tmp101_;
		gchar* _tmp102_;
		ValaCCodeFunction* _tmp103_;
		ValaCCodeFunction* _tmp104_;
		ValaCCodeFunction* _tmp105_;
		ValaCCodeParameter* _tmp106_;
		ValaCCodeParameter* _tmp107_;
		ValaCCodeFunction* _tmp108_;
		ValaCCodeFunctionCall* call_register_type = NULL;
		const gchar* _tmp109_;
		gchar* _tmp110_;
		gchar* _tmp111_;
		ValaCCodeIdentifier* _tmp112_;
		ValaCCodeIdentifier* _tmp113_;
		ValaCCodeFunctionCall* _tmp114_;
		ValaCCodeFunctionCall* _tmp115_;
		ValaCCodeFunctionCall* _tmp116_;
		ValaCCodeIdentifier* _tmp117_;
		ValaCCodeIdentifier* _tmp118_;
		ValaCCodeFunction* _tmp119_;
		ValaCCodeFunction* _tmp120_;
		ValaCCodeFunctionCall* _tmp121_;
		ValaCCodeFile* _tmp122_;
		ValaCCodeFunction* _tmp123_;
		_tmp86_ = lower_cname;
		_tmp87_ = g_strconcat (_tmp86_, "_class_finalize", NULL);
		_tmp88_ = _tmp87_;
		_tmp89_ = vala_ccode_function_new (_tmp88_, "void");
		_tmp90_ = _tmp89_;
		_g_free0 (_tmp88_);
		proxy_class_finalize = _tmp90_;
		_tmp91_ = proxy_class_finalize;
		_tmp92_ = cname;
		_tmp93_ = g_strconcat (_tmp92_, "Class*", NULL);
		_tmp94_ = _tmp93_;
		_tmp95_ = vala_ccode_parameter_new ("klass", _tmp94_);
		_tmp96_ = _tmp95_;
		vala_ccode_function_add_parameter (_tmp91_, _tmp96_);
		_vala_ccode_node_unref0 (_tmp96_);
		_g_free0 (_tmp94_);
		_tmp97_ = proxy_class_finalize;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp97_, VALA_CCODE_MODIFIERS_STATIC);
		_tmp98_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp99_ = proxy_class_finalize;
		vala_ccode_file_add_function (_tmp98_, _tmp99_);
		_tmp100_ = lower_cname;
		_tmp101_ = g_strconcat (_tmp100_, "_register_dynamic_type", NULL);
		_tmp102_ = _tmp101_;
		_tmp103_ = vala_ccode_function_new (_tmp102_, "void");
		_tmp104_ = _tmp103_;
		_g_free0 (_tmp102_);
		proxy_type_init = _tmp104_;
		_tmp105_ = proxy_type_init;
		_tmp106_ = vala_ccode_parameter_new ("module", "GTypeModule*");
		_tmp107_ = _tmp106_;
		vala_ccode_function_add_parameter (_tmp105_, _tmp107_);
		_vala_ccode_node_unref0 (_tmp107_);
		_tmp108_ = proxy_type_init;
		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp108_);
		_tmp109_ = lower_cname;
		_tmp110_ = g_strconcat (_tmp109_, "_register_type", NULL);
		_tmp111_ = _tmp110_;
		_tmp112_ = vala_ccode_identifier_new (_tmp111_);
		_tmp113_ = _tmp112_;
		_tmp114_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp113_);
		_tmp115_ = _tmp114_;
		_vala_ccode_node_unref0 (_tmp113_);
		_g_free0 (_tmp111_);
		call_register_type = _tmp115_;
		_tmp116_ = call_register_type;
		_tmp117_ = vala_ccode_identifier_new ("module");
		_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_ = call_register_type;
		vala_ccode_function_add_expression (_tmp120_, (ValaCCodeExpression*) _tmp121_);
		vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
		_tmp122_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp123_ = proxy_type_init;
		vala_ccode_file_add_function (_tmp122_, _tmp123_);
		_vala_ccode_node_unref0 (call_register_type);
		_vala_ccode_node_unref0 (proxy_type_init);
		_vala_ccode_node_unref0 (proxy_class_finalize);
	}
	_tmp124_ = lower_cname;
	_tmp125_ = g_strconcat (_tmp124_, "_init", NULL);
	_tmp126_ = _tmp125_;
	_tmp127_ = vala_ccode_function_new (_tmp126_, "void");
	_tmp128_ = _tmp127_;
	_g_free0 (_tmp126_);
	proxy_instance_init = _tmp128_;
	_tmp129_ = proxy_instance_init;
	_tmp130_ = cname;
	_tmp131_ = g_strconcat (_tmp130_, "*", NULL);
	_tmp132_ = _tmp131_;
	_tmp133_ = vala_ccode_parameter_new ("self", _tmp132_);
	_tmp134_ = _tmp133_;
	vala_ccode_function_add_parameter (_tmp129_, _tmp134_);
	_vala_ccode_node_unref0 (_tmp134_);
	_g_free0 (_tmp132_);
	_tmp135_ = proxy_instance_init;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp135_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp136_ = proxy_instance_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp136_);
	_tmp137_ = vala_ccode_identifier_new ("G_DBUS_PROXY");
	_tmp138_ = _tmp137_;
	_tmp139_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp138_);
	_tmp140_ = _tmp139_;
	_vala_ccode_node_unref0 (_tmp138_);
	dbus_proxy_cast = _tmp140_;
	_tmp141_ = dbus_proxy_cast;
	_tmp142_ = vala_ccode_identifier_new ("self");
	_tmp143_ = _tmp142_;
	vala_ccode_function_call_add_argument (_tmp141_, (ValaCCodeExpression*) _tmp143_);
	_vala_ccode_node_unref0 (_tmp143_);
	_tmp144_ = vala_ccode_identifier_new ("g_dbus_proxy_set_interface_info");
	_tmp145_ = _tmp144_;
	_tmp146_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp145_);
	_tmp147_ = _tmp146_;
	_vala_ccode_node_unref0 (_tmp145_);
	set_interface_info = _tmp147_;
	_tmp148_ = set_interface_info;
	_tmp149_ = dbus_proxy_cast;
	vala_ccode_function_call_add_argument (_tmp148_, (ValaCCodeExpression*) _tmp149_);
	_tmp150_ = set_interface_info;
	_tmp151_ = vala_gd_bus_module_get_interface_info ((ValaGDBusModule*) self, (ValaObjectTypeSymbol*) iface);
	_tmp152_ = _tmp151_;
	_tmp153_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp152_);
	_tmp154_ = _tmp153_;
	_tmp155_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp154_, "GDBusInterfaceInfo *");
	_tmp156_ = _tmp155_;
	vala_ccode_function_call_add_argument (_tmp150_, (ValaCCodeExpression*) _tmp156_);
	_vala_ccode_node_unref0 (_tmp156_);
	_vala_ccode_node_unref0 (_tmp154_);
	_vala_ccode_node_unref0 (_tmp152_);
	_tmp157_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp158_ = _tmp157_;
	_tmp159_ = set_interface_info;
	vala_ccode_function_add_expression (_tmp158_, (ValaCCodeExpression*) _tmp159_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp160_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp161_ = proxy_instance_init;
	vala_ccode_file_add_function (_tmp160_, _tmp161_);
	vala_gd_bus_client_module_generate_proxy_interface_init (self, iface, iface);
	_vala_ccode_node_unref0 (set_interface_info);
	_vala_ccode_node_unref0 (dbus_proxy_cast);
	_vala_ccode_node_unref0 (proxy_instance_init);
	_vala_ccode_node_unref0 (proxy_class);
	_vala_ccode_node_unref0 (proxy_class_init);
	_vala_ccode_node_unref0 (define_type);
	_g_free0 (type_macro);
	_g_free0 (lower_cname);
	_g_free0 (cname);
	_g_free0 (dbus_iface_name);
}

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

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

static void
vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* base,
                                                  ValaMethodCall* expr)
{
	ValaGDBusClientModule * self;
	ValaMethodType* mtype = NULL;
	ValaExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValaDataType* _tmp2_;
	ValaDataType* _tmp3_;
	ValaMethodType* _tmp4_;
	gboolean _tmp5_ = FALSE;
	ValaMethodType* _tmp6_;
	gboolean bus_get_proxy_async = FALSE;
	gboolean _tmp12_ = FALSE;
	ValaMethodType* _tmp13_;
	gboolean bus_get_proxy_sync = FALSE;
	gboolean _tmp19_ = FALSE;
	ValaMethodType* _tmp20_;
	gboolean conn_get_proxy_async = FALSE;
	gboolean _tmp26_ = FALSE;
	ValaMethodType* _tmp27_;
	gboolean conn_get_proxy_sync = FALSE;
	gboolean _tmp33_ = FALSE;
	gboolean _tmp34_ = FALSE;
	gboolean _tmp35_ = FALSE;
	ValaMemberAccess* ma = NULL;
	ValaExpression* _tmp36_;
	ValaExpression* _tmp37_;
	ValaMemberAccess* _tmp38_;
	ValaDataType* type_arg = NULL;
	ValaMemberAccess* _tmp39_;
	ValaList* _tmp40_;
	gpointer _tmp41_;
	ValaCCodeExpression* proxy_type = NULL;
	ValaCCodeExpression* dbus_iface_name = NULL;
	ValaObjectType* object_type = NULL;
	ValaDataType* _tmp42_;
	ValaObjectType* _tmp43_;
	ValaObjectType* _tmp44_;
	gboolean _tmp108_ = FALSE;
	gint base_arg_index = 0;
	gboolean _tmp196_ = FALSE;
	ValaList* args = NULL;
	ValaList* _tmp197_;
	ValaList* _tmp198_;
	ValaExpression* name = NULL;
	ValaList* _tmp199_;
	gpointer _tmp200_;
	ValaExpression* object_path = NULL;
	ValaList* _tmp201_;
	gpointer _tmp202_;
	ValaExpression* flags = NULL;
	ValaList* _tmp203_;
	gpointer _tmp204_;
	ValaExpression* cancellable = NULL;
	ValaList* _tmp205_;
	gpointer _tmp206_;
	ValaCCodeFunctionCall* ccall = NULL;
	gboolean _tmp207_ = FALSE;
	ValaCCodeFunctionCall* _tmp214_;
	ValaCCodeExpression* _tmp215_;
	gboolean _tmp216_ = FALSE;
	ValaCCodeFunctionCall* _tmp220_;
	ValaExpression* _tmp221_;
	ValaCCodeExpression* _tmp222_;
	gboolean _tmp223_ = FALSE;
	ValaCCodeFunctionCall* _tmp249_;
	ValaCCodeConstant* _tmp250_;
	ValaCCodeConstant* _tmp251_;
	ValaCCodeFunctionCall* _tmp252_;
	ValaExpression* _tmp253_;
	ValaCCodeExpression* _tmp254_;
	ValaCCodeFunctionCall* _tmp255_;
	ValaCCodeConstant* _tmp256_;
	ValaCCodeConstant* _tmp257_;
	ValaCCodeFunctionCall* _tmp258_;
	ValaExpression* _tmp259_;
	ValaCCodeExpression* _tmp260_;
	gboolean _tmp261_ = FALSE;
	ValaCCodeFunctionCall* _tmp300_;
	ValaCCodeConstant* _tmp301_;
	ValaCCodeConstant* _tmp302_;
	ValaCCodeFunctionCall* _tmp303_;
	ValaExpression* _tmp304_;
	ValaCCodeExpression* _tmp305_;
	ValaCCodeFunctionCall* _tmp306_;
	ValaCCodeConstant* _tmp307_;
	ValaCCodeConstant* _tmp308_;
	ValaCCodeFunctionCall* _tmp309_;
	ValaCCodeExpression* _tmp310_;
	ValaCCodeFunctionCall* _tmp311_;
	ValaCCodeConstant* _tmp312_;
	ValaCCodeConstant* _tmp313_;
	gboolean _tmp314_ = FALSE;
	ValaLocalVariable* temp_var = NULL;
	ValaDataType* _tmp363_;
	ValaDataType* _tmp364_;
	ValaDataType* _tmp365_;
	ValaDataType* _tmp366_;
	gboolean _tmp367_;
	gboolean _tmp368_;
	ValaLocalVariable* _tmp369_;
	ValaCCodeExpression* temp_ref = NULL;
	ValaLocalVariable* _tmp370_;
	const gchar* _tmp371_;
	const gchar* _tmp372_;
	ValaCCodeExpression* _tmp373_;
	ValaLocalVariable* _tmp374_;
	ValaCCodeFunction* _tmp375_;
	ValaCCodeFunction* _tmp376_;
	ValaCCodeExpression* _tmp377_;
	ValaCCodeFunctionCall* _tmp378_;
	ValaDataType* _tmp379_;
	ValaDataType* _tmp380_;
	gchar* _tmp381_;
	gchar* _tmp382_;
	ValaCCodeCastExpression* _tmp383_;
	ValaCCodeCastExpression* _tmp384_;
	ValaCCodeExpression* _tmp385_;
	self = (ValaGDBusClientModule*) 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) {
		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_bus_get_proxy") == 0;
		_g_free0 (_tmp11_);
	} else {
		_tmp5_ = FALSE;
	}
	bus_get_proxy_async = _tmp5_;
	_tmp13_ = mtype;
	if (_tmp13_ != NULL) {
		ValaMethodType* _tmp14_;
		ValaMethod* _tmp15_;
		ValaMethod* _tmp16_;
		gchar* _tmp17_;
		gchar* _tmp18_;
		_tmp14_ = mtype;
		_tmp15_ = vala_method_type_get_method_symbol (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp17_ = vala_get_ccode_name ((ValaCodeNode*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp12_ = g_strcmp0 (_tmp18_, "g_bus_get_proxy_sync") == 0;
		_g_free0 (_tmp18_);
	} else {
		_tmp12_ = FALSE;
	}
	bus_get_proxy_sync = _tmp12_;
	_tmp20_ = mtype;
	if (_tmp20_ != NULL) {
		ValaMethodType* _tmp21_;
		ValaMethod* _tmp22_;
		ValaMethod* _tmp23_;
		gchar* _tmp24_;
		gchar* _tmp25_;
		_tmp21_ = mtype;
		_tmp22_ = vala_method_type_get_method_symbol (_tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_get_ccode_name ((ValaCodeNode*) _tmp23_);
		_tmp25_ = _tmp24_;
		_tmp19_ = g_strcmp0 (_tmp25_, "g_dbus_connection_get_proxy") == 0;
		_g_free0 (_tmp25_);
	} else {
		_tmp19_ = FALSE;
	}
	conn_get_proxy_async = _tmp19_;
	_tmp27_ = mtype;
	if (_tmp27_ != NULL) {
		ValaMethodType* _tmp28_;
		ValaMethod* _tmp29_;
		ValaMethod* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		_tmp28_ = mtype;
		_tmp29_ = vala_method_type_get_method_symbol (_tmp28_);
		_tmp30_ = _tmp29_;
		_tmp31_ = vala_get_ccode_name ((ValaCodeNode*) _tmp30_);
		_tmp32_ = _tmp31_;
		_tmp26_ = g_strcmp0 (_tmp32_, "g_dbus_connection_get_proxy_sync") == 0;
		_g_free0 (_tmp32_);
	} else {
		_tmp26_ = FALSE;
	}
	conn_get_proxy_sync = _tmp26_;
	if (!bus_get_proxy_async) {
		_tmp35_ = !bus_get_proxy_sync;
	} else {
		_tmp35_ = FALSE;
	}
	if (_tmp35_) {
		_tmp34_ = !conn_get_proxy_async;
	} else {
		_tmp34_ = FALSE;
	}
	if (_tmp34_) {
		_tmp33_ = !conn_get_proxy_sync;
	} else {
		_tmp33_ = FALSE;
	}
	if (_tmp33_) {
		VALA_CODE_VISITOR_CLASS (vala_gd_bus_client_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_MODULE, ValaGDBusModule), expr);
		_vala_code_node_unref0 (mtype);
		return;
	}
	_tmp36_ = vala_callable_expression_get_call ((ValaCallableExpression*) expr);
	_tmp37_ = _tmp36_;
	_tmp38_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
	ma = _tmp38_;
	_tmp39_ = ma;
	_tmp40_ = vala_member_access_get_type_arguments (_tmp39_);
	_tmp41_ = vala_list_get (_tmp40_, 0);
	type_arg = (ValaDataType*) _tmp41_;
	_tmp42_ = type_arg;
	_tmp43_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp42_, VALA_TYPE_OBJECT_TYPE) ? ((ValaObjectType*) _tmp42_) : NULL);
	object_type = _tmp43_;
	_tmp44_ = object_type;
	if (_tmp44_ != NULL) {
		ValaInterface* iface = NULL;
		ValaObjectType* _tmp45_;
		ValaTypeSymbol* _tmp46_;
		ValaTypeSymbol* _tmp47_;
		ValaInterface* _tmp48_;
		ValaInterface* _tmp49_;
		gchar* _tmp50_;
		gchar* _tmp51_;
		gboolean _tmp52_;
		ValaInterface* _tmp58_;
		gchar* _tmp59_;
		gchar* _tmp60_;
		gchar* _tmp61_;
		gchar* _tmp62_;
		ValaCCodeIdentifier* _tmp63_;
		ValaInterface* _tmp64_;
		gchar* _tmp65_;
		gchar* _tmp66_;
		gchar* _tmp67_;
		gchar* _tmp68_;
		ValaCCodeConstant* _tmp69_;
		_tmp45_ = object_type;
		_tmp46_ = vala_data_type_get_type_symbol ((ValaDataType*) _tmp45_);
		_tmp47_ = _tmp46_;
		_tmp48_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp47_, VALA_TYPE_INTERFACE, ValaInterface));
		iface = _tmp48_;
		_tmp49_ = iface;
		_tmp50_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) _tmp49_);
		_tmp51_ = _tmp50_;
		_tmp52_ = _tmp51_ == NULL;
		_g_free0 (_tmp51_);
		if (_tmp52_) {
			ValaSourceReference* _tmp53_;
			ValaSourceReference* _tmp54_;
			ValaInterface* _tmp55_;
			gchar* _tmp56_;
			gchar* _tmp57_;
			_tmp53_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
			_tmp54_ = _tmp53_;
			_tmp55_ = iface;
			_tmp56_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp55_);
			_tmp57_ = _tmp56_;
			vala_report_error (_tmp54_, "`%s' is not a D-Bus interface", _tmp57_);
			_g_free0 (_tmp57_);
			_vala_code_node_unref0 (iface);
			_vala_code_node_unref0 (object_type);
			_vala_ccode_node_unref0 (dbus_iface_name);
			_vala_ccode_node_unref0 (proxy_type);
			_vala_code_node_unref0 (type_arg);
			_vala_code_node_unref0 (ma);
			_vala_code_node_unref0 (mtype);
			return;
		}
		_tmp58_ = iface;
		_tmp59_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp58_);
		_tmp60_ = _tmp59_;
		_tmp61_ = g_strdup_printf ("%s_PROXY", _tmp60_);
		_tmp62_ = _tmp61_;
		_tmp63_ = vala_ccode_identifier_new (_tmp62_);
		_vala_ccode_node_unref0 (proxy_type);
		proxy_type = (ValaCCodeExpression*) _tmp63_;
		_g_free0 (_tmp62_);
		_g_free0 (_tmp60_);
		_tmp64_ = iface;
		_tmp65_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) _tmp64_);
		_tmp66_ = _tmp65_;
		_tmp67_ = g_strdup_printf ("\"%s\"", _tmp66_);
		_tmp68_ = _tmp67_;
		_tmp69_ = vala_ccode_constant_new (_tmp68_);
		_vala_ccode_node_unref0 (dbus_iface_name);
		dbus_iface_name = (ValaCCodeExpression*) _tmp69_;
		_g_free0 (_tmp68_);
		_g_free0 (_tmp66_);
		_vala_code_node_unref0 (iface);
	} else {
		ValaCCodeFunctionCall* quark = NULL;
		ValaCCodeIdentifier* _tmp70_;
		ValaCCodeIdentifier* _tmp71_;
		ValaCCodeFunctionCall* _tmp72_;
		ValaCCodeFunctionCall* _tmp73_;
		ValaCCodeFunctionCall* _tmp74_;
		ValaCCodeConstant* _tmp75_;
		ValaCCodeConstant* _tmp76_;
		ValaCCodeFunctionCall* get_qdata = NULL;
		ValaCCodeIdentifier* _tmp77_;
		ValaCCodeIdentifier* _tmp78_;
		ValaCCodeFunctionCall* _tmp79_;
		ValaCCodeFunctionCall* _tmp80_;
		ValaCCodeFunctionCall* _tmp81_;
		ValaDataType* _tmp82_;
		ValaCCodeExpression* _tmp83_;
		ValaCCodeExpression* _tmp84_;
		ValaCCodeFunctionCall* _tmp85_;
		ValaCCodeFunctionCall* _tmp86_;
		ValaCCodeFunctionCall* _tmp87_;
		ValaCCodeCastExpression* _tmp88_;
		ValaCCodeCastExpression* _tmp89_;
		ValaCCodeFunctionCall* _tmp90_;
		ValaCCodeIdentifier* _tmp91_;
		ValaCCodeIdentifier* _tmp92_;
		ValaCCodeFunctionCall* _tmp93_;
		ValaCCodeFunctionCall* _tmp94_;
		ValaCCodeConstant* _tmp95_;
		ValaCCodeConstant* _tmp96_;
		ValaCCodeIdentifier* _tmp97_;
		ValaCCodeIdentifier* _tmp98_;
		ValaCCodeFunctionCall* _tmp99_;
		ValaCCodeFunctionCall* _tmp100_;
		ValaDataType* _tmp101_;
		ValaCCodeExpression* _tmp102_;
		ValaCCodeExpression* _tmp103_;
		ValaCCodeFunctionCall* _tmp104_;
		ValaCCodeFunctionCall* _tmp105_;
		ValaCCodeFunctionCall* _tmp106_;
		ValaCCodeExpression* _tmp107_;
		_tmp70_ = vala_ccode_identifier_new ("g_quark_from_static_string");
		_tmp71_ = _tmp70_;
		_tmp72_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp71_);
		_tmp73_ = _tmp72_;
		_vala_ccode_node_unref0 (_tmp71_);
		quark = _tmp73_;
		_tmp74_ = quark;
		_tmp75_ = vala_ccode_constant_new ("\"vala-dbus-proxy-type\"");
		_tmp76_ = _tmp75_;
		vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp76_);
		_vala_ccode_node_unref0 (_tmp76_);
		_tmp77_ = vala_ccode_identifier_new ("g_type_get_qdata");
		_tmp78_ = _tmp77_;
		_tmp79_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp78_);
		_tmp80_ = _tmp79_;
		_vala_ccode_node_unref0 (_tmp78_);
		get_qdata = _tmp80_;
		_tmp81_ = get_qdata;
		_tmp82_ = type_arg;
		_tmp83_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp82_, FALSE);
		_tmp84_ = _tmp83_;
		vala_ccode_function_call_add_argument (_tmp81_, _tmp84_);
		_vala_ccode_node_unref0 (_tmp84_);
		_tmp85_ = get_qdata;
		_tmp86_ = quark;
		vala_ccode_function_call_add_argument (_tmp85_, (ValaCCodeExpression*) _tmp86_);
		_tmp87_ = get_qdata;
		_tmp88_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp87_, "GType (*) (void)");
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
		_vala_ccode_node_unref0 (proxy_type);
		proxy_type = (ValaCCodeExpression*) _tmp90_;
		_vala_ccode_node_unref0 (_tmp89_);
		_tmp91_ = vala_ccode_identifier_new ("g_quark_from_static_string");
		_tmp92_ = _tmp91_;
		_tmp93_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp92_);
		_vala_ccode_node_unref0 (quark);
		quark = _tmp93_;
		_vala_ccode_node_unref0 (_tmp92_);
		_tmp94_ = quark;
		_tmp95_ = vala_ccode_constant_new ("\"vala-dbus-interface-name\"");
		_tmp96_ = _tmp95_;
		vala_ccode_function_call_add_argument (_tmp94_, (ValaCCodeExpression*) _tmp96_);
		_vala_ccode_node_unref0 (_tmp96_);
		_tmp97_ = vala_ccode_identifier_new ("g_type_get_qdata");
		_tmp98_ = _tmp97_;
		_tmp99_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp98_);
		_vala_ccode_node_unref0 (get_qdata);
		get_qdata = _tmp99_;
		_vala_ccode_node_unref0 (_tmp98_);
		_tmp100_ = get_qdata;
		_tmp101_ = type_arg;
		_tmp102_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp101_, FALSE);
		_tmp103_ = _tmp102_;
		vala_ccode_function_call_add_argument (_tmp100_, _tmp103_);
		_vala_ccode_node_unref0 (_tmp103_);
		_tmp104_ = get_qdata;
		_tmp105_ = quark;
		vala_ccode_function_call_add_argument (_tmp104_, (ValaCCodeExpression*) _tmp105_);
		_tmp106_ = get_qdata;
		_tmp107_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp106_);
		_vala_ccode_node_unref0 (dbus_iface_name);
		dbus_iface_name = _tmp107_;
		_vala_ccode_node_unref0 (get_qdata);
		_vala_ccode_node_unref0 (quark);
	}
	if (bus_get_proxy_async) {
		_tmp108_ = TRUE;
	} else {
		_tmp108_ = conn_get_proxy_async;
	}
	if (_tmp108_) {
		gboolean _tmp109_ = FALSE;
		ValaMemberAccess* _tmp110_;
		const gchar* _tmp111_;
		const gchar* _tmp112_;
		_tmp110_ = ma;
		_tmp111_ = vala_member_access_get_member_name (_tmp110_);
		_tmp112_ = _tmp111_;
		if (g_strcmp0 (_tmp112_, "end") == 0) {
			ValaMemberAccess* _tmp113_;
			ValaExpression* _tmp114_;
			ValaExpression* _tmp115_;
			ValaSymbol* _tmp116_;
			ValaSymbol* _tmp117_;
			ValaMemberAccess* _tmp118_;
			ValaSymbol* _tmp119_;
			ValaSymbol* _tmp120_;
			_tmp113_ = ma;
			_tmp114_ = vala_member_access_get_inner (_tmp113_);
			_tmp115_ = _tmp114_;
			_tmp116_ = vala_expression_get_symbol_reference (_tmp115_);
			_tmp117_ = _tmp116_;
			_tmp118_ = ma;
			_tmp119_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp118_);
			_tmp120_ = _tmp119_;
			_tmp109_ = _tmp117_ == _tmp120_;
		} else {
			_tmp109_ = FALSE;
		}
		if (_tmp109_) {
			ValaList* args = NULL;
			ValaList* _tmp121_;
			ValaList* _tmp122_;
			ValaExpression* res = NULL;
			ValaList* _tmp123_;
			gpointer _tmp124_;
			ValaLocalVariable* source_var = NULL;
			ValaDataType* _tmp125_;
			ValaDataType* _tmp126_;
			ValaDataType* _tmp127_;
			ValaDataType* _tmp128_;
			gboolean _tmp129_;
			gboolean _tmp130_;
			ValaLocalVariable* _tmp131_;
			ValaCCodeExpression* source_ref = NULL;
			ValaLocalVariable* _tmp132_;
			const gchar* _tmp133_;
			const gchar* _tmp134_;
			ValaCCodeExpression* _tmp135_;
			ValaLocalVariable* _tmp136_;
			ValaCCodeFunctionCall* source = NULL;
			ValaCCodeIdentifier* _tmp137_;
			ValaCCodeIdentifier* _tmp138_;
			ValaCCodeFunctionCall* _tmp139_;
			ValaCCodeFunctionCall* _tmp140_;
			ValaCCodeFunctionCall* _tmp141_;
			ValaExpression* _tmp142_;
			ValaCCodeExpression* _tmp143_;
			ValaCCodeFunction* _tmp144_;
			ValaCCodeFunction* _tmp145_;
			ValaCCodeExpression* _tmp146_;
			ValaCCodeFunctionCall* _tmp147_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp148_;
			ValaCCodeIdentifier* _tmp149_;
			ValaCCodeFunctionCall* _tmp150_;
			ValaCCodeFunctionCall* _tmp151_;
			ValaCCodeFunctionCall* _tmp152_;
			ValaCCodeExpression* _tmp153_;
			ValaCCodeCastExpression* _tmp154_;
			ValaCCodeCastExpression* _tmp155_;
			ValaCCodeFunctionCall* _tmp156_;
			ValaExpression* _tmp157_;
			ValaCCodeExpression* _tmp158_;
			ValaCCodeFunctionCall* _tmp159_;
			ValaCCodeExpression* _tmp160_;
			ValaCCodeExpression* _tmp161_;
			ValaCCodeUnaryExpression* _tmp162_;
			ValaCCodeUnaryExpression* _tmp163_;
			ValaLocalVariable* temp_var = NULL;
			ValaDataType* _tmp164_;
			ValaDataType* _tmp165_;
			ValaDataType* _tmp166_;
			ValaDataType* _tmp167_;
			gboolean _tmp168_;
			gboolean _tmp169_;
			ValaLocalVariable* _tmp170_;
			ValaCCodeExpression* temp_ref = NULL;
			ValaLocalVariable* _tmp171_;
			const gchar* _tmp172_;
			const gchar* _tmp173_;
			ValaCCodeExpression* _tmp174_;
			ValaLocalVariable* _tmp175_;
			ValaCCodeFunction* _tmp176_;
			ValaCCodeFunction* _tmp177_;
			ValaCCodeExpression* _tmp178_;
			ValaCCodeFunctionCall* _tmp179_;
			ValaDataType* _tmp180_;
			ValaDataType* _tmp181_;
			gchar* _tmp182_;
			gchar* _tmp183_;
			ValaCCodeCastExpression* _tmp184_;
			ValaCCodeCastExpression* _tmp185_;
			ValaCCodeFunctionCall* unref_proxy = NULL;
			ValaCCodeIdentifier* _tmp186_;
			ValaCCodeIdentifier* _tmp187_;
			ValaCCodeFunctionCall* _tmp188_;
			ValaCCodeFunctionCall* _tmp189_;
			ValaCCodeFunctionCall* _tmp190_;
			ValaCCodeExpression* _tmp191_;
			ValaCCodeFunction* _tmp192_;
			ValaCCodeFunction* _tmp193_;
			ValaCCodeFunctionCall* _tmp194_;
			ValaCCodeExpression* _tmp195_;
			vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
			_tmp121_ = vala_callable_expression_get_argument_list ((ValaCallableExpression*) expr);
			_tmp122_ = _vala_iterable_ref0 (_tmp121_);
			args = _tmp122_;
			_tmp123_ = args;
			_tmp124_ = vala_list_get (_tmp123_, 0);
			res = (ValaExpression*) _tmp124_;
			_tmp125_ = vala_expression_get_value_type ((ValaExpression*) expr);
			_tmp126_ = _tmp125_;
			_tmp127_ = vala_expression_get_value_type ((ValaExpression*) expr);
			_tmp128_ = _tmp127_;
			_tmp129_ = vala_data_type_get_value_owned (_tmp128_);
			_tmp130_ = _tmp129_;
			_tmp131_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp126_, _tmp130_, NULL, FALSE);
			source_var = _tmp131_;
			_tmp132_ = source_var;
			_tmp133_ = vala_symbol_get_name ((ValaSymbol*) _tmp132_);
			_tmp134_ = _tmp133_;
			_tmp135_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp134_);
			source_ref = _tmp135_;
			_tmp136_ = source_var;
			vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp136_, FALSE);
			_tmp137_ = vala_ccode_identifier_new ("g_async_result_get_source_object");
			_tmp138_ = _tmp137_;
			_tmp139_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp138_);
			_tmp140_ = _tmp139_;
			_vala_ccode_node_unref0 (_tmp138_);
			source = _tmp140_;
			_tmp141_ = source;
			_tmp142_ = res;
			_tmp143_ = vala_get_cvalue (_tmp142_);
			vala_ccode_function_call_add_argument (_tmp141_, _tmp143_);
			_tmp144_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp145_ = _tmp144_;
			_tmp146_ = source_ref;
			_tmp147_ = source;
			vala_ccode_function_add_assignment (_tmp145_, _tmp146_, (ValaCCodeExpression*) _tmp147_);
			_tmp148_ = vala_ccode_identifier_new ("g_async_initable_new_finish");
			_tmp149_ = _tmp148_;
			_tmp150_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp149_);
			_tmp151_ = _tmp150_;
			_vala_ccode_node_unref0 (_tmp149_);
			ccall = _tmp151_;
			_tmp152_ = ccall;
			_tmp153_ = source_ref;
			_tmp154_ = vala_ccode_cast_expression_new (_tmp153_, "GAsyncInitable *");
			_tmp155_ = _tmp154_;
			vala_ccode_function_call_add_argument (_tmp152_, (ValaCCodeExpression*) _tmp155_);
			_vala_ccode_node_unref0 (_tmp155_);
			_tmp156_ = ccall;
			_tmp157_ = res;
			_tmp158_ = vala_get_cvalue (_tmp157_);
			vala_ccode_function_call_add_argument (_tmp156_, _tmp158_);
			_tmp159_ = ccall;
			_tmp160_ = vala_ccode_base_module_get_inner_error_cexpression ((ValaCCodeBaseModule*) self);
			_tmp161_ = _tmp160_;
			_tmp162_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp161_);
			_tmp163_ = _tmp162_;
			vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp163_);
			_vala_ccode_node_unref0 (_tmp163_);
			_vala_ccode_node_unref0 (_tmp161_);
			_tmp164_ = vala_expression_get_value_type ((ValaExpression*) expr);
			_tmp165_ = _tmp164_;
			_tmp166_ = vala_expression_get_value_type ((ValaExpression*) expr);
			_tmp167_ = _tmp166_;
			_tmp168_ = vala_data_type_get_value_owned (_tmp167_);
			_tmp169_ = _tmp168_;
			_tmp170_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp165_, _tmp169_, NULL, FALSE);
			temp_var = _tmp170_;
			_tmp171_ = temp_var;
			_tmp172_ = vala_symbol_get_name ((ValaSymbol*) _tmp171_);
			_tmp173_ = _tmp172_;
			_tmp174_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp173_);
			temp_ref = _tmp174_;
			_tmp175_ = temp_var;
			vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp175_, FALSE);
			_tmp176_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp177_ = _tmp176_;
			_tmp178_ = temp_ref;
			_tmp179_ = ccall;
			_tmp180_ = vala_expression_get_value_type ((ValaExpression*) expr);
			_tmp181_ = _tmp180_;
			_tmp182_ = vala_get_ccode_name ((ValaCodeNode*) _tmp181_);
			_tmp183_ = _tmp182_;
			_tmp184_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp179_, _tmp183_);
			_tmp185_ = _tmp184_;
			vala_ccode_function_add_assignment (_tmp177_, _tmp178_, (ValaCCodeExpression*) _tmp185_);
			_vala_ccode_node_unref0 (_tmp185_);
			_g_free0 (_tmp183_);
			_tmp186_ = vala_ccode_identifier_new ("g_object_unref");
			_tmp187_ = _tmp186_;
			_tmp188_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp187_);
			_tmp189_ = _tmp188_;
			_vala_ccode_node_unref0 (_tmp187_);
			unref_proxy = _tmp189_;
			_tmp190_ = unref_proxy;
			_tmp191_ = source_ref;
			vala_ccode_function_call_add_argument (_tmp190_, _tmp191_);
			_tmp192_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp193_ = _tmp192_;
			_tmp194_ = unref_proxy;
			vala_ccode_function_add_expression (_tmp193_, (ValaCCodeExpression*) _tmp194_);
			_tmp195_ = temp_ref;
			vala_set_cvalue ((ValaExpression*) expr, _tmp195_);
			_vala_ccode_node_unref0 (unref_proxy);
			_vala_ccode_node_unref0 (temp_ref);
			_vala_code_node_unref0 (temp_var);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (source);
			_vala_ccode_node_unref0 (source_ref);
			_vala_code_node_unref0 (source_var);
			_vala_code_node_unref0 (res);
			_vala_iterable_unref0 (args);
			_vala_code_node_unref0 (object_type);
			_vala_ccode_node_unref0 (dbus_iface_name);
			_vala_ccode_node_unref0 (proxy_type);
			_vala_code_node_unref0 (type_arg);
			_vala_code_node_unref0 (ma);
			_vala_code_node_unref0 (mtype);
			return;
		}
	}
	base_arg_index = 0;
	if (bus_get_proxy_async) {
		_tmp196_ = TRUE;
	} else {
		_tmp196_ = bus_get_proxy_sync;
	}
	if (_tmp196_) {
		base_arg_index = 1;
	}
	_tmp197_ = vala_callable_expression_get_argument_list ((ValaCallableExpression*) expr);
	_tmp198_ = _vala_iterable_ref0 (_tmp197_);
	args = _tmp198_;
	_tmp199_ = args;
	_tmp200_ = vala_list_get (_tmp199_, base_arg_index + 0);
	name = (ValaExpression*) _tmp200_;
	_tmp201_ = args;
	_tmp202_ = vala_list_get (_tmp201_, base_arg_index + 1);
	object_path = (ValaExpression*) _tmp202_;
	_tmp203_ = args;
	_tmp204_ = vala_list_get (_tmp203_, base_arg_index + 2);
	flags = (ValaExpression*) _tmp204_;
	_tmp205_ = args;
	_tmp206_ = vala_list_get (_tmp205_, base_arg_index + 3);
	cancellable = (ValaExpression*) _tmp206_;
	vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
	if (bus_get_proxy_async) {
		_tmp207_ = TRUE;
	} else {
		_tmp207_ = conn_get_proxy_async;
	}
	if (_tmp207_) {
		ValaCCodeIdentifier* _tmp208_;
		ValaCCodeIdentifier* _tmp209_;
		ValaCCodeFunctionCall* _tmp210_;
		_tmp208_ = vala_ccode_identifier_new ("g_async_initable_new_async");
		_tmp209_ = _tmp208_;
		_tmp210_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp209_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp210_;
		_vala_ccode_node_unref0 (_tmp209_);
	} else {
		ValaCCodeIdentifier* _tmp211_;
		ValaCCodeIdentifier* _tmp212_;
		ValaCCodeFunctionCall* _tmp213_;
		_tmp211_ = vala_ccode_identifier_new ("g_initable_new");
		_tmp212_ = _tmp211_;
		_tmp213_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp212_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp213_;
		_vala_ccode_node_unref0 (_tmp212_);
	}
	_tmp214_ = ccall;
	_tmp215_ = proxy_type;
	vala_ccode_function_call_add_argument (_tmp214_, _tmp215_);
	if (bus_get_proxy_async) {
		_tmp216_ = TRUE;
	} else {
		_tmp216_ = conn_get_proxy_async;
	}
	if (_tmp216_) {
		ValaCCodeFunctionCall* _tmp217_;
		ValaCCodeConstant* _tmp218_;
		ValaCCodeConstant* _tmp219_;
		_tmp217_ = ccall;
		_tmp218_ = vala_ccode_constant_new ("0");
		_tmp219_ = _tmp218_;
		vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp219_);
		_vala_ccode_node_unref0 (_tmp219_);
	}
	_tmp220_ = ccall;
	_tmp221_ = cancellable;
	_tmp222_ = vala_get_cvalue (_tmp221_);
	vala_ccode_function_call_add_argument (_tmp220_, _tmp222_);
	if (bus_get_proxy_async) {
		_tmp223_ = TRUE;
	} else {
		_tmp223_ = conn_get_proxy_async;
	}
	if (_tmp223_) {
		gboolean _tmp224_;
		gboolean _tmp225_;
		_tmp224_ = vala_callable_expression_get_is_yield_expression ((ValaCallableExpression*) expr);
		_tmp225_ = _tmp224_;
		if (_tmp225_) {
			ValaCCodeFunctionCall* _tmp226_;
			ValaMethod* _tmp227_;
			ValaMethod* _tmp228_;
			gchar* _tmp229_;
			gchar* _tmp230_;
			ValaCCodeIdentifier* _tmp231_;
			ValaCCodeIdentifier* _tmp232_;
			ValaCCodeFunctionCall* _tmp233_;
			ValaCCodeIdentifier* _tmp234_;
			ValaCCodeIdentifier* _tmp235_;
			_tmp226_ = ccall;
			_tmp227_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
			_tmp228_ = _tmp227_;
			_tmp229_ = vala_ccode_base_module_generate_ready_function ((ValaCCodeBaseModule*) self, _tmp228_);
			_tmp230_ = _tmp229_;
			_tmp231_ = vala_ccode_identifier_new (_tmp230_);
			_tmp232_ = _tmp231_;
			vala_ccode_function_call_add_argument (_tmp226_, (ValaCCodeExpression*) _tmp232_);
			_vala_ccode_node_unref0 (_tmp232_);
			_g_free0 (_tmp230_);
			_tmp233_ = ccall;
			_tmp234_ = vala_ccode_identifier_new ("_data_");
			_tmp235_ = _tmp234_;
			vala_ccode_function_call_add_argument (_tmp233_, (ValaCCodeExpression*) _tmp235_);
			_vala_ccode_node_unref0 (_tmp235_);
		} else {
			ValaExpression* callback = NULL;
			ValaList* _tmp236_;
			gpointer _tmp237_;
			ValaCCodeFunctionCall* _tmp238_;
			ValaExpression* _tmp239_;
			ValaCCodeExpression* _tmp240_;
			ValaCCodeFunctionCall* _tmp241_;
			ValaExpression* _tmp242_;
			ValaCCodeExpression* _tmp243_;
			_tmp236_ = args;
			_tmp237_ = vala_list_get (_tmp236_, base_arg_index + 4);
			callback = (ValaExpression*) _tmp237_;
			_tmp238_ = ccall;
			_tmp239_ = callback;
			_tmp240_ = vala_get_cvalue (_tmp239_);
			vala_ccode_function_call_add_argument (_tmp238_, _tmp240_);
			_tmp241_ = ccall;
			_tmp242_ = callback;
			_tmp243_ = vala_get_delegate_target (_tmp242_);
			vala_ccode_function_call_add_argument (_tmp241_, _tmp243_);
			_vala_code_node_unref0 (callback);
		}
	} else {
		ValaCCodeFunctionCall* _tmp244_;
		ValaCCodeExpression* _tmp245_;
		ValaCCodeExpression* _tmp246_;
		ValaCCodeUnaryExpression* _tmp247_;
		ValaCCodeUnaryExpression* _tmp248_;
		_tmp244_ = ccall;
		_tmp245_ = vala_ccode_base_module_get_inner_error_cexpression ((ValaCCodeBaseModule*) self);
		_tmp246_ = _tmp245_;
		_tmp247_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp246_);
		_tmp248_ = _tmp247_;
		vala_ccode_function_call_add_argument (_tmp244_, (ValaCCodeExpression*) _tmp248_);
		_vala_ccode_node_unref0 (_tmp248_);
		_vala_ccode_node_unref0 (_tmp246_);
	}
	_tmp249_ = ccall;
	_tmp250_ = vala_ccode_constant_new ("\"g-flags\"");
	_tmp251_ = _tmp250_;
	vala_ccode_function_call_add_argument (_tmp249_, (ValaCCodeExpression*) _tmp251_);
	_vala_ccode_node_unref0 (_tmp251_);
	_tmp252_ = ccall;
	_tmp253_ = flags;
	_tmp254_ = vala_get_cvalue (_tmp253_);
	vala_ccode_function_call_add_argument (_tmp252_, _tmp254_);
	_tmp255_ = ccall;
	_tmp256_ = vala_ccode_constant_new ("\"g-name\"");
	_tmp257_ = _tmp256_;
	vala_ccode_function_call_add_argument (_tmp255_, (ValaCCodeExpression*) _tmp257_);
	_vala_ccode_node_unref0 (_tmp257_);
	_tmp258_ = ccall;
	_tmp259_ = name;
	_tmp260_ = vala_get_cvalue (_tmp259_);
	vala_ccode_function_call_add_argument (_tmp258_, _tmp260_);
	if (bus_get_proxy_async) {
		_tmp261_ = TRUE;
	} else {
		_tmp261_ = bus_get_proxy_sync;
	}
	if (_tmp261_) {
		ValaExpression* bus_type = NULL;
		ValaList* _tmp262_;
		gpointer _tmp263_;
		ValaCCodeFunctionCall* _tmp264_;
		ValaCCodeConstant* _tmp265_;
		ValaCCodeConstant* _tmp266_;
		ValaCCodeFunctionCall* _tmp267_;
		ValaExpression* _tmp268_;
		ValaCCodeExpression* _tmp269_;
		_tmp262_ = args;
		_tmp263_ = vala_list_get (_tmp262_, 0);
		bus_type = (ValaExpression*) _tmp263_;
		_tmp264_ = ccall;
		_tmp265_ = vala_ccode_constant_new ("\"g-bus-type\"");
		_tmp266_ = _tmp265_;
		vala_ccode_function_call_add_argument (_tmp264_, (ValaCCodeExpression*) _tmp266_);
		_vala_ccode_node_unref0 (_tmp266_);
		_tmp267_ = ccall;
		_tmp268_ = bus_type;
		_tmp269_ = vala_get_cvalue (_tmp268_);
		vala_ccode_function_call_add_argument (_tmp267_, _tmp269_);
		_vala_code_node_unref0 (bus_type);
	} else {
		ValaExpression* connection = NULL;
		ValaMemberAccess* _tmp270_;
		ValaExpression* _tmp271_;
		ValaExpression* _tmp272_;
		ValaExpression* _tmp273_;
		gboolean _tmp274_ = FALSE;
		ValaMemberAccess* _tmp275_;
		const gchar* _tmp276_;
		const gchar* _tmp277_;
		ValaCCodeFunctionCall* _tmp294_;
		ValaCCodeConstant* _tmp295_;
		ValaCCodeConstant* _tmp296_;
		ValaCCodeFunctionCall* _tmp297_;
		ValaExpression* _tmp298_;
		ValaCCodeExpression* _tmp299_;
		_tmp270_ = ma;
		_tmp271_ = vala_member_access_get_inner (_tmp270_);
		_tmp272_ = _tmp271_;
		_tmp273_ = _vala_code_node_ref0 (_tmp272_);
		connection = _tmp273_;
		_tmp275_ = ma;
		_tmp276_ = vala_member_access_get_member_name (_tmp275_);
		_tmp277_ = _tmp276_;
		if (g_strcmp0 (_tmp277_, "begin") == 0) {
			ValaMemberAccess* _tmp278_;
			ValaExpression* _tmp279_;
			ValaExpression* _tmp280_;
			ValaSymbol* _tmp281_;
			ValaSymbol* _tmp282_;
			ValaMemberAccess* _tmp283_;
			ValaSymbol* _tmp284_;
			ValaSymbol* _tmp285_;
			_tmp278_ = ma;
			_tmp279_ = vala_member_access_get_inner (_tmp278_);
			_tmp280_ = _tmp279_;
			_tmp281_ = vala_expression_get_symbol_reference (_tmp280_);
			_tmp282_ = _tmp281_;
			_tmp283_ = ma;
			_tmp284_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp283_);
			_tmp285_ = _tmp284_;
			_tmp274_ = _tmp282_ == _tmp285_;
		} else {
			_tmp274_ = FALSE;
		}
		if (_tmp274_) {
			ValaMemberAccess* inner_ma = NULL;
			ValaMemberAccess* _tmp286_;
			ValaExpression* _tmp287_;
			ValaExpression* _tmp288_;
			ValaMemberAccess* _tmp289_;
			ValaMemberAccess* _tmp290_;
			ValaExpression* _tmp291_;
			ValaExpression* _tmp292_;
			ValaExpression* _tmp293_;
			_tmp286_ = ma;
			_tmp287_ = vala_member_access_get_inner (_tmp286_);
			_tmp288_ = _tmp287_;
			_tmp289_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp288_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
			inner_ma = _tmp289_;
			_tmp290_ = inner_ma;
			_tmp291_ = vala_member_access_get_inner (_tmp290_);
			_tmp292_ = _tmp291_;
			_tmp293_ = _vala_code_node_ref0 (_tmp292_);
			_vala_code_node_unref0 (connection);
			connection = _tmp293_;
			_vala_code_node_unref0 (inner_ma);
		}
		_tmp294_ = ccall;
		_tmp295_ = vala_ccode_constant_new ("\"g-connection\"");
		_tmp296_ = _tmp295_;
		vala_ccode_function_call_add_argument (_tmp294_, (ValaCCodeExpression*) _tmp296_);
		_vala_ccode_node_unref0 (_tmp296_);
		_tmp297_ = ccall;
		_tmp298_ = connection;
		_tmp299_ = vala_get_cvalue (_tmp298_);
		vala_ccode_function_call_add_argument (_tmp297_, _tmp299_);
		_vala_code_node_unref0 (connection);
	}
	_tmp300_ = ccall;
	_tmp301_ = vala_ccode_constant_new ("\"g-object-path\"");
	_tmp302_ = _tmp301_;
	vala_ccode_function_call_add_argument (_tmp300_, (ValaCCodeExpression*) _tmp302_);
	_vala_ccode_node_unref0 (_tmp302_);
	_tmp303_ = ccall;
	_tmp304_ = object_path;
	_tmp305_ = vala_get_cvalue (_tmp304_);
	vala_ccode_function_call_add_argument (_tmp303_, _tmp305_);
	_tmp306_ = ccall;
	_tmp307_ = vala_ccode_constant_new ("\"g-interface-name\"");
	_tmp308_ = _tmp307_;
	vala_ccode_function_call_add_argument (_tmp306_, (ValaCCodeExpression*) _tmp308_);
	_vala_ccode_node_unref0 (_tmp308_);
	_tmp309_ = ccall;
	_tmp310_ = dbus_iface_name;
	vala_ccode_function_call_add_argument (_tmp309_, _tmp310_);
	_tmp311_ = ccall;
	_tmp312_ = vala_ccode_constant_new ("NULL");
	_tmp313_ = _tmp312_;
	vala_ccode_function_call_add_argument (_tmp311_, (ValaCCodeExpression*) _tmp313_);
	_vala_ccode_node_unref0 (_tmp313_);
	if (bus_get_proxy_async) {
		_tmp314_ = TRUE;
	} else {
		_tmp314_ = conn_get_proxy_async;
	}
	if (_tmp314_) {
		gboolean _tmp315_;
		gboolean _tmp316_;
		_tmp315_ = vala_callable_expression_get_is_yield_expression ((ValaCallableExpression*) expr);
		_tmp316_ = _tmp315_;
		if (_tmp316_) {
			gint state = 0;
			ValaCCodeBaseModuleEmitContext* _tmp317_;
			gint _tmp318_;
			ValaCCodeFunction* _tmp319_;
			ValaCCodeFunction* _tmp320_;
			ValaCCodeIdentifier* _tmp321_;
			ValaCCodeIdentifier* _tmp322_;
			ValaCCodeMemberAccess* _tmp323_;
			ValaCCodeMemberAccess* _tmp324_;
			gchar* _tmp325_;
			gchar* _tmp326_;
			ValaCCodeConstant* _tmp327_;
			ValaCCodeConstant* _tmp328_;
			ValaCCodeFunction* _tmp329_;
			ValaCCodeFunction* _tmp330_;
			ValaCCodeFunctionCall* _tmp331_;
			ValaCCodeFunction* _tmp332_;
			ValaCCodeFunction* _tmp333_;
			ValaCCodeConstant* _tmp334_;
			ValaCCodeConstant* _tmp335_;
			ValaCCodeFunction* _tmp336_;
			ValaCCodeFunction* _tmp337_;
			gchar* _tmp338_;
			gchar* _tmp339_;
			ValaCCodeIdentifier* _tmp340_;
			ValaCCodeIdentifier* _tmp341_;
			ValaCCodeFunctionCall* _tmp342_;
			ValaCCodeFunctionCall* _tmp343_;
			ValaCCodeIdentifier* _tmp344_;
			ValaCCodeIdentifier* _tmp345_;
			ValaCCodeMemberAccess* _tmp346_;
			ValaCCodeMemberAccess* _tmp347_;
			ValaCCodeCastExpression* _tmp348_;
			ValaCCodeCastExpression* _tmp349_;
			ValaCCodeFunctionCall* _tmp350_;
			ValaCCodeIdentifier* _tmp351_;
			ValaCCodeIdentifier* _tmp352_;
			ValaCCodeMemberAccess* _tmp353_;
			ValaCCodeMemberAccess* _tmp354_;
			ValaCCodeFunctionCall* _tmp355_;
			ValaCCodeExpression* _tmp356_;
			ValaCCodeExpression* _tmp357_;
			ValaCCodeUnaryExpression* _tmp358_;
			ValaCCodeUnaryExpression* _tmp359_;
			_tmp317_ = ((ValaCCodeBaseModule*) self)->emit_context;
			_tmp318_ = _tmp317_->next_coroutine_state;
			_tmp317_->next_coroutine_state = _tmp318_ + 1;
			state = _tmp318_;
			_tmp319_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp320_ = _tmp319_;
			_tmp321_ = vala_ccode_identifier_new ("_data_");
			_tmp322_ = _tmp321_;
			_tmp323_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp322_, "_state_");
			_tmp324_ = _tmp323_;
			_tmp325_ = g_strdup_printf ("%i", state);
			_tmp326_ = _tmp325_;
			_tmp327_ = vala_ccode_constant_new (_tmp326_);
			_tmp328_ = _tmp327_;
			vala_ccode_function_add_assignment (_tmp320_, (ValaCCodeExpression*) _tmp324_, (ValaCCodeExpression*) _tmp328_);
			_vala_ccode_node_unref0 (_tmp328_);
			_g_free0 (_tmp326_);
			_vala_ccode_node_unref0 (_tmp324_);
			_vala_ccode_node_unref0 (_tmp322_);
			_tmp329_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp330_ = _tmp329_;
			_tmp331_ = ccall;
			vala_ccode_function_add_expression (_tmp330_, (ValaCCodeExpression*) _tmp331_);
			_tmp332_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp333_ = _tmp332_;
			_tmp334_ = vala_ccode_constant_new ("FALSE");
			_tmp335_ = _tmp334_;
			vala_ccode_function_add_return (_tmp333_, (ValaCCodeExpression*) _tmp335_);
			_vala_ccode_node_unref0 (_tmp335_);
			_tmp336_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp337_ = _tmp336_;
			_tmp338_ = g_strdup_printf ("_state_%d", state);
			_tmp339_ = _tmp338_;
			vala_ccode_function_add_label (_tmp337_, _tmp339_);
			_g_free0 (_tmp339_);
			_tmp340_ = vala_ccode_identifier_new ("g_async_initable_new_finish");
			_tmp341_ = _tmp340_;
			_tmp342_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp341_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp342_;
			_vala_ccode_node_unref0 (_tmp341_);
			_tmp343_ = ccall;
			_tmp344_ = vala_ccode_identifier_new ("_data_");
			_tmp345_ = _tmp344_;
			_tmp346_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp345_, "_source_object_");
			_tmp347_ = _tmp346_;
			_tmp348_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp347_, "GAsyncInitable *");
			_tmp349_ = _tmp348_;
			vala_ccode_function_call_add_argument (_tmp343_, (ValaCCodeExpression*) _tmp349_);
			_vala_ccode_node_unref0 (_tmp349_);
			_vala_ccode_node_unref0 (_tmp347_);
			_vala_ccode_node_unref0 (_tmp345_);
			_tmp350_ = ccall;
			_tmp351_ = vala_ccode_identifier_new ("_data_");
			_tmp352_ = _tmp351_;
			_tmp353_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp352_, "_res_");
			_tmp354_ = _tmp353_;
			vala_ccode_function_call_add_argument (_tmp350_, (ValaCCodeExpression*) _tmp354_);
			_vala_ccode_node_unref0 (_tmp354_);
			_vala_ccode_node_unref0 (_tmp352_);
			_tmp355_ = ccall;
			_tmp356_ = vala_ccode_base_module_get_inner_error_cexpression ((ValaCCodeBaseModule*) self);
			_tmp357_ = _tmp356_;
			_tmp358_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp357_);
			_tmp359_ = _tmp358_;
			vala_ccode_function_call_add_argument (_tmp355_, (ValaCCodeExpression*) _tmp359_);
			_vala_ccode_node_unref0 (_tmp359_);
			_vala_ccode_node_unref0 (_tmp357_);
		} else {
			ValaCCodeFunction* _tmp360_;
			ValaCCodeFunction* _tmp361_;
			ValaCCodeFunctionCall* _tmp362_;
			_tmp360_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp361_ = _tmp360_;
			_tmp362_ = ccall;
			vala_ccode_function_add_expression (_tmp361_, (ValaCCodeExpression*) _tmp362_);
			_vala_ccode_node_unref0 (ccall);
			_vala_code_node_unref0 (cancellable);
			_vala_code_node_unref0 (flags);
			_vala_code_node_unref0 (object_path);
			_vala_code_node_unref0 (name);
			_vala_iterable_unref0 (args);
			_vala_code_node_unref0 (object_type);
			_vala_ccode_node_unref0 (dbus_iface_name);
			_vala_ccode_node_unref0 (proxy_type);
			_vala_code_node_unref0 (type_arg);
			_vala_code_node_unref0 (ma);
			_vala_code_node_unref0 (mtype);
			return;
		}
	}
	_tmp363_ = vala_expression_get_value_type ((ValaExpression*) expr);
	_tmp364_ = _tmp363_;
	_tmp365_ = vala_expression_get_value_type ((ValaExpression*) expr);
	_tmp366_ = _tmp365_;
	_tmp367_ = vala_data_type_get_value_owned (_tmp366_);
	_tmp368_ = _tmp367_;
	_tmp369_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp364_, _tmp368_, NULL, FALSE);
	temp_var = _tmp369_;
	_tmp370_ = temp_var;
	_tmp371_ = vala_symbol_get_name ((ValaSymbol*) _tmp370_);
	_tmp372_ = _tmp371_;
	_tmp373_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp372_);
	temp_ref = _tmp373_;
	_tmp374_ = temp_var;
	vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp374_, FALSE);
	_tmp375_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp376_ = _tmp375_;
	_tmp377_ = temp_ref;
	_tmp378_ = ccall;
	_tmp379_ = vala_expression_get_value_type ((ValaExpression*) expr);
	_tmp380_ = _tmp379_;
	_tmp381_ = vala_get_ccode_name ((ValaCodeNode*) _tmp380_);
	_tmp382_ = _tmp381_;
	_tmp383_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp378_, _tmp382_);
	_tmp384_ = _tmp383_;
	vala_ccode_function_add_assignment (_tmp376_, _tmp377_, (ValaCCodeExpression*) _tmp384_);
	_vala_ccode_node_unref0 (_tmp384_);
	_g_free0 (_tmp382_);
	_tmp385_ = temp_ref;
	vala_set_cvalue ((ValaExpression*) expr, _tmp385_);
	_vala_ccode_node_unref0 (temp_ref);
	_vala_code_node_unref0 (temp_var);
	_vala_ccode_node_unref0 (ccall);
	_vala_code_node_unref0 (cancellable);
	_vala_code_node_unref0 (flags);
	_vala_code_node_unref0 (object_path);
	_vala_code_node_unref0 (name);
	_vala_iterable_unref0 (args);
	_vala_code_node_unref0 (object_type);
	_vala_ccode_node_unref0 (dbus_iface_name);
	_vala_ccode_node_unref0 (proxy_type);
	_vala_code_node_unref0 (type_arg);
	_vala_code_node_unref0 (ma);
	_vala_code_node_unref0 (mtype);
}

static gchar*
vala_gd_bus_client_module_generate_dbus_signal_handler (ValaGDBusClientModule* self,
                                                        ValaSignal* sig,
                                                        ValaObjectTypeSymbol* sym)
{
	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_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeParameter* _tmp18_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunction* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	ValaCCodeVariableDeclarator* _tmp22_;
	ValaCCodeVariableDeclarator* _tmp23_;
	ValaCCodeFunctionCall* iter_init = NULL;
	ValaCCodeIdentifier* _tmp24_;
	ValaCCodeIdentifier* _tmp25_;
	ValaCCodeFunctionCall* _tmp26_;
	ValaCCodeFunctionCall* _tmp27_;
	ValaCCodeFunctionCall* _tmp28_;
	ValaCCodeIdentifier* _tmp29_;
	ValaCCodeIdentifier* _tmp30_;
	ValaCCodeUnaryExpression* _tmp31_;
	ValaCCodeUnaryExpression* _tmp32_;
	ValaCCodeFunctionCall* _tmp33_;
	ValaCCodeIdentifier* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeFunction* _tmp37_;
	ValaCCodeFunctionCall* _tmp38_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp39_;
	ValaCCodeIdentifier* _tmp40_;
	ValaCCodeFunctionCall* _tmp41_;
	ValaCCodeFunctionCall* _tmp42_;
	ValaCCodeFunctionCall* _tmp43_;
	ValaCCodeIdentifier* _tmp44_;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeFunctionCall* _tmp46_;
	ValaCCodeConstant* _tmp47_;
	ValaCCodeConstant* _tmp48_;
	ValaCCodeFunction* _tmp134_;
	ValaCCodeFunction* _tmp135_;
	ValaCCodeFunctionCall* _tmp136_;
	ValaCCodeFile* _tmp161_;
	ValaCCodeFunction* _tmp162_;
	ValaCCodeFile* _tmp163_;
	ValaCCodeFunction* _tmp164_;
	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);
	_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_handle_%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_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 ("parameters", "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_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp21_ = _tmp20_;
	_tmp22_ = vala_ccode_variable_declarator_new ("_arguments_iter", NULL, NULL);
	_tmp23_ = _tmp22_;
	vala_ccode_function_add_declaration (_tmp21_, "GVariantIter", (ValaCCodeDeclarator*) _tmp23_, 0);
	_vala_ccode_node_unref0 (_tmp23_);
	_tmp24_ = vala_ccode_identifier_new ("g_variant_iter_init");
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
	_tmp27_ = _tmp26_;
	_vala_ccode_node_unref0 (_tmp25_);
	iter_init = _tmp27_;
	_tmp28_ = iter_init;
	_tmp29_ = vala_ccode_identifier_new ("_arguments_iter");
	_tmp30_ = _tmp29_;
	_tmp31_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp30_);
	_tmp32_ = _tmp31_;
	vala_ccode_function_call_add_argument (_tmp28_, (ValaCCodeExpression*) _tmp32_);
	_vala_ccode_node_unref0 (_tmp32_);
	_vala_ccode_node_unref0 (_tmp30_);
	_tmp33_ = iter_init;
	_tmp34_ = vala_ccode_identifier_new ("parameters");
	_tmp35_ = _tmp34_;
	vala_ccode_function_call_add_argument (_tmp33_, (ValaCCodeExpression*) _tmp35_);
	_vala_ccode_node_unref0 (_tmp35_);
	_tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp37_ = _tmp36_;
	_tmp38_ = iter_init;
	vala_ccode_function_add_expression (_tmp37_, (ValaCCodeExpression*) _tmp38_);
	_tmp39_ = vala_ccode_identifier_new ("g_signal_emit_by_name");
	_tmp40_ = _tmp39_;
	_tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
	_tmp42_ = _tmp41_;
	_vala_ccode_node_unref0 (_tmp40_);
	ccall = _tmp42_;
	_tmp43_ = ccall;
	_tmp44_ = vala_ccode_identifier_new ("self");
	_tmp45_ = _tmp44_;
	vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp45_);
	_vala_ccode_node_unref0 (_tmp45_);
	_tmp46_ = ccall;
	_tmp47_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, sig, NULL);
	_tmp48_ = _tmp47_;
	vala_ccode_function_call_add_argument (_tmp46_, (ValaCCodeExpression*) _tmp48_);
	_vala_ccode_node_unref0 (_tmp48_);
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp49_;
		gint _param_size = 0;
		ValaList* _tmp50_;
		gint _tmp51_;
		gint _tmp52_;
		gint _param_index = 0;
		_tmp49_ = vala_callable_get_parameters ((ValaCallable*) sig);
		_param_list = _tmp49_;
		_tmp50_ = _param_list;
		_tmp51_ = vala_collection_get_size ((ValaCollection*) _tmp50_);
		_tmp52_ = _tmp51_;
		_param_size = _tmp52_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp53_;
			gint _tmp54_;
			ValaParameter* param = NULL;
			ValaList* _tmp55_;
			gpointer _tmp56_;
			gchar* param_name = NULL;
			ValaParameter* _tmp57_;
			const gchar* _tmp58_;
			const gchar* _tmp59_;
			gchar* _tmp60_;
			ValaDataType* owned_type = NULL;
			ValaParameter* _tmp61_;
			ValaDataType* _tmp62_;
			ValaDataType* _tmp63_;
			ValaDataType* _tmp64_;
			ValaDataType* _tmp65_;
			ValaCCodeFunction* _tmp66_;
			ValaCCodeFunction* _tmp67_;
			ValaDataType* _tmp68_;
			gchar* _tmp69_;
			gchar* _tmp70_;
			const gchar* _tmp71_;
			ValaParameter* _tmp72_;
			ValaDataType* _tmp73_;
			ValaDataType* _tmp74_;
			ValaCCodeExpression* _tmp75_;
			ValaCCodeExpression* _tmp76_;
			ValaCCodeVariableDeclarator* _tmp77_;
			ValaCCodeVariableDeclarator* _tmp78_;
			ValaStruct* st = NULL;
			ValaParameter* _tmp79_;
			ValaDataType* _tmp80_;
			ValaDataType* _tmp81_;
			ValaTypeSymbol* _tmp82_;
			ValaTypeSymbol* _tmp83_;
			gboolean _tmp84_ = FALSE;
			ValaStruct* _tmp85_;
			ValaParameter* _tmp97_;
			ValaDataType* _tmp98_;
			ValaDataType* _tmp99_;
			ValaParameter* _tmp125_;
			ValaDataType* _tmp126_;
			ValaDataType* _tmp127_;
			ValaCCodeIdentifier* _tmp128_;
			ValaCCodeIdentifier* _tmp129_;
			const gchar* _tmp130_;
			ValaCCodeIdentifier* _tmp131_;
			ValaCCodeIdentifier* _tmp132_;
			ValaParameter* _tmp133_;
			_param_index = _param_index + 1;
			_tmp53_ = _param_index;
			_tmp54_ = _param_size;
			if (!(_tmp53_ < _tmp54_)) {
				break;
			}
			_tmp55_ = _param_list;
			_tmp56_ = vala_list_get (_tmp55_, _param_index);
			param = (ValaParameter*) _tmp56_;
			_tmp57_ = param;
			_tmp58_ = vala_symbol_get_name ((ValaSymbol*) _tmp57_);
			_tmp59_ = _tmp58_;
			_tmp60_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp59_);
			param_name = _tmp60_;
			_tmp61_ = param;
			_tmp62_ = vala_variable_get_variable_type ((ValaVariable*) _tmp61_);
			_tmp63_ = _tmp62_;
			_tmp64_ = vala_data_type_copy (_tmp63_);
			owned_type = _tmp64_;
			_tmp65_ = owned_type;
			vala_data_type_set_value_owned (_tmp65_, TRUE);
			_tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp67_ = _tmp66_;
			_tmp68_ = owned_type;
			_tmp69_ = vala_get_ccode_name ((ValaCodeNode*) _tmp68_);
			_tmp70_ = _tmp69_;
			_tmp71_ = param_name;
			_tmp72_ = param;
			_tmp73_ = vala_variable_get_variable_type ((ValaVariable*) _tmp72_);
			_tmp74_ = _tmp73_;
			_tmp75_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp74_, TRUE, FALSE);
			_tmp76_ = _tmp75_;
			_tmp77_ = vala_ccode_variable_declarator_new_zero (_tmp71_, _tmp76_, NULL);
			_tmp78_ = _tmp77_;
			vala_ccode_function_add_declaration (_tmp67_, _tmp70_, (ValaCCodeDeclarator*) _tmp78_, 0);
			_vala_ccode_node_unref0 (_tmp78_);
			_vala_ccode_node_unref0 (_tmp76_);
			_g_free0 (_tmp70_);
			_tmp79_ = param;
			_tmp80_ = vala_variable_get_variable_type ((ValaVariable*) _tmp79_);
			_tmp81_ = _tmp80_;
			_tmp82_ = vala_data_type_get_type_symbol (_tmp81_);
			_tmp83_ = _tmp82_;
			st = G_TYPE_CHECK_INSTANCE_TYPE (_tmp83_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp83_) : NULL;
			_tmp85_ = st;
			if (_tmp85_ != NULL) {
				ValaStruct* _tmp86_;
				_tmp86_ = st;
				_tmp84_ = !vala_struct_is_simple_type (_tmp86_);
			} else {
				_tmp84_ = FALSE;
			}
			if (_tmp84_) {
				ValaCCodeFunctionCall* _tmp87_;
				const gchar* _tmp88_;
				ValaCCodeIdentifier* _tmp89_;
				ValaCCodeIdentifier* _tmp90_;
				ValaCCodeUnaryExpression* _tmp91_;
				ValaCCodeUnaryExpression* _tmp92_;
				_tmp87_ = ccall;
				_tmp88_ = param_name;
				_tmp89_ = vala_ccode_identifier_new (_tmp88_);
				_tmp90_ = _tmp89_;
				_tmp91_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp90_);
				_tmp92_ = _tmp91_;
				vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp92_);
				_vala_ccode_node_unref0 (_tmp92_);
				_vala_ccode_node_unref0 (_tmp90_);
			} else {
				ValaCCodeFunctionCall* _tmp93_;
				const gchar* _tmp94_;
				ValaCCodeIdentifier* _tmp95_;
				ValaCCodeIdentifier* _tmp96_;
				_tmp93_ = ccall;
				_tmp94_ = param_name;
				_tmp95_ = vala_ccode_identifier_new (_tmp94_);
				_tmp96_ = _tmp95_;
				vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp96_);
				_vala_ccode_node_unref0 (_tmp96_);
			}
			_tmp97_ = param;
			_tmp98_ = vala_variable_get_variable_type ((ValaVariable*) _tmp97_);
			_tmp99_ = _tmp98_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp99_, VALA_TYPE_ARRAY_TYPE)) {
				ValaArrayType* array_type = NULL;
				ValaParameter* _tmp100_;
				ValaDataType* _tmp101_;
				ValaDataType* _tmp102_;
				ValaArrayType* _tmp103_;
				gchar* length_ctype = NULL;
				ValaArrayType* _tmp104_;
				gchar* _tmp105_;
				_tmp100_ = param;
				_tmp101_ = vala_variable_get_variable_type ((ValaVariable*) _tmp100_);
				_tmp102_ = _tmp101_;
				_tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
				array_type = _tmp103_;
				_tmp104_ = array_type;
				_tmp105_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp104_);
				length_ctype = _tmp105_;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp106_ = FALSE;
						_tmp106_ = TRUE;
						while (TRUE) {
							ValaArrayType* _tmp108_;
							gint _tmp109_;
							gint _tmp110_;
							gchar* length_cname = NULL;
							ValaParameter* _tmp111_;
							gchar* _tmp112_;
							ValaCCodeFunction* _tmp113_;
							ValaCCodeFunction* _tmp114_;
							const gchar* _tmp115_;
							const gchar* _tmp116_;
							ValaCCodeConstant* _tmp117_;
							ValaCCodeConstant* _tmp118_;
							ValaCCodeVariableDeclarator* _tmp119_;
							ValaCCodeVariableDeclarator* _tmp120_;
							ValaCCodeFunctionCall* _tmp121_;
							const gchar* _tmp122_;
							ValaCCodeIdentifier* _tmp123_;
							ValaCCodeIdentifier* _tmp124_;
							if (!_tmp106_) {
								gint _tmp107_;
								_tmp107_ = dim;
								dim = _tmp107_ + 1;
							}
							_tmp106_ = FALSE;
							_tmp108_ = array_type;
							_tmp109_ = vala_array_type_get_rank (_tmp108_);
							_tmp110_ = _tmp109_;
							if (!(dim <= _tmp110_)) {
								break;
							}
							_tmp111_ = param;
							_tmp112_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp111_, dim);
							length_cname = _tmp112_;
							_tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
							_tmp114_ = _tmp113_;
							_tmp115_ = length_ctype;
							_tmp116_ = length_cname;
							_tmp117_ = vala_ccode_constant_new ("0");
							_tmp118_ = _tmp117_;
							_tmp119_ = vala_ccode_variable_declarator_new (_tmp116_, (ValaCCodeExpression*) _tmp118_, NULL);
							_tmp120_ = _tmp119_;
							vala_ccode_function_add_declaration (_tmp114_, _tmp115_, (ValaCCodeDeclarator*) _tmp120_, 0);
							_vala_ccode_node_unref0 (_tmp120_);
							_vala_ccode_node_unref0 (_tmp118_);
							_tmp121_ = ccall;
							_tmp122_ = length_cname;
							_tmp123_ = vala_ccode_identifier_new (_tmp122_);
							_tmp124_ = _tmp123_;
							vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp124_);
							_vala_ccode_node_unref0 (_tmp124_);
							_g_free0 (length_cname);
						}
					}
				}
				_g_free0 (length_ctype);
				_vala_code_node_unref0 (array_type);
			}
			_tmp125_ = param;
			_tmp126_ = vala_variable_get_variable_type ((ValaVariable*) _tmp125_);
			_tmp127_ = _tmp126_;
			_tmp128_ = vala_ccode_identifier_new ("_arguments_iter");
			_tmp129_ = _tmp128_;
			_tmp130_ = param_name;
			_tmp131_ = vala_ccode_identifier_new (_tmp130_);
			_tmp132_ = _tmp131_;
			_tmp133_ = param;
			vala_gvariant_module_read_expression ((ValaGVariantModule*) self, _tmp127_, (ValaCCodeExpression*) _tmp129_, (ValaCCodeExpression*) _tmp132_, (ValaSymbol*) _tmp133_, NULL, NULL);
			_vala_ccode_node_unref0 (_tmp132_);
			_vala_ccode_node_unref0 (_tmp129_);
			_vala_code_node_unref0 (owned_type);
			_g_free0 (param_name);
			_vala_code_node_unref0 (param);
		}
	}
	_tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp135_ = _tmp134_;
	_tmp136_ = ccall;
	vala_ccode_function_add_expression (_tmp135_, (ValaCCodeExpression*) _tmp136_);
	{
		ValaList* _param_list = NULL;
		ValaList* _tmp137_;
		gint _param_size = 0;
		ValaList* _tmp138_;
		gint _tmp139_;
		gint _tmp140_;
		gint _param_index = 0;
		_tmp137_ = vala_callable_get_parameters ((ValaCallable*) sig);
		_param_list = _tmp137_;
		_tmp138_ = _param_list;
		_tmp139_ = vala_collection_get_size ((ValaCollection*) _tmp138_);
		_tmp140_ = _tmp139_;
		_param_size = _tmp140_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp141_;
			gint _tmp142_;
			ValaParameter* param = NULL;
			ValaList* _tmp143_;
			gpointer _tmp144_;
			ValaDataType* owned_type = NULL;
			ValaParameter* _tmp145_;
			ValaDataType* _tmp146_;
			ValaDataType* _tmp147_;
			ValaDataType* _tmp148_;
			ValaDataType* _tmp149_;
			ValaDataType* _tmp150_;
			_param_index = _param_index + 1;
			_tmp141_ = _param_index;
			_tmp142_ = _param_size;
			if (!(_tmp141_ < _tmp142_)) {
				break;
			}
			_tmp143_ = _param_list;
			_tmp144_ = vala_list_get (_tmp143_, _param_index);
			param = (ValaParameter*) _tmp144_;
			_tmp145_ = param;
			_tmp146_ = vala_variable_get_variable_type ((ValaVariable*) _tmp145_);
			_tmp147_ = _tmp146_;
			_tmp148_ = vala_data_type_copy (_tmp147_);
			owned_type = _tmp148_;
			_tmp149_ = owned_type;
			vala_data_type_set_value_owned (_tmp149_, TRUE);
			_tmp150_ = owned_type;
			if (vala_ccode_base_module_requires_destroy (_tmp150_)) {
				ValaLocalVariable* local = NULL;
				ValaDataType* _tmp151_;
				ValaParameter* _tmp152_;
				const gchar* _tmp153_;
				const gchar* _tmp154_;
				ValaLocalVariable* _tmp155_;
				ValaCCodeFunction* _tmp156_;
				ValaCCodeFunction* _tmp157_;
				ValaLocalVariable* _tmp158_;
				ValaCCodeExpression* _tmp159_;
				ValaCCodeExpression* _tmp160_;
				_tmp151_ = owned_type;
				_tmp152_ = param;
				_tmp153_ = vala_symbol_get_name ((ValaSymbol*) _tmp152_);
				_tmp154_ = _tmp153_;
				_tmp155_ = vala_local_variable_new (_tmp151_, _tmp154_, NULL, NULL);
				local = _tmp155_;
				_tmp156_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp157_ = _tmp156_;
				_tmp158_ = local;
				_tmp159_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp158_);
				_tmp160_ = _tmp159_;
				vala_ccode_function_add_expression (_tmp157_, _tmp160_);
				_vala_ccode_node_unref0 (_tmp160_);
				_vala_code_node_unref0 (local);
			}
			_vala_code_node_unref0 (owned_type);
			_vala_code_node_unref0 (param);
		}
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp161_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp162_ = function;
	vala_ccode_file_add_function_declaration (_tmp161_, _tmp162_);
	_tmp163_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp164_ = function;
	vala_ccode_file_add_function (_tmp163_, _tmp164_);
	result = wrapper_name;
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (iter_init);
	_vala_ccode_node_unref0 (function);
	return result;
}

static void
vala_gd_bus_client_module_generate_signal_handler_function (ValaGDBusClientModule* 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_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeModifiers _tmp20_;
	ValaCCodeModifiers _tmp21_;
	ValaCCodeFile* _tmp22_;
	ValaCCodeFunction* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	gboolean firstif = FALSE;
	ValaCCodeFile* _tmp87_;
	ValaCCodeFunction* _tmp88_;
	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_, "proxy_g_signal", 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 ("proxy", "GDBusProxy*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = cfunc;
	_tmp10_ = vala_ccode_parameter_new ("sender_name", "const gchar*");
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
	_vala_ccode_node_unref0 (_tmp11_);
	_tmp12_ = cfunc;
	_tmp13_ = vala_ccode_parameter_new ("signal_name", "const gchar*");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_tmp15_ = cfunc;
	_tmp16_ = vala_ccode_parameter_new ("parameters", "GVariant*");
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_tmp18_ = cfunc;
	_tmp19_ = cfunc;
	_tmp20_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp19_);
	_tmp21_ = _tmp20_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, _tmp21_ | VALA_CCODE_MODIFIERS_STATIC);
	_tmp22_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp23_ = cfunc;
	vala_ccode_file_add_function_declaration (_tmp22_, _tmp23_);
	_tmp24_ = cfunc;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp24_);
	firstif = TRUE;
	{
		ValaList* _sig_list = NULL;
		ValaList* _tmp25_;
		gint _sig_size = 0;
		ValaList* _tmp26_;
		gint _tmp27_;
		gint _tmp28_;
		gint _sig_index = 0;
		_tmp25_ = vala_object_type_symbol_get_signals (sym);
		_sig_list = _tmp25_;
		_tmp26_ = _sig_list;
		_tmp27_ = vala_collection_get_size ((ValaCollection*) _tmp26_);
		_tmp28_ = _tmp27_;
		_sig_size = _tmp28_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp29_;
			gint _tmp30_;
			ValaSignal* sig = NULL;
			ValaList* _tmp31_;
			gpointer _tmp32_;
			ValaSignal* _tmp33_;
			ValaSymbolAccessibility _tmp34_;
			ValaSymbolAccessibility _tmp35_;
			ValaCCodeFile* _tmp36_;
			ValaCCodeFunctionCall* ccheck = NULL;
			ValaCCodeIdentifier* _tmp37_;
			ValaCCodeIdentifier* _tmp38_;
			ValaCCodeFunctionCall* _tmp39_;
			ValaCCodeFunctionCall* _tmp40_;
			ValaCCodeFunctionCall* _tmp41_;
			ValaCCodeIdentifier* _tmp42_;
			ValaCCodeIdentifier* _tmp43_;
			ValaCCodeFunctionCall* _tmp44_;
			ValaSignal* _tmp45_;
			gchar* _tmp46_;
			gchar* _tmp47_;
			gchar* _tmp48_;
			gchar* _tmp49_;
			ValaCCodeConstant* _tmp50_;
			ValaCCodeConstant* _tmp51_;
			ValaCCodeBinaryExpression* cond = NULL;
			ValaCCodeFunctionCall* _tmp52_;
			ValaCCodeConstant* _tmp53_;
			ValaCCodeConstant* _tmp54_;
			ValaCCodeBinaryExpression* _tmp55_;
			ValaCCodeBinaryExpression* _tmp56_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaSignal* _tmp63_;
			gchar* _tmp64_;
			gchar* _tmp65_;
			ValaCCodeIdentifier* _tmp66_;
			ValaCCodeIdentifier* _tmp67_;
			ValaCCodeFunctionCall* _tmp68_;
			ValaCCodeFunctionCall* _tmp69_;
			ValaCCodeFunctionCall* _tmp70_;
			ValaCCodeIdentifier* _tmp71_;
			ValaCCodeIdentifier* _tmp72_;
			gchar* _tmp73_;
			gchar* _tmp74_;
			gchar* _tmp75_;
			gchar* _tmp76_;
			ValaCCodeCastExpression* _tmp77_;
			ValaCCodeCastExpression* _tmp78_;
			ValaCCodeFunctionCall* _tmp79_;
			ValaCCodeIdentifier* _tmp80_;
			ValaCCodeIdentifier* _tmp81_;
			ValaCCodeFunction* _tmp82_;
			ValaCCodeFunction* _tmp83_;
			ValaCCodeFunctionCall* _tmp84_;
			_sig_index = _sig_index + 1;
			_tmp29_ = _sig_index;
			_tmp30_ = _sig_size;
			if (!(_tmp29_ < _tmp30_)) {
				break;
			}
			_tmp31_ = _sig_list;
			_tmp32_ = vala_list_get (_tmp31_, _sig_index);
			sig = (ValaSignal*) _tmp32_;
			_tmp33_ = sig;
			_tmp34_ = vala_symbol_get_access ((ValaSymbol*) _tmp33_);
			_tmp35_ = _tmp34_;
			if (_tmp35_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			_tmp36_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_file_add_include (_tmp36_, "string.h", FALSE);
			_tmp37_ = vala_ccode_identifier_new ("strcmp");
			_tmp38_ = _tmp37_;
			_tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
			_tmp40_ = _tmp39_;
			_vala_ccode_node_unref0 (_tmp38_);
			ccheck = _tmp40_;
			_tmp41_ = ccheck;
			_tmp42_ = vala_ccode_identifier_new ("signal_name");
			_tmp43_ = _tmp42_;
			vala_ccode_function_call_add_argument (_tmp41_, (ValaCCodeExpression*) _tmp43_);
			_vala_ccode_node_unref0 (_tmp43_);
			_tmp44_ = ccheck;
			_tmp45_ = sig;
			_tmp46_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp45_);
			_tmp47_ = _tmp46_;
			_tmp48_ = g_strdup_printf ("\"%s\"", _tmp47_);
			_tmp49_ = _tmp48_;
			_tmp50_ = vala_ccode_constant_new (_tmp49_);
			_tmp51_ = _tmp50_;
			vala_ccode_function_call_add_argument (_tmp44_, (ValaCCodeExpression*) _tmp51_);
			_vala_ccode_node_unref0 (_tmp51_);
			_g_free0 (_tmp49_);
			_g_free0 (_tmp47_);
			_tmp52_ = ccheck;
			_tmp53_ = vala_ccode_constant_new ("0");
			_tmp54_ = _tmp53_;
			_tmp55_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp52_, (ValaCCodeExpression*) _tmp54_);
			_tmp56_ = _tmp55_;
			_vala_ccode_node_unref0 (_tmp54_);
			cond = _tmp56_;
			if (firstif) {
				ValaCCodeFunction* _tmp57_;
				ValaCCodeFunction* _tmp58_;
				ValaCCodeBinaryExpression* _tmp59_;
				_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp58_ = _tmp57_;
				_tmp59_ = cond;
				vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp59_);
				firstif = FALSE;
			} else {
				ValaCCodeFunction* _tmp60_;
				ValaCCodeFunction* _tmp61_;
				ValaCCodeBinaryExpression* _tmp62_;
				_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp61_ = _tmp60_;
				_tmp62_ = cond;
				vala_ccode_function_else_if (_tmp61_, (ValaCCodeExpression*) _tmp62_);
			}
			_tmp63_ = sig;
			_tmp64_ = vala_gd_bus_client_module_generate_dbus_signal_handler (self, _tmp63_, sym);
			_tmp65_ = _tmp64_;
			_tmp66_ = vala_ccode_identifier_new (_tmp65_);
			_tmp67_ = _tmp66_;
			_tmp68_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp67_);
			_tmp69_ = _tmp68_;
			_vala_ccode_node_unref0 (_tmp67_);
			_g_free0 (_tmp65_);
			ccall = _tmp69_;
			_tmp70_ = ccall;
			_tmp71_ = vala_ccode_identifier_new ("proxy");
			_tmp72_ = _tmp71_;
			_tmp73_ = vala_get_ccode_name ((ValaCodeNode*) sym);
			_tmp74_ = _tmp73_;
			_tmp75_ = g_strconcat (_tmp74_, "*", NULL);
			_tmp76_ = _tmp75_;
			_tmp77_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp72_, _tmp76_);
			_tmp78_ = _tmp77_;
			vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp78_);
			_vala_ccode_node_unref0 (_tmp78_);
			_g_free0 (_tmp76_);
			_g_free0 (_tmp74_);
			_vala_ccode_node_unref0 (_tmp72_);
			_tmp79_ = ccall;
			_tmp80_ = vala_ccode_identifier_new ("parameters");
			_tmp81_ = _tmp80_;
			vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
			_vala_ccode_node_unref0 (_tmp81_);
			_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp83_ = _tmp82_;
			_tmp84_ = ccall;
			vala_ccode_function_add_expression (_tmp83_, (ValaCCodeExpression*) _tmp84_);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (cond);
			_vala_ccode_node_unref0 (ccheck);
			_vala_code_node_unref0 (sig);
		}
	}
	if (!firstif) {
		ValaCCodeFunction* _tmp85_;
		ValaCCodeFunction* _tmp86_;
		_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp86_ = _tmp85_;
		vala_ccode_function_close (_tmp86_);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp87_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp88_ = cfunc;
	vala_ccode_file_add_function (_tmp87_, _tmp88_);
	_vala_ccode_node_unref0 (cfunc);
}

static void
vala_gd_bus_client_module_generate_marshalling (ValaGDBusClientModule* self,
                                                ValaMethod* m,
                                                ValaGDBusClientModuleCallType call_type,
                                                const gchar* iface_name,
                                                const gchar* method_name,
                                                gint method_timeout)
{
	ValaCCodeCastExpression* gdbusproxy = NULL;
	ValaCCodeIdentifier* _tmp0_;
	ValaCCodeIdentifier* _tmp1_;
	ValaCCodeCastExpression* _tmp2_;
	ValaCCodeCastExpression* _tmp3_;
	ValaCCodeFunctionCall* connection = NULL;
	ValaCCodeIdentifier* _tmp4_;
	ValaCCodeIdentifier* _tmp5_;
	ValaCCodeFunctionCall* _tmp6_;
	ValaCCodeFunctionCall* _tmp7_;
	ValaCCodeFunctionCall* _tmp8_;
	ValaCCodeCastExpression* _tmp9_;
	gboolean uses_fd = FALSE;
	gboolean has_error_argument = FALSE;
	gboolean _tmp15_;
	gboolean _tmp16_;
	ValaCCodeExpression* error_argument = NULL;
	gboolean _tmp437_ = FALSE;
	g_return_if_fail (self != NULL);
	g_return_if_fail (m != NULL);
	_tmp0_ = vala_ccode_identifier_new ("self");
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp1_, "GDBusProxy *");
	_tmp3_ = _tmp2_;
	_vala_ccode_node_unref0 (_tmp1_);
	gdbusproxy = _tmp3_;
	_tmp4_ = vala_ccode_identifier_new ("g_dbus_proxy_get_connection");
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp5_);
	_tmp7_ = _tmp6_;
	_vala_ccode_node_unref0 (_tmp5_);
	connection = _tmp7_;
	_tmp8_ = connection;
	_tmp9_ = gdbusproxy;
	vala_ccode_function_call_add_argument (_tmp8_, (ValaCCodeExpression*) _tmp9_);
	uses_fd = vala_gd_bus_module_dbus_method_uses_file_descriptor ((ValaGDBusModule*) self, m);
	if (uses_fd) {
		ValaCCodeFile* _tmp10_;
		ValaCCodeFunction* _tmp11_;
		ValaCCodeFunction* _tmp12_;
		ValaCCodeVariableDeclarator* _tmp13_;
		ValaCCodeVariableDeclarator* _tmp14_;
		_tmp10_ = ((ValaCCodeBaseModule*) self)->cfile;
		vala_ccode_file_add_include (_tmp10_, "gio/gunixfdlist.h", FALSE);
		_tmp11_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp12_ = _tmp11_;
		_tmp13_ = vala_ccode_variable_declarator_new ("_fd_list", NULL, NULL);
		_tmp14_ = _tmp13_;
		vala_ccode_function_add_declaration (_tmp12_, "GUnixFDList*", (ValaCCodeDeclarator*) _tmp14_, 0);
		_vala_ccode_node_unref0 (_tmp14_);
	}
	_tmp15_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
	_tmp16_ = _tmp15_;
	has_error_argument = _tmp16_;
	if (has_error_argument) {
		ValaCCodeIdentifier* _tmp17_;
		_tmp17_ = vala_ccode_identifier_new ("error");
		_vala_ccode_node_unref0 (error_argument);
		error_argument = (ValaCCodeExpression*) _tmp17_;
	} else {
		ValaCCodeConstant* _tmp18_;
		_tmp18_ = vala_ccode_constant_new ("NULL");
		_vala_ccode_node_unref0 (error_argument);
		error_argument = (ValaCCodeExpression*) _tmp18_;
	}
	if (call_type != VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_FINISH) {
		ValaCCodeFunctionCall* destination = NULL;
		ValaCCodeIdentifier* _tmp19_;
		ValaCCodeIdentifier* _tmp20_;
		ValaCCodeFunctionCall* _tmp21_;
		ValaCCodeFunctionCall* _tmp22_;
		ValaCCodeFunctionCall* _tmp23_;
		ValaCCodeCastExpression* _tmp24_;
		ValaCCodeFunctionCall* interface_name = NULL;
		ValaCCodeIdentifier* _tmp25_;
		ValaCCodeIdentifier* _tmp26_;
		ValaCCodeFunctionCall* _tmp27_;
		ValaCCodeFunctionCall* _tmp28_;
		ValaCCodeFunctionCall* _tmp29_;
		ValaCCodeCastExpression* _tmp30_;
		ValaCCodeFunctionCall* object_path = NULL;
		ValaCCodeIdentifier* _tmp31_;
		ValaCCodeIdentifier* _tmp32_;
		ValaCCodeFunctionCall* _tmp33_;
		ValaCCodeFunctionCall* _tmp34_;
		ValaCCodeFunctionCall* _tmp35_;
		ValaCCodeCastExpression* _tmp36_;
		ValaCCodeExpression* timeout = NULL;
		ValaArrayList* error_types = NULL;
		GEqualFunc _tmp45_;
		ValaArrayList* _tmp46_;
		ValaArrayList* _tmp47_;
		ValaCCodeFunction* _tmp70_;
		ValaCCodeFunction* _tmp71_;
		ValaCCodeVariableDeclarator* _tmp72_;
		ValaCCodeVariableDeclarator* _tmp73_;
		ValaCCodeFunctionCall* ccall = NULL;
		ValaCCodeIdentifier* _tmp74_;
		ValaCCodeIdentifier* _tmp75_;
		ValaCCodeFunctionCall* _tmp76_;
		ValaCCodeFunctionCall* _tmp77_;
		ValaCCodeFunctionCall* _tmp78_;
		ValaCCodeFunctionCall* _tmp79_;
		ValaCCodeFunctionCall* _tmp80_;
		ValaCCodeFunctionCall* _tmp81_;
		ValaCCodeFunctionCall* _tmp89_;
		gchar* _tmp90_;
		gchar* _tmp91_;
		ValaCCodeConstant* _tmp92_;
		ValaCCodeConstant* _tmp93_;
		ValaCCodeFunction* _tmp94_;
		ValaCCodeFunction* _tmp95_;
		ValaCCodeIdentifier* _tmp96_;
		ValaCCodeIdentifier* _tmp97_;
		ValaCCodeFunctionCall* _tmp98_;
		ValaCCodeFunction* _tmp99_;
		ValaCCodeFunction* _tmp100_;
		ValaCCodeVariableDeclarator* _tmp101_;
		ValaCCodeVariableDeclarator* _tmp102_;
		ValaCCodeFunction* _tmp103_;
		ValaCCodeFunction* _tmp104_;
		ValaCCodeVariableDeclarator* _tmp105_;
		ValaCCodeVariableDeclarator* _tmp106_;
		ValaCCodeFunctionCall* builder_init = NULL;
		ValaCCodeIdentifier* _tmp107_;
		ValaCCodeIdentifier* _tmp108_;
		ValaCCodeFunctionCall* _tmp109_;
		ValaCCodeFunctionCall* _tmp110_;
		ValaCCodeFunctionCall* _tmp111_;
		ValaCCodeIdentifier* _tmp112_;
		ValaCCodeIdentifier* _tmp113_;
		ValaCCodeUnaryExpression* _tmp114_;
		ValaCCodeUnaryExpression* _tmp115_;
		ValaCCodeFunctionCall* _tmp116_;
		ValaCCodeIdentifier* _tmp117_;
		ValaCCodeIdentifier* _tmp118_;
		ValaCCodeFunction* _tmp119_;
		ValaCCodeFunction* _tmp120_;
		ValaCCodeFunctionCall* _tmp121_;
		ValaCCodeExpression* cancellable = NULL;
		ValaCCodeConstant* _tmp130_;
		ValaCCodeFunctionCall* builder_end = NULL;
		ValaCCodeIdentifier* _tmp185_;
		ValaCCodeIdentifier* _tmp186_;
		ValaCCodeFunctionCall* _tmp187_;
		ValaCCodeFunctionCall* _tmp188_;
		ValaCCodeFunctionCall* _tmp189_;
		ValaCCodeIdentifier* _tmp190_;
		ValaCCodeIdentifier* _tmp191_;
		ValaCCodeUnaryExpression* _tmp192_;
		ValaCCodeUnaryExpression* _tmp193_;
		ValaCCodeFunction* _tmp194_;
		ValaCCodeFunction* _tmp195_;
		ValaCCodeIdentifier* _tmp196_;
		ValaCCodeIdentifier* _tmp197_;
		ValaCCodeFunctionCall* _tmp198_;
		ValaCCodeFunctionCall* set_body = NULL;
		ValaCCodeIdentifier* _tmp199_;
		ValaCCodeIdentifier* _tmp200_;
		ValaCCodeFunctionCall* _tmp201_;
		ValaCCodeFunctionCall* _tmp202_;
		ValaCCodeFunctionCall* _tmp203_;
		ValaCCodeIdentifier* _tmp204_;
		ValaCCodeIdentifier* _tmp205_;
		ValaCCodeFunctionCall* _tmp206_;
		ValaCCodeIdentifier* _tmp207_;
		ValaCCodeIdentifier* _tmp208_;
		ValaCCodeFunction* _tmp209_;
		ValaCCodeFunction* _tmp210_;
		ValaCCodeFunctionCall* _tmp211_;
		ValaCCodeIdentifier* _tmp381_;
		ValaCCodeIdentifier* _tmp382_;
		ValaCCodeFunctionCall* _tmp383_;
		ValaCCodeFunctionCall* _tmp384_;
		ValaCCodeIdentifier* _tmp385_;
		ValaCCodeIdentifier* _tmp386_;
		ValaCCodeFunction* _tmp387_;
		ValaCCodeFunction* _tmp388_;
		ValaCCodeFunctionCall* _tmp389_;
		_tmp19_ = vala_ccode_identifier_new ("g_dbus_proxy_get_name");
		_tmp20_ = _tmp19_;
		_tmp21_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp20_);
		_tmp22_ = _tmp21_;
		_vala_ccode_node_unref0 (_tmp20_);
		destination = _tmp22_;
		_tmp23_ = destination;
		_tmp24_ = gdbusproxy;
		vala_ccode_function_call_add_argument (_tmp23_, (ValaCCodeExpression*) _tmp24_);
		_tmp25_ = vala_ccode_identifier_new ("g_dbus_proxy_get_interface_name");
		_tmp26_ = _tmp25_;
		_tmp27_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp26_);
		_tmp28_ = _tmp27_;
		_vala_ccode_node_unref0 (_tmp26_);
		interface_name = _tmp28_;
		_tmp29_ = interface_name;
		_tmp30_ = gdbusproxy;
		vala_ccode_function_call_add_argument (_tmp29_, (ValaCCodeExpression*) _tmp30_);
		_tmp31_ = vala_ccode_identifier_new ("g_dbus_proxy_get_object_path");
		_tmp32_ = _tmp31_;
		_tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
		_tmp34_ = _tmp33_;
		_vala_ccode_node_unref0 (_tmp32_);
		object_path = _tmp34_;
		_tmp35_ = object_path;
		_tmp36_ = gdbusproxy;
		vala_ccode_function_call_add_argument (_tmp35_, (ValaCCodeExpression*) _tmp36_);
		if (method_timeout <= 0) {
			ValaCCodeIdentifier* _tmp37_;
			ValaCCodeIdentifier* _tmp38_;
			ValaCCodeFunctionCall* _tmp39_;
			ValaCCodeExpression* _tmp40_;
			ValaCCodeCastExpression* _tmp41_;
			_tmp37_ = vala_ccode_identifier_new ("g_dbus_proxy_get_default_timeout");
			_tmp38_ = _tmp37_;
			_tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
			_vala_ccode_node_unref0 (timeout);
			timeout = (ValaCCodeExpression*) _tmp39_;
			_vala_ccode_node_unref0 (_tmp38_);
			_tmp40_ = timeout;
			_tmp41_ = gdbusproxy;
			vala_ccode_function_call_add_argument (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_CCODE_FUNCTION_CALL, ValaCCodeFunctionCall), (ValaCCodeExpression*) _tmp41_);
		} else {
			gchar* _tmp42_;
			gchar* _tmp43_;
			ValaCCodeConstant* _tmp44_;
			_tmp42_ = g_strdup_printf ("%d", method_timeout);
			_tmp43_ = _tmp42_;
			_tmp44_ = vala_ccode_constant_new (_tmp43_);
			_vala_ccode_node_unref0 (timeout);
			timeout = (ValaCCodeExpression*) _tmp44_;
			_g_free0 (_tmp43_);
		}
		_tmp45_ = g_direct_equal;
		_tmp46_ = vala_array_list_new (VALA_TYPE_DATA_TYPE, (GBoxedCopyFunc) vala_code_node_ref, (GDestroyNotify) vala_code_node_unref, _tmp45_);
		error_types = _tmp46_;
		_tmp47_ = error_types;
		vala_code_node_get_error_types ((ValaCodeNode*) m, (ValaCollection*) _tmp47_, NULL);
		{
			ValaArrayList* _error_type_list = NULL;
			ValaArrayList* _tmp48_;
			gint _error_type_size = 0;
			ValaArrayList* _tmp49_;
			gint _tmp50_;
			gint _tmp51_;
			gint _error_type_index = 0;
			_tmp48_ = error_types;
			_error_type_list = _tmp48_;
			_tmp49_ = _error_type_list;
			_tmp50_ = vala_collection_get_size ((ValaCollection*) _tmp49_);
			_tmp51_ = _tmp50_;
			_error_type_size = _tmp51_;
			_error_type_index = -1;
			while (TRUE) {
				gint _tmp52_;
				gint _tmp53_;
				ValaDataType* error_type = NULL;
				ValaArrayList* _tmp54_;
				gpointer _tmp55_;
				ValaErrorType* errtype = NULL;
				ValaDataType* _tmp56_;
				ValaErrorType* _tmp57_;
				ValaErrorType* _tmp58_;
				ValaErrorDomain* _tmp59_;
				ValaErrorDomain* _tmp60_;
				_error_type_index = _error_type_index + 1;
				_tmp52_ = _error_type_index;
				_tmp53_ = _error_type_size;
				if (!(_tmp52_ < _tmp53_)) {
					break;
				}
				_tmp54_ = _error_type_list;
				_tmp55_ = vala_list_get ((ValaList*) _tmp54_, _error_type_index);
				error_type = (ValaDataType*) _tmp55_;
				_tmp56_ = error_type;
				_tmp57_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
				errtype = _tmp57_;
				_tmp58_ = errtype;
				_tmp59_ = vala_error_type_get_error_domain (_tmp58_);
				_tmp60_ = _tmp59_;
				if (_tmp60_ != NULL) {
					ValaCCodeFunction* _tmp61_;
					ValaCCodeFunction* _tmp62_;
					ValaErrorType* _tmp63_;
					ValaErrorDomain* _tmp64_;
					ValaErrorDomain* _tmp65_;
					gchar* _tmp66_;
					gchar* _tmp67_;
					ValaCCodeIdentifier* _tmp68_;
					ValaCCodeIdentifier* _tmp69_;
					_tmp61_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp62_ = _tmp61_;
					_tmp63_ = errtype;
					_tmp64_ = vala_error_type_get_error_domain (_tmp63_);
					_tmp65_ = _tmp64_;
					_tmp66_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp65_, NULL);
					_tmp67_ = _tmp66_;
					_tmp68_ = vala_ccode_identifier_new (_tmp67_);
					_tmp69_ = _tmp68_;
					vala_ccode_function_add_expression (_tmp62_, (ValaCCodeExpression*) _tmp69_);
					_vala_ccode_node_unref0 (_tmp69_);
					_g_free0 (_tmp67_);
				}
				_vala_code_node_unref0 (errtype);
				_vala_code_node_unref0 (error_type);
			}
		}
		_tmp70_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp71_ = _tmp70_;
		_tmp72_ = vala_ccode_variable_declarator_new ("*_message", NULL, NULL);
		_tmp73_ = _tmp72_;
		vala_ccode_function_add_declaration (_tmp71_, "GDBusMessage", (ValaCCodeDeclarator*) _tmp73_, 0);
		_vala_ccode_node_unref0 (_tmp73_);
		_tmp74_ = vala_ccode_identifier_new ("g_dbus_message_new_method_call");
		_tmp75_ = _tmp74_;
		_tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
		_tmp77_ = _tmp76_;
		_vala_ccode_node_unref0 (_tmp75_);
		ccall = _tmp77_;
		_tmp78_ = ccall;
		_tmp79_ = destination;
		vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp79_);
		_tmp80_ = ccall;
		_tmp81_ = object_path;
		vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp81_);
		if (iface_name != NULL) {
			ValaCCodeFunctionCall* _tmp82_;
			gchar* _tmp83_;
			gchar* _tmp84_;
			ValaCCodeConstant* _tmp85_;
			ValaCCodeConstant* _tmp86_;
			_tmp82_ = ccall;
			_tmp83_ = g_strdup_printf ("\"%s\"", iface_name);
			_tmp84_ = _tmp83_;
			_tmp85_ = vala_ccode_constant_new (_tmp84_);
			_tmp86_ = _tmp85_;
			vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp86_);
			_vala_ccode_node_unref0 (_tmp86_);
			_g_free0 (_tmp84_);
		} else {
			ValaCCodeFunctionCall* _tmp87_;
			ValaCCodeFunctionCall* _tmp88_;
			_tmp87_ = ccall;
			_tmp88_ = interface_name;
			vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp88_);
		}
		_tmp89_ = ccall;
		_tmp90_ = g_strdup_printf ("\"%s\"", method_name);
		_tmp91_ = _tmp90_;
		_tmp92_ = vala_ccode_constant_new (_tmp91_);
		_tmp93_ = _tmp92_;
		vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp93_);
		_vala_ccode_node_unref0 (_tmp93_);
		_g_free0 (_tmp91_);
		_tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp95_ = _tmp94_;
		_tmp96_ = vala_ccode_identifier_new ("_message");
		_tmp97_ = _tmp96_;
		_tmp98_ = ccall;
		vala_ccode_function_add_assignment (_tmp95_, (ValaCCodeExpression*) _tmp97_, (ValaCCodeExpression*) _tmp98_);
		_vala_ccode_node_unref0 (_tmp97_);
		_tmp99_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp100_ = _tmp99_;
		_tmp101_ = vala_ccode_variable_declarator_new ("*_arguments", NULL, NULL);
		_tmp102_ = _tmp101_;
		vala_ccode_function_add_declaration (_tmp100_, "GVariant", (ValaCCodeDeclarator*) _tmp102_, 0);
		_vala_ccode_node_unref0 (_tmp102_);
		_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp104_ = _tmp103_;
		_tmp105_ = vala_ccode_variable_declarator_new ("_arguments_builder", NULL, NULL);
		_tmp106_ = _tmp105_;
		vala_ccode_function_add_declaration (_tmp104_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp106_, 0);
		_vala_ccode_node_unref0 (_tmp106_);
		_tmp107_ = vala_ccode_identifier_new ("g_variant_builder_init");
		_tmp108_ = _tmp107_;
		_tmp109_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp108_);
		_tmp110_ = _tmp109_;
		_vala_ccode_node_unref0 (_tmp108_);
		builder_init = _tmp110_;
		_tmp111_ = builder_init;
		_tmp112_ = vala_ccode_identifier_new ("_arguments_builder");
		_tmp113_ = _tmp112_;
		_tmp114_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp113_);
		_tmp115_ = _tmp114_;
		vala_ccode_function_call_add_argument (_tmp111_, (ValaCCodeExpression*) _tmp115_);
		_vala_ccode_node_unref0 (_tmp115_);
		_vala_ccode_node_unref0 (_tmp113_);
		_tmp116_ = builder_init;
		_tmp117_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
		_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_ = builder_init;
		vala_ccode_function_add_expression (_tmp120_, (ValaCCodeExpression*) _tmp121_);
		if (uses_fd) {
			ValaCCodeFunction* _tmp122_;
			ValaCCodeFunction* _tmp123_;
			ValaCCodeIdentifier* _tmp124_;
			ValaCCodeIdentifier* _tmp125_;
			ValaCCodeIdentifier* _tmp126_;
			ValaCCodeIdentifier* _tmp127_;
			ValaCCodeFunctionCall* _tmp128_;
			ValaCCodeFunctionCall* _tmp129_;
			_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp123_ = _tmp122_;
			_tmp124_ = vala_ccode_identifier_new ("_fd_list");
			_tmp125_ = _tmp124_;
			_tmp126_ = vala_ccode_identifier_new ("g_unix_fd_list_new");
			_tmp127_ = _tmp126_;
			_tmp128_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp127_);
			_tmp129_ = _tmp128_;
			vala_ccode_function_add_assignment (_tmp123_, (ValaCCodeExpression*) _tmp125_, (ValaCCodeExpression*) _tmp129_);
			_vala_ccode_node_unref0 (_tmp129_);
			_vala_ccode_node_unref0 (_tmp127_);
			_vala_ccode_node_unref0 (_tmp125_);
		}
		_tmp130_ = vala_ccode_constant_new ("NULL");
		cancellable = (ValaCCodeExpression*) _tmp130_;
		{
			ValaList* _param_list = NULL;
			ValaList* _tmp131_;
			gint _param_size = 0;
			ValaList* _tmp132_;
			gint _tmp133_;
			gint _tmp134_;
			gint _param_index = 0;
			_tmp131_ = vala_callable_get_parameters ((ValaCallable*) m);
			_param_list = _tmp131_;
			_tmp132_ = _param_list;
			_tmp133_ = vala_collection_get_size ((ValaCollection*) _tmp132_);
			_tmp134_ = _tmp133_;
			_param_size = _tmp134_;
			_param_index = -1;
			while (TRUE) {
				gint _tmp135_;
				gint _tmp136_;
				ValaParameter* param = NULL;
				ValaList* _tmp137_;
				gpointer _tmp138_;
				ValaParameter* _tmp139_;
				ValaParameterDirection _tmp140_;
				ValaParameterDirection _tmp141_;
				_param_index = _param_index + 1;
				_tmp135_ = _param_index;
				_tmp136_ = _param_size;
				if (!(_tmp135_ < _tmp136_)) {
					break;
				}
				_tmp137_ = _param_list;
				_tmp138_ = vala_list_get (_tmp137_, _param_index);
				param = (ValaParameter*) _tmp138_;
				_tmp139_ = param;
				_tmp140_ = vala_parameter_get_direction (_tmp139_);
				_tmp141_ = _tmp140_;
				if (_tmp141_ == VALA_PARAMETER_DIRECTION_IN) {
					ValaCCodeExpression* expr = NULL;
					ValaParameter* _tmp142_;
					const gchar* _tmp143_;
					const gchar* _tmp144_;
					gchar* _tmp145_;
					gchar* _tmp146_;
					ValaCCodeIdentifier* _tmp147_;
					ValaCCodeExpression* _tmp148_;
					ValaParameter* _tmp149_;
					ValaDataType* _tmp150_;
					ValaDataType* _tmp151_;
					gboolean _tmp154_ = FALSE;
					ValaParameter* _tmp155_;
					ValaDataType* _tmp156_;
					ValaDataType* _tmp157_;
					gboolean _tmp167_ = FALSE;
					ValaParameter* _tmp168_;
					ValaDataType* _tmp169_;
					ValaDataType* _tmp170_;
					ValaParameter* _tmp178_;
					ValaDataType* _tmp179_;
					ValaDataType* _tmp180_;
					ValaCCodeIdentifier* _tmp181_;
					ValaCCodeIdentifier* _tmp182_;
					ValaCCodeExpression* _tmp183_;
					ValaParameter* _tmp184_;
					_tmp142_ = param;
					_tmp143_ = vala_symbol_get_name ((ValaSymbol*) _tmp142_);
					_tmp144_ = _tmp143_;
					_tmp145_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp144_);
					_tmp146_ = _tmp145_;
					_tmp147_ = vala_ccode_identifier_new (_tmp146_);
					_tmp148_ = (ValaCCodeExpression*) _tmp147_;
					_g_free0 (_tmp146_);
					expr = _tmp148_;
					_tmp149_ = param;
					_tmp150_ = vala_variable_get_variable_type ((ValaVariable*) _tmp149_);
					_tmp151_ = _tmp150_;
					if (vala_data_type_is_real_struct_type (_tmp151_)) {
						ValaCCodeExpression* _tmp152_;
						ValaCCodeUnaryExpression* _tmp153_;
						_tmp152_ = expr;
						_tmp153_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp152_);
						_vala_ccode_node_unref0 (expr);
						expr = (ValaCCodeExpression*) _tmp153_;
					}
					_tmp155_ = param;
					_tmp156_ = vala_variable_get_variable_type ((ValaVariable*) _tmp155_);
					_tmp157_ = _tmp156_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp157_, VALA_TYPE_OBJECT_TYPE)) {
						ValaParameter* _tmp158_;
						ValaDataType* _tmp159_;
						ValaDataType* _tmp160_;
						ValaTypeSymbol* _tmp161_;
						ValaTypeSymbol* _tmp162_;
						gchar* _tmp163_;
						gchar* _tmp164_;
						_tmp158_ = param;
						_tmp159_ = vala_variable_get_variable_type ((ValaVariable*) _tmp158_);
						_tmp160_ = _tmp159_;
						_tmp161_ = vala_data_type_get_type_symbol (_tmp160_);
						_tmp162_ = _tmp161_;
						_tmp163_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp162_);
						_tmp164_ = _tmp163_;
						_tmp154_ = g_strcmp0 (_tmp164_, "GLib.Cancellable") == 0;
						_g_free0 (_tmp164_);
					} else {
						_tmp154_ = FALSE;
					}
					if (_tmp154_) {
						ValaCCodeExpression* _tmp165_;
						ValaCCodeExpression* _tmp166_;
						_tmp165_ = expr;
						_tmp166_ = _vala_ccode_node_ref0 (_tmp165_);
						_vala_ccode_node_unref0 (cancellable);
						cancellable = _tmp166_;
						_vala_ccode_node_unref0 (expr);
						_vala_code_node_unref0 (param);
						continue;
					}
					_tmp168_ = param;
					_tmp169_ = vala_variable_get_variable_type ((ValaVariable*) _tmp168_);
					_tmp170_ = _tmp169_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp170_, VALA_TYPE_OBJECT_TYPE)) {
						ValaParameter* _tmp171_;
						ValaDataType* _tmp172_;
						ValaDataType* _tmp173_;
						ValaTypeSymbol* _tmp174_;
						ValaTypeSymbol* _tmp175_;
						gchar* _tmp176_;
						gchar* _tmp177_;
						_tmp171_ = param;
						_tmp172_ = vala_variable_get_variable_type ((ValaVariable*) _tmp171_);
						_tmp173_ = _tmp172_;
						_tmp174_ = vala_data_type_get_type_symbol (_tmp173_);
						_tmp175_ = _tmp174_;
						_tmp176_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp175_);
						_tmp177_ = _tmp176_;
						_tmp167_ = g_strcmp0 (_tmp177_, "GLib.BusName") == 0;
						_g_free0 (_tmp177_);
					} else {
						_tmp167_ = FALSE;
					}
					if (_tmp167_) {
						_vala_ccode_node_unref0 (expr);
						_vala_code_node_unref0 (param);
						continue;
					}
					_tmp178_ = param;
					_tmp179_ = vala_variable_get_variable_type ((ValaVariable*) _tmp178_);
					_tmp180_ = _tmp179_;
					_tmp181_ = vala_ccode_identifier_new ("_arguments_builder");
					_tmp182_ = _tmp181_;
					_tmp183_ = expr;
					_tmp184_ = param;
					vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp180_, (ValaCCodeExpression*) _tmp182_, _tmp183_, (ValaSymbol*) _tmp184_);
					_vala_ccode_node_unref0 (_tmp182_);
					_vala_ccode_node_unref0 (expr);
				}
				_vala_code_node_unref0 (param);
			}
		}
		_tmp185_ = vala_ccode_identifier_new ("g_variant_builder_end");
		_tmp186_ = _tmp185_;
		_tmp187_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp186_);
		_tmp188_ = _tmp187_;
		_vala_ccode_node_unref0 (_tmp186_);
		builder_end = _tmp188_;
		_tmp189_ = builder_end;
		_tmp190_ = vala_ccode_identifier_new ("_arguments_builder");
		_tmp191_ = _tmp190_;
		_tmp192_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp191_);
		_tmp193_ = _tmp192_;
		vala_ccode_function_call_add_argument (_tmp189_, (ValaCCodeExpression*) _tmp193_);
		_vala_ccode_node_unref0 (_tmp193_);
		_vala_ccode_node_unref0 (_tmp191_);
		_tmp194_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp195_ = _tmp194_;
		_tmp196_ = vala_ccode_identifier_new ("_arguments");
		_tmp197_ = _tmp196_;
		_tmp198_ = builder_end;
		vala_ccode_function_add_assignment (_tmp195_, (ValaCCodeExpression*) _tmp197_, (ValaCCodeExpression*) _tmp198_);
		_vala_ccode_node_unref0 (_tmp197_);
		_tmp199_ = vala_ccode_identifier_new ("g_dbus_message_set_body");
		_tmp200_ = _tmp199_;
		_tmp201_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp200_);
		_tmp202_ = _tmp201_;
		_vala_ccode_node_unref0 (_tmp200_);
		set_body = _tmp202_;
		_tmp203_ = set_body;
		_tmp204_ = vala_ccode_identifier_new ("_message");
		_tmp205_ = _tmp204_;
		vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp205_);
		_vala_ccode_node_unref0 (_tmp205_);
		_tmp206_ = set_body;
		_tmp207_ = vala_ccode_identifier_new ("_arguments");
		_tmp208_ = _tmp207_;
		vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp208_);
		_vala_ccode_node_unref0 (_tmp208_);
		_tmp209_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp210_ = _tmp209_;
		_tmp211_ = set_body;
		vala_ccode_function_add_expression (_tmp210_, (ValaCCodeExpression*) _tmp211_);
		if (uses_fd) {
			ValaCCodeIdentifier* _tmp212_;
			ValaCCodeIdentifier* _tmp213_;
			ValaCCodeFunctionCall* _tmp214_;
			ValaCCodeFunctionCall* _tmp215_;
			ValaCCodeIdentifier* _tmp216_;
			ValaCCodeIdentifier* _tmp217_;
			ValaCCodeFunctionCall* _tmp218_;
			ValaCCodeIdentifier* _tmp219_;
			ValaCCodeIdentifier* _tmp220_;
			ValaCCodeFunction* _tmp221_;
			ValaCCodeFunction* _tmp222_;
			ValaCCodeFunctionCall* _tmp223_;
			ValaCCodeIdentifier* _tmp224_;
			ValaCCodeIdentifier* _tmp225_;
			ValaCCodeFunctionCall* _tmp226_;
			ValaCCodeFunctionCall* _tmp227_;
			ValaCCodeIdentifier* _tmp228_;
			ValaCCodeIdentifier* _tmp229_;
			ValaCCodeFunction* _tmp230_;
			ValaCCodeFunction* _tmp231_;
			ValaCCodeFunctionCall* _tmp232_;
			_tmp212_ = vala_ccode_identifier_new ("g_dbus_message_set_unix_fd_list");
			_tmp213_ = _tmp212_;
			_tmp214_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp213_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp214_;
			_vala_ccode_node_unref0 (_tmp213_);
			_tmp215_ = ccall;
			_tmp216_ = vala_ccode_identifier_new ("_message");
			_tmp217_ = _tmp216_;
			vala_ccode_function_call_add_argument (_tmp215_, (ValaCCodeExpression*) _tmp217_);
			_vala_ccode_node_unref0 (_tmp217_);
			_tmp218_ = ccall;
			_tmp219_ = vala_ccode_identifier_new ("_fd_list");
			_tmp220_ = _tmp219_;
			vala_ccode_function_call_add_argument (_tmp218_, (ValaCCodeExpression*) _tmp220_);
			_vala_ccode_node_unref0 (_tmp220_);
			_tmp221_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp222_ = _tmp221_;
			_tmp223_ = ccall;
			vala_ccode_function_add_expression (_tmp222_, (ValaCCodeExpression*) _tmp223_);
			_tmp224_ = vala_ccode_identifier_new ("g_object_unref");
			_tmp225_ = _tmp224_;
			_tmp226_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp225_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp226_;
			_vala_ccode_node_unref0 (_tmp225_);
			_tmp227_ = ccall;
			_tmp228_ = vala_ccode_identifier_new ("_fd_list");
			_tmp229_ = _tmp228_;
			vala_ccode_function_call_add_argument (_tmp227_, (ValaCCodeExpression*) _tmp229_);
			_vala_ccode_node_unref0 (_tmp229_);
			_tmp230_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp231_ = _tmp230_;
			_tmp232_ = ccall;
			vala_ccode_function_add_expression (_tmp231_, (ValaCCodeExpression*) _tmp232_);
		}
		if (call_type == VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC) {
			ValaCCodeIdentifier* _tmp233_;
			ValaCCodeIdentifier* _tmp234_;
			ValaCCodeFunctionCall* _tmp235_;
			ValaCCodeFunctionCall* _tmp236_;
			ValaCCodeFunctionCall* _tmp237_;
			ValaCCodeFunctionCall* _tmp238_;
			ValaCCodeIdentifier* _tmp239_;
			ValaCCodeIdentifier* _tmp240_;
			ValaCCodeFunctionCall* _tmp241_;
			ValaCCodeConstant* _tmp242_;
			ValaCCodeConstant* _tmp243_;
			ValaCCodeFunctionCall* _tmp244_;
			ValaCCodeExpression* _tmp245_;
			ValaCCodeFunctionCall* _tmp246_;
			ValaCCodeConstant* _tmp247_;
			ValaCCodeConstant* _tmp248_;
			ValaCCodeFunctionCall* _tmp249_;
			ValaCCodeExpression* _tmp250_;
			ValaCCodeFunctionCall* _tmp251_;
			ValaCCodeExpression* _tmp252_;
			ValaCCodeFunction* _tmp253_;
			ValaCCodeFunction* _tmp254_;
			ValaCCodeIdentifier* _tmp255_;
			ValaCCodeIdentifier* _tmp256_;
			ValaCCodeFunctionCall* _tmp257_;
			_tmp233_ = vala_ccode_identifier_new ("g_dbus_connection_send_message_with_reply_sync");
			_tmp234_ = _tmp233_;
			_tmp235_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp234_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp235_;
			_vala_ccode_node_unref0 (_tmp234_);
			_tmp236_ = ccall;
			_tmp237_ = connection;
			vala_ccode_function_call_add_argument (_tmp236_, (ValaCCodeExpression*) _tmp237_);
			_tmp238_ = ccall;
			_tmp239_ = vala_ccode_identifier_new ("_message");
			_tmp240_ = _tmp239_;
			vala_ccode_function_call_add_argument (_tmp238_, (ValaCCodeExpression*) _tmp240_);
			_vala_ccode_node_unref0 (_tmp240_);
			_tmp241_ = ccall;
			_tmp242_ = vala_ccode_constant_new ("G_DBUS_SEND_MESSAGE_FLAGS_NONE");
			_tmp243_ = _tmp242_;
			vala_ccode_function_call_add_argument (_tmp241_, (ValaCCodeExpression*) _tmp243_);
			_vala_ccode_node_unref0 (_tmp243_);
			_tmp244_ = ccall;
			_tmp245_ = timeout;
			vala_ccode_function_call_add_argument (_tmp244_, _tmp245_);
			_tmp246_ = ccall;
			_tmp247_ = vala_ccode_constant_new ("NULL");
			_tmp248_ = _tmp247_;
			vala_ccode_function_call_add_argument (_tmp246_, (ValaCCodeExpression*) _tmp248_);
			_vala_ccode_node_unref0 (_tmp248_);
			_tmp249_ = ccall;
			_tmp250_ = cancellable;
			vala_ccode_function_call_add_argument (_tmp249_, _tmp250_);
			_tmp251_ = ccall;
			_tmp252_ = error_argument;
			vala_ccode_function_call_add_argument (_tmp251_, _tmp252_);
			_tmp253_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp254_ = _tmp253_;
			_tmp255_ = vala_ccode_identifier_new ("_reply_message");
			_tmp256_ = _tmp255_;
			_tmp257_ = ccall;
			vala_ccode_function_add_assignment (_tmp254_, (ValaCCodeExpression*) _tmp256_, (ValaCCodeExpression*) _tmp257_);
			_vala_ccode_node_unref0 (_tmp256_);
		} else {
			if (call_type == VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_NO_REPLY) {
				ValaCCodeFunctionCall* set_flags = NULL;
				ValaCCodeIdentifier* _tmp258_;
				ValaCCodeIdentifier* _tmp259_;
				ValaCCodeFunctionCall* _tmp260_;
				ValaCCodeFunctionCall* _tmp261_;
				ValaCCodeFunctionCall* _tmp262_;
				ValaCCodeIdentifier* _tmp263_;
				ValaCCodeIdentifier* _tmp264_;
				ValaCCodeFunctionCall* _tmp265_;
				ValaCCodeConstant* _tmp266_;
				ValaCCodeConstant* _tmp267_;
				ValaCCodeFunction* _tmp268_;
				ValaCCodeFunction* _tmp269_;
				ValaCCodeFunctionCall* _tmp270_;
				ValaCCodeIdentifier* _tmp271_;
				ValaCCodeIdentifier* _tmp272_;
				ValaCCodeFunctionCall* _tmp273_;
				ValaCCodeFunctionCall* _tmp274_;
				ValaCCodeFunctionCall* _tmp275_;
				ValaCCodeFunctionCall* _tmp276_;
				ValaCCodeIdentifier* _tmp277_;
				ValaCCodeIdentifier* _tmp278_;
				ValaCCodeFunctionCall* _tmp279_;
				ValaCCodeConstant* _tmp280_;
				ValaCCodeConstant* _tmp281_;
				ValaCCodeFunctionCall* _tmp282_;
				ValaCCodeConstant* _tmp283_;
				ValaCCodeConstant* _tmp284_;
				ValaCCodeFunctionCall* _tmp285_;
				ValaCCodeExpression* _tmp286_;
				ValaCCodeFunction* _tmp287_;
				ValaCCodeFunction* _tmp288_;
				ValaCCodeFunctionCall* _tmp289_;
				_tmp258_ = vala_ccode_identifier_new ("g_dbus_message_set_flags");
				_tmp259_ = _tmp258_;
				_tmp260_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp259_);
				_tmp261_ = _tmp260_;
				_vala_ccode_node_unref0 (_tmp259_);
				set_flags = _tmp261_;
				_tmp262_ = set_flags;
				_tmp263_ = vala_ccode_identifier_new ("_message");
				_tmp264_ = _tmp263_;
				vala_ccode_function_call_add_argument (_tmp262_, (ValaCCodeExpression*) _tmp264_);
				_vala_ccode_node_unref0 (_tmp264_);
				_tmp265_ = set_flags;
				_tmp266_ = vala_ccode_constant_new ("G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED");
				_tmp267_ = _tmp266_;
				vala_ccode_function_call_add_argument (_tmp265_, (ValaCCodeExpression*) _tmp267_);
				_vala_ccode_node_unref0 (_tmp267_);
				_tmp268_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp269_ = _tmp268_;
				_tmp270_ = set_flags;
				vala_ccode_function_add_expression (_tmp269_, (ValaCCodeExpression*) _tmp270_);
				_tmp271_ = vala_ccode_identifier_new ("g_dbus_connection_send_message");
				_tmp272_ = _tmp271_;
				_tmp273_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp272_);
				_vala_ccode_node_unref0 (ccall);
				ccall = _tmp273_;
				_vala_ccode_node_unref0 (_tmp272_);
				_tmp274_ = ccall;
				_tmp275_ = connection;
				vala_ccode_function_call_add_argument (_tmp274_, (ValaCCodeExpression*) _tmp275_);
				_tmp276_ = ccall;
				_tmp277_ = vala_ccode_identifier_new ("_message");
				_tmp278_ = _tmp277_;
				vala_ccode_function_call_add_argument (_tmp276_, (ValaCCodeExpression*) _tmp278_);
				_vala_ccode_node_unref0 (_tmp278_);
				_tmp279_ = ccall;
				_tmp280_ = vala_ccode_constant_new ("G_DBUS_SEND_MESSAGE_FLAGS_NONE");
				_tmp281_ = _tmp280_;
				vala_ccode_function_call_add_argument (_tmp279_, (ValaCCodeExpression*) _tmp281_);
				_vala_ccode_node_unref0 (_tmp281_);
				_tmp282_ = ccall;
				_tmp283_ = vala_ccode_constant_new ("NULL");
				_tmp284_ = _tmp283_;
				vala_ccode_function_call_add_argument (_tmp282_, (ValaCCodeExpression*) _tmp284_);
				_vala_ccode_node_unref0 (_tmp284_);
				_tmp285_ = ccall;
				_tmp286_ = error_argument;
				vala_ccode_function_call_add_argument (_tmp285_, _tmp286_);
				_tmp287_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp288_ = _tmp287_;
				_tmp289_ = ccall;
				vala_ccode_function_add_expression (_tmp288_, (ValaCCodeExpression*) _tmp289_);
				_vala_ccode_node_unref0 (set_flags);
			} else {
				if (call_type == VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_ASYNC) {
					ValaCCodeBinaryExpression* callback_specified = NULL;
					ValaCCodeIdentifier* _tmp290_;
					ValaCCodeIdentifier* _tmp291_;
					ValaCCodeConstant* _tmp292_;
					ValaCCodeConstant* _tmp293_;
					ValaCCodeBinaryExpression* _tmp294_;
					ValaCCodeBinaryExpression* _tmp295_;
					ValaCCodeFunction* _tmp296_;
					ValaCCodeFunction* _tmp297_;
					ValaCCodeBinaryExpression* _tmp298_;
					ValaCCodeIdentifier* _tmp299_;
					ValaCCodeIdentifier* _tmp300_;
					ValaCCodeFunctionCall* _tmp301_;
					ValaCCodeFunctionCall* _tmp302_;
					ValaCCodeFunctionCall* _tmp303_;
					ValaCCodeFunctionCall* _tmp304_;
					ValaCCodeIdentifier* _tmp305_;
					ValaCCodeIdentifier* _tmp306_;
					ValaCCodeFunctionCall* _tmp307_;
					ValaCCodeConstant* _tmp308_;
					ValaCCodeConstant* _tmp309_;
					ValaCCodeFunctionCall* _tmp310_;
					ValaCCodeExpression* _tmp311_;
					ValaCCodeFunctionCall* _tmp312_;
					ValaCCodeConstant* _tmp313_;
					ValaCCodeConstant* _tmp314_;
					ValaCCodeFunctionCall* _tmp315_;
					ValaCCodeExpression* _tmp316_;
					ValaCCodeFunctionCall* res_wrapper = NULL;
					ValaCCodeFunctionCall* _tmp317_;
					gchar* _tmp318_;
					gchar* _tmp319_;
					ValaCCodeIdentifier* _tmp320_;
					ValaCCodeIdentifier* _tmp321_;
					ValaCCodeIdentifier* _tmp322_;
					ValaCCodeIdentifier* _tmp323_;
					ValaCCodeFunctionCall* _tmp324_;
					ValaCCodeFunctionCall* _tmp325_;
					ValaCCodeIdentifier* _tmp326_;
					ValaCCodeIdentifier* _tmp327_;
					ValaCCodeCastExpression* _tmp328_;
					ValaCCodeCastExpression* _tmp329_;
					ValaCCodeFunctionCall* _tmp330_;
					ValaCCodeConstant* _tmp331_;
					ValaCCodeConstant* _tmp332_;
					ValaCCodeFunctionCall* _tmp333_;
					ValaCCodeIdentifier* _tmp334_;
					ValaCCodeIdentifier* _tmp335_;
					ValaCCodeFunctionCall* _tmp336_;
					ValaCCodeIdentifier* _tmp337_;
					ValaCCodeIdentifier* _tmp338_;
					ValaCCodeFunctionCall* _tmp339_;
					ValaCCodeFunctionCall* _tmp340_;
					ValaCCodeFunction* _tmp341_;
					ValaCCodeFunction* _tmp342_;
					ValaCCodeFunctionCall* _tmp343_;
					ValaCCodeFunction* _tmp344_;
					ValaCCodeFunction* _tmp345_;
					ValaCCodeFunctionCall* set_flags = NULL;
					ValaCCodeIdentifier* _tmp346_;
					ValaCCodeIdentifier* _tmp347_;
					ValaCCodeFunctionCall* _tmp348_;
					ValaCCodeFunctionCall* _tmp349_;
					ValaCCodeFunctionCall* _tmp350_;
					ValaCCodeIdentifier* _tmp351_;
					ValaCCodeIdentifier* _tmp352_;
					ValaCCodeFunctionCall* _tmp353_;
					ValaCCodeConstant* _tmp354_;
					ValaCCodeConstant* _tmp355_;
					ValaCCodeFunction* _tmp356_;
					ValaCCodeFunction* _tmp357_;
					ValaCCodeFunctionCall* _tmp358_;
					ValaCCodeIdentifier* _tmp359_;
					ValaCCodeIdentifier* _tmp360_;
					ValaCCodeFunctionCall* _tmp361_;
					ValaCCodeFunctionCall* _tmp362_;
					ValaCCodeFunctionCall* _tmp363_;
					ValaCCodeFunctionCall* _tmp364_;
					ValaCCodeIdentifier* _tmp365_;
					ValaCCodeIdentifier* _tmp366_;
					ValaCCodeFunctionCall* _tmp367_;
					ValaCCodeConstant* _tmp368_;
					ValaCCodeConstant* _tmp369_;
					ValaCCodeFunctionCall* _tmp370_;
					ValaCCodeConstant* _tmp371_;
					ValaCCodeConstant* _tmp372_;
					ValaCCodeFunctionCall* _tmp373_;
					ValaCCodeConstant* _tmp374_;
					ValaCCodeConstant* _tmp375_;
					ValaCCodeFunction* _tmp376_;
					ValaCCodeFunction* _tmp377_;
					ValaCCodeFunctionCall* _tmp378_;
					ValaCCodeFunction* _tmp379_;
					ValaCCodeFunction* _tmp380_;
					_tmp290_ = vala_ccode_identifier_new ("_callback_");
					_tmp291_ = _tmp290_;
					_tmp292_ = vala_ccode_constant_new ("NULL");
					_tmp293_ = _tmp292_;
					_tmp294_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp291_, (ValaCCodeExpression*) _tmp293_);
					_tmp295_ = _tmp294_;
					_vala_ccode_node_unref0 (_tmp293_);
					_vala_ccode_node_unref0 (_tmp291_);
					callback_specified = _tmp295_;
					_tmp296_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp297_ = _tmp296_;
					_tmp298_ = callback_specified;
					vala_ccode_function_open_if (_tmp297_, (ValaCCodeExpression*) _tmp298_);
					_tmp299_ = vala_ccode_identifier_new ("g_dbus_connection_send_message_with_reply");
					_tmp300_ = _tmp299_;
					_tmp301_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp300_);
					_vala_ccode_node_unref0 (ccall);
					ccall = _tmp301_;
					_vala_ccode_node_unref0 (_tmp300_);
					_tmp302_ = ccall;
					_tmp303_ = connection;
					vala_ccode_function_call_add_argument (_tmp302_, (ValaCCodeExpression*) _tmp303_);
					_tmp304_ = ccall;
					_tmp305_ = vala_ccode_identifier_new ("_message");
					_tmp306_ = _tmp305_;
					vala_ccode_function_call_add_argument (_tmp304_, (ValaCCodeExpression*) _tmp306_);
					_vala_ccode_node_unref0 (_tmp306_);
					_tmp307_ = ccall;
					_tmp308_ = vala_ccode_constant_new ("G_DBUS_SEND_MESSAGE_FLAGS_NONE");
					_tmp309_ = _tmp308_;
					vala_ccode_function_call_add_argument (_tmp307_, (ValaCCodeExpression*) _tmp309_);
					_vala_ccode_node_unref0 (_tmp309_);
					_tmp310_ = ccall;
					_tmp311_ = timeout;
					vala_ccode_function_call_add_argument (_tmp310_, _tmp311_);
					_tmp312_ = ccall;
					_tmp313_ = vala_ccode_constant_new ("NULL");
					_tmp314_ = _tmp313_;
					vala_ccode_function_call_add_argument (_tmp312_, (ValaCCodeExpression*) _tmp314_);
					_vala_ccode_node_unref0 (_tmp314_);
					_tmp315_ = ccall;
					_tmp316_ = cancellable;
					vala_ccode_function_call_add_argument (_tmp315_, _tmp316_);
					res_wrapper = NULL;
					_tmp317_ = ccall;
					_tmp318_ = vala_gasync_module_generate_async_callback_wrapper ((ValaGAsyncModule*) self);
					_tmp319_ = _tmp318_;
					_tmp320_ = vala_ccode_identifier_new (_tmp319_);
					_tmp321_ = _tmp320_;
					vala_ccode_function_call_add_argument (_tmp317_, (ValaCCodeExpression*) _tmp321_);
					_vala_ccode_node_unref0 (_tmp321_);
					_g_free0 (_tmp319_);
					_tmp322_ = vala_ccode_identifier_new ("g_task_new");
					_tmp323_ = _tmp322_;
					_tmp324_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp323_);
					_vala_ccode_node_unref0 (res_wrapper);
					res_wrapper = _tmp324_;
					_vala_ccode_node_unref0 (_tmp323_);
					_tmp325_ = res_wrapper;
					_tmp326_ = vala_ccode_identifier_new ("self");
					_tmp327_ = _tmp326_;
					_tmp328_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp327_, "GObject *");
					_tmp329_ = _tmp328_;
					vala_ccode_function_call_add_argument (_tmp325_, (ValaCCodeExpression*) _tmp329_);
					_vala_ccode_node_unref0 (_tmp329_);
					_vala_ccode_node_unref0 (_tmp327_);
					_tmp330_ = res_wrapper;
					_tmp331_ = vala_ccode_constant_new ("NULL");
					_tmp332_ = _tmp331_;
					vala_ccode_function_call_add_argument (_tmp330_, (ValaCCodeExpression*) _tmp332_);
					_vala_ccode_node_unref0 (_tmp332_);
					_tmp333_ = res_wrapper;
					_tmp334_ = vala_ccode_identifier_new ("_callback_");
					_tmp335_ = _tmp334_;
					vala_ccode_function_call_add_argument (_tmp333_, (ValaCCodeExpression*) _tmp335_);
					_vala_ccode_node_unref0 (_tmp335_);
					_tmp336_ = res_wrapper;
					_tmp337_ = vala_ccode_identifier_new ("_user_data_");
					_tmp338_ = _tmp337_;
					vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp338_);
					_vala_ccode_node_unref0 (_tmp338_);
					_tmp339_ = ccall;
					_tmp340_ = res_wrapper;
					vala_ccode_function_call_add_argument (_tmp339_, (ValaCCodeExpression*) _tmp340_);
					_tmp341_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp342_ = _tmp341_;
					_tmp343_ = ccall;
					vala_ccode_function_add_expression (_tmp342_, (ValaCCodeExpression*) _tmp343_);
					_tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp345_ = _tmp344_;
					vala_ccode_function_add_else (_tmp345_);
					_tmp346_ = vala_ccode_identifier_new ("g_dbus_message_set_flags");
					_tmp347_ = _tmp346_;
					_tmp348_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp347_);
					_tmp349_ = _tmp348_;
					_vala_ccode_node_unref0 (_tmp347_);
					set_flags = _tmp349_;
					_tmp350_ = set_flags;
					_tmp351_ = vala_ccode_identifier_new ("_message");
					_tmp352_ = _tmp351_;
					vala_ccode_function_call_add_argument (_tmp350_, (ValaCCodeExpression*) _tmp352_);
					_vala_ccode_node_unref0 (_tmp352_);
					_tmp353_ = set_flags;
					_tmp354_ = vala_ccode_constant_new ("G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED");
					_tmp355_ = _tmp354_;
					vala_ccode_function_call_add_argument (_tmp353_, (ValaCCodeExpression*) _tmp355_);
					_vala_ccode_node_unref0 (_tmp355_);
					_tmp356_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp357_ = _tmp356_;
					_tmp358_ = set_flags;
					vala_ccode_function_add_expression (_tmp357_, (ValaCCodeExpression*) _tmp358_);
					_tmp359_ = vala_ccode_identifier_new ("g_dbus_connection_send_message");
					_tmp360_ = _tmp359_;
					_tmp361_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp360_);
					_vala_ccode_node_unref0 (ccall);
					ccall = _tmp361_;
					_vala_ccode_node_unref0 (_tmp360_);
					_tmp362_ = ccall;
					_tmp363_ = connection;
					vala_ccode_function_call_add_argument (_tmp362_, (ValaCCodeExpression*) _tmp363_);
					_tmp364_ = ccall;
					_tmp365_ = vala_ccode_identifier_new ("_message");
					_tmp366_ = _tmp365_;
					vala_ccode_function_call_add_argument (_tmp364_, (ValaCCodeExpression*) _tmp366_);
					_vala_ccode_node_unref0 (_tmp366_);
					_tmp367_ = ccall;
					_tmp368_ = vala_ccode_constant_new ("G_DBUS_SEND_MESSAGE_FLAGS_NONE");
					_tmp369_ = _tmp368_;
					vala_ccode_function_call_add_argument (_tmp367_, (ValaCCodeExpression*) _tmp369_);
					_vala_ccode_node_unref0 (_tmp369_);
					_tmp370_ = ccall;
					_tmp371_ = vala_ccode_constant_new ("NULL");
					_tmp372_ = _tmp371_;
					vala_ccode_function_call_add_argument (_tmp370_, (ValaCCodeExpression*) _tmp372_);
					_vala_ccode_node_unref0 (_tmp372_);
					_tmp373_ = ccall;
					_tmp374_ = vala_ccode_constant_new ("NULL");
					_tmp375_ = _tmp374_;
					vala_ccode_function_call_add_argument (_tmp373_, (ValaCCodeExpression*) _tmp375_);
					_vala_ccode_node_unref0 (_tmp375_);
					_tmp376_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp377_ = _tmp376_;
					_tmp378_ = ccall;
					vala_ccode_function_add_expression (_tmp377_, (ValaCCodeExpression*) _tmp378_);
					_tmp379_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp380_ = _tmp379_;
					vala_ccode_function_close (_tmp380_);
					_vala_ccode_node_unref0 (set_flags);
					_vala_ccode_node_unref0 (res_wrapper);
					_vala_ccode_node_unref0 (callback_specified);
				}
			}
		}
		_tmp381_ = vala_ccode_identifier_new ("g_object_unref");
		_tmp382_ = _tmp381_;
		_tmp383_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp382_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp383_;
		_vala_ccode_node_unref0 (_tmp382_);
		_tmp384_ = ccall;
		_tmp385_ = vala_ccode_identifier_new ("_message");
		_tmp386_ = _tmp385_;
		vala_ccode_function_call_add_argument (_tmp384_, (ValaCCodeExpression*) _tmp386_);
		_vala_ccode_node_unref0 (_tmp386_);
		_tmp387_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp388_ = _tmp387_;
		_tmp389_ = ccall;
		vala_ccode_function_add_expression (_tmp388_, (ValaCCodeExpression*) _tmp389_);
		_vala_ccode_node_unref0 (set_body);
		_vala_ccode_node_unref0 (builder_end);
		_vala_ccode_node_unref0 (cancellable);
		_vala_ccode_node_unref0 (builder_init);
		_vala_ccode_node_unref0 (ccall);
		_vala_iterable_unref0 (error_types);
		_vala_ccode_node_unref0 (timeout);
		_vala_ccode_node_unref0 (object_path);
		_vala_ccode_node_unref0 (interface_name);
		_vala_ccode_node_unref0 (destination);
	} else {
		ValaCCodeFunctionCall* ccall = NULL;
		ValaCCodeIdentifier* _tmp390_;
		ValaCCodeIdentifier* _tmp391_;
		ValaCCodeFunctionCall* _tmp392_;
		ValaCCodeFunctionCall* _tmp393_;
		ValaCCodeFunctionCall* _tmp394_;
		ValaCCodeFunctionCall* _tmp395_;
		ValaCCodeFunction* _tmp396_;
		ValaCCodeFunction* _tmp397_;
		ValaCCodeVariableDeclarator* _tmp398_;
		ValaCCodeVariableDeclarator* _tmp399_;
		ValaCCodeFunctionCall* inner_res = NULL;
		ValaCCodeIdentifier* _tmp400_;
		ValaCCodeIdentifier* _tmp401_;
		ValaCCodeFunctionCall* _tmp402_;
		ValaCCodeFunctionCall* _tmp403_;
		ValaCCodeFunctionCall* _tmp404_;
		ValaCCodeIdentifier* _tmp405_;
		ValaCCodeIdentifier* _tmp406_;
		ValaCCodeCastExpression* _tmp407_;
		ValaCCodeCastExpression* _tmp408_;
		ValaCCodeFunctionCall* _tmp409_;
		ValaCCodeConstant* _tmp410_;
		ValaCCodeConstant* _tmp411_;
		ValaCCodeFunction* _tmp412_;
		ValaCCodeFunction* _tmp413_;
		ValaCCodeIdentifier* _tmp414_;
		ValaCCodeIdentifier* _tmp415_;
		ValaCCodeFunctionCall* _tmp416_;
		ValaCCodeFunctionCall* _tmp417_;
		ValaCCodeIdentifier* _tmp418_;
		ValaCCodeIdentifier* _tmp419_;
		ValaCCodeFunctionCall* _tmp420_;
		ValaCCodeExpression* _tmp421_;
		ValaCCodeFunction* _tmp422_;
		ValaCCodeFunction* _tmp423_;
		ValaCCodeIdentifier* _tmp424_;
		ValaCCodeIdentifier* _tmp425_;
		ValaCCodeFunctionCall* _tmp426_;
		ValaCCodeFunctionCall* unref_inner_res = NULL;
		ValaCCodeIdentifier* _tmp427_;
		ValaCCodeIdentifier* _tmp428_;
		ValaCCodeFunctionCall* _tmp429_;
		ValaCCodeFunctionCall* _tmp430_;
		ValaCCodeFunctionCall* _tmp431_;
		ValaCCodeIdentifier* _tmp432_;
		ValaCCodeIdentifier* _tmp433_;
		ValaCCodeFunction* _tmp434_;
		ValaCCodeFunction* _tmp435_;
		ValaCCodeFunctionCall* _tmp436_;
		_tmp390_ = vala_ccode_identifier_new ("g_dbus_connection_send_message_with_reply_finish");
		_tmp391_ = _tmp390_;
		_tmp392_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp391_);
		_tmp393_ = _tmp392_;
		_vala_ccode_node_unref0 (_tmp391_);
		ccall = _tmp393_;
		_tmp394_ = ccall;
		_tmp395_ = connection;
		vala_ccode_function_call_add_argument (_tmp394_, (ValaCCodeExpression*) _tmp395_);
		_tmp396_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp397_ = _tmp396_;
		_tmp398_ = vala_ccode_variable_declarator_new ("*_inner_res", NULL, NULL);
		_tmp399_ = _tmp398_;
		vala_ccode_function_add_declaration (_tmp397_, "GAsyncResult", (ValaCCodeDeclarator*) _tmp399_, 0);
		_vala_ccode_node_unref0 (_tmp399_);
		_tmp400_ = vala_ccode_identifier_new ("g_task_propagate_pointer");
		_tmp401_ = _tmp400_;
		_tmp402_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp401_);
		_tmp403_ = _tmp402_;
		_vala_ccode_node_unref0 (_tmp401_);
		inner_res = _tmp403_;
		_tmp404_ = inner_res;
		_tmp405_ = vala_ccode_identifier_new ("_res_");
		_tmp406_ = _tmp405_;
		_tmp407_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp406_, "GTask *");
		_tmp408_ = _tmp407_;
		vala_ccode_function_call_add_argument (_tmp404_, (ValaCCodeExpression*) _tmp408_);
		_vala_ccode_node_unref0 (_tmp408_);
		_vala_ccode_node_unref0 (_tmp406_);
		_tmp409_ = inner_res;
		_tmp410_ = vala_ccode_constant_new ("NULL");
		_tmp411_ = _tmp410_;
		vala_ccode_function_call_add_argument (_tmp409_, (ValaCCodeExpression*) _tmp411_);
		_vala_ccode_node_unref0 (_tmp411_);
		_tmp412_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp413_ = _tmp412_;
		_tmp414_ = vala_ccode_identifier_new ("_inner_res");
		_tmp415_ = _tmp414_;
		_tmp416_ = inner_res;
		vala_ccode_function_add_assignment (_tmp413_, (ValaCCodeExpression*) _tmp415_, (ValaCCodeExpression*) _tmp416_);
		_vala_ccode_node_unref0 (_tmp415_);
		_tmp417_ = ccall;
		_tmp418_ = vala_ccode_identifier_new ("_inner_res");
		_tmp419_ = _tmp418_;
		vala_ccode_function_call_add_argument (_tmp417_, (ValaCCodeExpression*) _tmp419_);
		_vala_ccode_node_unref0 (_tmp419_);
		_tmp420_ = ccall;
		_tmp421_ = error_argument;
		vala_ccode_function_call_add_argument (_tmp420_, _tmp421_);
		_tmp422_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp423_ = _tmp422_;
		_tmp424_ = vala_ccode_identifier_new ("_reply_message");
		_tmp425_ = _tmp424_;
		_tmp426_ = ccall;
		vala_ccode_function_add_assignment (_tmp423_, (ValaCCodeExpression*) _tmp425_, (ValaCCodeExpression*) _tmp426_);
		_vala_ccode_node_unref0 (_tmp425_);
		_tmp427_ = vala_ccode_identifier_new ("g_object_unref");
		_tmp428_ = _tmp427_;
		_tmp429_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp428_);
		_tmp430_ = _tmp429_;
		_vala_ccode_node_unref0 (_tmp428_);
		unref_inner_res = _tmp430_;
		_tmp431_ = unref_inner_res;
		_tmp432_ = vala_ccode_identifier_new ("_inner_res");
		_tmp433_ = _tmp432_;
		vala_ccode_function_call_add_argument (_tmp431_, (ValaCCodeExpression*) _tmp433_);
		_vala_ccode_node_unref0 (_tmp433_);
		_tmp434_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp435_ = _tmp434_;
		_tmp436_ = unref_inner_res;
		vala_ccode_function_add_expression (_tmp435_, (ValaCCodeExpression*) _tmp436_);
		_vala_ccode_node_unref0 (unref_inner_res);
		_vala_ccode_node_unref0 (inner_res);
		_vala_ccode_node_unref0 (ccall);
	}
	if (call_type == VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC) {
		_tmp437_ = TRUE;
	} else {
		_tmp437_ = call_type == VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_FINISH;
	}
	if (_tmp437_) {
		ValaCCodeFunction* _tmp438_;
		ValaCCodeFunction* _tmp439_;
		ValaCCodeVariableDeclarator* _tmp440_;
		ValaCCodeVariableDeclarator* _tmp441_;
		ValaCCodeFunctionCall* unref_reply = NULL;
		ValaCCodeIdentifier* _tmp442_;
		ValaCCodeIdentifier* _tmp443_;
		ValaCCodeFunctionCall* _tmp444_;
		ValaCCodeFunctionCall* _tmp445_;
		ValaCCodeFunctionCall* _tmp446_;
		ValaCCodeIdentifier* _tmp447_;
		ValaCCodeIdentifier* _tmp448_;
		ValaCCodeUnaryExpression* reply_is_null = NULL;
		ValaCCodeIdentifier* _tmp449_;
		ValaCCodeIdentifier* _tmp450_;
		ValaCCodeUnaryExpression* _tmp451_;
		ValaCCodeUnaryExpression* _tmp452_;
		ValaCCodeFunction* _tmp453_;
		ValaCCodeFunction* _tmp454_;
		ValaCCodeUnaryExpression* _tmp455_;
		ValaDataType* _tmp456_;
		ValaDataType* _tmp457_;
		ValaCCodeFunction* _tmp458_;
		ValaCCodeFunction* _tmp459_;
		ValaCCodeFunctionCall* ccall = NULL;
		ValaCCodeIdentifier* _tmp460_;
		ValaCCodeIdentifier* _tmp461_;
		ValaCCodeFunctionCall* _tmp462_;
		ValaCCodeFunctionCall* _tmp463_;
		ValaCCodeFunctionCall* _tmp464_;
		ValaCCodeIdentifier* _tmp465_;
		ValaCCodeIdentifier* _tmp466_;
		ValaCCodeFunctionCall* _tmp467_;
		ValaCCodeExpression* _tmp468_;
		ValaCCodeFunction* _tmp469_;
		ValaCCodeFunction* _tmp470_;
		ValaCCodeFunctionCall* _tmp471_;
		ValaCCodeFunction* _tmp472_;
		ValaCCodeFunction* _tmp473_;
		ValaCCodeFunctionCall* _tmp474_;
		ValaDataType* _tmp475_;
		ValaDataType* _tmp476_;
		ValaCCodeFunction* _tmp477_;
		ValaCCodeFunction* _tmp478_;
		gboolean has_result = FALSE;
		ValaDataType* _tmp479_;
		ValaDataType* _tmp480_;
		ValaCCodeFunction* _tmp755_;
		ValaCCodeFunction* _tmp756_;
		ValaCCodeFunctionCall* _tmp757_;
		gboolean _tmp758_ = FALSE;
		ValaDataType* _tmp759_;
		ValaDataType* _tmp760_;
		_tmp438_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp439_ = _tmp438_;
		_tmp440_ = vala_ccode_variable_declarator_new ("*_reply_message", NULL, NULL);
		_tmp441_ = _tmp440_;
		vala_ccode_function_add_declaration (_tmp439_, "GDBusMessage", (ValaCCodeDeclarator*) _tmp441_, 0);
		_vala_ccode_node_unref0 (_tmp441_);
		_tmp442_ = vala_ccode_identifier_new ("g_object_unref");
		_tmp443_ = _tmp442_;
		_tmp444_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp443_);
		_tmp445_ = _tmp444_;
		_vala_ccode_node_unref0 (_tmp443_);
		unref_reply = _tmp445_;
		_tmp446_ = unref_reply;
		_tmp447_ = vala_ccode_identifier_new ("_reply_message");
		_tmp448_ = _tmp447_;
		vala_ccode_function_call_add_argument (_tmp446_, (ValaCCodeExpression*) _tmp448_);
		_vala_ccode_node_unref0 (_tmp448_);
		_tmp449_ = vala_ccode_identifier_new ("_reply_message");
		_tmp450_ = _tmp449_;
		_tmp451_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp450_);
		_tmp452_ = _tmp451_;
		_vala_ccode_node_unref0 (_tmp450_);
		reply_is_null = _tmp452_;
		_tmp453_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp454_ = _tmp453_;
		_tmp455_ = reply_is_null;
		vala_ccode_function_open_if (_tmp454_, (ValaCCodeExpression*) _tmp455_);
		_tmp456_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp457_ = _tmp456_;
		vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp457_, FALSE);
		_tmp458_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp459_ = _tmp458_;
		vala_ccode_function_close (_tmp459_);
		_tmp460_ = vala_ccode_identifier_new ("g_dbus_message_to_gerror");
		_tmp461_ = _tmp460_;
		_tmp462_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp461_);
		_tmp463_ = _tmp462_;
		_vala_ccode_node_unref0 (_tmp461_);
		ccall = _tmp463_;
		_tmp464_ = ccall;
		_tmp465_ = vala_ccode_identifier_new ("_reply_message");
		_tmp466_ = _tmp465_;
		vala_ccode_function_call_add_argument (_tmp464_, (ValaCCodeExpression*) _tmp466_);
		_vala_ccode_node_unref0 (_tmp466_);
		_tmp467_ = ccall;
		_tmp468_ = error_argument;
		vala_ccode_function_call_add_argument (_tmp467_, _tmp468_);
		_tmp469_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp470_ = _tmp469_;
		_tmp471_ = ccall;
		vala_ccode_function_open_if (_tmp470_, (ValaCCodeExpression*) _tmp471_);
		_tmp472_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp473_ = _tmp472_;
		_tmp474_ = unref_reply;
		vala_ccode_function_add_expression (_tmp473_, (ValaCCodeExpression*) _tmp474_);
		_tmp475_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp476_ = _tmp475_;
		vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp476_, FALSE);
		_tmp477_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp478_ = _tmp477_;
		vala_ccode_function_close (_tmp478_);
		_tmp479_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp480_ = _tmp479_;
		has_result = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp480_, VALA_TYPE_VOID_TYPE);
		if (uses_fd) {
			ValaCCodeFunction* _tmp481_;
			ValaCCodeFunction* _tmp482_;
			ValaCCodeConstant* _tmp483_;
			ValaCCodeConstant* _tmp484_;
			ValaCCodeVariableDeclarator* _tmp485_;
			ValaCCodeVariableDeclarator* _tmp486_;
			ValaCCodeFunction* _tmp487_;
			ValaCCodeFunction* _tmp488_;
			ValaCCodeVariableDeclarator* _tmp489_;
			ValaCCodeVariableDeclarator* _tmp490_;
			_tmp481_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp482_ = _tmp481_;
			_tmp483_ = vala_ccode_constant_new ("0");
			_tmp484_ = _tmp483_;
			_tmp485_ = vala_ccode_variable_declarator_new_zero ("_fd_index", (ValaCCodeExpression*) _tmp484_, NULL);
			_tmp486_ = _tmp485_;
			vala_ccode_function_add_declaration (_tmp482_, "gint", (ValaCCodeDeclarator*) _tmp486_, 0);
			_vala_ccode_node_unref0 (_tmp486_);
			_vala_ccode_node_unref0 (_tmp484_);
			_tmp487_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp488_ = _tmp487_;
			_tmp489_ = vala_ccode_variable_declarator_new ("_fd", NULL, NULL);
			_tmp490_ = _tmp489_;
			vala_ccode_function_add_declaration (_tmp488_, "gint", (ValaCCodeDeclarator*) _tmp490_, 0);
			_vala_ccode_node_unref0 (_tmp490_);
		}
		{
			ValaList* _param_list = NULL;
			ValaList* _tmp491_;
			gint _param_size = 0;
			ValaList* _tmp492_;
			gint _tmp493_;
			gint _tmp494_;
			gint _param_index = 0;
			_tmp491_ = vala_callable_get_parameters ((ValaCallable*) m);
			_param_list = _tmp491_;
			_tmp492_ = _param_list;
			_tmp493_ = vala_collection_get_size ((ValaCollection*) _tmp492_);
			_tmp494_ = _tmp493_;
			_param_size = _tmp494_;
			_param_index = -1;
			while (TRUE) {
				gint _tmp495_;
				gint _tmp496_;
				ValaParameter* param = NULL;
				ValaList* _tmp497_;
				gpointer _tmp498_;
				ValaParameter* _tmp499_;
				ValaParameterDirection _tmp500_;
				ValaParameterDirection _tmp501_;
				_param_index = _param_index + 1;
				_tmp495_ = _param_index;
				_tmp496_ = _param_size;
				if (!(_tmp495_ < _tmp496_)) {
					break;
				}
				_tmp497_ = _param_list;
				_tmp498_ = vala_list_get (_tmp497_, _param_index);
				param = (ValaParameter*) _tmp498_;
				_tmp499_ = param;
				_tmp500_ = vala_parameter_get_direction (_tmp499_);
				_tmp501_ = _tmp500_;
				if (_tmp501_ == VALA_PARAMETER_DIRECTION_OUT) {
					has_result = TRUE;
				}
				_vala_code_node_unref0 (param);
			}
		}
		if (has_result) {
			ValaCCodeFunction* _tmp502_;
			ValaCCodeFunction* _tmp503_;
			ValaCCodeVariableDeclarator* _tmp504_;
			ValaCCodeVariableDeclarator* _tmp505_;
			ValaCCodeFunction* _tmp506_;
			ValaCCodeFunction* _tmp507_;
			ValaCCodeVariableDeclarator* _tmp508_;
			ValaCCodeVariableDeclarator* _tmp509_;
			ValaCCodeIdentifier* _tmp510_;
			ValaCCodeIdentifier* _tmp511_;
			ValaCCodeFunctionCall* _tmp512_;
			ValaCCodeFunctionCall* _tmp513_;
			ValaCCodeIdentifier* _tmp514_;
			ValaCCodeIdentifier* _tmp515_;
			ValaCCodeFunction* _tmp516_;
			ValaCCodeFunction* _tmp517_;
			ValaCCodeIdentifier* _tmp518_;
			ValaCCodeIdentifier* _tmp519_;
			ValaCCodeFunctionCall* _tmp520_;
			ValaCCodeFunctionCall* iter_init = NULL;
			ValaCCodeIdentifier* _tmp521_;
			ValaCCodeIdentifier* _tmp522_;
			ValaCCodeFunctionCall* _tmp523_;
			ValaCCodeFunctionCall* _tmp524_;
			ValaCCodeFunctionCall* _tmp525_;
			ValaCCodeIdentifier* _tmp526_;
			ValaCCodeIdentifier* _tmp527_;
			ValaCCodeUnaryExpression* _tmp528_;
			ValaCCodeUnaryExpression* _tmp529_;
			ValaCCodeFunctionCall* _tmp530_;
			ValaCCodeIdentifier* _tmp531_;
			ValaCCodeIdentifier* _tmp532_;
			ValaCCodeFunction* _tmp533_;
			ValaCCodeFunction* _tmp534_;
			ValaCCodeFunctionCall* _tmp535_;
			ValaDataType* _tmp662_;
			ValaDataType* _tmp663_;
			_tmp502_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp503_ = _tmp502_;
			_tmp504_ = vala_ccode_variable_declarator_new ("*_reply", NULL, NULL);
			_tmp505_ = _tmp504_;
			vala_ccode_function_add_declaration (_tmp503_, "GVariant", (ValaCCodeDeclarator*) _tmp505_, 0);
			_vala_ccode_node_unref0 (_tmp505_);
			_tmp506_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp507_ = _tmp506_;
			_tmp508_ = vala_ccode_variable_declarator_new ("_reply_iter", NULL, NULL);
			_tmp509_ = _tmp508_;
			vala_ccode_function_add_declaration (_tmp507_, "GVariantIter", (ValaCCodeDeclarator*) _tmp509_, 0);
			_vala_ccode_node_unref0 (_tmp509_);
			_tmp510_ = vala_ccode_identifier_new ("g_dbus_message_get_body");
			_tmp511_ = _tmp510_;
			_tmp512_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp511_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp512_;
			_vala_ccode_node_unref0 (_tmp511_);
			_tmp513_ = ccall;
			_tmp514_ = vala_ccode_identifier_new ("_reply_message");
			_tmp515_ = _tmp514_;
			vala_ccode_function_call_add_argument (_tmp513_, (ValaCCodeExpression*) _tmp515_);
			_vala_ccode_node_unref0 (_tmp515_);
			_tmp516_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp517_ = _tmp516_;
			_tmp518_ = vala_ccode_identifier_new ("_reply");
			_tmp519_ = _tmp518_;
			_tmp520_ = ccall;
			vala_ccode_function_add_assignment (_tmp517_, (ValaCCodeExpression*) _tmp519_, (ValaCCodeExpression*) _tmp520_);
			_vala_ccode_node_unref0 (_tmp519_);
			_tmp521_ = vala_ccode_identifier_new ("g_variant_iter_init");
			_tmp522_ = _tmp521_;
			_tmp523_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp522_);
			_tmp524_ = _tmp523_;
			_vala_ccode_node_unref0 (_tmp522_);
			iter_init = _tmp524_;
			_tmp525_ = iter_init;
			_tmp526_ = vala_ccode_identifier_new ("_reply_iter");
			_tmp527_ = _tmp526_;
			_tmp528_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp527_);
			_tmp529_ = _tmp528_;
			vala_ccode_function_call_add_argument (_tmp525_, (ValaCCodeExpression*) _tmp529_);
			_vala_ccode_node_unref0 (_tmp529_);
			_vala_ccode_node_unref0 (_tmp527_);
			_tmp530_ = iter_init;
			_tmp531_ = vala_ccode_identifier_new ("_reply");
			_tmp532_ = _tmp531_;
			vala_ccode_function_call_add_argument (_tmp530_, (ValaCCodeExpression*) _tmp532_);
			_vala_ccode_node_unref0 (_tmp532_);
			_tmp533_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp534_ = _tmp533_;
			_tmp535_ = iter_init;
			vala_ccode_function_add_expression (_tmp534_, (ValaCCodeExpression*) _tmp535_);
			{
				ValaList* _param_list = NULL;
				ValaList* _tmp536_;
				gint _param_size = 0;
				ValaList* _tmp537_;
				gint _tmp538_;
				gint _tmp539_;
				gint _param_index = 0;
				_tmp536_ = vala_callable_get_parameters ((ValaCallable*) m);
				_param_list = _tmp536_;
				_tmp537_ = _param_list;
				_tmp538_ = vala_collection_get_size ((ValaCollection*) _tmp537_);
				_tmp539_ = _tmp538_;
				_param_size = _tmp539_;
				_param_index = -1;
				while (TRUE) {
					gint _tmp540_;
					gint _tmp541_;
					ValaParameter* param = NULL;
					ValaList* _tmp542_;
					gpointer _tmp543_;
					ValaParameter* _tmp544_;
					ValaParameterDirection _tmp545_;
					ValaParameterDirection _tmp546_;
					_param_index = _param_index + 1;
					_tmp540_ = _param_index;
					_tmp541_ = _param_size;
					if (!(_tmp540_ < _tmp541_)) {
						break;
					}
					_tmp542_ = _param_list;
					_tmp543_ = vala_list_get (_tmp542_, _param_index);
					param = (ValaParameter*) _tmp543_;
					_tmp544_ = param;
					_tmp545_ = vala_parameter_get_direction (_tmp544_);
					_tmp546_ = _tmp545_;
					if (_tmp546_ == VALA_PARAMETER_DIRECTION_OUT) {
						ValaCCodeFunction* _tmp547_;
						ValaCCodeFunction* _tmp548_;
						ValaParameter* _tmp549_;
						ValaDataType* _tmp550_;
						ValaDataType* _tmp551_;
						gchar* _tmp552_;
						gchar* _tmp553_;
						ValaParameter* _tmp554_;
						const gchar* _tmp555_;
						const gchar* _tmp556_;
						gchar* _tmp557_;
						gchar* _tmp558_;
						ValaParameter* _tmp559_;
						ValaDataType* _tmp560_;
						ValaDataType* _tmp561_;
						ValaCCodeExpression* _tmp562_;
						ValaCCodeExpression* _tmp563_;
						ValaCCodeVariableDeclarator* _tmp564_;
						ValaCCodeVariableDeclarator* _tmp565_;
						ValaArrayType* array_type = NULL;
						ValaParameter* _tmp566_;
						ValaDataType* _tmp567_;
						ValaDataType* _tmp568_;
						ValaArrayType* _tmp569_;
						ValaArrayType* _tmp570_;
						ValaCCodeIdentifier* target = NULL;
						ValaParameter* _tmp590_;
						const gchar* _tmp591_;
						const gchar* _tmp592_;
						gchar* _tmp593_;
						gchar* _tmp594_;
						ValaCCodeIdentifier* _tmp595_;
						ValaCCodeIdentifier* _tmp596_;
						gboolean may_fail = FALSE;
						ValaParameter* _tmp597_;
						ValaDataType* _tmp598_;
						ValaDataType* _tmp599_;
						ValaCCodeIdentifier* _tmp600_;
						ValaCCodeIdentifier* _tmp601_;
						ValaCCodeIdentifier* _tmp602_;
						ValaCCodeIdentifier* _tmp603_;
						ValaCCodeIdentifier* _tmp604_;
						ValaParameter* _tmp605_;
						ValaCCodeExpression* _tmp606_;
						gboolean _tmp607_ = FALSE;
						ValaCCodeFunction* _tmp608_;
						ValaCCodeFunction* _tmp609_;
						ValaParameter* _tmp610_;
						const gchar* _tmp611_;
						const gchar* _tmp612_;
						gchar* _tmp613_;
						gchar* _tmp614_;
						ValaCCodeIdentifier* _tmp615_;
						ValaCCodeIdentifier* _tmp616_;
						ValaCCodeUnaryExpression* _tmp617_;
						ValaCCodeUnaryExpression* _tmp618_;
						ValaCCodeIdentifier* _tmp619_;
						ValaArrayType* _tmp620_;
						gboolean _tmp644_ = FALSE;
						_tmp547_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp548_ = _tmp547_;
						_tmp549_ = param;
						_tmp550_ = vala_variable_get_variable_type ((ValaVariable*) _tmp549_);
						_tmp551_ = _tmp550_;
						_tmp552_ = vala_get_ccode_name ((ValaCodeNode*) _tmp551_);
						_tmp553_ = _tmp552_;
						_tmp554_ = param;
						_tmp555_ = vala_symbol_get_name ((ValaSymbol*) _tmp554_);
						_tmp556_ = _tmp555_;
						_tmp557_ = g_strdup_printf ("_vala_%s", _tmp556_);
						_tmp558_ = _tmp557_;
						_tmp559_ = param;
						_tmp560_ = vala_variable_get_variable_type ((ValaVariable*) _tmp559_);
						_tmp561_ = _tmp560_;
						_tmp562_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp561_, TRUE, FALSE);
						_tmp563_ = _tmp562_;
						_tmp564_ = vala_ccode_variable_declarator_new_zero (_tmp558_, _tmp563_, NULL);
						_tmp565_ = _tmp564_;
						vala_ccode_function_add_declaration (_tmp548_, _tmp553_, (ValaCCodeDeclarator*) _tmp565_, 0);
						_vala_ccode_node_unref0 (_tmp565_);
						_vala_ccode_node_unref0 (_tmp563_);
						_g_free0 (_tmp558_);
						_g_free0 (_tmp553_);
						_tmp566_ = param;
						_tmp567_ = vala_variable_get_variable_type ((ValaVariable*) _tmp566_);
						_tmp568_ = _tmp567_;
						_tmp569_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp568_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp568_) : NULL);
						array_type = _tmp569_;
						_tmp570_ = array_type;
						if (_tmp570_ != NULL) {
							gchar* length_ctype = NULL;
							ValaArrayType* _tmp571_;
							gchar* _tmp572_;
							_tmp571_ = array_type;
							_tmp572_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp571_);
							length_ctype = _tmp572_;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp573_ = FALSE;
									_tmp573_ = TRUE;
									while (TRUE) {
										ValaArrayType* _tmp575_;
										gint _tmp576_;
										gint _tmp577_;
										ValaCCodeFunction* _tmp578_;
										ValaCCodeFunction* _tmp579_;
										const gchar* _tmp580_;
										ValaParameter* _tmp581_;
										const gchar* _tmp582_;
										const gchar* _tmp583_;
										gchar* _tmp584_;
										gchar* _tmp585_;
										ValaCCodeConstant* _tmp586_;
										ValaCCodeConstant* _tmp587_;
										ValaCCodeVariableDeclarator* _tmp588_;
										ValaCCodeVariableDeclarator* _tmp589_;
										if (!_tmp573_) {
											gint _tmp574_;
											_tmp574_ = dim;
											dim = _tmp574_ + 1;
										}
										_tmp573_ = FALSE;
										_tmp575_ = array_type;
										_tmp576_ = vala_array_type_get_rank (_tmp575_);
										_tmp577_ = _tmp576_;
										if (!(dim <= _tmp577_)) {
											break;
										}
										_tmp578_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
										_tmp579_ = _tmp578_;
										_tmp580_ = length_ctype;
										_tmp581_ = param;
										_tmp582_ = vala_symbol_get_name ((ValaSymbol*) _tmp581_);
										_tmp583_ = _tmp582_;
										_tmp584_ = g_strdup_printf ("_vala_%s_length%d", _tmp583_, dim);
										_tmp585_ = _tmp584_;
										_tmp586_ = vala_ccode_constant_new ("0");
										_tmp587_ = _tmp586_;
										_tmp588_ = vala_ccode_variable_declarator_new (_tmp585_, (ValaCCodeExpression*) _tmp587_, NULL);
										_tmp589_ = _tmp588_;
										vala_ccode_function_add_declaration (_tmp579_, _tmp580_, (ValaCCodeDeclarator*) _tmp589_, 0);
										_vala_ccode_node_unref0 (_tmp589_);
										_vala_ccode_node_unref0 (_tmp587_);
										_g_free0 (_tmp585_);
									}
								}
							}
							_g_free0 (length_ctype);
						}
						_tmp590_ = param;
						_tmp591_ = vala_symbol_get_name ((ValaSymbol*) _tmp590_);
						_tmp592_ = _tmp591_;
						_tmp593_ = g_strdup_printf ("_vala_%s", _tmp592_);
						_tmp594_ = _tmp593_;
						_tmp595_ = vala_ccode_identifier_new (_tmp594_);
						_tmp596_ = _tmp595_;
						_g_free0 (_tmp594_);
						target = _tmp596_;
						_tmp597_ = param;
						_tmp598_ = vala_variable_get_variable_type ((ValaVariable*) _tmp597_);
						_tmp599_ = _tmp598_;
						_tmp600_ = vala_ccode_identifier_new ("_reply_message");
						_tmp601_ = _tmp600_;
						_tmp602_ = vala_ccode_identifier_new ("_reply_iter");
						_tmp603_ = _tmp602_;
						_tmp604_ = target;
						_tmp605_ = param;
						_tmp606_ = error_argument;
						vala_gd_bus_module_receive_dbus_value ((ValaGDBusModule*) self, _tmp599_, (ValaCCodeExpression*) _tmp601_, (ValaCCodeExpression*) _tmp603_, (ValaCCodeExpression*) _tmp604_, (ValaSymbol*) _tmp605_, _tmp606_, &_tmp607_);
						may_fail = _tmp607_;
						_vala_ccode_node_unref0 (_tmp603_);
						_vala_ccode_node_unref0 (_tmp601_);
						_tmp608_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp609_ = _tmp608_;
						_tmp610_ = param;
						_tmp611_ = vala_symbol_get_name ((ValaSymbol*) _tmp610_);
						_tmp612_ = _tmp611_;
						_tmp613_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp612_);
						_tmp614_ = _tmp613_;
						_tmp615_ = vala_ccode_identifier_new (_tmp614_);
						_tmp616_ = _tmp615_;
						_tmp617_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp616_);
						_tmp618_ = _tmp617_;
						_tmp619_ = target;
						vala_ccode_function_add_assignment (_tmp609_, (ValaCCodeExpression*) _tmp618_, (ValaCCodeExpression*) _tmp619_);
						_vala_ccode_node_unref0 (_tmp618_);
						_vala_ccode_node_unref0 (_tmp616_);
						_g_free0 (_tmp614_);
						_tmp620_ = array_type;
						if (_tmp620_ != NULL) {
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp621_ = FALSE;
									_tmp621_ = TRUE;
									while (TRUE) {
										ValaArrayType* _tmp623_;
										gint _tmp624_;
										gint _tmp625_;
										ValaCCodeFunction* _tmp626_;
										ValaCCodeFunction* _tmp627_;
										ValaParameter* _tmp628_;
										const gchar* _tmp629_;
										const gchar* _tmp630_;
										gchar* _tmp631_;
										gchar* _tmp632_;
										ValaCCodeIdentifier* _tmp633_;
										ValaCCodeIdentifier* _tmp634_;
										ValaCCodeUnaryExpression* _tmp635_;
										ValaCCodeUnaryExpression* _tmp636_;
										ValaParameter* _tmp637_;
										const gchar* _tmp638_;
										const gchar* _tmp639_;
										gchar* _tmp640_;
										gchar* _tmp641_;
										ValaCCodeIdentifier* _tmp642_;
										ValaCCodeIdentifier* _tmp643_;
										if (!_tmp621_) {
											gint _tmp622_;
											_tmp622_ = dim;
											dim = _tmp622_ + 1;
										}
										_tmp621_ = FALSE;
										_tmp623_ = array_type;
										_tmp624_ = vala_array_type_get_rank (_tmp623_);
										_tmp625_ = _tmp624_;
										if (!(dim <= _tmp625_)) {
											break;
										}
										_tmp626_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
										_tmp627_ = _tmp626_;
										_tmp628_ = param;
										_tmp629_ = vala_symbol_get_name ((ValaSymbol*) _tmp628_);
										_tmp630_ = _tmp629_;
										_tmp631_ = g_strdup_printf ("%s_length%d", _tmp630_, dim);
										_tmp632_ = _tmp631_;
										_tmp633_ = vala_ccode_identifier_new (_tmp632_);
										_tmp634_ = _tmp633_;
										_tmp635_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp634_);
										_tmp636_ = _tmp635_;
										_tmp637_ = param;
										_tmp638_ = vala_symbol_get_name ((ValaSymbol*) _tmp637_);
										_tmp639_ = _tmp638_;
										_tmp640_ = g_strdup_printf ("_vala_%s_length%d", _tmp639_, dim);
										_tmp641_ = _tmp640_;
										_tmp642_ = vala_ccode_identifier_new (_tmp641_);
										_tmp643_ = _tmp642_;
										vala_ccode_function_add_assignment (_tmp627_, (ValaCCodeExpression*) _tmp636_, (ValaCCodeExpression*) _tmp643_);
										_vala_ccode_node_unref0 (_tmp643_);
										_g_free0 (_tmp641_);
										_vala_ccode_node_unref0 (_tmp636_);
										_vala_ccode_node_unref0 (_tmp634_);
										_g_free0 (_tmp632_);
									}
								}
							}
						}
						if (may_fail) {
							_tmp644_ = has_error_argument;
						} else {
							_tmp644_ = FALSE;
						}
						if (_tmp644_) {
							ValaCCodeFunction* _tmp645_;
							ValaCCodeFunction* _tmp646_;
							ValaCCodeIdentifier* _tmp647_;
							ValaCCodeIdentifier* _tmp648_;
							ValaCCodeIdentifier* _tmp649_;
							ValaCCodeIdentifier* _tmp650_;
							ValaCCodeUnaryExpression* _tmp651_;
							ValaCCodeUnaryExpression* _tmp652_;
							ValaCCodeBinaryExpression* _tmp653_;
							ValaCCodeBinaryExpression* _tmp654_;
							ValaCCodeFunction* _tmp655_;
							ValaCCodeFunction* _tmp656_;
							ValaCCodeFunctionCall* _tmp657_;
							ValaDataType* _tmp658_;
							ValaDataType* _tmp659_;
							ValaCCodeFunction* _tmp660_;
							ValaCCodeFunction* _tmp661_;
							_tmp645_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
							_tmp646_ = _tmp645_;
							_tmp647_ = vala_ccode_identifier_new ("error");
							_tmp648_ = _tmp647_;
							_tmp649_ = vala_ccode_identifier_new ("error");
							_tmp650_ = _tmp649_;
							_tmp651_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp650_);
							_tmp652_ = _tmp651_;
							_tmp653_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) _tmp648_, (ValaCCodeExpression*) _tmp652_);
							_tmp654_ = _tmp653_;
							vala_ccode_function_open_if (_tmp646_, (ValaCCodeExpression*) _tmp654_);
							_vala_ccode_node_unref0 (_tmp654_);
							_vala_ccode_node_unref0 (_tmp652_);
							_vala_ccode_node_unref0 (_tmp650_);
							_vala_ccode_node_unref0 (_tmp648_);
							_tmp655_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
							_tmp656_ = _tmp655_;
							_tmp657_ = unref_reply;
							vala_ccode_function_add_expression (_tmp656_, (ValaCCodeExpression*) _tmp657_);
							_tmp658_ = vala_callable_get_return_type ((ValaCallable*) m);
							_tmp659_ = _tmp658_;
							vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp659_, FALSE);
							_tmp660_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
							_tmp661_ = _tmp660_;
							vala_ccode_function_close (_tmp661_);
						}
						_vala_ccode_node_unref0 (target);
						_vala_code_node_unref0 (array_type);
					}
					_vala_code_node_unref0 (param);
				}
			}
			_tmp662_ = vala_callable_get_return_type ((ValaCallable*) m);
			_tmp663_ = _tmp662_;
			if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp663_, VALA_TYPE_VOID_TYPE)) {
				ValaDataType* _tmp664_;
				ValaDataType* _tmp665_;
				_tmp664_ = vala_callable_get_return_type ((ValaCallable*) m);
				_tmp665_ = _tmp664_;
				if (vala_data_type_is_real_non_null_struct_type (_tmp665_)) {
					ValaCCodeUnaryExpression* target = NULL;
					ValaCCodeIdentifier* _tmp666_;
					ValaCCodeIdentifier* _tmp667_;
					ValaCCodeUnaryExpression* _tmp668_;
					ValaCCodeUnaryExpression* _tmp669_;
					ValaDataType* _tmp670_;
					ValaDataType* _tmp671_;
					ValaCCodeIdentifier* _tmp672_;
					ValaCCodeIdentifier* _tmp673_;
					ValaCCodeIdentifier* _tmp674_;
					ValaCCodeIdentifier* _tmp675_;
					ValaCCodeUnaryExpression* _tmp676_;
					_tmp666_ = vala_ccode_identifier_new ("result");
					_tmp667_ = _tmp666_;
					_tmp668_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp667_);
					_tmp669_ = _tmp668_;
					_vala_ccode_node_unref0 (_tmp667_);
					target = _tmp669_;
					_tmp670_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp671_ = _tmp670_;
					_tmp672_ = vala_ccode_identifier_new ("_reply_message");
					_tmp673_ = _tmp672_;
					_tmp674_ = vala_ccode_identifier_new ("_reply_iter");
					_tmp675_ = _tmp674_;
					_tmp676_ = target;
					vala_gd_bus_module_receive_dbus_value ((ValaGDBusModule*) self, _tmp671_, (ValaCCodeExpression*) _tmp673_, (ValaCCodeExpression*) _tmp675_, (ValaCCodeExpression*) _tmp676_, (ValaSymbol*) m, NULL, NULL);
					_vala_ccode_node_unref0 (_tmp675_);
					_vala_ccode_node_unref0 (_tmp673_);
					_vala_ccode_node_unref0 (target);
				} else {
					ValaCCodeFunction* _tmp677_;
					ValaCCodeFunction* _tmp678_;
					ValaDataType* _tmp679_;
					ValaDataType* _tmp680_;
					gchar* _tmp681_;
					gchar* _tmp682_;
					ValaDataType* _tmp683_;
					ValaDataType* _tmp684_;
					ValaCCodeExpression* _tmp685_;
					ValaCCodeExpression* _tmp686_;
					ValaCCodeVariableDeclarator* _tmp687_;
					ValaCCodeVariableDeclarator* _tmp688_;
					ValaArrayType* array_type = NULL;
					ValaDataType* _tmp689_;
					ValaDataType* _tmp690_;
					ValaArrayType* _tmp691_;
					ValaArrayType* _tmp692_;
					gboolean may_fail = FALSE;
					ValaDataType* _tmp709_;
					ValaDataType* _tmp710_;
					ValaCCodeIdentifier* _tmp711_;
					ValaCCodeIdentifier* _tmp712_;
					ValaCCodeIdentifier* _tmp713_;
					ValaCCodeIdentifier* _tmp714_;
					ValaCCodeIdentifier* _tmp715_;
					ValaCCodeIdentifier* _tmp716_;
					ValaCCodeIdentifier* _tmp717_;
					ValaCCodeIdentifier* _tmp718_;
					gboolean _tmp719_ = FALSE;
					ValaArrayType* _tmp720_;
					_tmp677_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp678_ = _tmp677_;
					_tmp679_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp680_ = _tmp679_;
					_tmp681_ = vala_get_ccode_name ((ValaCodeNode*) _tmp680_);
					_tmp682_ = _tmp681_;
					_tmp683_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp684_ = _tmp683_;
					_tmp685_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp684_, TRUE, FALSE);
					_tmp686_ = _tmp685_;
					_tmp687_ = vala_ccode_variable_declarator_new_zero ("_result", _tmp686_, NULL);
					_tmp688_ = _tmp687_;
					vala_ccode_function_add_declaration (_tmp678_, _tmp682_, (ValaCCodeDeclarator*) _tmp688_, 0);
					_vala_ccode_node_unref0 (_tmp688_);
					_vala_ccode_node_unref0 (_tmp686_);
					_g_free0 (_tmp682_);
					_tmp689_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp690_ = _tmp689_;
					_tmp691_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp690_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp690_) : NULL);
					array_type = _tmp691_;
					_tmp692_ = array_type;
					if (_tmp692_ != NULL) {
						gchar* length_ctype = NULL;
						ValaArrayType* _tmp693_;
						gchar* _tmp694_;
						_tmp693_ = array_type;
						_tmp694_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp693_);
						length_ctype = _tmp694_;
						{
							gint dim = 0;
							dim = 1;
							{
								gboolean _tmp695_ = FALSE;
								_tmp695_ = TRUE;
								while (TRUE) {
									ValaArrayType* _tmp697_;
									gint _tmp698_;
									gint _tmp699_;
									ValaCCodeFunction* _tmp700_;
									ValaCCodeFunction* _tmp701_;
									const gchar* _tmp702_;
									gchar* _tmp703_;
									gchar* _tmp704_;
									ValaCCodeConstant* _tmp705_;
									ValaCCodeConstant* _tmp706_;
									ValaCCodeVariableDeclarator* _tmp707_;
									ValaCCodeVariableDeclarator* _tmp708_;
									if (!_tmp695_) {
										gint _tmp696_;
										_tmp696_ = dim;
										dim = _tmp696_ + 1;
									}
									_tmp695_ = FALSE;
									_tmp697_ = array_type;
									_tmp698_ = vala_array_type_get_rank (_tmp697_);
									_tmp699_ = _tmp698_;
									if (!(dim <= _tmp699_)) {
										break;
									}
									_tmp700_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
									_tmp701_ = _tmp700_;
									_tmp702_ = length_ctype;
									_tmp703_ = g_strdup_printf ("_result_length%d", dim);
									_tmp704_ = _tmp703_;
									_tmp705_ = vala_ccode_constant_new ("0");
									_tmp706_ = _tmp705_;
									_tmp707_ = vala_ccode_variable_declarator_new (_tmp704_, (ValaCCodeExpression*) _tmp706_, NULL);
									_tmp708_ = _tmp707_;
									vala_ccode_function_add_declaration (_tmp701_, _tmp702_, (ValaCCodeDeclarator*) _tmp708_, 0);
									_vala_ccode_node_unref0 (_tmp708_);
									_vala_ccode_node_unref0 (_tmp706_);
									_g_free0 (_tmp704_);
								}
							}
						}
						_g_free0 (length_ctype);
					}
					_tmp709_ = vala_callable_get_return_type ((ValaCallable*) m);
					_tmp710_ = _tmp709_;
					_tmp711_ = vala_ccode_identifier_new ("_reply_message");
					_tmp712_ = _tmp711_;
					_tmp713_ = vala_ccode_identifier_new ("_reply_iter");
					_tmp714_ = _tmp713_;
					_tmp715_ = vala_ccode_identifier_new ("_result");
					_tmp716_ = _tmp715_;
					_tmp717_ = vala_ccode_identifier_new ("error");
					_tmp718_ = _tmp717_;
					vala_gd_bus_module_receive_dbus_value ((ValaGDBusModule*) self, _tmp710_, (ValaCCodeExpression*) _tmp712_, (ValaCCodeExpression*) _tmp714_, (ValaCCodeExpression*) _tmp716_, (ValaSymbol*) m, (ValaCCodeExpression*) _tmp718_, &_tmp719_);
					may_fail = _tmp719_;
					_vala_ccode_node_unref0 (_tmp718_);
					_vala_ccode_node_unref0 (_tmp716_);
					_vala_ccode_node_unref0 (_tmp714_);
					_vala_ccode_node_unref0 (_tmp712_);
					_tmp720_ = array_type;
					if (_tmp720_ != NULL) {
						{
							gint dim = 0;
							dim = 1;
							{
								gboolean _tmp721_ = FALSE;
								_tmp721_ = TRUE;
								while (TRUE) {
									ValaArrayType* _tmp723_;
									gint _tmp724_;
									gint _tmp725_;
									ValaCCodeFunction* _tmp726_;
									ValaCCodeFunction* _tmp727_;
									gchar* _tmp728_;
									gchar* _tmp729_;
									ValaCCodeIdentifier* _tmp730_;
									ValaCCodeIdentifier* _tmp731_;
									ValaCCodeUnaryExpression* _tmp732_;
									ValaCCodeUnaryExpression* _tmp733_;
									gchar* _tmp734_;
									gchar* _tmp735_;
									ValaCCodeIdentifier* _tmp736_;
									ValaCCodeIdentifier* _tmp737_;
									if (!_tmp721_) {
										gint _tmp722_;
										_tmp722_ = dim;
										dim = _tmp722_ + 1;
									}
									_tmp721_ = FALSE;
									_tmp723_ = array_type;
									_tmp724_ = vala_array_type_get_rank (_tmp723_);
									_tmp725_ = _tmp724_;
									if (!(dim <= _tmp725_)) {
										break;
									}
									_tmp726_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
									_tmp727_ = _tmp726_;
									_tmp728_ = g_strdup_printf ("result_length%d", dim);
									_tmp729_ = _tmp728_;
									_tmp730_ = vala_ccode_identifier_new (_tmp729_);
									_tmp731_ = _tmp730_;
									_tmp732_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp731_);
									_tmp733_ = _tmp732_;
									_tmp734_ = g_strdup_printf ("_result_length%d", dim);
									_tmp735_ = _tmp734_;
									_tmp736_ = vala_ccode_identifier_new (_tmp735_);
									_tmp737_ = _tmp736_;
									vala_ccode_function_add_assignment (_tmp727_, (ValaCCodeExpression*) _tmp733_, (ValaCCodeExpression*) _tmp737_);
									_vala_ccode_node_unref0 (_tmp737_);
									_g_free0 (_tmp735_);
									_vala_ccode_node_unref0 (_tmp733_);
									_vala_ccode_node_unref0 (_tmp731_);
									_g_free0 (_tmp729_);
								}
							}
						}
					}
					if (may_fail) {
						ValaCCodeFunction* _tmp738_;
						ValaCCodeFunction* _tmp739_;
						ValaCCodeIdentifier* _tmp740_;
						ValaCCodeIdentifier* _tmp741_;
						ValaCCodeIdentifier* _tmp742_;
						ValaCCodeIdentifier* _tmp743_;
						ValaCCodeUnaryExpression* _tmp744_;
						ValaCCodeUnaryExpression* _tmp745_;
						ValaCCodeBinaryExpression* _tmp746_;
						ValaCCodeBinaryExpression* _tmp747_;
						ValaCCodeFunction* _tmp748_;
						ValaCCodeFunction* _tmp749_;
						ValaCCodeFunctionCall* _tmp750_;
						ValaDataType* _tmp751_;
						ValaDataType* _tmp752_;
						ValaCCodeFunction* _tmp753_;
						ValaCCodeFunction* _tmp754_;
						_tmp738_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp739_ = _tmp738_;
						_tmp740_ = vala_ccode_identifier_new ("error");
						_tmp741_ = _tmp740_;
						_tmp742_ = vala_ccode_identifier_new ("error");
						_tmp743_ = _tmp742_;
						_tmp744_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp743_);
						_tmp745_ = _tmp744_;
						_tmp746_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) _tmp741_, (ValaCCodeExpression*) _tmp745_);
						_tmp747_ = _tmp746_;
						vala_ccode_function_open_if (_tmp739_, (ValaCCodeExpression*) _tmp747_);
						_vala_ccode_node_unref0 (_tmp747_);
						_vala_ccode_node_unref0 (_tmp745_);
						_vala_ccode_node_unref0 (_tmp743_);
						_vala_ccode_node_unref0 (_tmp741_);
						_tmp748_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp749_ = _tmp748_;
						_tmp750_ = unref_reply;
						vala_ccode_function_add_expression (_tmp749_, (ValaCCodeExpression*) _tmp750_);
						_tmp751_ = vala_callable_get_return_type ((ValaCallable*) m);
						_tmp752_ = _tmp751_;
						vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp752_, FALSE);
						_tmp753_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp754_ = _tmp753_;
						vala_ccode_function_close (_tmp754_);
					}
					_vala_code_node_unref0 (array_type);
				}
			}
			_vala_ccode_node_unref0 (iter_init);
		}
		_tmp755_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp756_ = _tmp755_;
		_tmp757_ = unref_reply;
		vala_ccode_function_add_expression (_tmp756_, (ValaCCodeExpression*) _tmp757_);
		_tmp759_ = vala_callable_get_return_type ((ValaCallable*) m);
		_tmp760_ = _tmp759_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp760_, VALA_TYPE_VOID_TYPE)) {
			_tmp758_ = TRUE;
		} else {
			ValaDataType* _tmp761_;
			ValaDataType* _tmp762_;
			_tmp761_ = vala_callable_get_return_type ((ValaCallable*) m);
			_tmp762_ = _tmp761_;
			_tmp758_ = vala_data_type_is_real_non_null_struct_type (_tmp762_);
		}
		if (!_tmp758_) {
			ValaCCodeFunction* _tmp763_;
			ValaCCodeFunction* _tmp764_;
			ValaCCodeIdentifier* _tmp765_;
			ValaCCodeIdentifier* _tmp766_;
			_tmp763_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp764_ = _tmp763_;
			_tmp765_ = vala_ccode_identifier_new ("_result");
			_tmp766_ = _tmp765_;
			vala_ccode_function_add_return (_tmp764_, (ValaCCodeExpression*) _tmp766_);
			_vala_ccode_node_unref0 (_tmp766_);
		}
		_vala_ccode_node_unref0 (ccall);
		_vala_ccode_node_unref0 (reply_is_null);
		_vala_ccode_node_unref0 (unref_reply);
	}
	_vala_ccode_node_unref0 (error_argument);
	_vala_ccode_node_unref0 (connection);
	_vala_ccode_node_unref0 (gdbusproxy);
}

static gchar*
vala_gd_bus_client_module_generate_dbus_proxy_method (ValaGDBusClientModule* self,
                                                      ValaInterface* main_iface,
                                                      ValaInterface* iface,
                                                      ValaMethod* m)
{
	gchar* proxy_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp6_;
	gboolean no_reply = FALSE;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp10_;
	GEqualFunc _tmp11_;
	GEqualFunc _tmp12_;
	ValaHashMap* _tmp13_;
	ValaCCodeFile* _tmp14_;
	ValaHashMap* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeFunction* _tmp17_;
	ValaGDBusClientModuleCallType _tmp18_ = 0;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	ValaCCodeFile* _tmp22_;
	ValaCCodeFunction* _tmp23_;
	ValaCCodeFile* _tmp24_;
	ValaCCodeFunction* _tmp25_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (main_iface != NULL, NULL);
	g_return_val_if_fail (iface != NULL, NULL);
	g_return_val_if_fail (m != NULL, NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_symbol_get_name ((ValaSymbol*) m);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sproxy_%s", _tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp1_);
	proxy_name = _tmp5_;
	_tmp6_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) iface);
	dbus_iface_name = _tmp6_;
	no_reply = vala_gd_bus_module_is_dbus_no_reply (m);
	_tmp7_ = proxy_name;
	_tmp8_ = vala_ccode_function_new (_tmp7_, "void");
	function = _tmp8_;
	_tmp9_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp9_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp10_ = g_direct_hash;
	_tmp11_ = g_direct_equal;
	_tmp12_ = g_direct_equal;
	_tmp13_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp10_, _tmp11_, _tmp12_);
	cparam_map = _tmp13_;
	_tmp14_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp15_ = cparam_map;
	_tmp16_ = function;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, _tmp14_, (ValaMap*) _tmp15_, _tmp16_, NULL, NULL, NULL, 3);
	_tmp17_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	if (no_reply) {
		_tmp18_ = VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_NO_REPLY;
	} else {
		_tmp18_ = VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_SYNC;
	}
	_tmp19_ = dbus_iface_name;
	_tmp20_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) m);
	_tmp21_ = _tmp20_;
	vala_gd_bus_client_module_generate_marshalling (self, m, _tmp18_, _tmp19_, _tmp21_, vala_gd_bus_module_get_dbus_timeout_for_member ((ValaSymbol*) m));
	_g_free0 (_tmp21_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp22_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp23_ = function;
	vala_ccode_file_add_function_declaration (_tmp22_, _tmp23_);
	_tmp24_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp25_ = function;
	vala_ccode_file_add_function (_tmp24_, _tmp25_);
	result = proxy_name;
	_vala_map_unref0 (cparam_map);
	_vala_ccode_node_unref0 (function);
	_g_free0 (dbus_iface_name);
	return result;
}

static gchar*
vala_gd_bus_client_module_generate_async_dbus_proxy_method (ValaGDBusClientModule* self,
                                                            ValaInterface* main_iface,
                                                            ValaInterface* iface,
                                                            ValaMethod* m)
{
	gchar* proxy_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp6_;
	ValaCCodeFunction* function = NULL;
	ValaCCodeFunction* _tmp7_;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp8_;
	GEqualFunc _tmp9_;
	GEqualFunc _tmp10_;
	ValaHashMap* _tmp11_;
	ValaCCodeParameter* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFile* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	ValaCCodeFile* _tmp19_;
	ValaCCodeFile* _tmp20_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (main_iface != NULL, NULL);
	g_return_val_if_fail (iface != NULL, NULL);
	g_return_val_if_fail (m != NULL, NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_symbol_get_name ((ValaSymbol*) m);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sproxy_%s_async", _tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp1_);
	proxy_name = _tmp5_;
	_tmp6_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) iface);
	dbus_iface_name = _tmp6_;
	_tmp7_ = vala_ccode_function_new (proxy_name, "void");
	function = _tmp7_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp8_ = g_direct_hash;
	_tmp9_ = g_direct_equal;
	_tmp10_ = g_direct_equal;
	_tmp11_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp8_, _tmp9_, _tmp10_);
	cparam_map = _tmp11_;
	_tmp12_ = vala_ccode_parameter_new ("_callback_", "GAsyncReadyCallback");
	_tmp13_ = _tmp12_;
	vala_map_set ((ValaMap*) cparam_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) -1, FALSE)), _tmp13_);
	_vala_ccode_node_unref0 (_tmp13_);
	_tmp14_ = vala_ccode_parameter_new ("_user_data_", "gpointer");
	_tmp15_ = _tmp14_;
	vala_map_set ((ValaMap*) cparam_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, -0.9, FALSE)), _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_tmp16_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, _tmp16_, (ValaMap*) cparam_map, function, NULL, NULL, NULL, 1);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp17_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) m);
	_tmp18_ = _tmp17_;
	vala_gd_bus_client_module_generate_marshalling (self, m, VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_ASYNC, dbus_iface_name, _tmp18_, vala_gd_bus_module_get_dbus_timeout_for_member ((ValaSymbol*) m));
	_g_free0 (_tmp18_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp19_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function_declaration (_tmp19_, function);
	_tmp20_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp20_, function);
	result = proxy_name;
	_vala_map_unref0 (cparam_map);
	_vala_ccode_node_unref0 (function);
	_g_free0 (dbus_iface_name);
	return result;
}

static gchar*
vala_gd_bus_client_module_generate_finish_dbus_proxy_method (ValaGDBusClientModule* self,
                                                             ValaInterface* main_iface,
                                                             ValaInterface* iface,
                                                             ValaMethod* m)
{
	gchar* proxy_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* function = NULL;
	ValaCCodeFunction* _tmp6_;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp7_;
	GEqualFunc _tmp8_;
	GEqualFunc _tmp9_;
	ValaHashMap* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeParameter* _tmp12_;
	ValaCCodeFile* _tmp13_;
	ValaCCodeFile* _tmp14_;
	ValaCCodeFile* _tmp15_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (main_iface != NULL, NULL);
	g_return_val_if_fail (iface != NULL, NULL);
	g_return_val_if_fail (m != NULL, NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_symbol_get_name ((ValaSymbol*) m);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sproxy_%s_finish", _tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp1_);
	proxy_name = _tmp5_;
	_tmp6_ = vala_ccode_function_new (proxy_name, "void");
	function = _tmp6_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp7_ = g_direct_hash;
	_tmp8_ = g_direct_equal;
	_tmp9_ = g_direct_equal;
	_tmp10_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp7_, _tmp8_, _tmp9_);
	cparam_map = _tmp10_;
	_tmp11_ = vala_ccode_parameter_new ("_res_", "GAsyncResult*");
	_tmp12_ = _tmp11_;
	vala_map_set ((ValaMap*) cparam_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, vala_get_ccode_async_result_pos (m), FALSE)), _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, _tmp13_, (ValaMap*) cparam_map, function, NULL, NULL, NULL, 2);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	vala_gd_bus_client_module_generate_marshalling (self, m, VALA_GD_BUS_CLIENT_MODULE_CALL_TYPE_FINISH, NULL, NULL, -1);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp14_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function_declaration (_tmp14_, function);
	_tmp15_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp15_, function);
	result = proxy_name;
	_vala_map_unref0 (cparam_map);
	_vala_ccode_node_unref0 (function);
	return result;
}

static gchar*
vala_gd_bus_client_module_generate_dbus_proxy_property_get (ValaGDBusClientModule* self,
                                                            ValaInterface* main_iface,
                                                            ValaInterface* iface,
                                                            ValaProperty* prop)
{
	gchar* proxy_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp6_;
	ValaDataType* owned_type = NULL;
	ValaPropertyAccessor* _tmp7_;
	ValaPropertyAccessor* _tmp8_;
	ValaDataType* _tmp9_;
	ValaDataType* _tmp10_;
	ValaDataType* _tmp11_;
	ValaDataType* _tmp12_;
	gboolean _tmp13_ = FALSE;
	ValaDataType* _tmp14_;
	ValaArrayType* array_type = NULL;
	ValaPropertyAccessor* _tmp27_;
	ValaPropertyAccessor* _tmp28_;
	ValaDataType* _tmp29_;
	ValaDataType* _tmp30_;
	ValaArrayType* _tmp31_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp32_;
	ValaCCodeFunction* _tmp33_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	gchar* _tmp36_;
	gchar* _tmp37_;
	gchar* _tmp38_;
	gchar* _tmp39_;
	ValaCCodeParameter* _tmp40_;
	ValaCCodeParameter* _tmp41_;
	ValaDataType* _tmp42_;
	ValaDataType* _tmp43_;
	ValaCCodeFunction* _tmp79_;
	ValaCCodeFunction* _tmp80_;
	ValaCCodeFunction* _tmp81_;
	ValaCCodeVariableDeclarator* _tmp82_;
	ValaCCodeVariableDeclarator* _tmp83_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp84_;
	ValaCCodeIdentifier* _tmp85_;
	ValaCCodeFunctionCall* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeFunctionCall* _tmp88_;
	ValaCCodeIdentifier* _tmp89_;
	ValaCCodeIdentifier* _tmp90_;
	ValaCCodeCastExpression* _tmp91_;
	ValaCCodeCastExpression* _tmp92_;
	ValaCCodeFunctionCall* _tmp93_;
	gchar* _tmp94_;
	gchar* _tmp95_;
	gchar* _tmp96_;
	gchar* _tmp97_;
	ValaCCodeConstant* _tmp98_;
	ValaCCodeConstant* _tmp99_;
	ValaCCodeFunction* _tmp100_;
	ValaCCodeFunction* _tmp101_;
	ValaCCodeIdentifier* _tmp102_;
	ValaCCodeIdentifier* _tmp103_;
	ValaCCodeFunctionCall* _tmp104_;
	ValaCCodeFunction* _tmp105_;
	ValaCCodeFunction* _tmp106_;
	ValaCCodeIdentifier* _tmp107_;
	ValaCCodeIdentifier* _tmp108_;
	ValaCCodeUnaryExpression* _tmp109_;
	ValaCCodeUnaryExpression* _tmp110_;
	ValaCCodeFunction* _tmp111_;
	ValaCCodeFunction* _tmp112_;
	ValaCCodeVariableDeclarator* _tmp113_;
	ValaCCodeVariableDeclarator* _tmp114_;
	ValaCCodeFunction* _tmp115_;
	ValaCCodeFunction* _tmp116_;
	ValaCCodeVariableDeclarator* _tmp117_;
	ValaCCodeVariableDeclarator* _tmp118_;
	ValaCCodeFunction* _tmp119_;
	ValaCCodeFunction* _tmp120_;
	ValaCCodeVariableDeclarator* _tmp121_;
	ValaCCodeVariableDeclarator* _tmp122_;
	ValaCCodeFunctionCall* builder_init = NULL;
	ValaCCodeIdentifier* _tmp123_;
	ValaCCodeIdentifier* _tmp124_;
	ValaCCodeFunctionCall* _tmp125_;
	ValaCCodeFunctionCall* _tmp126_;
	ValaCCodeFunctionCall* _tmp127_;
	ValaCCodeIdentifier* _tmp128_;
	ValaCCodeIdentifier* _tmp129_;
	ValaCCodeUnaryExpression* _tmp130_;
	ValaCCodeUnaryExpression* _tmp131_;
	ValaCCodeFunctionCall* _tmp132_;
	ValaCCodeIdentifier* _tmp133_;
	ValaCCodeIdentifier* _tmp134_;
	ValaCCodeFunction* _tmp135_;
	ValaCCodeFunction* _tmp136_;
	ValaCCodeFunctionCall* _tmp137_;
	ValaDataType* _tmp138_;
	ValaCCodeIdentifier* _tmp139_;
	ValaCCodeIdentifier* _tmp140_;
	const gchar* _tmp141_;
	gchar* _tmp142_;
	gchar* _tmp143_;
	ValaCCodeConstant* _tmp144_;
	ValaCCodeConstant* _tmp145_;
	ValaDataType* _tmp146_;
	ValaCCodeIdentifier* _tmp147_;
	ValaCCodeIdentifier* _tmp148_;
	gchar* _tmp149_;
	gchar* _tmp150_;
	gchar* _tmp151_;
	gchar* _tmp152_;
	ValaCCodeConstant* _tmp153_;
	ValaCCodeConstant* _tmp154_;
	ValaCCodeFunctionCall* builder_end = NULL;
	ValaCCodeIdentifier* _tmp155_;
	ValaCCodeIdentifier* _tmp156_;
	ValaCCodeFunctionCall* _tmp157_;
	ValaCCodeFunctionCall* _tmp158_;
	ValaCCodeFunctionCall* _tmp159_;
	ValaCCodeIdentifier* _tmp160_;
	ValaCCodeIdentifier* _tmp161_;
	ValaCCodeUnaryExpression* _tmp162_;
	ValaCCodeUnaryExpression* _tmp163_;
	ValaCCodeFunction* _tmp164_;
	ValaCCodeFunction* _tmp165_;
	ValaCCodeIdentifier* _tmp166_;
	ValaCCodeIdentifier* _tmp167_;
	ValaCCodeFunctionCall* _tmp168_;
	ValaCCodeIdentifier* _tmp169_;
	ValaCCodeIdentifier* _tmp170_;
	ValaCCodeFunctionCall* _tmp171_;
	ValaCCodeFunctionCall* _tmp172_;
	ValaCCodeIdentifier* _tmp173_;
	ValaCCodeIdentifier* _tmp174_;
	ValaCCodeCastExpression* _tmp175_;
	ValaCCodeCastExpression* _tmp176_;
	ValaCCodeFunctionCall* _tmp177_;
	ValaCCodeConstant* _tmp178_;
	ValaCCodeConstant* _tmp179_;
	ValaCCodeFunctionCall* _tmp180_;
	ValaCCodeIdentifier* _tmp181_;
	ValaCCodeIdentifier* _tmp182_;
	ValaCCodeFunctionCall* _tmp183_;
	ValaCCodeConstant* _tmp184_;
	ValaCCodeConstant* _tmp185_;
	ValaCCodeFunctionCall* _tmp186_;
	ValaCCodeConstant* _tmp187_;
	ValaCCodeConstant* _tmp188_;
	ValaCCodeFunctionCall* _tmp189_;
	ValaCCodeConstant* _tmp190_;
	ValaCCodeConstant* _tmp191_;
	ValaCCodeFunctionCall* _tmp192_;
	ValaCCodeConstant* _tmp193_;
	ValaCCodeConstant* _tmp194_;
	ValaCCodeFunction* _tmp195_;
	ValaCCodeFunction* _tmp196_;
	ValaCCodeIdentifier* _tmp197_;
	ValaCCodeIdentifier* _tmp198_;
	ValaCCodeFunctionCall* _tmp199_;
	ValaCCodeFunction* _tmp200_;
	ValaCCodeFunction* _tmp201_;
	ValaCCodeIdentifier* _tmp202_;
	ValaCCodeIdentifier* _tmp203_;
	ValaCCodeUnaryExpression* _tmp204_;
	ValaCCodeUnaryExpression* _tmp205_;
	ValaDataType* _tmp206_;
	ValaDataType* _tmp207_;
	ValaCCodeFunction* _tmp208_;
	ValaCCodeFunction* _tmp209_;
	ValaCCodeFunctionCall* get_variant = NULL;
	ValaCCodeIdentifier* _tmp210_;
	ValaCCodeIdentifier* _tmp211_;
	ValaCCodeFunctionCall* _tmp212_;
	ValaCCodeFunctionCall* _tmp213_;
	ValaCCodeFunctionCall* _tmp214_;
	ValaCCodeIdentifier* _tmp215_;
	ValaCCodeIdentifier* _tmp216_;
	ValaCCodeFunctionCall* _tmp217_;
	ValaCCodeConstant* _tmp218_;
	ValaCCodeConstant* _tmp219_;
	ValaCCodeFunctionCall* _tmp220_;
	ValaCCodeIdentifier* _tmp221_;
	ValaCCodeIdentifier* _tmp222_;
	ValaCCodeUnaryExpression* _tmp223_;
	ValaCCodeUnaryExpression* _tmp224_;
	ValaCCodeFunction* _tmp225_;
	ValaCCodeFunction* _tmp226_;
	ValaCCodeFunctionCall* _tmp227_;
	ValaCCodeFunctionCall* unref_reply = NULL;
	ValaCCodeIdentifier* _tmp228_;
	ValaCCodeIdentifier* _tmp229_;
	ValaCCodeFunctionCall* _tmp230_;
	ValaCCodeFunctionCall* _tmp231_;
	ValaCCodeFunctionCall* _tmp232_;
	ValaCCodeIdentifier* _tmp233_;
	ValaCCodeIdentifier* _tmp234_;
	ValaCCodeFunction* _tmp235_;
	ValaCCodeFunction* _tmp236_;
	ValaCCodeFunctionCall* _tmp237_;
	ValaCCodeFunction* _tmp238_;
	ValaCCodeFunction* _tmp239_;
	ValaDataType* _tmp240_;
	ValaDataType* _tmp241_;
	gboolean _tmp328_ = FALSE;
	ValaDataType* _tmp329_;
	ValaDataType* _tmp330_;
	ValaDataType* _tmp342_;
	ValaDataType* _tmp343_;
	ValaCCodeFile* _tmp350_;
	ValaCCodeFunction* _tmp351_;
	ValaCCodeFile* _tmp352_;
	ValaCCodeFunction* _tmp353_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (main_iface != NULL, NULL);
	g_return_val_if_fail (iface != NULL, NULL);
	g_return_val_if_fail (prop != NULL, NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_symbol_get_name ((ValaSymbol*) prop);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sdbus_proxy_get_%s", _tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp1_);
	proxy_name = _tmp5_;
	_tmp6_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) iface);
	dbus_iface_name = _tmp6_;
	_tmp7_ = vala_property_get_get_accessor (prop);
	_tmp8_ = _tmp7_;
	_tmp9_ = vala_property_accessor_get_value_type (_tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_data_type_copy (_tmp10_);
	owned_type = _tmp11_;
	_tmp12_ = owned_type;
	vala_data_type_set_value_owned (_tmp12_, TRUE);
	_tmp14_ = owned_type;
	if (vala_data_type_is_disposable (_tmp14_)) {
		ValaPropertyAccessor* _tmp15_;
		ValaPropertyAccessor* _tmp16_;
		ValaDataType* _tmp17_;
		ValaDataType* _tmp18_;
		gboolean _tmp19_;
		gboolean _tmp20_;
		_tmp15_ = vala_property_get_get_accessor (prop);
		_tmp16_ = _tmp15_;
		_tmp17_ = vala_property_accessor_get_value_type (_tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = vala_data_type_get_value_owned (_tmp18_);
		_tmp20_ = _tmp19_;
		_tmp13_ = !_tmp20_;
	} else {
		_tmp13_ = FALSE;
	}
	if (_tmp13_) {
		ValaPropertyAccessor* _tmp21_;
		ValaPropertyAccessor* _tmp22_;
		ValaDataType* _tmp23_;
		ValaDataType* _tmp24_;
		ValaSourceReference* _tmp25_;
		ValaSourceReference* _tmp26_;
		_tmp21_ = vala_property_get_get_accessor (prop);
		_tmp22_ = _tmp21_;
		_tmp23_ = vala_property_accessor_get_value_type (_tmp22_);
		_tmp24_ = _tmp23_;
		_tmp25_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp24_);
		_tmp26_ = _tmp25_;
		vala_report_error (_tmp26_, "Properties used in D-Bus clients require owned get accessor");
	}
	_tmp27_ = vala_property_get_get_accessor (prop);
	_tmp28_ = _tmp27_;
	_tmp29_ = vala_property_accessor_get_value_type (_tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp30_) : NULL);
	array_type = _tmp31_;
	_tmp32_ = proxy_name;
	_tmp33_ = vala_ccode_function_new (_tmp32_, "void");
	function = _tmp33_;
	_tmp34_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp34_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp35_ = function;
	_tmp36_ = vala_get_ccode_name ((ValaCodeNode*) iface);
	_tmp37_ = _tmp36_;
	_tmp38_ = g_strdup_printf ("%s*", _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_parameter_new ("self", _tmp39_);
	_tmp41_ = _tmp40_;
	vala_ccode_function_add_parameter (_tmp35_, _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_g_free0 (_tmp39_);
	_g_free0 (_tmp37_);
	_tmp42_ = vala_property_get_property_type (prop);
	_tmp43_ = _tmp42_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp43_)) {
		ValaCCodeFunction* _tmp44_;
		ValaPropertyAccessor* _tmp45_;
		ValaPropertyAccessor* _tmp46_;
		ValaDataType* _tmp47_;
		ValaDataType* _tmp48_;
		gchar* _tmp49_;
		gchar* _tmp50_;
		gchar* _tmp51_;
		gchar* _tmp52_;
		ValaCCodeParameter* _tmp53_;
		ValaCCodeParameter* _tmp54_;
		_tmp44_ = function;
		_tmp45_ = vala_property_get_get_accessor (prop);
		_tmp46_ = _tmp45_;
		_tmp47_ = vala_property_accessor_get_value_type (_tmp46_);
		_tmp48_ = _tmp47_;
		_tmp49_ = vala_get_ccode_name ((ValaCodeNode*) _tmp48_);
		_tmp50_ = _tmp49_;
		_tmp51_ = g_strdup_printf ("%s*", _tmp50_);
		_tmp52_ = _tmp51_;
		_tmp53_ = vala_ccode_parameter_new ("result", _tmp52_);
		_tmp54_ = _tmp53_;
		vala_ccode_function_add_parameter (_tmp44_, _tmp54_);
		_vala_ccode_node_unref0 (_tmp54_);
		_g_free0 (_tmp52_);
		_g_free0 (_tmp50_);
	} else {
		ValaArrayType* _tmp55_;
		ValaCCodeFunction* _tmp72_;
		ValaPropertyAccessor* _tmp73_;
		ValaPropertyAccessor* _tmp74_;
		ValaDataType* _tmp75_;
		ValaDataType* _tmp76_;
		gchar* _tmp77_;
		gchar* _tmp78_;
		_tmp55_ = array_type;
		if (_tmp55_ != NULL) {
			gchar* length_ctype = NULL;
			ValaArrayType* _tmp56_;
			gchar* _tmp57_;
			gchar* _tmp58_;
			gchar* _tmp59_;
			gchar* _tmp60_;
			_tmp56_ = array_type;
			_tmp57_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp56_);
			_tmp58_ = _tmp57_;
			_tmp59_ = g_strconcat (_tmp58_, "*", NULL);
			_tmp60_ = _tmp59_;
			_g_free0 (_tmp58_);
			length_ctype = _tmp60_;
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp61_ = FALSE;
					_tmp61_ = TRUE;
					while (TRUE) {
						ValaArrayType* _tmp63_;
						gint _tmp64_;
						gint _tmp65_;
						ValaCCodeFunction* _tmp66_;
						gchar* _tmp67_;
						gchar* _tmp68_;
						const gchar* _tmp69_;
						ValaCCodeParameter* _tmp70_;
						ValaCCodeParameter* _tmp71_;
						if (!_tmp61_) {
							gint _tmp62_;
							_tmp62_ = dim;
							dim = _tmp62_ + 1;
						}
						_tmp61_ = FALSE;
						_tmp63_ = array_type;
						_tmp64_ = vala_array_type_get_rank (_tmp63_);
						_tmp65_ = _tmp64_;
						if (!(dim <= _tmp65_)) {
							break;
						}
						_tmp66_ = function;
						_tmp67_ = g_strdup_printf ("result_length%d", dim);
						_tmp68_ = _tmp67_;
						_tmp69_ = length_ctype;
						_tmp70_ = vala_ccode_parameter_new (_tmp68_, _tmp69_);
						_tmp71_ = _tmp70_;
						vala_ccode_function_add_parameter (_tmp66_, _tmp71_);
						_vala_ccode_node_unref0 (_tmp71_);
						_g_free0 (_tmp68_);
					}
				}
			}
			_g_free0 (length_ctype);
		}
		_tmp72_ = function;
		_tmp73_ = vala_property_get_get_accessor (prop);
		_tmp74_ = _tmp73_;
		_tmp75_ = vala_property_accessor_get_value_type (_tmp74_);
		_tmp76_ = _tmp75_;
		_tmp77_ = vala_get_ccode_name ((ValaCodeNode*) _tmp76_);
		_tmp78_ = _tmp77_;
		vala_ccode_function_set_return_type (_tmp72_, _tmp78_);
		_g_free0 (_tmp78_);
	}
	_tmp79_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp79_);
	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_variable_declarator_new ("*_inner_reply", NULL, NULL);
	_tmp83_ = _tmp82_;
	vala_ccode_function_add_declaration (_tmp81_, "GVariant", (ValaCCodeDeclarator*) _tmp83_, 0);
	_vala_ccode_node_unref0 (_tmp83_);
	_tmp84_ = vala_ccode_identifier_new ("g_dbus_proxy_get_cached_property");
	_tmp85_ = _tmp84_;
	_tmp86_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp85_);
	_tmp87_ = _tmp86_;
	_vala_ccode_node_unref0 (_tmp85_);
	ccall = _tmp87_;
	_tmp88_ = ccall;
	_tmp89_ = vala_ccode_identifier_new ("self");
	_tmp90_ = _tmp89_;
	_tmp91_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp90_, "GDBusProxy *");
	_tmp92_ = _tmp91_;
	vala_ccode_function_call_add_argument (_tmp88_, (ValaCCodeExpression*) _tmp92_);
	_vala_ccode_node_unref0 (_tmp92_);
	_vala_ccode_node_unref0 (_tmp90_);
	_tmp93_ = ccall;
	_tmp94_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) prop);
	_tmp95_ = _tmp94_;
	_tmp96_ = g_strdup_printf ("\"%s\"", _tmp95_);
	_tmp97_ = _tmp96_;
	_tmp98_ = vala_ccode_constant_new (_tmp97_);
	_tmp99_ = _tmp98_;
	vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp99_);
	_vala_ccode_node_unref0 (_tmp99_);
	_g_free0 (_tmp97_);
	_g_free0 (_tmp95_);
	_tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp101_ = _tmp100_;
	_tmp102_ = vala_ccode_identifier_new ("_inner_reply");
	_tmp103_ = _tmp102_;
	_tmp104_ = ccall;
	vala_ccode_function_add_assignment (_tmp101_, (ValaCCodeExpression*) _tmp103_, (ValaCCodeExpression*) _tmp104_);
	_vala_ccode_node_unref0 (_tmp103_);
	_tmp105_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp106_ = _tmp105_;
	_tmp107_ = vala_ccode_identifier_new ("_inner_reply");
	_tmp108_ = _tmp107_;
	_tmp109_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp108_);
	_tmp110_ = _tmp109_;
	vala_ccode_function_open_if (_tmp106_, (ValaCCodeExpression*) _tmp110_);
	_vala_ccode_node_unref0 (_tmp110_);
	_vala_ccode_node_unref0 (_tmp108_);
	_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_variable_declarator_new ("*_arguments", NULL, NULL);
	_tmp114_ = _tmp113_;
	vala_ccode_function_add_declaration (_tmp112_, "GVariant", (ValaCCodeDeclarator*) _tmp114_, 0);
	_vala_ccode_node_unref0 (_tmp114_);
	_tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp116_ = _tmp115_;
	_tmp117_ = vala_ccode_variable_declarator_new ("*_reply", NULL, NULL);
	_tmp118_ = _tmp117_;
	vala_ccode_function_add_declaration (_tmp116_, "GVariant", (ValaCCodeDeclarator*) _tmp118_, 0);
	_vala_ccode_node_unref0 (_tmp118_);
	_tmp119_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp120_ = _tmp119_;
	_tmp121_ = vala_ccode_variable_declarator_new ("_arguments_builder", NULL, NULL);
	_tmp122_ = _tmp121_;
	vala_ccode_function_add_declaration (_tmp120_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp122_, 0);
	_vala_ccode_node_unref0 (_tmp122_);
	_tmp123_ = vala_ccode_identifier_new ("g_variant_builder_init");
	_tmp124_ = _tmp123_;
	_tmp125_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp124_);
	_tmp126_ = _tmp125_;
	_vala_ccode_node_unref0 (_tmp124_);
	builder_init = _tmp126_;
	_tmp127_ = builder_init;
	_tmp128_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp129_ = _tmp128_;
	_tmp130_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp129_);
	_tmp131_ = _tmp130_;
	vala_ccode_function_call_add_argument (_tmp127_, (ValaCCodeExpression*) _tmp131_);
	_vala_ccode_node_unref0 (_tmp131_);
	_vala_ccode_node_unref0 (_tmp129_);
	_tmp132_ = builder_init;
	_tmp133_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
	_tmp134_ = _tmp133_;
	vala_ccode_function_call_add_argument (_tmp132_, (ValaCCodeExpression*) _tmp134_);
	_vala_ccode_node_unref0 (_tmp134_);
	_tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp136_ = _tmp135_;
	_tmp137_ = builder_init;
	vala_ccode_function_add_expression (_tmp136_, (ValaCCodeExpression*) _tmp137_);
	_tmp138_ = ((ValaCCodeBaseModule*) self)->string_type;
	_tmp139_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp140_ = _tmp139_;
	_tmp141_ = dbus_iface_name;
	_tmp142_ = g_strdup_printf ("\"%s\"", _tmp141_);
	_tmp143_ = _tmp142_;
	_tmp144_ = vala_ccode_constant_new (_tmp143_);
	_tmp145_ = _tmp144_;
	vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp138_, (ValaCCodeExpression*) _tmp140_, (ValaCCodeExpression*) _tmp145_, NULL);
	_vala_ccode_node_unref0 (_tmp145_);
	_g_free0 (_tmp143_);
	_vala_ccode_node_unref0 (_tmp140_);
	_tmp146_ = ((ValaCCodeBaseModule*) self)->string_type;
	_tmp147_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp148_ = _tmp147_;
	_tmp149_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) prop);
	_tmp150_ = _tmp149_;
	_tmp151_ = g_strdup_printf ("\"%s\"", _tmp150_);
	_tmp152_ = _tmp151_;
	_tmp153_ = vala_ccode_constant_new (_tmp152_);
	_tmp154_ = _tmp153_;
	vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp146_, (ValaCCodeExpression*) _tmp148_, (ValaCCodeExpression*) _tmp154_, NULL);
	_vala_ccode_node_unref0 (_tmp154_);
	_g_free0 (_tmp152_);
	_g_free0 (_tmp150_);
	_vala_ccode_node_unref0 (_tmp148_);
	_tmp155_ = vala_ccode_identifier_new ("g_variant_builder_end");
	_tmp156_ = _tmp155_;
	_tmp157_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp156_);
	_tmp158_ = _tmp157_;
	_vala_ccode_node_unref0 (_tmp156_);
	builder_end = _tmp158_;
	_tmp159_ = builder_end;
	_tmp160_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp161_ = _tmp160_;
	_tmp162_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp161_);
	_tmp163_ = _tmp162_;
	vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp163_);
	_vala_ccode_node_unref0 (_tmp163_);
	_vala_ccode_node_unref0 (_tmp161_);
	_tmp164_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp165_ = _tmp164_;
	_tmp166_ = vala_ccode_identifier_new ("_arguments");
	_tmp167_ = _tmp166_;
	_tmp168_ = builder_end;
	vala_ccode_function_add_assignment (_tmp165_, (ValaCCodeExpression*) _tmp167_, (ValaCCodeExpression*) _tmp168_);
	_vala_ccode_node_unref0 (_tmp167_);
	_tmp169_ = vala_ccode_identifier_new ("g_dbus_proxy_call_sync");
	_tmp170_ = _tmp169_;
	_tmp171_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp170_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp171_;
	_vala_ccode_node_unref0 (_tmp170_);
	_tmp172_ = ccall;
	_tmp173_ = vala_ccode_identifier_new ("self");
	_tmp174_ = _tmp173_;
	_tmp175_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp174_, "GDBusProxy *");
	_tmp176_ = _tmp175_;
	vala_ccode_function_call_add_argument (_tmp172_, (ValaCCodeExpression*) _tmp176_);
	_vala_ccode_node_unref0 (_tmp176_);
	_vala_ccode_node_unref0 (_tmp174_);
	_tmp177_ = ccall;
	_tmp178_ = vala_ccode_constant_new ("\"org.freedesktop.DBus.Properties.Get\"");
	_tmp179_ = _tmp178_;
	vala_ccode_function_call_add_argument (_tmp177_, (ValaCCodeExpression*) _tmp179_);
	_vala_ccode_node_unref0 (_tmp179_);
	_tmp180_ = ccall;
	_tmp181_ = vala_ccode_identifier_new ("_arguments");
	_tmp182_ = _tmp181_;
	vala_ccode_function_call_add_argument (_tmp180_, (ValaCCodeExpression*) _tmp182_);
	_vala_ccode_node_unref0 (_tmp182_);
	_tmp183_ = ccall;
	_tmp184_ = vala_ccode_constant_new ("G_DBUS_CALL_FLAGS_NONE");
	_tmp185_ = _tmp184_;
	vala_ccode_function_call_add_argument (_tmp183_, (ValaCCodeExpression*) _tmp185_);
	_vala_ccode_node_unref0 (_tmp185_);
	_tmp186_ = ccall;
	_tmp187_ = vala_gd_bus_client_module_get_dbus_timeout (self, (ValaSymbol*) prop);
	_tmp188_ = _tmp187_;
	vala_ccode_function_call_add_argument (_tmp186_, (ValaCCodeExpression*) _tmp188_);
	_vala_ccode_node_unref0 (_tmp188_);
	_tmp189_ = ccall;
	_tmp190_ = vala_ccode_constant_new ("NULL");
	_tmp191_ = _tmp190_;
	vala_ccode_function_call_add_argument (_tmp189_, (ValaCCodeExpression*) _tmp191_);
	_vala_ccode_node_unref0 (_tmp191_);
	_tmp192_ = ccall;
	_tmp193_ = vala_ccode_constant_new ("NULL");
	_tmp194_ = _tmp193_;
	vala_ccode_function_call_add_argument (_tmp192_, (ValaCCodeExpression*) _tmp194_);
	_vala_ccode_node_unref0 (_tmp194_);
	_tmp195_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp196_ = _tmp195_;
	_tmp197_ = vala_ccode_identifier_new ("_reply");
	_tmp198_ = _tmp197_;
	_tmp199_ = ccall;
	vala_ccode_function_add_assignment (_tmp196_, (ValaCCodeExpression*) _tmp198_, (ValaCCodeExpression*) _tmp199_);
	_vala_ccode_node_unref0 (_tmp198_);
	_tmp200_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp201_ = _tmp200_;
	_tmp202_ = vala_ccode_identifier_new ("_reply");
	_tmp203_ = _tmp202_;
	_tmp204_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp203_);
	_tmp205_ = _tmp204_;
	vala_ccode_function_open_if (_tmp201_, (ValaCCodeExpression*) _tmp205_);
	_vala_ccode_node_unref0 (_tmp205_);
	_vala_ccode_node_unref0 (_tmp203_);
	_tmp206_ = vala_property_get_property_type (prop);
	_tmp207_ = _tmp206_;
	vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp207_, FALSE);
	_tmp208_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp209_ = _tmp208_;
	vala_ccode_function_close (_tmp209_);
	_tmp210_ = vala_ccode_identifier_new ("g_variant_get");
	_tmp211_ = _tmp210_;
	_tmp212_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp211_);
	_tmp213_ = _tmp212_;
	_vala_ccode_node_unref0 (_tmp211_);
	get_variant = _tmp213_;
	_tmp214_ = get_variant;
	_tmp215_ = vala_ccode_identifier_new ("_reply");
	_tmp216_ = _tmp215_;
	vala_ccode_function_call_add_argument (_tmp214_, (ValaCCodeExpression*) _tmp216_);
	_vala_ccode_node_unref0 (_tmp216_);
	_tmp217_ = get_variant;
	_tmp218_ = vala_ccode_constant_new ("\"(v)\"");
	_tmp219_ = _tmp218_;
	vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp219_);
	_vala_ccode_node_unref0 (_tmp219_);
	_tmp220_ = get_variant;
	_tmp221_ = vala_ccode_identifier_new ("_inner_reply");
	_tmp222_ = _tmp221_;
	_tmp223_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp222_);
	_tmp224_ = _tmp223_;
	vala_ccode_function_call_add_argument (_tmp220_, (ValaCCodeExpression*) _tmp224_);
	_vala_ccode_node_unref0 (_tmp224_);
	_vala_ccode_node_unref0 (_tmp222_);
	_tmp225_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp226_ = _tmp225_;
	_tmp227_ = get_variant;
	vala_ccode_function_add_expression (_tmp226_, (ValaCCodeExpression*) _tmp227_);
	_tmp228_ = vala_ccode_identifier_new ("g_variant_unref");
	_tmp229_ = _tmp228_;
	_tmp230_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp229_);
	_tmp231_ = _tmp230_;
	_vala_ccode_node_unref0 (_tmp229_);
	unref_reply = _tmp231_;
	_tmp232_ = unref_reply;
	_tmp233_ = vala_ccode_identifier_new ("_reply");
	_tmp234_ = _tmp233_;
	vala_ccode_function_call_add_argument (_tmp232_, (ValaCCodeExpression*) _tmp234_);
	_vala_ccode_node_unref0 (_tmp234_);
	_tmp235_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp236_ = _tmp235_;
	_tmp237_ = unref_reply;
	vala_ccode_function_add_expression (_tmp236_, (ValaCCodeExpression*) _tmp237_);
	_tmp238_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp239_ = _tmp238_;
	vala_ccode_function_close (_tmp239_);
	_tmp240_ = vala_property_get_property_type (prop);
	_tmp241_ = _tmp240_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp241_)) {
		ValaCCodeUnaryExpression* target = NULL;
		ValaCCodeIdentifier* _tmp242_;
		ValaCCodeIdentifier* _tmp243_;
		ValaCCodeUnaryExpression* _tmp244_;
		ValaCCodeUnaryExpression* _tmp245_;
		ValaCCodeExpression* _result_ = NULL;
		ValaPropertyAccessor* _tmp246_;
		ValaPropertyAccessor* _tmp247_;
		ValaDataType* _tmp248_;
		ValaDataType* _tmp249_;
		ValaCCodeIdentifier* _tmp250_;
		ValaCCodeIdentifier* _tmp251_;
		ValaCCodeUnaryExpression* _tmp252_;
		ValaCCodeExpression* _tmp253_;
		ValaCCodeExpression* _tmp254_;
		ValaCCodeFunction* _tmp255_;
		ValaCCodeFunction* _tmp256_;
		ValaCCodeUnaryExpression* _tmp257_;
		ValaCCodeExpression* _tmp258_;
		_tmp242_ = vala_ccode_identifier_new ("result");
		_tmp243_ = _tmp242_;
		_tmp244_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp243_);
		_tmp245_ = _tmp244_;
		_vala_ccode_node_unref0 (_tmp243_);
		target = _tmp245_;
		_tmp246_ = vala_property_get_get_accessor (prop);
		_tmp247_ = _tmp246_;
		_tmp248_ = vala_property_accessor_get_value_type (_tmp247_);
		_tmp249_ = _tmp248_;
		_tmp250_ = vala_ccode_identifier_new ("_inner_reply");
		_tmp251_ = _tmp250_;
		_tmp252_ = target;
		_tmp253_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp249_, (ValaCCodeExpression*) _tmp251_, (ValaCCodeExpression*) _tmp252_, NULL, NULL);
		_tmp254_ = _tmp253_;
		_vala_ccode_node_unref0 (_tmp251_);
		_result_ = _tmp254_;
		_tmp255_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp256_ = _tmp255_;
		_tmp257_ = target;
		_tmp258_ = _result_;
		vala_ccode_function_add_assignment (_tmp256_, (ValaCCodeExpression*) _tmp257_, _tmp258_);
		_vala_ccode_node_unref0 (_result_);
		_vala_ccode_node_unref0 (target);
	} else {
		ValaCCodeFunction* _tmp259_;
		ValaCCodeFunction* _tmp260_;
		ValaPropertyAccessor* _tmp261_;
		ValaPropertyAccessor* _tmp262_;
		ValaDataType* _tmp263_;
		ValaDataType* _tmp264_;
		gchar* _tmp265_;
		gchar* _tmp266_;
		ValaCCodeVariableDeclarator* _tmp267_;
		ValaCCodeVariableDeclarator* _tmp268_;
		gchar* _tmp269_;
		gchar* _tmp270_;
		gboolean _tmp271_;
		_tmp259_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp260_ = _tmp259_;
		_tmp261_ = vala_property_get_get_accessor (prop);
		_tmp262_ = _tmp261_;
		_tmp263_ = vala_property_accessor_get_value_type (_tmp262_);
		_tmp264_ = _tmp263_;
		_tmp265_ = vala_get_ccode_name ((ValaCodeNode*) _tmp264_);
		_tmp266_ = _tmp265_;
		_tmp267_ = vala_ccode_variable_declarator_new ("_result", NULL, NULL);
		_tmp268_ = _tmp267_;
		vala_ccode_function_add_declaration (_tmp260_, _tmp266_, (ValaCCodeDeclarator*) _tmp268_, 0);
		_vala_ccode_node_unref0 (_tmp268_);
		_g_free0 (_tmp266_);
		_tmp269_ = vala_gvariant_module_get_dbus_signature ((ValaSymbol*) prop);
		_tmp270_ = _tmp269_;
		_tmp271_ = _tmp270_ != NULL;
		_g_free0 (_tmp270_);
		if (_tmp271_) {
			ValaCCodeFunction* _tmp272_;
			ValaCCodeFunction* _tmp273_;
			ValaCCodeIdentifier* _tmp274_;
			ValaCCodeIdentifier* _tmp275_;
			ValaCCodeIdentifier* _tmp276_;
			ValaCCodeIdentifier* _tmp277_;
			_tmp272_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp273_ = _tmp272_;
			_tmp274_ = vala_ccode_identifier_new ("_result");
			_tmp275_ = _tmp274_;
			_tmp276_ = vala_ccode_identifier_new ("_inner_reply");
			_tmp277_ = _tmp276_;
			vala_ccode_function_add_assignment (_tmp273_, (ValaCCodeExpression*) _tmp275_, (ValaCCodeExpression*) _tmp277_);
			_vala_ccode_node_unref0 (_tmp277_);
			_vala_ccode_node_unref0 (_tmp275_);
		} else {
			ValaArrayType* _tmp278_;
			ValaCCodeExpression* _result_ = NULL;
			ValaPropertyAccessor* _tmp295_;
			ValaPropertyAccessor* _tmp296_;
			ValaDataType* _tmp297_;
			ValaDataType* _tmp298_;
			ValaCCodeIdentifier* _tmp299_;
			ValaCCodeIdentifier* _tmp300_;
			ValaCCodeIdentifier* _tmp301_;
			ValaCCodeIdentifier* _tmp302_;
			ValaCCodeExpression* _tmp303_;
			ValaCCodeExpression* _tmp304_;
			ValaCCodeFunction* _tmp305_;
			ValaCCodeFunction* _tmp306_;
			ValaCCodeIdentifier* _tmp307_;
			ValaCCodeIdentifier* _tmp308_;
			ValaCCodeExpression* _tmp309_;
			ValaArrayType* _tmp310_;
			_tmp278_ = array_type;
			if (_tmp278_ != NULL) {
				gchar* length_ctype = NULL;
				ValaArrayType* _tmp279_;
				gchar* _tmp280_;
				_tmp279_ = array_type;
				_tmp280_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp279_);
				length_ctype = _tmp280_;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp281_ = FALSE;
						_tmp281_ = TRUE;
						while (TRUE) {
							ValaArrayType* _tmp283_;
							gint _tmp284_;
							gint _tmp285_;
							ValaCCodeFunction* _tmp286_;
							ValaCCodeFunction* _tmp287_;
							const gchar* _tmp288_;
							gchar* _tmp289_;
							gchar* _tmp290_;
							ValaCCodeConstant* _tmp291_;
							ValaCCodeConstant* _tmp292_;
							ValaCCodeVariableDeclarator* _tmp293_;
							ValaCCodeVariableDeclarator* _tmp294_;
							if (!_tmp281_) {
								gint _tmp282_;
								_tmp282_ = dim;
								dim = _tmp282_ + 1;
							}
							_tmp281_ = FALSE;
							_tmp283_ = array_type;
							_tmp284_ = vala_array_type_get_rank (_tmp283_);
							_tmp285_ = _tmp284_;
							if (!(dim <= _tmp285_)) {
								break;
							}
							_tmp286_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
							_tmp287_ = _tmp286_;
							_tmp288_ = length_ctype;
							_tmp289_ = g_strdup_printf ("_result_length%d", dim);
							_tmp290_ = _tmp289_;
							_tmp291_ = vala_ccode_constant_new ("0");
							_tmp292_ = _tmp291_;
							_tmp293_ = vala_ccode_variable_declarator_new (_tmp290_, (ValaCCodeExpression*) _tmp292_, NULL);
							_tmp294_ = _tmp293_;
							vala_ccode_function_add_declaration (_tmp287_, _tmp288_, (ValaCCodeDeclarator*) _tmp294_, 0);
							_vala_ccode_node_unref0 (_tmp294_);
							_vala_ccode_node_unref0 (_tmp292_);
							_g_free0 (_tmp290_);
						}
					}
				}
				_g_free0 (length_ctype);
			}
			_tmp295_ = vala_property_get_get_accessor (prop);
			_tmp296_ = _tmp295_;
			_tmp297_ = vala_property_accessor_get_value_type (_tmp296_);
			_tmp298_ = _tmp297_;
			_tmp299_ = vala_ccode_identifier_new ("_inner_reply");
			_tmp300_ = _tmp299_;
			_tmp301_ = vala_ccode_identifier_new ("_result");
			_tmp302_ = _tmp301_;
			_tmp303_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp298_, (ValaCCodeExpression*) _tmp300_, (ValaCCodeExpression*) _tmp302_, NULL, NULL);
			_tmp304_ = _tmp303_;
			_vala_ccode_node_unref0 (_tmp302_);
			_vala_ccode_node_unref0 (_tmp300_);
			_result_ = _tmp304_;
			_tmp305_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp306_ = _tmp305_;
			_tmp307_ = vala_ccode_identifier_new ("_result");
			_tmp308_ = _tmp307_;
			_tmp309_ = _result_;
			vala_ccode_function_add_assignment (_tmp306_, (ValaCCodeExpression*) _tmp308_, _tmp309_);
			_vala_ccode_node_unref0 (_tmp308_);
			_tmp310_ = array_type;
			if (_tmp310_ != NULL) {
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp311_ = FALSE;
						_tmp311_ = TRUE;
						while (TRUE) {
							ValaArrayType* _tmp313_;
							gint _tmp314_;
							gint _tmp315_;
							ValaCCodeFunction* _tmp316_;
							ValaCCodeFunction* _tmp317_;
							gchar* _tmp318_;
							gchar* _tmp319_;
							ValaCCodeIdentifier* _tmp320_;
							ValaCCodeIdentifier* _tmp321_;
							ValaCCodeUnaryExpression* _tmp322_;
							ValaCCodeUnaryExpression* _tmp323_;
							gchar* _tmp324_;
							gchar* _tmp325_;
							ValaCCodeIdentifier* _tmp326_;
							ValaCCodeIdentifier* _tmp327_;
							if (!_tmp311_) {
								gint _tmp312_;
								_tmp312_ = dim;
								dim = _tmp312_ + 1;
							}
							_tmp311_ = FALSE;
							_tmp313_ = array_type;
							_tmp314_ = vala_array_type_get_rank (_tmp313_);
							_tmp315_ = _tmp314_;
							if (!(dim <= _tmp315_)) {
								break;
							}
							_tmp316_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
							_tmp317_ = _tmp316_;
							_tmp318_ = g_strdup_printf ("result_length%d", dim);
							_tmp319_ = _tmp318_;
							_tmp320_ = vala_ccode_identifier_new (_tmp319_);
							_tmp321_ = _tmp320_;
							_tmp322_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp321_);
							_tmp323_ = _tmp322_;
							_tmp324_ = g_strdup_printf ("_result_length%d", dim);
							_tmp325_ = _tmp324_;
							_tmp326_ = vala_ccode_identifier_new (_tmp325_);
							_tmp327_ = _tmp326_;
							vala_ccode_function_add_assignment (_tmp317_, (ValaCCodeExpression*) _tmp323_, (ValaCCodeExpression*) _tmp327_);
							_vala_ccode_node_unref0 (_tmp327_);
							_g_free0 (_tmp325_);
							_vala_ccode_node_unref0 (_tmp323_);
							_vala_ccode_node_unref0 (_tmp321_);
							_g_free0 (_tmp319_);
						}
					}
				}
			}
			_vala_ccode_node_unref0 (_result_);
		}
	}
	_tmp329_ = vala_property_get_property_type (prop);
	_tmp330_ = _tmp329_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp330_)) {
		_tmp328_ = TRUE;
	} else {
		gchar* _tmp331_;
		gchar* _tmp332_;
		_tmp331_ = vala_gvariant_module_get_dbus_signature ((ValaSymbol*) prop);
		_tmp332_ = _tmp331_;
		_tmp328_ = _tmp332_ == NULL;
		_g_free0 (_tmp332_);
	}
	if (_tmp328_) {
		ValaCCodeIdentifier* _tmp333_;
		ValaCCodeIdentifier* _tmp334_;
		ValaCCodeFunctionCall* _tmp335_;
		ValaCCodeFunctionCall* _tmp336_;
		ValaCCodeIdentifier* _tmp337_;
		ValaCCodeIdentifier* _tmp338_;
		ValaCCodeFunction* _tmp339_;
		ValaCCodeFunction* _tmp340_;
		ValaCCodeFunctionCall* _tmp341_;
		_tmp333_ = vala_ccode_identifier_new ("g_variant_unref");
		_tmp334_ = _tmp333_;
		_tmp335_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp334_);
		_vala_ccode_node_unref0 (unref_reply);
		unref_reply = _tmp335_;
		_vala_ccode_node_unref0 (_tmp334_);
		_tmp336_ = unref_reply;
		_tmp337_ = vala_ccode_identifier_new ("_inner_reply");
		_tmp338_ = _tmp337_;
		vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp338_);
		_vala_ccode_node_unref0 (_tmp338_);
		_tmp339_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp340_ = _tmp339_;
		_tmp341_ = unref_reply;
		vala_ccode_function_add_expression (_tmp340_, (ValaCCodeExpression*) _tmp341_);
	}
	_tmp342_ = vala_property_get_property_type (prop);
	_tmp343_ = _tmp342_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp343_)) {
		ValaCCodeFunction* _tmp344_;
		ValaCCodeFunction* _tmp345_;
		_tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp345_ = _tmp344_;
		vala_ccode_function_add_return (_tmp345_, NULL);
	} else {
		ValaCCodeFunction* _tmp346_;
		ValaCCodeFunction* _tmp347_;
		ValaCCodeIdentifier* _tmp348_;
		ValaCCodeIdentifier* _tmp349_;
		_tmp346_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp347_ = _tmp346_;
		_tmp348_ = vala_ccode_identifier_new ("_result");
		_tmp349_ = _tmp348_;
		vala_ccode_function_add_return (_tmp347_, (ValaCCodeExpression*) _tmp349_);
		_vala_ccode_node_unref0 (_tmp349_);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp350_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp351_ = function;
	vala_ccode_file_add_function_declaration (_tmp350_, _tmp351_);
	_tmp352_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp353_ = function;
	vala_ccode_file_add_function (_tmp352_, _tmp353_);
	result = proxy_name;
	_vala_ccode_node_unref0 (unref_reply);
	_vala_ccode_node_unref0 (get_variant);
	_vala_ccode_node_unref0 (builder_end);
	_vala_ccode_node_unref0 (builder_init);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (function);
	_vala_code_node_unref0 (array_type);
	_vala_code_node_unref0 (owned_type);
	_g_free0 (dbus_iface_name);
	return result;
}

static gchar*
vala_gd_bus_client_module_generate_dbus_proxy_property_set (ValaGDBusClientModule* self,
                                                            ValaInterface* main_iface,
                                                            ValaInterface* iface,
                                                            ValaProperty* prop)
{
	gchar* proxy_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* dbus_iface_name = NULL;
	gchar* _tmp6_;
	ValaArrayType* array_type = NULL;
	ValaPropertyAccessor* _tmp7_;
	ValaPropertyAccessor* _tmp8_;
	ValaDataType* _tmp9_;
	ValaDataType* _tmp10_;
	ValaArrayType* _tmp11_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp12_;
	ValaCCodeFunction* _tmp13_;
	ValaCCodeFunction* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_;
	ValaCCodeParameter* _tmp20_;
	ValaCCodeParameter* _tmp21_;
	ValaDataType* _tmp22_;
	ValaDataType* _tmp23_;
	ValaCCodeFunction* _tmp58_;
	ValaCCodeFunction* _tmp59_;
	ValaCCodeFunction* _tmp60_;
	ValaCCodeVariableDeclarator* _tmp61_;
	ValaCCodeVariableDeclarator* _tmp62_;
	ValaCCodeFunction* _tmp63_;
	ValaCCodeFunction* _tmp64_;
	ValaCCodeVariableDeclarator* _tmp65_;
	ValaCCodeVariableDeclarator* _tmp66_;
	ValaCCodeFunction* _tmp67_;
	ValaCCodeFunction* _tmp68_;
	ValaCCodeVariableDeclarator* _tmp69_;
	ValaCCodeVariableDeclarator* _tmp70_;
	ValaCCodeFunctionCall* builder_init = NULL;
	ValaCCodeIdentifier* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeFunctionCall* _tmp73_;
	ValaCCodeFunctionCall* _tmp74_;
	ValaCCodeFunctionCall* _tmp75_;
	ValaCCodeIdentifier* _tmp76_;
	ValaCCodeIdentifier* _tmp77_;
	ValaCCodeUnaryExpression* _tmp78_;
	ValaCCodeUnaryExpression* _tmp79_;
	ValaCCodeFunctionCall* _tmp80_;
	ValaCCodeIdentifier* _tmp81_;
	ValaCCodeIdentifier* _tmp82_;
	ValaCCodeFunction* _tmp83_;
	ValaCCodeFunction* _tmp84_;
	ValaCCodeFunctionCall* _tmp85_;
	ValaDataType* _tmp86_;
	ValaCCodeIdentifier* _tmp87_;
	ValaCCodeIdentifier* _tmp88_;
	const gchar* _tmp89_;
	gchar* _tmp90_;
	gchar* _tmp91_;
	ValaCCodeConstant* _tmp92_;
	ValaCCodeConstant* _tmp93_;
	ValaDataType* _tmp94_;
	ValaCCodeIdentifier* _tmp95_;
	ValaCCodeIdentifier* _tmp96_;
	gchar* _tmp97_;
	gchar* _tmp98_;
	gchar* _tmp99_;
	gchar* _tmp100_;
	ValaCCodeConstant* _tmp101_;
	ValaCCodeConstant* _tmp102_;
	ValaCCodeFunctionCall* builder_open = NULL;
	ValaCCodeIdentifier* _tmp103_;
	ValaCCodeIdentifier* _tmp104_;
	ValaCCodeFunctionCall* _tmp105_;
	ValaCCodeFunctionCall* _tmp106_;
	ValaCCodeFunctionCall* _tmp107_;
	ValaCCodeIdentifier* _tmp108_;
	ValaCCodeIdentifier* _tmp109_;
	ValaCCodeUnaryExpression* _tmp110_;
	ValaCCodeUnaryExpression* _tmp111_;
	ValaCCodeFunctionCall* _tmp112_;
	ValaCCodeIdentifier* _tmp113_;
	ValaCCodeIdentifier* _tmp114_;
	ValaCCodeFunction* _tmp115_;
	ValaCCodeFunction* _tmp116_;
	ValaCCodeFunctionCall* _tmp117_;
	ValaDataType* _tmp118_;
	ValaDataType* _tmp119_;
	ValaCCodeFunctionCall* builder_close = NULL;
	ValaCCodeIdentifier* _tmp138_;
	ValaCCodeIdentifier* _tmp139_;
	ValaCCodeFunctionCall* _tmp140_;
	ValaCCodeFunctionCall* _tmp141_;
	ValaCCodeIdentifier* _tmp142_;
	ValaCCodeIdentifier* _tmp143_;
	ValaCCodeUnaryExpression* _tmp144_;
	ValaCCodeUnaryExpression* _tmp145_;
	ValaCCodeFunction* _tmp146_;
	ValaCCodeFunction* _tmp147_;
	ValaCCodeFunctionCall* builder_end = NULL;
	ValaCCodeIdentifier* _tmp148_;
	ValaCCodeIdentifier* _tmp149_;
	ValaCCodeFunctionCall* _tmp150_;
	ValaCCodeFunctionCall* _tmp151_;
	ValaCCodeIdentifier* _tmp152_;
	ValaCCodeIdentifier* _tmp153_;
	ValaCCodeUnaryExpression* _tmp154_;
	ValaCCodeUnaryExpression* _tmp155_;
	ValaCCodeFunction* _tmp156_;
	ValaCCodeFunction* _tmp157_;
	ValaCCodeIdentifier* _tmp158_;
	ValaCCodeIdentifier* _tmp159_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp160_;
	ValaCCodeIdentifier* _tmp161_;
	ValaCCodeFunctionCall* _tmp162_;
	ValaCCodeFunctionCall* _tmp163_;
	ValaCCodeIdentifier* _tmp164_;
	ValaCCodeIdentifier* _tmp165_;
	ValaCCodeCastExpression* _tmp166_;
	ValaCCodeCastExpression* _tmp167_;
	ValaCCodeConstant* _tmp168_;
	ValaCCodeConstant* _tmp169_;
	ValaCCodeIdentifier* _tmp170_;
	ValaCCodeIdentifier* _tmp171_;
	ValaCCodeConstant* _tmp172_;
	ValaCCodeConstant* _tmp173_;
	ValaCCodeConstant* _tmp174_;
	ValaCCodeConstant* _tmp175_;
	ValaCCodeConstant* _tmp176_;
	ValaCCodeConstant* _tmp177_;
	ValaCCodeConstant* _tmp178_;
	ValaCCodeConstant* _tmp179_;
	ValaCCodeFunction* _tmp180_;
	ValaCCodeFunction* _tmp181_;
	ValaCCodeIdentifier* _tmp182_;
	ValaCCodeIdentifier* _tmp183_;
	ValaCCodeFunction* _tmp184_;
	ValaCCodeFunction* _tmp185_;
	ValaCCodeIdentifier* _tmp186_;
	ValaCCodeIdentifier* _tmp187_;
	ValaCCodeUnaryExpression* _tmp188_;
	ValaCCodeUnaryExpression* _tmp189_;
	ValaCCodeFunction* _tmp190_;
	ValaCCodeFunction* _tmp191_;
	ValaCCodeFunction* _tmp192_;
	ValaCCodeFunction* _tmp193_;
	ValaCCodeFunctionCall* unref_reply = NULL;
	ValaCCodeIdentifier* _tmp194_;
	ValaCCodeIdentifier* _tmp195_;
	ValaCCodeFunctionCall* _tmp196_;
	ValaCCodeFunctionCall* _tmp197_;
	ValaCCodeIdentifier* _tmp198_;
	ValaCCodeIdentifier* _tmp199_;
	ValaCCodeFunction* _tmp200_;
	ValaCCodeFunction* _tmp201_;
	ValaCCodeFile* _tmp202_;
	ValaCCodeFunction* _tmp203_;
	ValaCCodeFile* _tmp204_;
	ValaCCodeFunction* _tmp205_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (main_iface != NULL, NULL);
	g_return_val_if_fail (iface != NULL, NULL);
	g_return_val_if_fail (prop != NULL, NULL);
	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) main_iface);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_symbol_get_name ((ValaSymbol*) prop);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sdbus_proxy_set_%s", _tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp1_);
	proxy_name = _tmp5_;
	_tmp6_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) iface);
	dbus_iface_name = _tmp6_;
	_tmp7_ = vala_property_get_set_accessor (prop);
	_tmp8_ = _tmp7_;
	_tmp9_ = vala_property_accessor_get_value_type (_tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp10_) : NULL);
	array_type = _tmp11_;
	_tmp12_ = proxy_name;
	_tmp13_ = vala_ccode_function_new (_tmp12_, "void");
	function = _tmp13_;
	_tmp14_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp14_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp15_ = function;
	_tmp16_ = vala_get_ccode_name ((ValaCodeNode*) iface);
	_tmp17_ = _tmp16_;
	_tmp18_ = g_strdup_printf ("%s*", _tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = vala_ccode_parameter_new ("self", _tmp19_);
	_tmp21_ = _tmp20_;
	vala_ccode_function_add_parameter (_tmp15_, _tmp21_);
	_vala_ccode_node_unref0 (_tmp21_);
	_g_free0 (_tmp19_);
	_g_free0 (_tmp17_);
	_tmp22_ = vala_property_get_property_type (prop);
	_tmp23_ = _tmp22_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp23_)) {
		ValaCCodeFunction* _tmp24_;
		ValaPropertyAccessor* _tmp25_;
		ValaPropertyAccessor* _tmp26_;
		ValaDataType* _tmp27_;
		ValaDataType* _tmp28_;
		gchar* _tmp29_;
		gchar* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		ValaCCodeParameter* _tmp33_;
		ValaCCodeParameter* _tmp34_;
		_tmp24_ = function;
		_tmp25_ = vala_property_get_set_accessor (prop);
		_tmp26_ = _tmp25_;
		_tmp27_ = vala_property_accessor_get_value_type (_tmp26_);
		_tmp28_ = _tmp27_;
		_tmp29_ = vala_get_ccode_name ((ValaCodeNode*) _tmp28_);
		_tmp30_ = _tmp29_;
		_tmp31_ = g_strdup_printf ("%s*", _tmp30_);
		_tmp32_ = _tmp31_;
		_tmp33_ = vala_ccode_parameter_new ("value", _tmp32_);
		_tmp34_ = _tmp33_;
		vala_ccode_function_add_parameter (_tmp24_, _tmp34_);
		_vala_ccode_node_unref0 (_tmp34_);
		_g_free0 (_tmp32_);
		_g_free0 (_tmp30_);
	} else {
		ValaCCodeFunction* _tmp35_;
		ValaPropertyAccessor* _tmp36_;
		ValaPropertyAccessor* _tmp37_;
		ValaDataType* _tmp38_;
		ValaDataType* _tmp39_;
		gchar* _tmp40_;
		gchar* _tmp41_;
		ValaCCodeParameter* _tmp42_;
		ValaCCodeParameter* _tmp43_;
		ValaArrayType* _tmp44_;
		_tmp35_ = function;
		_tmp36_ = vala_property_get_set_accessor (prop);
		_tmp37_ = _tmp36_;
		_tmp38_ = vala_property_accessor_get_value_type (_tmp37_);
		_tmp39_ = _tmp38_;
		_tmp40_ = vala_get_ccode_name ((ValaCodeNode*) _tmp39_);
		_tmp41_ = _tmp40_;
		_tmp42_ = vala_ccode_parameter_new ("value", _tmp41_);
		_tmp43_ = _tmp42_;
		vala_ccode_function_add_parameter (_tmp35_, _tmp43_);
		_vala_ccode_node_unref0 (_tmp43_);
		_g_free0 (_tmp41_);
		_tmp44_ = array_type;
		if (_tmp44_ != NULL) {
			gchar* length_ctype = NULL;
			ValaArrayType* _tmp45_;
			gchar* _tmp46_;
			_tmp45_ = array_type;
			_tmp46_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp45_);
			length_ctype = _tmp46_;
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp47_ = FALSE;
					_tmp47_ = TRUE;
					while (TRUE) {
						ValaArrayType* _tmp49_;
						gint _tmp50_;
						gint _tmp51_;
						ValaCCodeFunction* _tmp52_;
						gchar* _tmp53_;
						gchar* _tmp54_;
						const gchar* _tmp55_;
						ValaCCodeParameter* _tmp56_;
						ValaCCodeParameter* _tmp57_;
						if (!_tmp47_) {
							gint _tmp48_;
							_tmp48_ = dim;
							dim = _tmp48_ + 1;
						}
						_tmp47_ = FALSE;
						_tmp49_ = array_type;
						_tmp50_ = vala_array_type_get_rank (_tmp49_);
						_tmp51_ = _tmp50_;
						if (!(dim <= _tmp51_)) {
							break;
						}
						_tmp52_ = function;
						_tmp53_ = g_strdup_printf ("value_length%d", dim);
						_tmp54_ = _tmp53_;
						_tmp55_ = length_ctype;
						_tmp56_ = vala_ccode_parameter_new (_tmp54_, _tmp55_);
						_tmp57_ = _tmp56_;
						vala_ccode_function_add_parameter (_tmp52_, _tmp57_);
						_vala_ccode_node_unref0 (_tmp57_);
						_g_free0 (_tmp54_);
					}
				}
			}
			_g_free0 (length_ctype);
		}
	}
	_tmp58_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp58_);
	_tmp59_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp60_ = _tmp59_;
	_tmp61_ = vala_ccode_variable_declarator_new ("*_arguments", NULL, NULL);
	_tmp62_ = _tmp61_;
	vala_ccode_function_add_declaration (_tmp60_, "GVariant", (ValaCCodeDeclarator*) _tmp62_, 0);
	_vala_ccode_node_unref0 (_tmp62_);
	_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp64_ = _tmp63_;
	_tmp65_ = vala_ccode_variable_declarator_new ("*_reply", NULL, NULL);
	_tmp66_ = _tmp65_;
	vala_ccode_function_add_declaration (_tmp64_, "GVariant", (ValaCCodeDeclarator*) _tmp66_, 0);
	_vala_ccode_node_unref0 (_tmp66_);
	_tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp68_ = _tmp67_;
	_tmp69_ = vala_ccode_variable_declarator_new ("_arguments_builder", NULL, NULL);
	_tmp70_ = _tmp69_;
	vala_ccode_function_add_declaration (_tmp68_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp70_, 0);
	_vala_ccode_node_unref0 (_tmp70_);
	_tmp71_ = vala_ccode_identifier_new ("g_variant_builder_init");
	_tmp72_ = _tmp71_;
	_tmp73_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp72_);
	_tmp74_ = _tmp73_;
	_vala_ccode_node_unref0 (_tmp72_);
	builder_init = _tmp74_;
	_tmp75_ = builder_init;
	_tmp76_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp77_ = _tmp76_;
	_tmp78_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp77_);
	_tmp79_ = _tmp78_;
	vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp79_);
	_vala_ccode_node_unref0 (_tmp79_);
	_vala_ccode_node_unref0 (_tmp77_);
	_tmp80_ = builder_init;
	_tmp81_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
	_tmp82_ = _tmp81_;
	vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp82_);
	_vala_ccode_node_unref0 (_tmp82_);
	_tmp83_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp84_ = _tmp83_;
	_tmp85_ = builder_init;
	vala_ccode_function_add_expression (_tmp84_, (ValaCCodeExpression*) _tmp85_);
	_tmp86_ = ((ValaCCodeBaseModule*) self)->string_type;
	_tmp87_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp88_ = _tmp87_;
	_tmp89_ = dbus_iface_name;
	_tmp90_ = g_strdup_printf ("\"%s\"", _tmp89_);
	_tmp91_ = _tmp90_;
	_tmp92_ = vala_ccode_constant_new (_tmp91_);
	_tmp93_ = _tmp92_;
	vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp86_, (ValaCCodeExpression*) _tmp88_, (ValaCCodeExpression*) _tmp93_, NULL);
	_vala_ccode_node_unref0 (_tmp93_);
	_g_free0 (_tmp91_);
	_vala_ccode_node_unref0 (_tmp88_);
	_tmp94_ = ((ValaCCodeBaseModule*) self)->string_type;
	_tmp95_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp96_ = _tmp95_;
	_tmp97_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) prop);
	_tmp98_ = _tmp97_;
	_tmp99_ = g_strdup_printf ("\"%s\"", _tmp98_);
	_tmp100_ = _tmp99_;
	_tmp101_ = vala_ccode_constant_new (_tmp100_);
	_tmp102_ = _tmp101_;
	vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp94_, (ValaCCodeExpression*) _tmp96_, (ValaCCodeExpression*) _tmp102_, NULL);
	_vala_ccode_node_unref0 (_tmp102_);
	_g_free0 (_tmp100_);
	_g_free0 (_tmp98_);
	_vala_ccode_node_unref0 (_tmp96_);
	_tmp103_ = vala_ccode_identifier_new ("g_variant_builder_open");
	_tmp104_ = _tmp103_;
	_tmp105_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp104_);
	_tmp106_ = _tmp105_;
	_vala_ccode_node_unref0 (_tmp104_);
	builder_open = _tmp106_;
	_tmp107_ = builder_open;
	_tmp108_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp109_ = _tmp108_;
	_tmp110_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp109_);
	_tmp111_ = _tmp110_;
	vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) _tmp111_);
	_vala_ccode_node_unref0 (_tmp111_);
	_vala_ccode_node_unref0 (_tmp109_);
	_tmp112_ = builder_open;
	_tmp113_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_VARIANT");
	_tmp114_ = _tmp113_;
	vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp116_ = _tmp115_;
	_tmp117_ = builder_open;
	vala_ccode_function_add_expression (_tmp116_, (ValaCCodeExpression*) _tmp117_);
	_tmp118_ = vala_property_get_property_type (prop);
	_tmp119_ = _tmp118_;
	if (vala_data_type_is_real_non_null_struct_type (_tmp119_)) {
		ValaPropertyAccessor* _tmp120_;
		ValaPropertyAccessor* _tmp121_;
		ValaDataType* _tmp122_;
		ValaDataType* _tmp123_;
		ValaCCodeIdentifier* _tmp124_;
		ValaCCodeIdentifier* _tmp125_;
		ValaCCodeIdentifier* _tmp126_;
		ValaCCodeIdentifier* _tmp127_;
		ValaCCodeUnaryExpression* _tmp128_;
		ValaCCodeUnaryExpression* _tmp129_;
		_tmp120_ = vala_property_get_set_accessor (prop);
		_tmp121_ = _tmp120_;
		_tmp122_ = vala_property_accessor_get_value_type (_tmp121_);
		_tmp123_ = _tmp122_;
		_tmp124_ = vala_ccode_identifier_new ("_arguments_builder");
		_tmp125_ = _tmp124_;
		_tmp126_ = vala_ccode_identifier_new ("value");
		_tmp127_ = _tmp126_;
		_tmp128_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp127_);
		_tmp129_ = _tmp128_;
		vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp123_, (ValaCCodeExpression*) _tmp125_, (ValaCCodeExpression*) _tmp129_, (ValaSymbol*) prop);
		_vala_ccode_node_unref0 (_tmp129_);
		_vala_ccode_node_unref0 (_tmp127_);
		_vala_ccode_node_unref0 (_tmp125_);
	} else {
		ValaPropertyAccessor* _tmp130_;
		ValaPropertyAccessor* _tmp131_;
		ValaDataType* _tmp132_;
		ValaDataType* _tmp133_;
		ValaCCodeIdentifier* _tmp134_;
		ValaCCodeIdentifier* _tmp135_;
		ValaCCodeIdentifier* _tmp136_;
		ValaCCodeIdentifier* _tmp137_;
		_tmp130_ = vala_property_get_set_accessor (prop);
		_tmp131_ = _tmp130_;
		_tmp132_ = vala_property_accessor_get_value_type (_tmp131_);
		_tmp133_ = _tmp132_;
		_tmp134_ = vala_ccode_identifier_new ("_arguments_builder");
		_tmp135_ = _tmp134_;
		_tmp136_ = vala_ccode_identifier_new ("value");
		_tmp137_ = _tmp136_;
		vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp133_, (ValaCCodeExpression*) _tmp135_, (ValaCCodeExpression*) _tmp137_, (ValaSymbol*) prop);
		_vala_ccode_node_unref0 (_tmp137_);
		_vala_ccode_node_unref0 (_tmp135_);
	}
	_tmp138_ = vala_ccode_identifier_new ("g_variant_builder_close");
	_tmp139_ = _tmp138_;
	_tmp140_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp139_);
	_tmp141_ = _tmp140_;
	_vala_ccode_node_unref0 (_tmp139_);
	builder_close = _tmp141_;
	_tmp142_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp143_ = _tmp142_;
	_tmp144_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp143_);
	_tmp145_ = _tmp144_;
	vala_ccode_function_call_add_argument (builder_close, (ValaCCodeExpression*) _tmp145_);
	_vala_ccode_node_unref0 (_tmp145_);
	_vala_ccode_node_unref0 (_tmp143_);
	_tmp146_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp147_ = _tmp146_;
	vala_ccode_function_add_expression (_tmp147_, (ValaCCodeExpression*) builder_close);
	_tmp148_ = vala_ccode_identifier_new ("g_variant_builder_end");
	_tmp149_ = _tmp148_;
	_tmp150_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp149_);
	_tmp151_ = _tmp150_;
	_vala_ccode_node_unref0 (_tmp149_);
	builder_end = _tmp151_;
	_tmp152_ = vala_ccode_identifier_new ("_arguments_builder");
	_tmp153_ = _tmp152_;
	_tmp154_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp153_);
	_tmp155_ = _tmp154_;
	vala_ccode_function_call_add_argument (builder_end, (ValaCCodeExpression*) _tmp155_);
	_vala_ccode_node_unref0 (_tmp155_);
	_vala_ccode_node_unref0 (_tmp153_);
	_tmp156_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp157_ = _tmp156_;
	_tmp158_ = vala_ccode_identifier_new ("_arguments");
	_tmp159_ = _tmp158_;
	vala_ccode_function_add_assignment (_tmp157_, (ValaCCodeExpression*) _tmp159_, (ValaCCodeExpression*) builder_end);
	_vala_ccode_node_unref0 (_tmp159_);
	_tmp160_ = vala_ccode_identifier_new ("g_dbus_proxy_call_sync");
	_tmp161_ = _tmp160_;
	_tmp162_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp161_);
	_tmp163_ = _tmp162_;
	_vala_ccode_node_unref0 (_tmp161_);
	ccall = _tmp163_;
	_tmp164_ = vala_ccode_identifier_new ("self");
	_tmp165_ = _tmp164_;
	_tmp166_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp165_, "GDBusProxy *");
	_tmp167_ = _tmp166_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp167_);
	_vala_ccode_node_unref0 (_tmp167_);
	_vala_ccode_node_unref0 (_tmp165_);
	_tmp168_ = vala_ccode_constant_new ("\"org.freedesktop.DBus.Properties.Set\"");
	_tmp169_ = _tmp168_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp169_);
	_vala_ccode_node_unref0 (_tmp169_);
	_tmp170_ = vala_ccode_identifier_new ("_arguments");
	_tmp171_ = _tmp170_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp171_);
	_vala_ccode_node_unref0 (_tmp171_);
	_tmp172_ = vala_ccode_constant_new ("G_DBUS_CALL_FLAGS_NONE");
	_tmp173_ = _tmp172_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp173_);
	_vala_ccode_node_unref0 (_tmp173_);
	_tmp174_ = vala_gd_bus_client_module_get_dbus_timeout (self, (ValaSymbol*) prop);
	_tmp175_ = _tmp174_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp175_);
	_vala_ccode_node_unref0 (_tmp175_);
	_tmp176_ = vala_ccode_constant_new ("NULL");
	_tmp177_ = _tmp176_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp177_);
	_vala_ccode_node_unref0 (_tmp177_);
	_tmp178_ = vala_ccode_constant_new ("NULL");
	_tmp179_ = _tmp178_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp179_);
	_vala_ccode_node_unref0 (_tmp179_);
	_tmp180_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp181_ = _tmp180_;
	_tmp182_ = vala_ccode_identifier_new ("_reply");
	_tmp183_ = _tmp182_;
	vala_ccode_function_add_assignment (_tmp181_, (ValaCCodeExpression*) _tmp183_, (ValaCCodeExpression*) ccall);
	_vala_ccode_node_unref0 (_tmp183_);
	_tmp184_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp185_ = _tmp184_;
	_tmp186_ = vala_ccode_identifier_new ("_reply");
	_tmp187_ = _tmp186_;
	_tmp188_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp187_);
	_tmp189_ = _tmp188_;
	vala_ccode_function_open_if (_tmp185_, (ValaCCodeExpression*) _tmp189_);
	_vala_ccode_node_unref0 (_tmp189_);
	_vala_ccode_node_unref0 (_tmp187_);
	_tmp190_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp191_ = _tmp190_;
	vala_ccode_function_add_return (_tmp191_, NULL);
	_tmp192_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp193_ = _tmp192_;
	vala_ccode_function_close (_tmp193_);
	_tmp194_ = vala_ccode_identifier_new ("g_variant_unref");
	_tmp195_ = _tmp194_;
	_tmp196_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp195_);
	_tmp197_ = _tmp196_;
	_vala_ccode_node_unref0 (_tmp195_);
	unref_reply = _tmp197_;
	_tmp198_ = vala_ccode_identifier_new ("_reply");
	_tmp199_ = _tmp198_;
	vala_ccode_function_call_add_argument (unref_reply, (ValaCCodeExpression*) _tmp199_);
	_vala_ccode_node_unref0 (_tmp199_);
	_tmp200_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp201_ = _tmp200_;
	vala_ccode_function_add_expression (_tmp201_, (ValaCCodeExpression*) unref_reply);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp202_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp203_ = function;
	vala_ccode_file_add_function_declaration (_tmp202_, _tmp203_);
	_tmp204_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp205_ = function;
	vala_ccode_file_add_function (_tmp204_, _tmp205_);
	result = proxy_name;
	_vala_ccode_node_unref0 (unref_reply);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (builder_end);
	_vala_ccode_node_unref0 (builder_close);
	_vala_ccode_node_unref0 (builder_open);
	_vala_ccode_node_unref0 (builder_init);
	_vala_ccode_node_unref0 (function);
	_vala_code_node_unref0 (array_type);
	_g_free0 (dbus_iface_name);
	return result;
}

static void
vala_gd_bus_client_module_real_register_dbus_info (ValaCCodeBaseModule* base,
                                                   ValaCCodeBlock* block,
                                                   ValaObjectTypeSymbol* sym)
{
	ValaGDBusClientModule * 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_;
	ValaCCodeIdentifier* proxy_type = NULL;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	ValaCCodeIdentifier* _tmp13_;
	ValaCCodeIdentifier* _tmp14_;
	ValaCCodeFunctionCall* set_qdata = NULL;
	ValaCCodeIdentifier* _tmp15_;
	ValaCCodeIdentifier* _tmp16_;
	ValaCCodeFunctionCall* _tmp17_;
	ValaCCodeFunctionCall* _tmp18_;
	ValaCCodeFunctionCall* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	ValaCCodeIdentifier* _tmp24_;
	ValaCCodeIdentifier* _tmp25_;
	ValaCCodeFunctionCall* _tmp26_;
	ValaCCodeFunctionCall* _tmp27_;
	ValaCCodeFunctionCall* _tmp28_;
	ValaCCodeIdentifier* _tmp29_;
	ValaCCodeCastExpression* _tmp30_;
	ValaCCodeCastExpression* _tmp31_;
	ValaCCodeFunctionCall* _tmp32_;
	ValaCCodeExpressionStatement* _tmp33_;
	ValaCCodeExpressionStatement* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeIdentifier* _tmp36_;
	ValaCCodeFunctionCall* _tmp37_;
	ValaCCodeFunctionCall* _tmp38_;
	ValaCCodeConstant* _tmp39_;
	ValaCCodeConstant* _tmp40_;
	ValaCCodeIdentifier* _tmp41_;
	ValaCCodeIdentifier* _tmp42_;
	ValaCCodeFunctionCall* _tmp43_;
	ValaCCodeFunctionCall* _tmp44_;
	gchar* _tmp45_;
	gchar* _tmp46_;
	gchar* _tmp47_;
	gchar* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaCCodeFunctionCall* _tmp51_;
	ValaCCodeFunctionCall* _tmp52_;
	ValaCCodeFunctionCall* _tmp53_;
	const gchar* _tmp54_;
	gchar* _tmp55_;
	gchar* _tmp56_;
	ValaCCodeConstant* _tmp57_;
	ValaCCodeConstant* _tmp58_;
	ValaCCodeFunctionCall* _tmp59_;
	ValaCCodeExpressionStatement* _tmp60_;
	ValaCCodeExpressionStatement* _tmp61_;
	ValaCCodeIdentifier* _tmp62_;
	ValaCCodeIdentifier* _tmp63_;
	ValaCCodeFunctionCall* _tmp64_;
	ValaCCodeFunctionCall* _tmp65_;
	ValaCCodeConstant* _tmp66_;
	ValaCCodeConstant* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeIdentifier* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	gchar* _tmp72_;
	gchar* _tmp73_;
	gchar* _tmp74_;
	gchar* _tmp75_;
	ValaCCodeIdentifier* _tmp76_;
	ValaCCodeIdentifier* _tmp77_;
	ValaCCodeFunctionCall* _tmp78_;
	ValaCCodeFunctionCall* _tmp79_;
	ValaCCodeFunctionCall* _tmp80_;
	ValaCCodeExpression* _tmp81_;
	ValaCCodeExpression* _tmp82_;
	ValaCCodeUnaryExpression* _tmp83_;
	ValaCCodeUnaryExpression* _tmp84_;
	ValaCCodeCastExpression* _tmp85_;
	ValaCCodeCastExpression* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeExpressionStatement* _tmp88_;
	ValaCCodeExpressionStatement* _tmp89_;
	self = (ValaGDBusClientModule*) base;
	g_return_if_fail (block != NULL);
	g_return_if_fail (sym != NULL);
	if (!G_TYPE_CHECK_INSTANCE_TYPE (sym, VALA_TYPE_INTERFACE)) {
		return;
	}
	_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_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-proxy-type\"");
	_tmp8_ = _tmp7_;
	vala_ccode_function_call_add_argument (_tmp6_, (ValaCCodeExpression*) _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
	_tmp10_ = _tmp9_;
	_tmp11_ = g_strconcat (_tmp10_, "proxy_get_type", NULL);
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_identifier_new (_tmp12_);
	_tmp14_ = _tmp13_;
	_g_free0 (_tmp12_);
	_g_free0 (_tmp10_);
	proxy_type = _tmp14_;
	_tmp15_ = vala_ccode_identifier_new ("g_type_set_qdata");
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
	_tmp18_ = _tmp17_;
	_vala_ccode_node_unref0 (_tmp16_);
	set_qdata = _tmp18_;
	_tmp19_ = set_qdata;
	_tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
	_tmp21_ = _tmp20_;
	_tmp22_ = g_strdup_printf ("%s_type_id", _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_identifier_new (_tmp23_);
	_tmp25_ = _tmp24_;
	vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp25_);
	_vala_ccode_node_unref0 (_tmp25_);
	_g_free0 (_tmp23_);
	_g_free0 (_tmp21_);
	_tmp26_ = set_qdata;
	_tmp27_ = quark;
	vala_ccode_function_call_add_argument (_tmp26_, (ValaCCodeExpression*) _tmp27_);
	_tmp28_ = set_qdata;
	_tmp29_ = proxy_type;
	_tmp30_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp29_, "void*");
	_tmp31_ = _tmp30_;
	vala_ccode_function_call_add_argument (_tmp28_, (ValaCCodeExpression*) _tmp31_);
	_vala_ccode_node_unref0 (_tmp31_);
	_tmp32_ = set_qdata;
	_tmp33_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp32_);
	_tmp34_ = _tmp33_;
	vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp34_);
	_vala_ccode_node_unref0 (_tmp34_);
	_tmp35_ = vala_ccode_identifier_new ("g_quark_from_static_string");
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp36_);
	_vala_ccode_node_unref0 (quark);
	quark = _tmp37_;
	_vala_ccode_node_unref0 (_tmp36_);
	_tmp38_ = quark;
	_tmp39_ = vala_ccode_constant_new ("\"vala-dbus-interface-name\"");
	_tmp40_ = _tmp39_;
	vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_);
	_vala_ccode_node_unref0 (_tmp40_);
	_tmp41_ = vala_ccode_identifier_new ("g_type_set_qdata");
	_tmp42_ = _tmp41_;
	_tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
	_vala_ccode_node_unref0 (set_qdata);
	set_qdata = _tmp43_;
	_vala_ccode_node_unref0 (_tmp42_);
	_tmp44_ = set_qdata;
	_tmp45_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
	_tmp46_ = _tmp45_;
	_tmp47_ = g_strdup_printf ("%s_type_id", _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_identifier_new (_tmp48_);
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp44_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_g_free0 (_tmp48_);
	_g_free0 (_tmp46_);
	_tmp51_ = set_qdata;
	_tmp52_ = quark;
	vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp52_);
	_tmp53_ = set_qdata;
	_tmp54_ = dbus_iface_name;
	_tmp55_ = g_strdup_printf ("\"%s\"", _tmp54_);
	_tmp56_ = _tmp55_;
	_tmp57_ = vala_ccode_constant_new (_tmp56_);
	_tmp58_ = _tmp57_;
	vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) _tmp58_);
	_vala_ccode_node_unref0 (_tmp58_);
	_g_free0 (_tmp56_);
	_tmp59_ = set_qdata;
	_tmp60_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp59_);
	_tmp61_ = _tmp60_;
	vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp61_);
	_vala_ccode_node_unref0 (_tmp61_);
	_tmp62_ = vala_ccode_identifier_new ("g_quark_from_static_string");
	_tmp63_ = _tmp62_;
	_tmp64_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp63_);
	_vala_ccode_node_unref0 (quark);
	quark = _tmp64_;
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp65_ = quark;
	_tmp66_ = vala_ccode_constant_new ("\"vala-dbus-interface-info\"");
	_tmp67_ = _tmp66_;
	vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_);
	_vala_ccode_node_unref0 (_tmp67_);
	_tmp68_ = vala_ccode_identifier_new ("g_type_set_qdata");
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_vala_ccode_node_unref0 (set_qdata);
	set_qdata = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_tmp71_ = set_qdata;
	_tmp72_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
	_tmp73_ = _tmp72_;
	_tmp74_ = g_strdup_printf ("%s_type_id", _tmp73_);
	_tmp75_ = _tmp74_;
	_tmp76_ = vala_ccode_identifier_new (_tmp75_);
	_tmp77_ = _tmp76_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp77_);
	_vala_ccode_node_unref0 (_tmp77_);
	_g_free0 (_tmp75_);
	_g_free0 (_tmp73_);
	_tmp78_ = set_qdata;
	_tmp79_ = quark;
	vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp79_);
	_tmp80_ = set_qdata;
	_tmp81_ = vala_gd_bus_module_get_interface_info ((ValaGDBusModule*) self, sym);
	_tmp82_ = _tmp81_;
	_tmp83_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp82_);
	_tmp84_ = _tmp83_;
	_tmp85_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp84_, "void*");
	_tmp86_ = _tmp85_;
	vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp86_);
	_vala_ccode_node_unref0 (_tmp86_);
	_vala_ccode_node_unref0 (_tmp84_);
	_vala_ccode_node_unref0 (_tmp82_);
	_tmp87_ = set_qdata;
	_tmp88_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp87_);
	_tmp89_ = _tmp88_;
	vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp89_);
	_vala_ccode_node_unref0 (_tmp89_);
	_vala_ccode_node_unref0 (set_qdata);
	_vala_ccode_node_unref0 (proxy_type);
	_vala_ccode_node_unref0 (quark);
	_g_free0 (dbus_iface_name);
}

ValaGDBusClientModule*
vala_gd_bus_client_module_construct (GType object_type)
{
	ValaGDBusClientModule* self = NULL;
	self = (ValaGDBusClientModule*) vala_gd_bus_module_construct (object_type);
	return self;
}

ValaGDBusClientModule*
vala_gd_bus_client_module_new (void)
{
	return vala_gd_bus_client_module_construct (VALA_TYPE_GD_BUS_CLIENT_MODULE);
}

static void
vala_gd_bus_client_module_class_init (ValaGDBusClientModuleClass * klass,
                                      gpointer klass_data)
{
	vala_gd_bus_client_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCCodeBaseModuleClass *) klass)->generate_dynamic_method_wrapper = (void (*) (ValaCCodeBaseModule*, ValaDynamicMethod*)) vala_gd_bus_client_module_real_generate_dynamic_method_wrapper;
	((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = (void (*) (ValaCCodeBaseModule*, ValaInterface*, ValaCCodeFile*)) vala_gd_bus_client_module_real_generate_interface_declaration;
	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor*, ValaInterface*)) vala_gd_bus_client_module_real_visit_interface;
	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gd_bus_client_module_real_visit_method_call;
	((ValaCCodeBaseModuleClass *) klass)->register_dbus_info = (void (*) (ValaCCodeBaseModule*, ValaCCodeBlock*, ValaObjectTypeSymbol*)) vala_gd_bus_client_module_real_register_dbus_info;
}

static void
vala_gd_bus_client_module_instance_init (ValaGDBusClientModule * self,
                                         gpointer klass)
{
}

static GType
vala_gd_bus_client_module_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ValaGDBusClientModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gd_bus_client_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGDBusClientModule), 0, (GInstanceInitFunc) vala_gd_bus_client_module_instance_init, NULL };
	GType vala_gd_bus_client_module_type_id;
	vala_gd_bus_client_module_type_id = g_type_register_static (VALA_TYPE_GD_BUS_MODULE, "ValaGDBusClientModule", &g_define_type_info, 0);
	return vala_gd_bus_client_module_type_id;
}

GType
vala_gd_bus_client_module_get_type (void)
{
	static volatile gsize vala_gd_bus_client_module_type_id__once = 0;
	if (g_once_init_enter (&vala_gd_bus_client_module_type_id__once)) {
		GType vala_gd_bus_client_module_type_id;
		vala_gd_bus_client_module_type_id = vala_gd_bus_client_module_get_type_once ();
		g_once_init_leave (&vala_gd_bus_client_module_type_id__once, vala_gd_bus_client_module_type_id);
	}
	return vala_gd_bus_client_module_type_id__once;
}

