1 /* valagdbusservermodule.c generated by valac, the Vala compiler
2  * generated from valagdbusservermodule.vala, do not modify */
3 
4 /* valagdbusservermodule.vala
5  *
6  * Copyright (C) 2010-2011  Jürg Billeter
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12 
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17 
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
21  *
22  * Author:
23  * 	Jürg Billeter <j@bitron.ch>
24  */
25 
26 #include "valacodegen.h"
27 #include <vala.h>
28 #include <valaccode.h>
29 #include <glib.h>
30 #include <stdlib.h>
31 #include <string.h>
32 #include <valagee.h>
33 #include <glib-object.h>
34 
35 #define _g_free0(var) (var = (g_free (var), NULL))
36 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
37 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
38 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
39 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
40 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
41 
42 static gpointer vala_gd_bus_server_module_parent_class = NULL;
43 
44 static gchar* vala_gd_bus_server_module_generate_dbus_wrapper (ValaGDBusServerModule* self,
45                                                         ValaMethod* m,
46                                                         ValaObjectTypeSymbol* sym,
47                                                         gboolean ready);
48 static gchar* vala_gd_bus_server_module_generate_dbus_signal_wrapper (ValaGDBusServerModule* self,
49                                                                ValaSignal* sig,
50                                                                ValaObjectTypeSymbol* sym,
51                                                                const gchar* dbus_iface_name);
52 static gchar* vala_gd_bus_server_module_generate_dbus_property_get_wrapper (ValaGDBusServerModule* self,
53                                                                      ValaProperty* prop,
54                                                                      ValaObjectTypeSymbol* sym);
55 static gchar* vala_gd_bus_server_module_generate_dbus_property_set_wrapper (ValaGDBusServerModule* self,
56                                                                      ValaProperty* prop,
57                                                                      ValaObjectTypeSymbol* sym);
58 static void vala_gd_bus_server_module_handle_signals (ValaGDBusServerModule* self,
59                                                ValaObjectTypeSymbol* sym,
60                                                gboolean connect);
61 static void vala_gd_bus_server_module_generate_interface_method_call_function (ValaGDBusServerModule* self,
62                                                                         ValaObjectTypeSymbol* sym);
63 static void vala_gd_bus_server_module_generate_interface_get_property_function (ValaGDBusServerModule* self,
64                                                                          ValaObjectTypeSymbol* sym);
65 static void vala_gd_bus_server_module_generate_interface_set_property_function (ValaGDBusServerModule* self,
66                                                                          ValaObjectTypeSymbol* sym);
67 static ValaCCodeExpression* vala_gd_bus_server_module_get_interface_vtable (ValaGDBusServerModule* self,
68                                                                      ValaObjectTypeSymbol* sym);
69 static gchar* vala_gd_bus_server_module_generate_register_object_function (ValaGDBusServerModule* self);
70 static void vala_gd_bus_server_module_real_visit_method_call (ValaCodeVisitor* base,
71                                                        ValaMethodCall* expr);
72 static void vala_gd_bus_server_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
73                                                                 ValaClass* cl,
74                                                                 ValaCCodeFile* decl_space);
75 static void vala_gd_bus_server_module_generate_object_type_symbol_declaration (ValaGDBusServerModule* self,
76                                                                         ValaObjectTypeSymbol* sym,
77                                                                         ValaCCodeFile* decl_space);
78 static void vala_gd_bus_server_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
79                                                                     ValaInterface* iface,
80                                                                     ValaCCodeFile* decl_space);
81 static void vala_gd_bus_server_module_real_visit_class (ValaCodeVisitor* base,
82                                                  ValaClass* cl);
83 static void vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerModule* self,
84                                                          ValaObjectTypeSymbol* sym);
85 static void vala_gd_bus_server_module_real_visit_interface (ValaCodeVisitor* base,
86                                                      ValaInterface* iface);
87 static void vala_gd_bus_server_module_real_register_dbus_info (ValaCCodeBaseModule* base,
88                                                         ValaCCodeBlock* block,
89                                                         ValaObjectTypeSymbol* sym);
90 static GType vala_gd_bus_server_module_get_type_once (void);
91 
92 static gpointer
_vala_ccode_node_ref0(gpointer self)93 _vala_ccode_node_ref0 (gpointer self)
94 {
95 	return self ? vala_ccode_node_ref (self) : NULL;
96 }
97 
98 static gpointer
_vala_iterable_ref0(gpointer self)99 _vala_iterable_ref0 (gpointer self)
100 {
101 	return self ? vala_iterable_ref (self) : NULL;
102 }
103 
104 static gpointer
_vala_code_node_ref0(gpointer self)105 _vala_code_node_ref0 (gpointer self)
106 {
107 	return self ? vala_code_node_ref (self) : NULL;
108 }
109 
110 static gchar*
vala_gd_bus_server_module_generate_dbus_wrapper(ValaGDBusServerModule * self,ValaMethod * m,ValaObjectTypeSymbol * sym,gboolean ready)111 vala_gd_bus_server_module_generate_dbus_wrapper (ValaGDBusServerModule* self,
112                                                  ValaMethod* m,
113                                                  ValaObjectTypeSymbol* sym,
114                                                  gboolean ready)
115 {
116 	gchar* wrapper_name = NULL;
117 	gchar* _tmp0_;
118 	gchar* _tmp1_;
119 	gchar* _tmp2_;
120 	gchar* _tmp3_;
121 	gboolean need_goto_label = FALSE;
122 	ValaMethod* _tmp4_;
123 	ValaMethod* _tmp5_;
124 	ValaCCodeFunction* function = NULL;
125 	const gchar* _tmp14_;
126 	ValaCCodeFunction* _tmp15_;
127 	ValaCCodeFunction* _tmp16_;
128 	ValaCCodeFunction* _tmp39_;
129 	ValaCCodeIdentifier* _tmp40_ = NULL;
130 	gboolean _tmp41_;
131 	gboolean _tmp42_;
132 	ValaCCodeIdentifier* ready_data_expr = NULL;
133 	ValaCCodeIdentifier* _tmp44_;
134 	gchar* ready_data_struct_name = NULL;
135 	gchar* _tmp45_;
136 	gchar* _tmp46_;
137 	gchar* _tmp47_;
138 	gchar* _tmp48_;
139 	gchar* _tmp49_;
140 	gchar* _tmp50_;
141 	ValaCCodeFunctionCall* connection = NULL;
142 	ValaCCodeIdentifier* _tmp67_;
143 	ValaCCodeIdentifier* _tmp68_;
144 	ValaCCodeFunctionCall* _tmp69_;
145 	ValaCCodeFunctionCall* _tmp70_;
146 	ValaCCodeFunctionCall* _tmp71_;
147 	ValaCCodeIdentifier* _tmp72_;
148 	ValaCCodeIdentifier* _tmp73_;
149 	gboolean no_reply = FALSE;
150 	gboolean uses_fd = FALSE;
151 	gboolean uses_error = FALSE;
152 	gboolean _tmp79_ = FALSE;
153 	gboolean _tmp80_;
154 	gboolean _tmp81_;
155 	ValaCCodeFunctionCall* ccall = NULL;
156 	gboolean _tmp462_ = FALSE;
157 	gboolean _tmp463_;
158 	gboolean _tmp464_;
159 	gboolean _tmp490_ = FALSE;
160 	gboolean _tmp491_;
161 	gboolean _tmp492_;
162 	gboolean _tmp503_ = FALSE;
163 	gboolean _tmp504_;
164 	gboolean _tmp505_;
165 	gboolean _tmp513_ = FALSE;
166 	gboolean _tmp811_ = FALSE;
167 	ValaCCodeFile* _tmp973_;
168 	ValaCCodeFunction* _tmp974_;
169 	ValaCCodeFile* _tmp975_;
170 	ValaCCodeFunction* _tmp976_;
171 	gboolean _tmp977_ = FALSE;
172 	gboolean _tmp978_;
173 	gboolean _tmp979_;
174 	gchar* result = NULL;
175 	g_return_val_if_fail (self != NULL, NULL);
176 	g_return_val_if_fail (m != NULL, NULL);
177 	g_return_val_if_fail (sym != NULL, NULL);
178 	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) m);
179 	_tmp1_ = _tmp0_;
180 	_tmp2_ = g_strdup_printf ("_dbus_%s", _tmp1_);
181 	_tmp3_ = _tmp2_;
182 	_g_free0 (_tmp1_);
183 	wrapper_name = _tmp3_;
184 	need_goto_label = ready;
185 	_tmp4_ = vala_method_get_base_method (m);
186 	_tmp5_ = _tmp4_;
187 	if (_tmp5_ != NULL) {
188 		ValaMethod* _tmp6_;
189 		ValaMethod* _tmp7_;
190 		_tmp6_ = vala_method_get_base_method (m);
191 		_tmp7_ = _tmp6_;
192 		m = _tmp7_;
193 	} else {
194 		ValaMethod* _tmp8_;
195 		ValaMethod* _tmp9_;
196 		_tmp8_ = vala_method_get_base_interface_method (m);
197 		_tmp9_ = _tmp8_;
198 		if (_tmp9_ != NULL) {
199 			ValaMethod* _tmp10_;
200 			ValaMethod* _tmp11_;
201 			_tmp10_ = vala_method_get_base_interface_method (m);
202 			_tmp11_ = _tmp10_;
203 			m = _tmp11_;
204 		}
205 	}
206 	if (ready) {
207 		const gchar* _tmp12_;
208 		gchar* _tmp13_;
209 		_tmp12_ = wrapper_name;
210 		_tmp13_ = g_strconcat (_tmp12_, "_ready", NULL);
211 		_g_free0 (wrapper_name);
212 		wrapper_name = _tmp13_;
213 	}
214 	_tmp14_ = wrapper_name;
215 	_tmp15_ = vala_ccode_function_new (_tmp14_, "void");
216 	function = _tmp15_;
217 	_tmp16_ = function;
218 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_STATIC);
219 	if (!ready) {
220 		ValaCCodeFunction* _tmp17_;
221 		gchar* _tmp18_;
222 		gchar* _tmp19_;
223 		gchar* _tmp20_;
224 		gchar* _tmp21_;
225 		ValaCCodeParameter* _tmp22_;
226 		ValaCCodeParameter* _tmp23_;
227 		ValaCCodeFunction* _tmp24_;
228 		ValaCCodeParameter* _tmp25_;
229 		ValaCCodeParameter* _tmp26_;
230 		ValaCCodeFunction* _tmp27_;
231 		ValaCCodeParameter* _tmp28_;
232 		ValaCCodeParameter* _tmp29_;
233 		_tmp17_ = function;
234 		_tmp18_ = vala_get_ccode_name ((ValaCodeNode*) sym);
235 		_tmp19_ = _tmp18_;
236 		_tmp20_ = g_strconcat (_tmp19_, "*", NULL);
237 		_tmp21_ = _tmp20_;
238 		_tmp22_ = vala_ccode_parameter_new ("self", _tmp21_);
239 		_tmp23_ = _tmp22_;
240 		vala_ccode_function_add_parameter (_tmp17_, _tmp23_);
241 		_vala_ccode_node_unref0 (_tmp23_);
242 		_g_free0 (_tmp21_);
243 		_g_free0 (_tmp19_);
244 		_tmp24_ = function;
245 		_tmp25_ = vala_ccode_parameter_new ("_parameters_", "GVariant*");
246 		_tmp26_ = _tmp25_;
247 		vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
248 		_vala_ccode_node_unref0 (_tmp26_);
249 		_tmp27_ = function;
250 		_tmp28_ = vala_ccode_parameter_new ("invocation", "GDBusMethodInvocation*");
251 		_tmp29_ = _tmp28_;
252 		vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
253 		_vala_ccode_node_unref0 (_tmp29_);
254 	} else {
255 		ValaCCodeFunction* _tmp30_;
256 		ValaCCodeParameter* _tmp31_;
257 		ValaCCodeParameter* _tmp32_;
258 		ValaCCodeFunction* _tmp33_;
259 		ValaCCodeParameter* _tmp34_;
260 		ValaCCodeParameter* _tmp35_;
261 		ValaCCodeFunction* _tmp36_;
262 		ValaCCodeParameter* _tmp37_;
263 		ValaCCodeParameter* _tmp38_;
264 		_tmp30_ = function;
265 		_tmp31_ = vala_ccode_parameter_new ("source_object", "GObject *");
266 		_tmp32_ = _tmp31_;
267 		vala_ccode_function_add_parameter (_tmp30_, _tmp32_);
268 		_vala_ccode_node_unref0 (_tmp32_);
269 		_tmp33_ = function;
270 		_tmp34_ = vala_ccode_parameter_new ("_res_", "GAsyncResult *");
271 		_tmp35_ = _tmp34_;
272 		vala_ccode_function_add_parameter (_tmp33_, _tmp35_);
273 		_vala_ccode_node_unref0 (_tmp35_);
274 		_tmp36_ = function;
275 		_tmp37_ = vala_ccode_parameter_new ("_user_data_", "gpointer");
276 		_tmp38_ = _tmp37_;
277 		vala_ccode_function_add_parameter (_tmp36_, _tmp38_);
278 		_vala_ccode_node_unref0 (_tmp38_);
279 	}
280 	_tmp39_ = function;
281 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp39_);
282 	_tmp41_ = vala_method_get_coroutine (m);
283 	_tmp42_ = _tmp41_;
284 	if (_tmp42_) {
285 		ValaCCodeIdentifier* _tmp43_;
286 		_tmp43_ = vala_ccode_identifier_new ("_ready_data");
287 		_vala_ccode_node_unref0 (_tmp40_);
288 		_tmp40_ = _tmp43_;
289 	} else {
290 		_vala_ccode_node_unref0 (_tmp40_);
291 		_tmp40_ = NULL;
292 	}
293 	_tmp44_ = _vala_ccode_node_ref0 (_tmp40_);
294 	ready_data_expr = _tmp44_;
295 	_tmp45_ = vala_get_ccode_name ((ValaCodeNode*) m);
296 	_tmp46_ = _tmp45_;
297 	_tmp47_ = vala_symbol_lower_case_to_camel_case (_tmp46_);
298 	_tmp48_ = _tmp47_;
299 	_tmp49_ = g_strconcat (_tmp48_, "ReadyData", NULL);
300 	_tmp50_ = _tmp49_;
301 	_g_free0 (_tmp48_);
302 	_g_free0 (_tmp46_);
303 	ready_data_struct_name = _tmp50_;
304 	if (ready) {
305 		ValaCCodeFunction* _tmp51_;
306 		ValaCCodeFunction* _tmp52_;
307 		const gchar* _tmp53_;
308 		gchar* _tmp54_;
309 		gchar* _tmp55_;
310 		ValaCCodeIdentifier* _tmp56_;
311 		ValaCCodeIdentifier* _tmp57_;
312 		ValaCCodeVariableDeclarator* _tmp58_;
313 		ValaCCodeVariableDeclarator* _tmp59_;
314 		ValaCCodeFunction* _tmp60_;
315 		ValaCCodeFunction* _tmp61_;
316 		ValaCCodeIdentifier* _tmp62_;
317 		ValaCCodeMemberAccess* _tmp63_;
318 		ValaCCodeMemberAccess* _tmp64_;
319 		ValaCCodeVariableDeclarator* _tmp65_;
320 		ValaCCodeVariableDeclarator* _tmp66_;
321 		_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
322 		_tmp52_ = _tmp51_;
323 		_tmp53_ = ready_data_struct_name;
324 		_tmp54_ = g_strconcat (_tmp53_, "*", NULL);
325 		_tmp55_ = _tmp54_;
326 		_tmp56_ = vala_ccode_identifier_new ("_user_data_");
327 		_tmp57_ = _tmp56_;
328 		_tmp58_ = vala_ccode_variable_declarator_new ("_ready_data", (ValaCCodeExpression*) _tmp57_, NULL);
329 		_tmp59_ = _tmp58_;
330 		vala_ccode_function_add_declaration (_tmp52_, _tmp55_, (ValaCCodeDeclarator*) _tmp59_, 0);
331 		_vala_ccode_node_unref0 (_tmp59_);
332 		_vala_ccode_node_unref0 (_tmp57_);
333 		_g_free0 (_tmp55_);
334 		_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
335 		_tmp61_ = _tmp60_;
336 		_tmp62_ = ready_data_expr;
337 		_tmp63_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp62_, "_invocation_");
338 		_tmp64_ = _tmp63_;
339 		_tmp65_ = vala_ccode_variable_declarator_new ("invocation", (ValaCCodeExpression*) _tmp64_, NULL);
340 		_tmp66_ = _tmp65_;
341 		vala_ccode_function_add_declaration (_tmp61_, "GDBusMethodInvocation*", (ValaCCodeDeclarator*) _tmp66_, 0);
342 		_vala_ccode_node_unref0 (_tmp66_);
343 		_vala_ccode_node_unref0 (_tmp64_);
344 	}
345 	_tmp67_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_connection");
346 	_tmp68_ = _tmp67_;
347 	_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
348 	_tmp70_ = _tmp69_;
349 	_vala_ccode_node_unref0 (_tmp68_);
350 	connection = _tmp70_;
351 	_tmp71_ = connection;
352 	_tmp72_ = vala_ccode_identifier_new ("invocation");
353 	_tmp73_ = _tmp72_;
354 	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
355 	_vala_ccode_node_unref0 (_tmp73_);
356 	no_reply = vala_gd_bus_module_is_dbus_no_reply (m);
357 	uses_fd = vala_gd_bus_module_dbus_method_uses_file_descriptor ((ValaGDBusModule*) self, m);
358 	if (uses_fd) {
359 		ValaCCodeFile* _tmp74_;
360 		ValaCCodeFunction* _tmp75_;
361 		ValaCCodeFunction* _tmp76_;
362 		ValaCCodeVariableDeclarator* _tmp77_;
363 		ValaCCodeVariableDeclarator* _tmp78_;
364 		_tmp74_ = ((ValaCCodeBaseModule*) self)->cfile;
365 		vala_ccode_file_add_include (_tmp74_, "gio/gunixfdlist.h", FALSE);
366 		_tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
367 		_tmp76_ = _tmp75_;
368 		_tmp77_ = vala_ccode_variable_declarator_new ("_fd_list", NULL, NULL);
369 		_tmp78_ = _tmp77_;
370 		vala_ccode_function_add_declaration (_tmp76_, "GUnixFDList*", (ValaCCodeDeclarator*) _tmp78_, 0);
371 		_vala_ccode_node_unref0 (_tmp78_);
372 	}
373 	uses_error = FALSE;
374 	_tmp80_ = vala_method_get_coroutine (m);
375 	_tmp81_ = _tmp80_;
376 	if (!_tmp81_) {
377 		_tmp79_ = TRUE;
378 	} else {
379 		_tmp79_ = ready;
380 	}
381 	if (_tmp79_) {
382 		ValaCCodeFunction* _tmp82_;
383 		ValaCCodeFunction* _tmp83_;
384 		ValaCCodeConstant* _tmp84_;
385 		ValaCCodeConstant* _tmp85_;
386 		ValaCCodeVariableDeclarator* _tmp86_;
387 		ValaCCodeVariableDeclarator* _tmp87_;
388 		_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
389 		_tmp83_ = _tmp82_;
390 		_tmp84_ = vala_ccode_constant_new ("NULL");
391 		_tmp85_ = _tmp84_;
392 		_tmp86_ = vala_ccode_variable_declarator_new_zero ("error", (ValaCCodeExpression*) _tmp85_, NULL);
393 		_tmp87_ = _tmp86_;
394 		vala_ccode_function_add_declaration (_tmp83_, "GError*", (ValaCCodeDeclarator*) _tmp87_, 0);
395 		_vala_ccode_node_unref0 (_tmp87_);
396 		_vala_ccode_node_unref0 (_tmp85_);
397 		uses_error = TRUE;
398 	}
399 	if (!ready) {
400 		ValaCCodeFunction* _tmp88_;
401 		ValaCCodeFunction* _tmp89_;
402 		ValaCCodeVariableDeclarator* _tmp90_;
403 		ValaCCodeVariableDeclarator* _tmp91_;
404 		ValaCCodeFunctionCall* iter_init = NULL;
405 		ValaCCodeIdentifier* _tmp92_;
406 		ValaCCodeIdentifier* _tmp93_;
407 		ValaCCodeFunctionCall* _tmp94_;
408 		ValaCCodeFunctionCall* _tmp95_;
409 		ValaCCodeFunctionCall* _tmp96_;
410 		ValaCCodeIdentifier* _tmp97_;
411 		ValaCCodeIdentifier* _tmp98_;
412 		ValaCCodeUnaryExpression* _tmp99_;
413 		ValaCCodeUnaryExpression* _tmp100_;
414 		ValaCCodeFunctionCall* _tmp101_;
415 		ValaCCodeIdentifier* _tmp102_;
416 		ValaCCodeIdentifier* _tmp103_;
417 		ValaCCodeFunction* _tmp104_;
418 		ValaCCodeFunction* _tmp105_;
419 		ValaCCodeFunctionCall* _tmp106_;
420 		_tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
421 		_tmp89_ = _tmp88_;
422 		_tmp90_ = vala_ccode_variable_declarator_new ("_arguments_iter", NULL, NULL);
423 		_tmp91_ = _tmp90_;
424 		vala_ccode_function_add_declaration (_tmp89_, "GVariantIter", (ValaCCodeDeclarator*) _tmp91_, 0);
425 		_vala_ccode_node_unref0 (_tmp91_);
426 		_tmp92_ = vala_ccode_identifier_new ("g_variant_iter_init");
427 		_tmp93_ = _tmp92_;
428 		_tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
429 		_tmp95_ = _tmp94_;
430 		_vala_ccode_node_unref0 (_tmp93_);
431 		iter_init = _tmp95_;
432 		_tmp96_ = iter_init;
433 		_tmp97_ = vala_ccode_identifier_new ("_arguments_iter");
434 		_tmp98_ = _tmp97_;
435 		_tmp99_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp98_);
436 		_tmp100_ = _tmp99_;
437 		vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp100_);
438 		_vala_ccode_node_unref0 (_tmp100_);
439 		_vala_ccode_node_unref0 (_tmp98_);
440 		_tmp101_ = iter_init;
441 		_tmp102_ = vala_ccode_identifier_new ("_parameters_");
442 		_tmp103_ = _tmp102_;
443 		vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_);
444 		_vala_ccode_node_unref0 (_tmp103_);
445 		_tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
446 		_tmp105_ = _tmp104_;
447 		_tmp106_ = iter_init;
448 		vala_ccode_function_add_expression (_tmp105_, (ValaCCodeExpression*) _tmp106_);
449 		_vala_ccode_node_unref0 (iter_init);
450 	}
451 	if (!ready) {
452 		gchar* _tmp107_;
453 		gchar* _tmp108_;
454 		ValaCCodeIdentifier* _tmp109_;
455 		ValaCCodeIdentifier* _tmp110_;
456 		ValaCCodeFunctionCall* _tmp111_;
457 		ValaCCodeFunctionCall* _tmp112_;
458 		ValaCCodeIdentifier* _tmp113_;
459 		ValaCCodeIdentifier* _tmp114_;
460 		_tmp107_ = vala_get_ccode_name ((ValaCodeNode*) m);
461 		_tmp108_ = _tmp107_;
462 		_tmp109_ = vala_ccode_identifier_new (_tmp108_);
463 		_tmp110_ = _tmp109_;
464 		_tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_);
465 		_vala_ccode_node_unref0 (ccall);
466 		ccall = _tmp111_;
467 		_vala_ccode_node_unref0 (_tmp110_);
468 		_g_free0 (_tmp108_);
469 		_tmp112_ = ccall;
470 		_tmp113_ = vala_ccode_identifier_new ("self");
471 		_tmp114_ = _tmp113_;
472 		vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_);
473 		_vala_ccode_node_unref0 (_tmp114_);
474 	} else {
475 		gchar* _tmp115_;
476 		gchar* _tmp116_;
477 		ValaCCodeIdentifier* _tmp117_;
478 		ValaCCodeIdentifier* _tmp118_;
479 		ValaCCodeFunctionCall* _tmp119_;
480 		ValaCCodeFunctionCall* _tmp120_;
481 		ValaCCodeIdentifier* _tmp121_;
482 		ValaCCodeIdentifier* _tmp122_;
483 		gchar* _tmp123_;
484 		gchar* _tmp124_;
485 		gchar* _tmp125_;
486 		gchar* _tmp126_;
487 		ValaCCodeCastExpression* _tmp127_;
488 		ValaCCodeCastExpression* _tmp128_;
489 		ValaCCodeFunctionCall* _tmp129_;
490 		ValaCCodeIdentifier* _tmp130_;
491 		ValaCCodeIdentifier* _tmp131_;
492 		_tmp115_ = vala_get_ccode_finish_name (m);
493 		_tmp116_ = _tmp115_;
494 		_tmp117_ = vala_ccode_identifier_new (_tmp116_);
495 		_tmp118_ = _tmp117_;
496 		_tmp119_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp118_);
497 		_vala_ccode_node_unref0 (ccall);
498 		ccall = _tmp119_;
499 		_vala_ccode_node_unref0 (_tmp118_);
500 		_g_free0 (_tmp116_);
501 		_tmp120_ = ccall;
502 		_tmp121_ = vala_ccode_identifier_new ("source_object");
503 		_tmp122_ = _tmp121_;
504 		_tmp123_ = vala_get_ccode_name ((ValaCodeNode*) sym);
505 		_tmp124_ = _tmp123_;
506 		_tmp125_ = g_strconcat (_tmp124_, "*", NULL);
507 		_tmp126_ = _tmp125_;
508 		_tmp127_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp122_, _tmp126_);
509 		_tmp128_ = _tmp127_;
510 		vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp128_);
511 		_vala_ccode_node_unref0 (_tmp128_);
512 		_g_free0 (_tmp126_);
513 		_g_free0 (_tmp124_);
514 		_vala_ccode_node_unref0 (_tmp122_);
515 		_tmp129_ = ccall;
516 		_tmp130_ = vala_ccode_identifier_new ("_res_");
517 		_tmp131_ = _tmp130_;
518 		vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp131_);
519 		_vala_ccode_node_unref0 (_tmp131_);
520 	}
521 	if (!ready) {
522 		ValaCCodeStruct* ready_data_struct = NULL;
523 		gboolean _tmp142_;
524 		gboolean _tmp143_;
525 		if (uses_fd) {
526 			ValaCCodeFunction* _tmp132_;
527 			ValaCCodeFunction* _tmp133_;
528 			ValaCCodeConstant* _tmp134_;
529 			ValaCCodeConstant* _tmp135_;
530 			ValaCCodeVariableDeclarator* _tmp136_;
531 			ValaCCodeVariableDeclarator* _tmp137_;
532 			ValaCCodeFunction* _tmp138_;
533 			ValaCCodeFunction* _tmp139_;
534 			ValaCCodeVariableDeclarator* _tmp140_;
535 			ValaCCodeVariableDeclarator* _tmp141_;
536 			_tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
537 			_tmp133_ = _tmp132_;
538 			_tmp134_ = vala_ccode_constant_new ("0");
539 			_tmp135_ = _tmp134_;
540 			_tmp136_ = vala_ccode_variable_declarator_new_zero ("_fd_index", (ValaCCodeExpression*) _tmp135_, NULL);
541 			_tmp137_ = _tmp136_;
542 			vala_ccode_function_add_declaration (_tmp133_, "gint", (ValaCCodeDeclarator*) _tmp137_, 0);
543 			_vala_ccode_node_unref0 (_tmp137_);
544 			_vala_ccode_node_unref0 (_tmp135_);
545 			_tmp138_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
546 			_tmp139_ = _tmp138_;
547 			_tmp140_ = vala_ccode_variable_declarator_new ("_fd", NULL, NULL);
548 			_tmp141_ = _tmp140_;
549 			vala_ccode_function_add_declaration (_tmp139_, "gint", (ValaCCodeDeclarator*) _tmp141_, 0);
550 			_vala_ccode_node_unref0 (_tmp141_);
551 		}
552 		ready_data_struct = NULL;
553 		_tmp142_ = vala_method_get_coroutine (m);
554 		_tmp143_ = _tmp142_;
555 		if (_tmp143_) {
556 			const gchar* _tmp144_;
557 			gchar* _tmp145_;
558 			gchar* _tmp146_;
559 			ValaCCodeStruct* _tmp147_;
560 			ValaCCodeStruct* _tmp148_;
561 			ValaCCodeStruct* _tmp149_;
562 			ValaCCodeFunctionCall* ready_data_alloc = NULL;
563 			ValaCCodeIdentifier* _tmp150_;
564 			ValaCCodeIdentifier* _tmp151_;
565 			ValaCCodeFunctionCall* _tmp152_;
566 			ValaCCodeFunctionCall* _tmp153_;
567 			ValaCCodeFunctionCall* _tmp154_;
568 			const gchar* _tmp155_;
569 			ValaCCodeIdentifier* _tmp156_;
570 			ValaCCodeIdentifier* _tmp157_;
571 			ValaCCodeFunction* _tmp158_;
572 			ValaCCodeFunction* _tmp159_;
573 			const gchar* _tmp160_;
574 			gchar* _tmp161_;
575 			gchar* _tmp162_;
576 			ValaCCodeVariableDeclarator* _tmp163_;
577 			ValaCCodeVariableDeclarator* _tmp164_;
578 			ValaCCodeFunction* _tmp165_;
579 			ValaCCodeFunction* _tmp166_;
580 			ValaCCodeIdentifier* _tmp167_;
581 			ValaCCodeFunctionCall* _tmp168_;
582 			ValaCCodeFunction* _tmp169_;
583 			ValaCCodeFunction* _tmp170_;
584 			ValaCCodeIdentifier* _tmp171_;
585 			ValaCCodeMemberAccess* _tmp172_;
586 			ValaCCodeMemberAccess* _tmp173_;
587 			ValaCCodeIdentifier* _tmp174_;
588 			ValaCCodeIdentifier* _tmp175_;
589 			_tmp144_ = ready_data_struct_name;
590 			_tmp145_ = g_strconcat ("_", _tmp144_, NULL);
591 			_tmp146_ = _tmp145_;
592 			_tmp147_ = vala_ccode_struct_new (_tmp146_);
593 			_vala_ccode_node_unref0 (ready_data_struct);
594 			ready_data_struct = _tmp147_;
595 			_g_free0 (_tmp146_);
596 			_tmp148_ = ready_data_struct;
597 			vala_ccode_struct_add_field (_tmp148_, "GDBusMethodInvocation*", "_invocation_", 0, NULL);
598 			_tmp149_ = ready_data_struct;
599 			vala_gasync_module_append_struct ((ValaGAsyncModule*) self, _tmp149_);
600 			_tmp150_ = vala_ccode_identifier_new ("g_slice_new0");
601 			_tmp151_ = _tmp150_;
602 			_tmp152_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp151_);
603 			_tmp153_ = _tmp152_;
604 			_vala_ccode_node_unref0 (_tmp151_);
605 			ready_data_alloc = _tmp153_;
606 			_tmp154_ = ready_data_alloc;
607 			_tmp155_ = ready_data_struct_name;
608 			_tmp156_ = vala_ccode_identifier_new (_tmp155_);
609 			_tmp157_ = _tmp156_;
610 			vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp157_);
611 			_vala_ccode_node_unref0 (_tmp157_);
612 			_tmp158_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
613 			_tmp159_ = _tmp158_;
614 			_tmp160_ = ready_data_struct_name;
615 			_tmp161_ = g_strconcat (_tmp160_, "*", NULL);
616 			_tmp162_ = _tmp161_;
617 			_tmp163_ = vala_ccode_variable_declarator_new ("_ready_data", NULL, NULL);
618 			_tmp164_ = _tmp163_;
619 			vala_ccode_function_add_declaration (_tmp159_, _tmp162_, (ValaCCodeDeclarator*) _tmp164_, 0);
620 			_vala_ccode_node_unref0 (_tmp164_);
621 			_g_free0 (_tmp162_);
622 			_tmp165_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
623 			_tmp166_ = _tmp165_;
624 			_tmp167_ = ready_data_expr;
625 			_tmp168_ = ready_data_alloc;
626 			vala_ccode_function_add_assignment (_tmp166_, (ValaCCodeExpression*) _tmp167_, (ValaCCodeExpression*) _tmp168_);
627 			_tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
628 			_tmp170_ = _tmp169_;
629 			_tmp171_ = ready_data_expr;
630 			_tmp172_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp171_, "_invocation_");
631 			_tmp173_ = _tmp172_;
632 			_tmp174_ = vala_ccode_identifier_new ("invocation");
633 			_tmp175_ = _tmp174_;
634 			vala_ccode_function_add_assignment (_tmp170_, (ValaCCodeExpression*) _tmp173_, (ValaCCodeExpression*) _tmp175_);
635 			_vala_ccode_node_unref0 (_tmp175_);
636 			_vala_ccode_node_unref0 (_tmp173_);
637 			_vala_ccode_node_unref0 (ready_data_alloc);
638 		}
639 		{
640 			ValaList* _param_list = NULL;
641 			ValaList* _tmp176_;
642 			ValaList* _tmp177_;
643 			gint _param_size = 0;
644 			ValaList* _tmp178_;
645 			gint _tmp179_;
646 			gint _tmp180_;
647 			gint _param_index = 0;
648 			_tmp176_ = vala_callable_get_parameters ((ValaCallable*) m);
649 			_tmp177_ = _vala_iterable_ref0 (_tmp176_);
650 			_param_list = _tmp177_;
651 			_tmp178_ = _param_list;
652 			_tmp179_ = vala_collection_get_size ((ValaCollection*) _tmp178_);
653 			_tmp180_ = _tmp179_;
654 			_param_size = _tmp180_;
655 			_param_index = -1;
656 			while (TRUE) {
657 				gint _tmp181_;
658 				gint _tmp182_;
659 				ValaParameter* param = NULL;
660 				ValaList* _tmp183_;
661 				gpointer _tmp184_;
662 				gchar* param_name = NULL;
663 				ValaParameter* _tmp185_;
664 				const gchar* _tmp186_;
665 				const gchar* _tmp187_;
666 				gchar* _tmp188_;
667 				ValaParameter* _tmp189_;
668 				ValaParameterDirection _tmp190_;
669 				ValaParameterDirection _tmp191_;
670 				gboolean _tmp192_ = FALSE;
671 				ValaParameter* _tmp193_;
672 				ValaDataType* _tmp194_;
673 				ValaDataType* _tmp195_;
674 				gboolean _tmp203_ = FALSE;
675 				ValaParameter* _tmp204_;
676 				ValaDataType* _tmp205_;
677 				ValaDataType* _tmp206_;
678 				ValaCCodeExpression* param_expr = NULL;
679 				ValaCCodeIdentifier* _tmp214_;
680 				ValaDataType* owned_type = NULL;
681 				ValaParameter* _tmp220_;
682 				ValaDataType* _tmp221_;
683 				ValaDataType* _tmp222_;
684 				ValaDataType* _tmp223_;
685 				ValaDataType* _tmp224_;
686 				ValaCCodeStruct* _tmp225_;
687 				ValaArrayType* array_type = NULL;
688 				ValaParameter* _tmp244_;
689 				ValaDataType* _tmp245_;
690 				ValaDataType* _tmp246_;
691 				ValaArrayType* _tmp247_;
692 				ValaArrayType* _tmp248_;
693 				ValaCCodeFunctionCall* message_expr = NULL;
694 				ValaCCodeIdentifier* _tmp270_;
695 				ValaCCodeIdentifier* _tmp271_;
696 				ValaCCodeFunctionCall* _tmp272_;
697 				ValaCCodeFunctionCall* _tmp273_;
698 				ValaCCodeFunctionCall* _tmp274_;
699 				ValaCCodeIdentifier* _tmp275_;
700 				ValaCCodeIdentifier* _tmp276_;
701 				gboolean may_fail = FALSE;
702 				ValaParameter* _tmp277_;
703 				ValaDataType* _tmp278_;
704 				ValaDataType* _tmp279_;
705 				ValaCCodeFunctionCall* _tmp280_;
706 				ValaCCodeIdentifier* _tmp281_;
707 				ValaCCodeIdentifier* _tmp282_;
708 				ValaCCodeExpression* _tmp283_;
709 				ValaParameter* _tmp284_;
710 				ValaCCodeIdentifier* _tmp285_;
711 				ValaCCodeIdentifier* _tmp286_;
712 				ValaCCodeUnaryExpression* _tmp287_;
713 				ValaCCodeUnaryExpression* _tmp288_;
714 				gboolean _tmp289_ = FALSE;
715 				_param_index = _param_index + 1;
716 				_tmp181_ = _param_index;
717 				_tmp182_ = _param_size;
718 				if (!(_tmp181_ < _tmp182_)) {
719 					break;
720 				}
721 				_tmp183_ = _param_list;
722 				_tmp184_ = vala_list_get (_tmp183_, _param_index);
723 				param = (ValaParameter*) _tmp184_;
724 				_tmp185_ = param;
725 				_tmp186_ = vala_symbol_get_name ((ValaSymbol*) _tmp185_);
726 				_tmp187_ = _tmp186_;
727 				_tmp188_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp187_);
728 				param_name = _tmp188_;
729 				_tmp189_ = param;
730 				_tmp190_ = vala_parameter_get_direction (_tmp189_);
731 				_tmp191_ = _tmp190_;
732 				if (_tmp191_ != VALA_PARAMETER_DIRECTION_IN) {
733 					_g_free0 (param_name);
734 					_vala_code_node_unref0 (param);
735 					continue;
736 				}
737 				_tmp193_ = param;
738 				_tmp194_ = vala_variable_get_variable_type ((ValaVariable*) _tmp193_);
739 				_tmp195_ = _tmp194_;
740 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp195_, VALA_TYPE_OBJECT_TYPE)) {
741 					ValaParameter* _tmp196_;
742 					ValaDataType* _tmp197_;
743 					ValaDataType* _tmp198_;
744 					ValaTypeSymbol* _tmp199_;
745 					ValaTypeSymbol* _tmp200_;
746 					gchar* _tmp201_;
747 					gchar* _tmp202_;
748 					_tmp196_ = param;
749 					_tmp197_ = vala_variable_get_variable_type ((ValaVariable*) _tmp196_);
750 					_tmp198_ = _tmp197_;
751 					_tmp199_ = vala_data_type_get_type_symbol (_tmp198_);
752 					_tmp200_ = _tmp199_;
753 					_tmp201_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp200_);
754 					_tmp202_ = _tmp201_;
755 					_tmp192_ = g_strcmp0 (_tmp202_, "GLib.Cancellable") == 0;
756 					_g_free0 (_tmp202_);
757 				} else {
758 					_tmp192_ = FALSE;
759 				}
760 				if (_tmp192_) {
761 					_g_free0 (param_name);
762 					_vala_code_node_unref0 (param);
763 					continue;
764 				}
765 				_tmp204_ = param;
766 				_tmp205_ = vala_variable_get_variable_type ((ValaVariable*) _tmp204_);
767 				_tmp206_ = _tmp205_;
768 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp206_, VALA_TYPE_OBJECT_TYPE)) {
769 					ValaParameter* _tmp207_;
770 					ValaDataType* _tmp208_;
771 					ValaDataType* _tmp209_;
772 					ValaTypeSymbol* _tmp210_;
773 					ValaTypeSymbol* _tmp211_;
774 					gchar* _tmp212_;
775 					gchar* _tmp213_;
776 					_tmp207_ = param;
777 					_tmp208_ = vala_variable_get_variable_type ((ValaVariable*) _tmp207_);
778 					_tmp209_ = _tmp208_;
779 					_tmp210_ = vala_data_type_get_type_symbol (_tmp209_);
780 					_tmp211_ = _tmp210_;
781 					_tmp212_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp211_);
782 					_tmp213_ = _tmp212_;
783 					_tmp203_ = g_strcmp0 (_tmp213_, "GLib.BusName") == 0;
784 					_g_free0 (_tmp213_);
785 				} else {
786 					_tmp203_ = FALSE;
787 				}
788 				if (_tmp203_) {
789 					_g_free0 (param_name);
790 					_vala_code_node_unref0 (param);
791 					continue;
792 				}
793 				_tmp214_ = ready_data_expr;
794 				if (_tmp214_ != NULL) {
795 					ValaCCodeIdentifier* _tmp215_;
796 					const gchar* _tmp216_;
797 					ValaCCodeMemberAccess* _tmp217_;
798 					_tmp215_ = ready_data_expr;
799 					_tmp216_ = param_name;
800 					_tmp217_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp215_, _tmp216_);
801 					_vala_ccode_node_unref0 (param_expr);
802 					param_expr = (ValaCCodeExpression*) _tmp217_;
803 				} else {
804 					const gchar* _tmp218_;
805 					ValaCCodeIdentifier* _tmp219_;
806 					_tmp218_ = param_name;
807 					_tmp219_ = vala_ccode_identifier_new (_tmp218_);
808 					_vala_ccode_node_unref0 (param_expr);
809 					param_expr = (ValaCCodeExpression*) _tmp219_;
810 				}
811 				_tmp220_ = param;
812 				_tmp221_ = vala_variable_get_variable_type ((ValaVariable*) _tmp220_);
813 				_tmp222_ = _tmp221_;
814 				_tmp223_ = vala_data_type_copy (_tmp222_);
815 				owned_type = _tmp223_;
816 				_tmp224_ = owned_type;
817 				vala_data_type_set_value_owned (_tmp224_, TRUE);
818 				_tmp225_ = ready_data_struct;
819 				if (_tmp225_ != NULL) {
820 					ValaCCodeStruct* _tmp226_;
821 					ValaDataType* _tmp227_;
822 					gchar* _tmp228_;
823 					gchar* _tmp229_;
824 					const gchar* _tmp230_;
825 					_tmp226_ = ready_data_struct;
826 					_tmp227_ = owned_type;
827 					_tmp228_ = vala_get_ccode_name ((ValaCodeNode*) _tmp227_);
828 					_tmp229_ = _tmp228_;
829 					_tmp230_ = param_name;
830 					vala_ccode_struct_add_field (_tmp226_, _tmp229_, _tmp230_, 0, NULL);
831 					_g_free0 (_tmp229_);
832 				} else {
833 					ValaCCodeFunction* _tmp231_;
834 					ValaCCodeFunction* _tmp232_;
835 					ValaDataType* _tmp233_;
836 					gchar* _tmp234_;
837 					gchar* _tmp235_;
838 					const gchar* _tmp236_;
839 					ValaParameter* _tmp237_;
840 					ValaDataType* _tmp238_;
841 					ValaDataType* _tmp239_;
842 					ValaCCodeExpression* _tmp240_;
843 					ValaCCodeExpression* _tmp241_;
844 					ValaCCodeVariableDeclarator* _tmp242_;
845 					ValaCCodeVariableDeclarator* _tmp243_;
846 					_tmp231_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
847 					_tmp232_ = _tmp231_;
848 					_tmp233_ = owned_type;
849 					_tmp234_ = vala_get_ccode_name ((ValaCodeNode*) _tmp233_);
850 					_tmp235_ = _tmp234_;
851 					_tmp236_ = param_name;
852 					_tmp237_ = param;
853 					_tmp238_ = vala_variable_get_variable_type ((ValaVariable*) _tmp237_);
854 					_tmp239_ = _tmp238_;
855 					_tmp240_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp239_, TRUE, FALSE);
856 					_tmp241_ = _tmp240_;
857 					_tmp242_ = vala_ccode_variable_declarator_new_zero (_tmp236_, _tmp241_, NULL);
858 					_tmp243_ = _tmp242_;
859 					vala_ccode_function_add_declaration (_tmp232_, _tmp235_, (ValaCCodeDeclarator*) _tmp243_, 0);
860 					_vala_ccode_node_unref0 (_tmp243_);
861 					_vala_ccode_node_unref0 (_tmp241_);
862 					_g_free0 (_tmp235_);
863 				}
864 				_tmp244_ = param;
865 				_tmp245_ = vala_variable_get_variable_type ((ValaVariable*) _tmp244_);
866 				_tmp246_ = _tmp245_;
867 				_tmp247_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp246_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp246_) : NULL);
868 				array_type = _tmp247_;
869 				_tmp248_ = array_type;
870 				if (_tmp248_ != NULL) {
871 					gchar* length_ctype = NULL;
872 					ValaArrayType* _tmp249_;
873 					gchar* _tmp250_;
874 					_tmp249_ = array_type;
875 					_tmp250_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp249_);
876 					length_ctype = _tmp250_;
877 					{
878 						gint dim = 0;
879 						dim = 1;
880 						{
881 							gboolean _tmp251_ = FALSE;
882 							_tmp251_ = TRUE;
883 							while (TRUE) {
884 								ValaArrayType* _tmp253_;
885 								gint _tmp254_;
886 								gint _tmp255_;
887 								gchar* length_cname = NULL;
888 								ValaParameter* _tmp256_;
889 								gchar* _tmp257_;
890 								ValaCCodeStruct* _tmp258_;
891 								if (!_tmp251_) {
892 									gint _tmp252_;
893 									_tmp252_ = dim;
894 									dim = _tmp252_ + 1;
895 								}
896 								_tmp251_ = FALSE;
897 								_tmp253_ = array_type;
898 								_tmp254_ = vala_array_type_get_rank (_tmp253_);
899 								_tmp255_ = _tmp254_;
900 								if (!(dim <= _tmp255_)) {
901 									break;
902 								}
903 								_tmp256_ = param;
904 								_tmp257_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp256_, dim);
905 								length_cname = _tmp257_;
906 								_tmp258_ = ready_data_struct;
907 								if (_tmp258_ != NULL) {
908 									ValaCCodeStruct* _tmp259_;
909 									const gchar* _tmp260_;
910 									const gchar* _tmp261_;
911 									_tmp259_ = ready_data_struct;
912 									_tmp260_ = length_ctype;
913 									_tmp261_ = length_cname;
914 									vala_ccode_struct_add_field (_tmp259_, _tmp260_, _tmp261_, 0, NULL);
915 								} else {
916 									ValaCCodeFunction* _tmp262_;
917 									ValaCCodeFunction* _tmp263_;
918 									const gchar* _tmp264_;
919 									const gchar* _tmp265_;
920 									ValaCCodeConstant* _tmp266_;
921 									ValaCCodeConstant* _tmp267_;
922 									ValaCCodeVariableDeclarator* _tmp268_;
923 									ValaCCodeVariableDeclarator* _tmp269_;
924 									_tmp262_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
925 									_tmp263_ = _tmp262_;
926 									_tmp264_ = length_ctype;
927 									_tmp265_ = length_cname;
928 									_tmp266_ = vala_ccode_constant_new ("0");
929 									_tmp267_ = _tmp266_;
930 									_tmp268_ = vala_ccode_variable_declarator_new_zero (_tmp265_, (ValaCCodeExpression*) _tmp267_, NULL);
931 									_tmp269_ = _tmp268_;
932 									vala_ccode_function_add_declaration (_tmp263_, _tmp264_, (ValaCCodeDeclarator*) _tmp269_, 0);
933 									_vala_ccode_node_unref0 (_tmp269_);
934 									_vala_ccode_node_unref0 (_tmp267_);
935 								}
936 								_g_free0 (length_cname);
937 							}
938 						}
939 					}
940 					_g_free0 (length_ctype);
941 				}
942 				_tmp270_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_message");
943 				_tmp271_ = _tmp270_;
944 				_tmp272_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp271_);
945 				_tmp273_ = _tmp272_;
946 				_vala_ccode_node_unref0 (_tmp271_);
947 				message_expr = _tmp273_;
948 				_tmp274_ = message_expr;
949 				_tmp275_ = vala_ccode_identifier_new ("invocation");
950 				_tmp276_ = _tmp275_;
951 				vala_ccode_function_call_add_argument (_tmp274_, (ValaCCodeExpression*) _tmp276_);
952 				_vala_ccode_node_unref0 (_tmp276_);
953 				_tmp277_ = param;
954 				_tmp278_ = vala_variable_get_variable_type ((ValaVariable*) _tmp277_);
955 				_tmp279_ = _tmp278_;
956 				_tmp280_ = message_expr;
957 				_tmp281_ = vala_ccode_identifier_new ("_arguments_iter");
958 				_tmp282_ = _tmp281_;
959 				_tmp283_ = param_expr;
960 				_tmp284_ = param;
961 				_tmp285_ = vala_ccode_identifier_new ("error");
962 				_tmp286_ = _tmp285_;
963 				_tmp287_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp286_);
964 				_tmp288_ = _tmp287_;
965 				vala_gd_bus_module_receive_dbus_value ((ValaGDBusModule*) self, _tmp279_, (ValaCCodeExpression*) _tmp280_, (ValaCCodeExpression*) _tmp282_, _tmp283_, (ValaSymbol*) _tmp284_, (ValaCCodeExpression*) _tmp288_, &_tmp289_);
966 				may_fail = _tmp289_;
967 				_vala_ccode_node_unref0 (_tmp288_);
968 				_vala_ccode_node_unref0 (_tmp286_);
969 				_vala_ccode_node_unref0 (_tmp282_);
970 				if (may_fail) {
971 					ValaCCodeFunction* _tmp296_;
972 					ValaCCodeFunction* _tmp297_;
973 					ValaCCodeIdentifier* _tmp298_;
974 					ValaCCodeIdentifier* _tmp299_;
975 					ValaCCodeFunctionCall* return_error = NULL;
976 					ValaCCodeIdentifier* _tmp300_;
977 					ValaCCodeIdentifier* _tmp301_;
978 					ValaCCodeFunctionCall* _tmp302_;
979 					ValaCCodeFunctionCall* _tmp303_;
980 					ValaCCodeFunctionCall* _tmp304_;
981 					ValaCCodeIdentifier* _tmp305_;
982 					ValaCCodeIdentifier* _tmp306_;
983 					ValaCCodeFunctionCall* _tmp307_;
984 					ValaCCodeIdentifier* _tmp308_;
985 					ValaCCodeIdentifier* _tmp309_;
986 					ValaCCodeFunction* _tmp310_;
987 					ValaCCodeFunction* _tmp311_;
988 					ValaCCodeFunctionCall* _tmp312_;
989 					ValaCCodeFunctionCall* free_error = NULL;
990 					ValaCCodeIdentifier* _tmp313_;
991 					ValaCCodeIdentifier* _tmp314_;
992 					ValaCCodeFunctionCall* _tmp315_;
993 					ValaCCodeFunctionCall* _tmp316_;
994 					ValaCCodeFunctionCall* _tmp317_;
995 					ValaCCodeIdentifier* _tmp318_;
996 					ValaCCodeIdentifier* _tmp319_;
997 					ValaCCodeFunction* _tmp320_;
998 					ValaCCodeFunction* _tmp321_;
999 					ValaCCodeFunctionCall* _tmp322_;
1000 					gboolean _tmp323_ = FALSE;
1001 					ValaCCodeFunction* _tmp329_;
1002 					ValaCCodeFunction* _tmp330_;
1003 					if (!uses_error) {
1004 						ValaCCodeFunction* _tmp290_;
1005 						ValaCCodeFunction* _tmp291_;
1006 						ValaCCodeConstant* _tmp292_;
1007 						ValaCCodeConstant* _tmp293_;
1008 						ValaCCodeVariableDeclarator* _tmp294_;
1009 						ValaCCodeVariableDeclarator* _tmp295_;
1010 						_tmp290_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1011 						_tmp291_ = _tmp290_;
1012 						_tmp292_ = vala_ccode_constant_new ("NULL");
1013 						_tmp293_ = _tmp292_;
1014 						_tmp294_ = vala_ccode_variable_declarator_new_zero ("error", (ValaCCodeExpression*) _tmp293_, NULL);
1015 						_tmp295_ = _tmp294_;
1016 						vala_ccode_function_add_declaration (_tmp291_, "GError*", (ValaCCodeDeclarator*) _tmp295_, 0);
1017 						_vala_ccode_node_unref0 (_tmp295_);
1018 						_vala_ccode_node_unref0 (_tmp293_);
1019 						uses_error = TRUE;
1020 					}
1021 					_tmp296_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1022 					_tmp297_ = _tmp296_;
1023 					_tmp298_ = vala_ccode_identifier_new ("error");
1024 					_tmp299_ = _tmp298_;
1025 					vala_ccode_function_open_if (_tmp297_, (ValaCCodeExpression*) _tmp299_);
1026 					_vala_ccode_node_unref0 (_tmp299_);
1027 					_tmp300_ = vala_ccode_identifier_new ("g_dbus_method_invocation_return_gerror");
1028 					_tmp301_ = _tmp300_;
1029 					_tmp302_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp301_);
1030 					_tmp303_ = _tmp302_;
1031 					_vala_ccode_node_unref0 (_tmp301_);
1032 					return_error = _tmp303_;
1033 					_tmp304_ = return_error;
1034 					_tmp305_ = vala_ccode_identifier_new ("invocation");
1035 					_tmp306_ = _tmp305_;
1036 					vala_ccode_function_call_add_argument (_tmp304_, (ValaCCodeExpression*) _tmp306_);
1037 					_vala_ccode_node_unref0 (_tmp306_);
1038 					_tmp307_ = return_error;
1039 					_tmp308_ = vala_ccode_identifier_new ("error");
1040 					_tmp309_ = _tmp308_;
1041 					vala_ccode_function_call_add_argument (_tmp307_, (ValaCCodeExpression*) _tmp309_);
1042 					_vala_ccode_node_unref0 (_tmp309_);
1043 					_tmp310_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1044 					_tmp311_ = _tmp310_;
1045 					_tmp312_ = return_error;
1046 					vala_ccode_function_add_expression (_tmp311_, (ValaCCodeExpression*) _tmp312_);
1047 					_tmp313_ = vala_ccode_identifier_new ("g_error_free");
1048 					_tmp314_ = _tmp313_;
1049 					_tmp315_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp314_);
1050 					_tmp316_ = _tmp315_;
1051 					_vala_ccode_node_unref0 (_tmp314_);
1052 					free_error = _tmp316_;
1053 					_tmp317_ = free_error;
1054 					_tmp318_ = vala_ccode_identifier_new ("error");
1055 					_tmp319_ = _tmp318_;
1056 					vala_ccode_function_call_add_argument (_tmp317_, (ValaCCodeExpression*) _tmp319_);
1057 					_vala_ccode_node_unref0 (_tmp319_);
1058 					_tmp320_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1059 					_tmp321_ = _tmp320_;
1060 					_tmp322_ = free_error;
1061 					vala_ccode_function_add_expression (_tmp321_, (ValaCCodeExpression*) _tmp322_);
1062 					if (need_goto_label) {
1063 						_tmp323_ = TRUE;
1064 					} else {
1065 						ValaDataType* _tmp324_;
1066 						_tmp324_ = owned_type;
1067 						_tmp323_ = vala_ccode_base_module_requires_destroy (_tmp324_);
1068 					}
1069 					if (_tmp323_) {
1070 						ValaCCodeFunction* _tmp325_;
1071 						ValaCCodeFunction* _tmp326_;
1072 						_tmp325_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1073 						_tmp326_ = _tmp325_;
1074 						vala_ccode_function_add_goto (_tmp326_, "_error");
1075 						need_goto_label = TRUE;
1076 					} else {
1077 						ValaCCodeFunction* _tmp327_;
1078 						ValaCCodeFunction* _tmp328_;
1079 						_tmp327_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1080 						_tmp328_ = _tmp327_;
1081 						vala_ccode_function_add_return (_tmp328_, NULL);
1082 					}
1083 					_tmp329_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1084 					_tmp330_ = _tmp329_;
1085 					vala_ccode_function_close (_tmp330_);
1086 					_vala_ccode_node_unref0 (free_error);
1087 					_vala_ccode_node_unref0 (return_error);
1088 				} else {
1089 					gboolean _tmp331_ = FALSE;
1090 					gboolean _tmp332_ = FALSE;
1091 					if (!need_goto_label) {
1092 						gboolean _tmp333_;
1093 						gboolean _tmp334_;
1094 						_tmp333_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
1095 						_tmp334_ = _tmp333_;
1096 						_tmp332_ = _tmp334_;
1097 					} else {
1098 						_tmp332_ = FALSE;
1099 					}
1100 					if (_tmp332_) {
1101 						ValaDataType* _tmp335_;
1102 						_tmp335_ = owned_type;
1103 						_tmp331_ = vala_ccode_base_module_requires_destroy (_tmp335_);
1104 					} else {
1105 						_tmp331_ = FALSE;
1106 					}
1107 					if (_tmp331_) {
1108 						need_goto_label = TRUE;
1109 					}
1110 				}
1111 				_vala_ccode_node_unref0 (message_expr);
1112 				_vala_code_node_unref0 (array_type);
1113 				_vala_code_node_unref0 (owned_type);
1114 				_vala_ccode_node_unref0 (param_expr);
1115 				_g_free0 (param_name);
1116 				_vala_code_node_unref0 (param);
1117 			}
1118 			_vala_iterable_unref0 (_param_list);
1119 		}
1120 		_vala_ccode_node_unref0 (ready_data_struct);
1121 	}
1122 	{
1123 		ValaList* _param_list = NULL;
1124 		ValaList* _tmp336_;
1125 		ValaList* _tmp337_;
1126 		gint _param_size = 0;
1127 		ValaList* _tmp338_;
1128 		gint _tmp339_;
1129 		gint _tmp340_;
1130 		gint _param_index = 0;
1131 		_tmp336_ = vala_callable_get_parameters ((ValaCallable*) m);
1132 		_tmp337_ = _vala_iterable_ref0 (_tmp336_);
1133 		_param_list = _tmp337_;
1134 		_tmp338_ = _param_list;
1135 		_tmp339_ = vala_collection_get_size ((ValaCollection*) _tmp338_);
1136 		_tmp340_ = _tmp339_;
1137 		_param_size = _tmp340_;
1138 		_param_index = -1;
1139 		while (TRUE) {
1140 			gint _tmp341_;
1141 			gint _tmp342_;
1142 			ValaParameter* param = NULL;
1143 			ValaList* _tmp343_;
1144 			gpointer _tmp344_;
1145 			gchar* param_name = NULL;
1146 			ValaParameter* _tmp345_;
1147 			const gchar* _tmp346_;
1148 			const gchar* _tmp347_;
1149 			gchar* _tmp348_;
1150 			ValaCCodeExpression* param_expr = NULL;
1151 			gboolean _tmp349_ = FALSE;
1152 			ValaCCodeIdentifier* _tmp350_;
1153 			gboolean _tmp359_ = FALSE;
1154 			ValaParameter* _tmp360_;
1155 			ValaParameterDirection _tmp361_;
1156 			ValaParameterDirection _tmp362_;
1157 			ValaArrayType* array_type = NULL;
1158 			ValaParameter* _tmp422_;
1159 			ValaDataType* _tmp423_;
1160 			ValaDataType* _tmp424_;
1161 			ValaArrayType* _tmp425_;
1162 			ValaArrayType* _tmp426_;
1163 			_param_index = _param_index + 1;
1164 			_tmp341_ = _param_index;
1165 			_tmp342_ = _param_size;
1166 			if (!(_tmp341_ < _tmp342_)) {
1167 				break;
1168 			}
1169 			_tmp343_ = _param_list;
1170 			_tmp344_ = vala_list_get (_tmp343_, _param_index);
1171 			param = (ValaParameter*) _tmp344_;
1172 			_tmp345_ = param;
1173 			_tmp346_ = vala_symbol_get_name ((ValaSymbol*) _tmp345_);
1174 			_tmp347_ = _tmp346_;
1175 			_tmp348_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp347_);
1176 			param_name = _tmp348_;
1177 			_tmp350_ = ready_data_expr;
1178 			if (_tmp350_ != NULL) {
1179 				ValaParameter* _tmp351_;
1180 				ValaParameterDirection _tmp352_;
1181 				ValaParameterDirection _tmp353_;
1182 				_tmp351_ = param;
1183 				_tmp352_ = vala_parameter_get_direction (_tmp351_);
1184 				_tmp353_ = _tmp352_;
1185 				_tmp349_ = _tmp353_ == VALA_PARAMETER_DIRECTION_IN;
1186 			} else {
1187 				_tmp349_ = FALSE;
1188 			}
1189 			if (_tmp349_) {
1190 				ValaCCodeIdentifier* _tmp354_;
1191 				const gchar* _tmp355_;
1192 				ValaCCodeMemberAccess* _tmp356_;
1193 				_tmp354_ = ready_data_expr;
1194 				_tmp355_ = param_name;
1195 				_tmp356_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp354_, _tmp355_);
1196 				_vala_ccode_node_unref0 (param_expr);
1197 				param_expr = (ValaCCodeExpression*) _tmp356_;
1198 			} else {
1199 				const gchar* _tmp357_;
1200 				ValaCCodeIdentifier* _tmp358_;
1201 				_tmp357_ = param_name;
1202 				_tmp358_ = vala_ccode_identifier_new (_tmp357_);
1203 				_vala_ccode_node_unref0 (param_expr);
1204 				param_expr = (ValaCCodeExpression*) _tmp358_;
1205 			}
1206 			_tmp360_ = param;
1207 			_tmp361_ = vala_parameter_get_direction (_tmp360_);
1208 			_tmp362_ = _tmp361_;
1209 			if (_tmp362_ == VALA_PARAMETER_DIRECTION_IN) {
1210 				_tmp359_ = !ready;
1211 			} else {
1212 				_tmp359_ = FALSE;
1213 			}
1214 			if (_tmp359_) {
1215 				gboolean _tmp363_ = FALSE;
1216 				ValaParameter* _tmp364_;
1217 				ValaDataType* _tmp365_;
1218 				ValaDataType* _tmp366_;
1219 				gboolean _tmp377_ = FALSE;
1220 				ValaParameter* _tmp378_;
1221 				ValaDataType* _tmp379_;
1222 				ValaDataType* _tmp380_;
1223 				ValaStruct* st = NULL;
1224 				ValaParameter* _tmp397_;
1225 				ValaDataType* _tmp398_;
1226 				ValaDataType* _tmp399_;
1227 				ValaTypeSymbol* _tmp400_;
1228 				ValaTypeSymbol* _tmp401_;
1229 				gboolean _tmp402_ = FALSE;
1230 				ValaStruct* _tmp403_;
1231 				_tmp364_ = param;
1232 				_tmp365_ = vala_variable_get_variable_type ((ValaVariable*) _tmp364_);
1233 				_tmp366_ = _tmp365_;
1234 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp366_, VALA_TYPE_OBJECT_TYPE)) {
1235 					ValaParameter* _tmp367_;
1236 					ValaDataType* _tmp368_;
1237 					ValaDataType* _tmp369_;
1238 					ValaTypeSymbol* _tmp370_;
1239 					ValaTypeSymbol* _tmp371_;
1240 					gchar* _tmp372_;
1241 					gchar* _tmp373_;
1242 					_tmp367_ = param;
1243 					_tmp368_ = vala_variable_get_variable_type ((ValaVariable*) _tmp367_);
1244 					_tmp369_ = _tmp368_;
1245 					_tmp370_ = vala_data_type_get_type_symbol (_tmp369_);
1246 					_tmp371_ = _tmp370_;
1247 					_tmp372_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp371_);
1248 					_tmp373_ = _tmp372_;
1249 					_tmp363_ = g_strcmp0 (_tmp373_, "GLib.Cancellable") == 0;
1250 					_g_free0 (_tmp373_);
1251 				} else {
1252 					_tmp363_ = FALSE;
1253 				}
1254 				if (_tmp363_) {
1255 					ValaCCodeFunctionCall* _tmp374_;
1256 					ValaCCodeConstant* _tmp375_;
1257 					ValaCCodeConstant* _tmp376_;
1258 					_tmp374_ = ccall;
1259 					_tmp375_ = vala_ccode_constant_new ("NULL");
1260 					_tmp376_ = _tmp375_;
1261 					vala_ccode_function_call_add_argument (_tmp374_, (ValaCCodeExpression*) _tmp376_);
1262 					_vala_ccode_node_unref0 (_tmp376_);
1263 					_vala_ccode_node_unref0 (param_expr);
1264 					_g_free0 (param_name);
1265 					_vala_code_node_unref0 (param);
1266 					continue;
1267 				}
1268 				_tmp378_ = param;
1269 				_tmp379_ = vala_variable_get_variable_type ((ValaVariable*) _tmp378_);
1270 				_tmp380_ = _tmp379_;
1271 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp380_, VALA_TYPE_OBJECT_TYPE)) {
1272 					ValaParameter* _tmp381_;
1273 					ValaDataType* _tmp382_;
1274 					ValaDataType* _tmp383_;
1275 					ValaTypeSymbol* _tmp384_;
1276 					ValaTypeSymbol* _tmp385_;
1277 					gchar* _tmp386_;
1278 					gchar* _tmp387_;
1279 					_tmp381_ = param;
1280 					_tmp382_ = vala_variable_get_variable_type ((ValaVariable*) _tmp381_);
1281 					_tmp383_ = _tmp382_;
1282 					_tmp384_ = vala_data_type_get_type_symbol (_tmp383_);
1283 					_tmp385_ = _tmp384_;
1284 					_tmp386_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp385_);
1285 					_tmp387_ = _tmp386_;
1286 					_tmp377_ = g_strcmp0 (_tmp387_, "GLib.BusName") == 0;
1287 					_g_free0 (_tmp387_);
1288 				} else {
1289 					_tmp377_ = FALSE;
1290 				}
1291 				if (_tmp377_) {
1292 					ValaCCodeFunctionCall* sender = NULL;
1293 					ValaCCodeIdentifier* _tmp388_;
1294 					ValaCCodeIdentifier* _tmp389_;
1295 					ValaCCodeFunctionCall* _tmp390_;
1296 					ValaCCodeFunctionCall* _tmp391_;
1297 					ValaCCodeFunctionCall* _tmp392_;
1298 					ValaCCodeIdentifier* _tmp393_;
1299 					ValaCCodeIdentifier* _tmp394_;
1300 					ValaCCodeFunctionCall* _tmp395_;
1301 					ValaCCodeFunctionCall* _tmp396_;
1302 					_tmp388_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_sender");
1303 					_tmp389_ = _tmp388_;
1304 					_tmp390_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp389_);
1305 					_tmp391_ = _tmp390_;
1306 					_vala_ccode_node_unref0 (_tmp389_);
1307 					sender = _tmp391_;
1308 					_tmp392_ = sender;
1309 					_tmp393_ = vala_ccode_identifier_new ("invocation");
1310 					_tmp394_ = _tmp393_;
1311 					vala_ccode_function_call_add_argument (_tmp392_, (ValaCCodeExpression*) _tmp394_);
1312 					_vala_ccode_node_unref0 (_tmp394_);
1313 					_tmp395_ = ccall;
1314 					_tmp396_ = sender;
1315 					vala_ccode_function_call_add_argument (_tmp395_, (ValaCCodeExpression*) _tmp396_);
1316 					_vala_ccode_node_unref0 (sender);
1317 					_vala_ccode_node_unref0 (param_expr);
1318 					_g_free0 (param_name);
1319 					_vala_code_node_unref0 (param);
1320 					continue;
1321 				}
1322 				_tmp397_ = param;
1323 				_tmp398_ = vala_variable_get_variable_type ((ValaVariable*) _tmp397_);
1324 				_tmp399_ = _tmp398_;
1325 				_tmp400_ = vala_data_type_get_type_symbol (_tmp399_);
1326 				_tmp401_ = _tmp400_;
1327 				st = G_TYPE_CHECK_INSTANCE_TYPE (_tmp401_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp401_) : NULL;
1328 				_tmp403_ = st;
1329 				if (_tmp403_ != NULL) {
1330 					ValaStruct* _tmp404_;
1331 					_tmp404_ = st;
1332 					_tmp402_ = !vala_struct_is_simple_type (_tmp404_);
1333 				} else {
1334 					_tmp402_ = FALSE;
1335 				}
1336 				if (_tmp402_) {
1337 					ValaCCodeFunctionCall* _tmp405_;
1338 					ValaCCodeExpression* _tmp406_;
1339 					ValaCCodeUnaryExpression* _tmp407_;
1340 					ValaCCodeUnaryExpression* _tmp408_;
1341 					_tmp405_ = ccall;
1342 					_tmp406_ = param_expr;
1343 					_tmp407_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp406_);
1344 					_tmp408_ = _tmp407_;
1345 					vala_ccode_function_call_add_argument (_tmp405_, (ValaCCodeExpression*) _tmp408_);
1346 					_vala_ccode_node_unref0 (_tmp408_);
1347 				} else {
1348 					ValaCCodeFunctionCall* _tmp409_;
1349 					ValaCCodeExpression* _tmp410_;
1350 					_tmp409_ = ccall;
1351 					_tmp410_ = param_expr;
1352 					vala_ccode_function_call_add_argument (_tmp409_, _tmp410_);
1353 				}
1354 			} else {
1355 				gboolean _tmp411_ = FALSE;
1356 				ValaParameter* _tmp412_;
1357 				ValaParameterDirection _tmp413_;
1358 				ValaParameterDirection _tmp414_;
1359 				_tmp412_ = param;
1360 				_tmp413_ = vala_parameter_get_direction (_tmp412_);
1361 				_tmp414_ = _tmp413_;
1362 				if (_tmp414_ == VALA_PARAMETER_DIRECTION_OUT) {
1363 					gboolean _tmp415_ = FALSE;
1364 					gboolean _tmp416_;
1365 					gboolean _tmp417_;
1366 					_tmp416_ = vala_method_get_coroutine (m);
1367 					_tmp417_ = _tmp416_;
1368 					if (!_tmp417_) {
1369 						_tmp415_ = TRUE;
1370 					} else {
1371 						_tmp415_ = ready;
1372 					}
1373 					_tmp411_ = _tmp415_;
1374 				} else {
1375 					_tmp411_ = FALSE;
1376 				}
1377 				if (_tmp411_) {
1378 					ValaCCodeFunctionCall* _tmp418_;
1379 					ValaCCodeExpression* _tmp419_;
1380 					ValaCCodeUnaryExpression* _tmp420_;
1381 					ValaCCodeUnaryExpression* _tmp421_;
1382 					_tmp418_ = ccall;
1383 					_tmp419_ = param_expr;
1384 					_tmp420_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp419_);
1385 					_tmp421_ = _tmp420_;
1386 					vala_ccode_function_call_add_argument (_tmp418_, (ValaCCodeExpression*) _tmp421_);
1387 					_vala_ccode_node_unref0 (_tmp421_);
1388 				}
1389 			}
1390 			_tmp422_ = param;
1391 			_tmp423_ = vala_variable_get_variable_type ((ValaVariable*) _tmp422_);
1392 			_tmp424_ = _tmp423_;
1393 			_tmp425_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp424_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp424_) : NULL);
1394 			array_type = _tmp425_;
1395 			_tmp426_ = array_type;
1396 			if (_tmp426_ != NULL) {
1397 				{
1398 					gint dim = 0;
1399 					dim = 1;
1400 					{
1401 						gboolean _tmp427_ = FALSE;
1402 						_tmp427_ = TRUE;
1403 						while (TRUE) {
1404 							ValaArrayType* _tmp429_;
1405 							gint _tmp430_;
1406 							gint _tmp431_;
1407 							gchar* length_cname = NULL;
1408 							ValaParameter* _tmp432_;
1409 							gchar* _tmp433_;
1410 							ValaCCodeExpression* length_expr = NULL;
1411 							gboolean _tmp434_ = FALSE;
1412 							ValaCCodeIdentifier* _tmp435_;
1413 							gboolean _tmp444_ = FALSE;
1414 							ValaParameter* _tmp445_;
1415 							ValaParameterDirection _tmp446_;
1416 							ValaParameterDirection _tmp447_;
1417 							if (!_tmp427_) {
1418 								gint _tmp428_;
1419 								_tmp428_ = dim;
1420 								dim = _tmp428_ + 1;
1421 							}
1422 							_tmp427_ = FALSE;
1423 							_tmp429_ = array_type;
1424 							_tmp430_ = vala_array_type_get_rank (_tmp429_);
1425 							_tmp431_ = _tmp430_;
1426 							if (!(dim <= _tmp431_)) {
1427 								break;
1428 							}
1429 							_tmp432_ = param;
1430 							_tmp433_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp432_, dim);
1431 							length_cname = _tmp433_;
1432 							_tmp435_ = ready_data_expr;
1433 							if (_tmp435_ != NULL) {
1434 								ValaParameter* _tmp436_;
1435 								ValaParameterDirection _tmp437_;
1436 								ValaParameterDirection _tmp438_;
1437 								_tmp436_ = param;
1438 								_tmp437_ = vala_parameter_get_direction (_tmp436_);
1439 								_tmp438_ = _tmp437_;
1440 								_tmp434_ = _tmp438_ == VALA_PARAMETER_DIRECTION_IN;
1441 							} else {
1442 								_tmp434_ = FALSE;
1443 							}
1444 							if (_tmp434_) {
1445 								ValaCCodeIdentifier* _tmp439_;
1446 								const gchar* _tmp440_;
1447 								ValaCCodeMemberAccess* _tmp441_;
1448 								_tmp439_ = ready_data_expr;
1449 								_tmp440_ = length_cname;
1450 								_tmp441_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp439_, _tmp440_);
1451 								_vala_ccode_node_unref0 (length_expr);
1452 								length_expr = (ValaCCodeExpression*) _tmp441_;
1453 							} else {
1454 								const gchar* _tmp442_;
1455 								ValaCCodeIdentifier* _tmp443_;
1456 								_tmp442_ = length_cname;
1457 								_tmp443_ = vala_ccode_identifier_new (_tmp442_);
1458 								_vala_ccode_node_unref0 (length_expr);
1459 								length_expr = (ValaCCodeExpression*) _tmp443_;
1460 							}
1461 							_tmp445_ = param;
1462 							_tmp446_ = vala_parameter_get_direction (_tmp445_);
1463 							_tmp447_ = _tmp446_;
1464 							if (_tmp447_ == VALA_PARAMETER_DIRECTION_IN) {
1465 								_tmp444_ = !ready;
1466 							} else {
1467 								_tmp444_ = FALSE;
1468 							}
1469 							if (_tmp444_) {
1470 								ValaCCodeFunctionCall* _tmp448_;
1471 								ValaCCodeExpression* _tmp449_;
1472 								_tmp448_ = ccall;
1473 								_tmp449_ = length_expr;
1474 								vala_ccode_function_call_add_argument (_tmp448_, _tmp449_);
1475 							} else {
1476 								gboolean _tmp450_ = FALSE;
1477 								gboolean _tmp451_ = FALSE;
1478 								ValaParameter* _tmp452_;
1479 								ValaParameterDirection _tmp453_;
1480 								ValaParameterDirection _tmp454_;
1481 								_tmp452_ = param;
1482 								_tmp453_ = vala_parameter_get_direction (_tmp452_);
1483 								_tmp454_ = _tmp453_;
1484 								if (_tmp454_ == VALA_PARAMETER_DIRECTION_OUT) {
1485 									_tmp451_ = !no_reply;
1486 								} else {
1487 									_tmp451_ = FALSE;
1488 								}
1489 								if (_tmp451_) {
1490 									gboolean _tmp455_ = FALSE;
1491 									gboolean _tmp456_;
1492 									gboolean _tmp457_;
1493 									_tmp456_ = vala_method_get_coroutine (m);
1494 									_tmp457_ = _tmp456_;
1495 									if (!_tmp457_) {
1496 										_tmp455_ = TRUE;
1497 									} else {
1498 										_tmp455_ = ready;
1499 									}
1500 									_tmp450_ = _tmp455_;
1501 								} else {
1502 									_tmp450_ = FALSE;
1503 								}
1504 								if (_tmp450_) {
1505 									ValaCCodeFunctionCall* _tmp458_;
1506 									ValaCCodeExpression* _tmp459_;
1507 									ValaCCodeUnaryExpression* _tmp460_;
1508 									ValaCCodeUnaryExpression* _tmp461_;
1509 									_tmp458_ = ccall;
1510 									_tmp459_ = length_expr;
1511 									_tmp460_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp459_);
1512 									_tmp461_ = _tmp460_;
1513 									vala_ccode_function_call_add_argument (_tmp458_, (ValaCCodeExpression*) _tmp461_);
1514 									_vala_ccode_node_unref0 (_tmp461_);
1515 								}
1516 							}
1517 							_vala_ccode_node_unref0 (length_expr);
1518 							_g_free0 (length_cname);
1519 						}
1520 					}
1521 				}
1522 			}
1523 			_vala_code_node_unref0 (array_type);
1524 			_vala_ccode_node_unref0 (param_expr);
1525 			_g_free0 (param_name);
1526 			_vala_code_node_unref0 (param);
1527 		}
1528 		_vala_iterable_unref0 (_param_list);
1529 	}
1530 	_tmp463_ = vala_method_get_coroutine (m);
1531 	_tmp464_ = _tmp463_;
1532 	if (!_tmp464_) {
1533 		_tmp462_ = TRUE;
1534 	} else {
1535 		_tmp462_ = ready;
1536 	}
1537 	if (_tmp462_) {
1538 		ValaDataType* _tmp465_;
1539 		ValaDataType* _tmp466_;
1540 		_tmp465_ = vala_callable_get_return_type ((ValaCallable*) m);
1541 		_tmp466_ = _tmp465_;
1542 		if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp466_, VALA_TYPE_VOID_TYPE)) {
1543 			ValaDataType* _tmp467_;
1544 			ValaDataType* _tmp468_;
1545 			_tmp467_ = vala_callable_get_return_type ((ValaCallable*) m);
1546 			_tmp468_ = _tmp467_;
1547 			if (vala_data_type_is_real_non_null_struct_type (_tmp468_)) {
1548 				ValaCCodeFunctionCall* _tmp469_;
1549 				ValaCCodeIdentifier* _tmp470_;
1550 				ValaCCodeIdentifier* _tmp471_;
1551 				ValaCCodeUnaryExpression* _tmp472_;
1552 				ValaCCodeUnaryExpression* _tmp473_;
1553 				_tmp469_ = ccall;
1554 				_tmp470_ = vala_ccode_identifier_new ("result");
1555 				_tmp471_ = _tmp470_;
1556 				_tmp472_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp471_);
1557 				_tmp473_ = _tmp472_;
1558 				vala_ccode_function_call_add_argument (_tmp469_, (ValaCCodeExpression*) _tmp473_);
1559 				_vala_ccode_node_unref0 (_tmp473_);
1560 				_vala_ccode_node_unref0 (_tmp471_);
1561 			} else {
1562 				ValaArrayType* array_type = NULL;
1563 				ValaDataType* _tmp474_;
1564 				ValaDataType* _tmp475_;
1565 				ValaArrayType* _tmp476_;
1566 				ValaArrayType* _tmp477_;
1567 				_tmp474_ = vala_callable_get_return_type ((ValaCallable*) m);
1568 				_tmp475_ = _tmp474_;
1569 				_tmp476_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp475_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp475_) : NULL);
1570 				array_type = _tmp476_;
1571 				_tmp477_ = array_type;
1572 				if (_tmp477_ != NULL) {
1573 					{
1574 						gint dim = 0;
1575 						dim = 1;
1576 						{
1577 							gboolean _tmp478_ = FALSE;
1578 							_tmp478_ = TRUE;
1579 							while (TRUE) {
1580 								ValaArrayType* _tmp480_;
1581 								gint _tmp481_;
1582 								gint _tmp482_;
1583 								gchar* length_cname = NULL;
1584 								gchar* _tmp483_;
1585 								ValaCCodeFunctionCall* _tmp484_;
1586 								const gchar* _tmp485_;
1587 								ValaCCodeIdentifier* _tmp486_;
1588 								ValaCCodeIdentifier* _tmp487_;
1589 								ValaCCodeUnaryExpression* _tmp488_;
1590 								ValaCCodeUnaryExpression* _tmp489_;
1591 								if (!_tmp478_) {
1592 									gint _tmp479_;
1593 									_tmp479_ = dim;
1594 									dim = _tmp479_ + 1;
1595 								}
1596 								_tmp478_ = FALSE;
1597 								_tmp480_ = array_type;
1598 								_tmp481_ = vala_array_type_get_rank (_tmp480_);
1599 								_tmp482_ = _tmp481_;
1600 								if (!(dim <= _tmp482_)) {
1601 									break;
1602 								}
1603 								_tmp483_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
1604 								length_cname = _tmp483_;
1605 								_tmp484_ = ccall;
1606 								_tmp485_ = length_cname;
1607 								_tmp486_ = vala_ccode_identifier_new (_tmp485_);
1608 								_tmp487_ = _tmp486_;
1609 								_tmp488_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp487_);
1610 								_tmp489_ = _tmp488_;
1611 								vala_ccode_function_call_add_argument (_tmp484_, (ValaCCodeExpression*) _tmp489_);
1612 								_vala_ccode_node_unref0 (_tmp489_);
1613 								_vala_ccode_node_unref0 (_tmp487_);
1614 								_g_free0 (length_cname);
1615 							}
1616 						}
1617 					}
1618 				}
1619 				_vala_code_node_unref0 (array_type);
1620 			}
1621 		}
1622 	}
1623 	_tmp491_ = vala_method_get_coroutine (m);
1624 	_tmp492_ = _tmp491_;
1625 	if (_tmp492_) {
1626 		_tmp490_ = !ready;
1627 	} else {
1628 		_tmp490_ = FALSE;
1629 	}
1630 	if (_tmp490_) {
1631 		ValaCCodeFunctionCall* _tmp493_;
1632 		const gchar* _tmp494_;
1633 		gchar* _tmp495_;
1634 		gchar* _tmp496_;
1635 		ValaCCodeIdentifier* _tmp497_;
1636 		ValaCCodeIdentifier* _tmp498_;
1637 		ValaCCodeCastExpression* _tmp499_;
1638 		ValaCCodeCastExpression* _tmp500_;
1639 		ValaCCodeFunctionCall* _tmp501_;
1640 		ValaCCodeIdentifier* _tmp502_;
1641 		_tmp493_ = ccall;
1642 		_tmp494_ = wrapper_name;
1643 		_tmp495_ = g_strconcat (_tmp494_, "_ready", NULL);
1644 		_tmp496_ = _tmp495_;
1645 		_tmp497_ = vala_ccode_identifier_new (_tmp496_);
1646 		_tmp498_ = _tmp497_;
1647 		_tmp499_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp498_, "GAsyncReadyCallback");
1648 		_tmp500_ = _tmp499_;
1649 		vala_ccode_function_call_add_argument (_tmp493_, (ValaCCodeExpression*) _tmp500_);
1650 		_vala_ccode_node_unref0 (_tmp500_);
1651 		_vala_ccode_node_unref0 (_tmp498_);
1652 		_g_free0 (_tmp496_);
1653 		_tmp501_ = ccall;
1654 		_tmp502_ = ready_data_expr;
1655 		vala_ccode_function_call_add_argument (_tmp501_, (ValaCCodeExpression*) _tmp502_);
1656 	}
1657 	_tmp504_ = vala_method_get_coroutine (m);
1658 	_tmp505_ = _tmp504_;
1659 	if (!_tmp505_) {
1660 		_tmp503_ = TRUE;
1661 	} else {
1662 		_tmp503_ = ready;
1663 	}
1664 	if (_tmp503_) {
1665 		gboolean _tmp506_;
1666 		gboolean _tmp507_;
1667 		_tmp506_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
1668 		_tmp507_ = _tmp506_;
1669 		if (_tmp507_) {
1670 			ValaCCodeFunctionCall* _tmp508_;
1671 			ValaCCodeIdentifier* _tmp509_;
1672 			ValaCCodeIdentifier* _tmp510_;
1673 			ValaCCodeUnaryExpression* _tmp511_;
1674 			ValaCCodeUnaryExpression* _tmp512_;
1675 			_tmp508_ = ccall;
1676 			_tmp509_ = vala_ccode_identifier_new ("error");
1677 			_tmp510_ = _tmp509_;
1678 			_tmp511_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp510_);
1679 			_tmp512_ = _tmp511_;
1680 			vala_ccode_function_call_add_argument (_tmp508_, (ValaCCodeExpression*) _tmp512_);
1681 			_vala_ccode_node_unref0 (_tmp512_);
1682 			_vala_ccode_node_unref0 (_tmp510_);
1683 		}
1684 	}
1685 	if (!no_reply) {
1686 		gboolean _tmp514_ = FALSE;
1687 		gboolean _tmp515_;
1688 		gboolean _tmp516_;
1689 		_tmp515_ = vala_method_get_coroutine (m);
1690 		_tmp516_ = _tmp515_;
1691 		if (!_tmp516_) {
1692 			_tmp514_ = TRUE;
1693 		} else {
1694 			_tmp514_ = ready;
1695 		}
1696 		_tmp513_ = _tmp514_;
1697 	} else {
1698 		_tmp513_ = FALSE;
1699 	}
1700 	if (_tmp513_) {
1701 		gboolean _tmp517_ = FALSE;
1702 		ValaDataType* _tmp518_;
1703 		ValaDataType* _tmp519_;
1704 		gboolean _tmp530_;
1705 		gboolean _tmp531_;
1706 		ValaCCodeFunction* _tmp565_;
1707 		ValaCCodeFunction* _tmp566_;
1708 		ValaCCodeConstant* _tmp567_;
1709 		ValaCCodeConstant* _tmp568_;
1710 		ValaCCodeVariableDeclarator* _tmp569_;
1711 		ValaCCodeVariableDeclarator* _tmp570_;
1712 		ValaCCodeFunctionCall* message_expr = NULL;
1713 		ValaCCodeIdentifier* _tmp571_;
1714 		ValaCCodeIdentifier* _tmp572_;
1715 		ValaCCodeFunctionCall* _tmp573_;
1716 		ValaCCodeFunctionCall* _tmp574_;
1717 		ValaCCodeFunctionCall* _tmp575_;
1718 		ValaCCodeIdentifier* _tmp576_;
1719 		ValaCCodeIdentifier* _tmp577_;
1720 		ValaCCodeIdentifier* _tmp578_;
1721 		ValaCCodeIdentifier* _tmp579_;
1722 		ValaCCodeFunctionCall* _tmp580_;
1723 		ValaCCodeFunctionCall* _tmp581_;
1724 		ValaCCodeFunctionCall* _tmp582_;
1725 		ValaCCodeFunction* _tmp583_;
1726 		ValaCCodeFunction* _tmp584_;
1727 		ValaCCodeIdentifier* _tmp585_;
1728 		ValaCCodeIdentifier* _tmp586_;
1729 		ValaCCodeFunctionCall* _tmp587_;
1730 		ValaCCodeFunction* _tmp588_;
1731 		ValaCCodeFunction* _tmp589_;
1732 		ValaCCodeVariableDeclarator* _tmp590_;
1733 		ValaCCodeVariableDeclarator* _tmp591_;
1734 		ValaCCodeFunction* _tmp592_;
1735 		ValaCCodeFunction* _tmp593_;
1736 		ValaCCodeVariableDeclarator* _tmp594_;
1737 		ValaCCodeVariableDeclarator* _tmp595_;
1738 		ValaCCodeFunctionCall* builder_init = NULL;
1739 		ValaCCodeIdentifier* _tmp596_;
1740 		ValaCCodeIdentifier* _tmp597_;
1741 		ValaCCodeFunctionCall* _tmp598_;
1742 		ValaCCodeFunctionCall* _tmp599_;
1743 		ValaCCodeFunctionCall* _tmp600_;
1744 		ValaCCodeIdentifier* _tmp601_;
1745 		ValaCCodeIdentifier* _tmp602_;
1746 		ValaCCodeUnaryExpression* _tmp603_;
1747 		ValaCCodeUnaryExpression* _tmp604_;
1748 		ValaCCodeFunctionCall* _tmp605_;
1749 		ValaCCodeIdentifier* _tmp606_;
1750 		ValaCCodeIdentifier* _tmp607_;
1751 		ValaCCodeFunction* _tmp608_;
1752 		ValaCCodeFunction* _tmp609_;
1753 		ValaCCodeFunctionCall* _tmp610_;
1754 		ValaDataType* _tmp684_;
1755 		ValaDataType* _tmp685_;
1756 		ValaCCodeFunctionCall* builder_end = NULL;
1757 		ValaCCodeIdentifier* _tmp760_;
1758 		ValaCCodeIdentifier* _tmp761_;
1759 		ValaCCodeFunctionCall* _tmp762_;
1760 		ValaCCodeFunctionCall* _tmp763_;
1761 		ValaCCodeFunctionCall* _tmp764_;
1762 		ValaCCodeIdentifier* _tmp765_;
1763 		ValaCCodeIdentifier* _tmp766_;
1764 		ValaCCodeUnaryExpression* _tmp767_;
1765 		ValaCCodeUnaryExpression* _tmp768_;
1766 		ValaCCodeFunction* _tmp769_;
1767 		ValaCCodeFunction* _tmp770_;
1768 		ValaCCodeIdentifier* _tmp771_;
1769 		ValaCCodeIdentifier* _tmp772_;
1770 		ValaCCodeFunctionCall* _tmp773_;
1771 		ValaCCodeFunctionCall* set_body = NULL;
1772 		ValaCCodeIdentifier* _tmp774_;
1773 		ValaCCodeIdentifier* _tmp775_;
1774 		ValaCCodeFunctionCall* _tmp776_;
1775 		ValaCCodeFunctionCall* _tmp777_;
1776 		ValaCCodeFunctionCall* _tmp778_;
1777 		ValaCCodeIdentifier* _tmp779_;
1778 		ValaCCodeIdentifier* _tmp780_;
1779 		ValaCCodeFunctionCall* _tmp781_;
1780 		ValaCCodeIdentifier* _tmp782_;
1781 		ValaCCodeIdentifier* _tmp783_;
1782 		ValaCCodeFunction* _tmp784_;
1783 		ValaCCodeFunction* _tmp785_;
1784 		ValaCCodeFunctionCall* _tmp786_;
1785 		_tmp518_ = vala_callable_get_return_type ((ValaCallable*) m);
1786 		_tmp519_ = _tmp518_;
1787 		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp519_, VALA_TYPE_VOID_TYPE)) {
1788 			_tmp517_ = TRUE;
1789 		} else {
1790 			ValaDataType* _tmp520_;
1791 			ValaDataType* _tmp521_;
1792 			_tmp520_ = vala_callable_get_return_type ((ValaCallable*) m);
1793 			_tmp521_ = _tmp520_;
1794 			_tmp517_ = vala_data_type_is_real_non_null_struct_type (_tmp521_);
1795 		}
1796 		if (_tmp517_) {
1797 			ValaCCodeFunction* _tmp522_;
1798 			ValaCCodeFunction* _tmp523_;
1799 			ValaCCodeFunctionCall* _tmp524_;
1800 			_tmp522_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1801 			_tmp523_ = _tmp522_;
1802 			_tmp524_ = ccall;
1803 			vala_ccode_function_add_expression (_tmp523_, (ValaCCodeExpression*) _tmp524_);
1804 		} else {
1805 			ValaCCodeFunction* _tmp525_;
1806 			ValaCCodeFunction* _tmp526_;
1807 			ValaCCodeIdentifier* _tmp527_;
1808 			ValaCCodeIdentifier* _tmp528_;
1809 			ValaCCodeFunctionCall* _tmp529_;
1810 			_tmp525_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1811 			_tmp526_ = _tmp525_;
1812 			_tmp527_ = vala_ccode_identifier_new ("result");
1813 			_tmp528_ = _tmp527_;
1814 			_tmp529_ = ccall;
1815 			vala_ccode_function_add_assignment (_tmp526_, (ValaCCodeExpression*) _tmp528_, (ValaCCodeExpression*) _tmp529_);
1816 			_vala_ccode_node_unref0 (_tmp528_);
1817 		}
1818 		_tmp530_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) m);
1819 		_tmp531_ = _tmp530_;
1820 		if (_tmp531_) {
1821 			ValaCCodeFunction* _tmp532_;
1822 			ValaCCodeFunction* _tmp533_;
1823 			ValaCCodeIdentifier* _tmp534_;
1824 			ValaCCodeIdentifier* _tmp535_;
1825 			ValaCCodeFunctionCall* return_error = NULL;
1826 			ValaCCodeIdentifier* _tmp536_;
1827 			ValaCCodeIdentifier* _tmp537_;
1828 			ValaCCodeFunctionCall* _tmp538_;
1829 			ValaCCodeFunctionCall* _tmp539_;
1830 			ValaCCodeFunctionCall* _tmp540_;
1831 			ValaCCodeIdentifier* _tmp541_;
1832 			ValaCCodeIdentifier* _tmp542_;
1833 			ValaCCodeFunctionCall* _tmp543_;
1834 			ValaCCodeIdentifier* _tmp544_;
1835 			ValaCCodeIdentifier* _tmp545_;
1836 			ValaCCodeFunction* _tmp546_;
1837 			ValaCCodeFunction* _tmp547_;
1838 			ValaCCodeFunctionCall* _tmp548_;
1839 			ValaCCodeFunctionCall* free_error = NULL;
1840 			ValaCCodeIdentifier* _tmp549_;
1841 			ValaCCodeIdentifier* _tmp550_;
1842 			ValaCCodeFunctionCall* _tmp551_;
1843 			ValaCCodeFunctionCall* _tmp552_;
1844 			ValaCCodeFunctionCall* _tmp553_;
1845 			ValaCCodeIdentifier* _tmp554_;
1846 			ValaCCodeIdentifier* _tmp555_;
1847 			ValaCCodeFunction* _tmp556_;
1848 			ValaCCodeFunction* _tmp557_;
1849 			ValaCCodeFunctionCall* _tmp558_;
1850 			ValaCCodeFunction* _tmp563_;
1851 			ValaCCodeFunction* _tmp564_;
1852 			_tmp532_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1853 			_tmp533_ = _tmp532_;
1854 			_tmp534_ = vala_ccode_identifier_new ("error");
1855 			_tmp535_ = _tmp534_;
1856 			vala_ccode_function_open_if (_tmp533_, (ValaCCodeExpression*) _tmp535_);
1857 			_vala_ccode_node_unref0 (_tmp535_);
1858 			_tmp536_ = vala_ccode_identifier_new ("g_dbus_method_invocation_return_gerror");
1859 			_tmp537_ = _tmp536_;
1860 			_tmp538_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp537_);
1861 			_tmp539_ = _tmp538_;
1862 			_vala_ccode_node_unref0 (_tmp537_);
1863 			return_error = _tmp539_;
1864 			_tmp540_ = return_error;
1865 			_tmp541_ = vala_ccode_identifier_new ("invocation");
1866 			_tmp542_ = _tmp541_;
1867 			vala_ccode_function_call_add_argument (_tmp540_, (ValaCCodeExpression*) _tmp542_);
1868 			_vala_ccode_node_unref0 (_tmp542_);
1869 			_tmp543_ = return_error;
1870 			_tmp544_ = vala_ccode_identifier_new ("error");
1871 			_tmp545_ = _tmp544_;
1872 			vala_ccode_function_call_add_argument (_tmp543_, (ValaCCodeExpression*) _tmp545_);
1873 			_vala_ccode_node_unref0 (_tmp545_);
1874 			_tmp546_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1875 			_tmp547_ = _tmp546_;
1876 			_tmp548_ = return_error;
1877 			vala_ccode_function_add_expression (_tmp547_, (ValaCCodeExpression*) _tmp548_);
1878 			_tmp549_ = vala_ccode_identifier_new ("g_error_free");
1879 			_tmp550_ = _tmp549_;
1880 			_tmp551_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp550_);
1881 			_tmp552_ = _tmp551_;
1882 			_vala_ccode_node_unref0 (_tmp550_);
1883 			free_error = _tmp552_;
1884 			_tmp553_ = free_error;
1885 			_tmp554_ = vala_ccode_identifier_new ("error");
1886 			_tmp555_ = _tmp554_;
1887 			vala_ccode_function_call_add_argument (_tmp553_, (ValaCCodeExpression*) _tmp555_);
1888 			_vala_ccode_node_unref0 (_tmp555_);
1889 			_tmp556_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1890 			_tmp557_ = _tmp556_;
1891 			_tmp558_ = free_error;
1892 			vala_ccode_function_add_expression (_tmp557_, (ValaCCodeExpression*) _tmp558_);
1893 			if (need_goto_label) {
1894 				ValaCCodeFunction* _tmp559_;
1895 				ValaCCodeFunction* _tmp560_;
1896 				_tmp559_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1897 				_tmp560_ = _tmp559_;
1898 				vala_ccode_function_add_goto (_tmp560_, "_error");
1899 			} else {
1900 				ValaCCodeFunction* _tmp561_;
1901 				ValaCCodeFunction* _tmp562_;
1902 				_tmp561_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1903 				_tmp562_ = _tmp561_;
1904 				vala_ccode_function_add_return (_tmp562_, NULL);
1905 			}
1906 			_tmp563_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1907 			_tmp564_ = _tmp563_;
1908 			vala_ccode_function_close (_tmp564_);
1909 			_vala_ccode_node_unref0 (free_error);
1910 			_vala_ccode_node_unref0 (return_error);
1911 		}
1912 		_tmp565_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1913 		_tmp566_ = _tmp565_;
1914 		_tmp567_ = vala_ccode_constant_new ("NULL");
1915 		_tmp568_ = _tmp567_;
1916 		_tmp569_ = vala_ccode_variable_declarator_new_zero ("_reply_message", (ValaCCodeExpression*) _tmp568_, NULL);
1917 		_tmp570_ = _tmp569_;
1918 		vala_ccode_function_add_declaration (_tmp566_, "GDBusMessage*", (ValaCCodeDeclarator*) _tmp570_, 0);
1919 		_vala_ccode_node_unref0 (_tmp570_);
1920 		_vala_ccode_node_unref0 (_tmp568_);
1921 		_tmp571_ = vala_ccode_identifier_new ("g_dbus_method_invocation_get_message");
1922 		_tmp572_ = _tmp571_;
1923 		_tmp573_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp572_);
1924 		_tmp574_ = _tmp573_;
1925 		_vala_ccode_node_unref0 (_tmp572_);
1926 		message_expr = _tmp574_;
1927 		_tmp575_ = message_expr;
1928 		_tmp576_ = vala_ccode_identifier_new ("invocation");
1929 		_tmp577_ = _tmp576_;
1930 		vala_ccode_function_call_add_argument (_tmp575_, (ValaCCodeExpression*) _tmp577_);
1931 		_vala_ccode_node_unref0 (_tmp577_);
1932 		_tmp578_ = vala_ccode_identifier_new ("g_dbus_message_new_method_reply");
1933 		_tmp579_ = _tmp578_;
1934 		_tmp580_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp579_);
1935 		_vala_ccode_node_unref0 (ccall);
1936 		ccall = _tmp580_;
1937 		_vala_ccode_node_unref0 (_tmp579_);
1938 		_tmp581_ = ccall;
1939 		_tmp582_ = message_expr;
1940 		vala_ccode_function_call_add_argument (_tmp581_, (ValaCCodeExpression*) _tmp582_);
1941 		_tmp583_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1942 		_tmp584_ = _tmp583_;
1943 		_tmp585_ = vala_ccode_identifier_new ("_reply_message");
1944 		_tmp586_ = _tmp585_;
1945 		_tmp587_ = ccall;
1946 		vala_ccode_function_add_assignment (_tmp584_, (ValaCCodeExpression*) _tmp586_, (ValaCCodeExpression*) _tmp587_);
1947 		_vala_ccode_node_unref0 (_tmp586_);
1948 		_tmp588_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1949 		_tmp589_ = _tmp588_;
1950 		_tmp590_ = vala_ccode_variable_declarator_new ("_reply", NULL, NULL);
1951 		_tmp591_ = _tmp590_;
1952 		vala_ccode_function_add_declaration (_tmp589_, "GVariant*", (ValaCCodeDeclarator*) _tmp591_, 0);
1953 		_vala_ccode_node_unref0 (_tmp591_);
1954 		_tmp592_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1955 		_tmp593_ = _tmp592_;
1956 		_tmp594_ = vala_ccode_variable_declarator_new ("_reply_builder", NULL, NULL);
1957 		_tmp595_ = _tmp594_;
1958 		vala_ccode_function_add_declaration (_tmp593_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp595_, 0);
1959 		_vala_ccode_node_unref0 (_tmp595_);
1960 		_tmp596_ = vala_ccode_identifier_new ("g_variant_builder_init");
1961 		_tmp597_ = _tmp596_;
1962 		_tmp598_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp597_);
1963 		_tmp599_ = _tmp598_;
1964 		_vala_ccode_node_unref0 (_tmp597_);
1965 		builder_init = _tmp599_;
1966 		_tmp600_ = builder_init;
1967 		_tmp601_ = vala_ccode_identifier_new ("_reply_builder");
1968 		_tmp602_ = _tmp601_;
1969 		_tmp603_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp602_);
1970 		_tmp604_ = _tmp603_;
1971 		vala_ccode_function_call_add_argument (_tmp600_, (ValaCCodeExpression*) _tmp604_);
1972 		_vala_ccode_node_unref0 (_tmp604_);
1973 		_vala_ccode_node_unref0 (_tmp602_);
1974 		_tmp605_ = builder_init;
1975 		_tmp606_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
1976 		_tmp607_ = _tmp606_;
1977 		vala_ccode_function_call_add_argument (_tmp605_, (ValaCCodeExpression*) _tmp607_);
1978 		_vala_ccode_node_unref0 (_tmp607_);
1979 		_tmp608_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1980 		_tmp609_ = _tmp608_;
1981 		_tmp610_ = builder_init;
1982 		vala_ccode_function_add_expression (_tmp609_, (ValaCCodeExpression*) _tmp610_);
1983 		if (uses_fd) {
1984 			ValaCCodeFunction* _tmp611_;
1985 			ValaCCodeFunction* _tmp612_;
1986 			ValaCCodeIdentifier* _tmp613_;
1987 			ValaCCodeIdentifier* _tmp614_;
1988 			ValaCCodeIdentifier* _tmp615_;
1989 			ValaCCodeIdentifier* _tmp616_;
1990 			ValaCCodeFunctionCall* _tmp617_;
1991 			ValaCCodeFunctionCall* _tmp618_;
1992 			_tmp611_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1993 			_tmp612_ = _tmp611_;
1994 			_tmp613_ = vala_ccode_identifier_new ("_fd_list");
1995 			_tmp614_ = _tmp613_;
1996 			_tmp615_ = vala_ccode_identifier_new ("g_unix_fd_list_new");
1997 			_tmp616_ = _tmp615_;
1998 			_tmp617_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp616_);
1999 			_tmp618_ = _tmp617_;
2000 			vala_ccode_function_add_assignment (_tmp612_, (ValaCCodeExpression*) _tmp614_, (ValaCCodeExpression*) _tmp618_);
2001 			_vala_ccode_node_unref0 (_tmp618_);
2002 			_vala_ccode_node_unref0 (_tmp616_);
2003 			_vala_ccode_node_unref0 (_tmp614_);
2004 		}
2005 		{
2006 			ValaList* _param_list = NULL;
2007 			ValaList* _tmp619_;
2008 			ValaList* _tmp620_;
2009 			gint _param_size = 0;
2010 			ValaList* _tmp621_;
2011 			gint _tmp622_;
2012 			gint _tmp623_;
2013 			gint _param_index = 0;
2014 			_tmp619_ = vala_callable_get_parameters ((ValaCallable*) m);
2015 			_tmp620_ = _vala_iterable_ref0 (_tmp619_);
2016 			_param_list = _tmp620_;
2017 			_tmp621_ = _param_list;
2018 			_tmp622_ = vala_collection_get_size ((ValaCollection*) _tmp621_);
2019 			_tmp623_ = _tmp622_;
2020 			_param_size = _tmp623_;
2021 			_param_index = -1;
2022 			while (TRUE) {
2023 				gint _tmp624_;
2024 				gint _tmp625_;
2025 				ValaParameter* param = NULL;
2026 				ValaList* _tmp626_;
2027 				gpointer _tmp627_;
2028 				ValaParameter* _tmp628_;
2029 				ValaParameterDirection _tmp629_;
2030 				ValaParameterDirection _tmp630_;
2031 				gchar* param_name = NULL;
2032 				ValaParameter* _tmp631_;
2033 				const gchar* _tmp632_;
2034 				const gchar* _tmp633_;
2035 				gchar* _tmp634_;
2036 				ValaDataType* owned_type = NULL;
2037 				ValaParameter* _tmp635_;
2038 				ValaDataType* _tmp636_;
2039 				ValaDataType* _tmp637_;
2040 				ValaDataType* _tmp638_;
2041 				ValaDataType* _tmp639_;
2042 				ValaCCodeFunction* _tmp640_;
2043 				ValaCCodeFunction* _tmp641_;
2044 				ValaDataType* _tmp642_;
2045 				gchar* _tmp643_;
2046 				gchar* _tmp644_;
2047 				const gchar* _tmp645_;
2048 				ValaParameter* _tmp646_;
2049 				ValaDataType* _tmp647_;
2050 				ValaDataType* _tmp648_;
2051 				ValaCCodeExpression* _tmp649_;
2052 				ValaCCodeExpression* _tmp650_;
2053 				ValaCCodeVariableDeclarator* _tmp651_;
2054 				ValaCCodeVariableDeclarator* _tmp652_;
2055 				ValaArrayType* array_type = NULL;
2056 				ValaParameter* _tmp653_;
2057 				ValaDataType* _tmp654_;
2058 				ValaDataType* _tmp655_;
2059 				ValaArrayType* _tmp656_;
2060 				ValaArrayType* _tmp657_;
2061 				ValaParameter* _tmp675_;
2062 				ValaDataType* _tmp676_;
2063 				ValaDataType* _tmp677_;
2064 				ValaCCodeIdentifier* _tmp678_;
2065 				ValaCCodeIdentifier* _tmp679_;
2066 				const gchar* _tmp680_;
2067 				ValaCCodeIdentifier* _tmp681_;
2068 				ValaCCodeIdentifier* _tmp682_;
2069 				ValaParameter* _tmp683_;
2070 				_param_index = _param_index + 1;
2071 				_tmp624_ = _param_index;
2072 				_tmp625_ = _param_size;
2073 				if (!(_tmp624_ < _tmp625_)) {
2074 					break;
2075 				}
2076 				_tmp626_ = _param_list;
2077 				_tmp627_ = vala_list_get (_tmp626_, _param_index);
2078 				param = (ValaParameter*) _tmp627_;
2079 				_tmp628_ = param;
2080 				_tmp629_ = vala_parameter_get_direction (_tmp628_);
2081 				_tmp630_ = _tmp629_;
2082 				if (_tmp630_ != VALA_PARAMETER_DIRECTION_OUT) {
2083 					_vala_code_node_unref0 (param);
2084 					continue;
2085 				}
2086 				_tmp631_ = param;
2087 				_tmp632_ = vala_symbol_get_name ((ValaSymbol*) _tmp631_);
2088 				_tmp633_ = _tmp632_;
2089 				_tmp634_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp633_);
2090 				param_name = _tmp634_;
2091 				_tmp635_ = param;
2092 				_tmp636_ = vala_variable_get_variable_type ((ValaVariable*) _tmp635_);
2093 				_tmp637_ = _tmp636_;
2094 				_tmp638_ = vala_data_type_copy (_tmp637_);
2095 				owned_type = _tmp638_;
2096 				_tmp639_ = owned_type;
2097 				vala_data_type_set_value_owned (_tmp639_, TRUE);
2098 				_tmp640_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2099 				_tmp641_ = _tmp640_;
2100 				_tmp642_ = owned_type;
2101 				_tmp643_ = vala_get_ccode_name ((ValaCodeNode*) _tmp642_);
2102 				_tmp644_ = _tmp643_;
2103 				_tmp645_ = param_name;
2104 				_tmp646_ = param;
2105 				_tmp647_ = vala_variable_get_variable_type ((ValaVariable*) _tmp646_);
2106 				_tmp648_ = _tmp647_;
2107 				_tmp649_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp648_, TRUE, FALSE);
2108 				_tmp650_ = _tmp649_;
2109 				_tmp651_ = vala_ccode_variable_declarator_new_zero (_tmp645_, _tmp650_, NULL);
2110 				_tmp652_ = _tmp651_;
2111 				vala_ccode_function_add_declaration (_tmp641_, _tmp644_, (ValaCCodeDeclarator*) _tmp652_, 0);
2112 				_vala_ccode_node_unref0 (_tmp652_);
2113 				_vala_ccode_node_unref0 (_tmp650_);
2114 				_g_free0 (_tmp644_);
2115 				_tmp653_ = param;
2116 				_tmp654_ = vala_variable_get_variable_type ((ValaVariable*) _tmp653_);
2117 				_tmp655_ = _tmp654_;
2118 				_tmp656_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp655_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp655_) : NULL);
2119 				array_type = _tmp656_;
2120 				_tmp657_ = array_type;
2121 				if (_tmp657_ != NULL) {
2122 					gchar* length_ctype = NULL;
2123 					ValaArrayType* _tmp658_;
2124 					gchar* _tmp659_;
2125 					_tmp658_ = array_type;
2126 					_tmp659_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp658_);
2127 					length_ctype = _tmp659_;
2128 					{
2129 						gint dim = 0;
2130 						dim = 1;
2131 						{
2132 							gboolean _tmp660_ = FALSE;
2133 							_tmp660_ = TRUE;
2134 							while (TRUE) {
2135 								ValaArrayType* _tmp662_;
2136 								gint _tmp663_;
2137 								gint _tmp664_;
2138 								gchar* length_cname = NULL;
2139 								ValaParameter* _tmp665_;
2140 								gchar* _tmp666_;
2141 								ValaCCodeFunction* _tmp667_;
2142 								ValaCCodeFunction* _tmp668_;
2143 								const gchar* _tmp669_;
2144 								const gchar* _tmp670_;
2145 								ValaCCodeConstant* _tmp671_;
2146 								ValaCCodeConstant* _tmp672_;
2147 								ValaCCodeVariableDeclarator* _tmp673_;
2148 								ValaCCodeVariableDeclarator* _tmp674_;
2149 								if (!_tmp660_) {
2150 									gint _tmp661_;
2151 									_tmp661_ = dim;
2152 									dim = _tmp661_ + 1;
2153 								}
2154 								_tmp660_ = FALSE;
2155 								_tmp662_ = array_type;
2156 								_tmp663_ = vala_array_type_get_rank (_tmp662_);
2157 								_tmp664_ = _tmp663_;
2158 								if (!(dim <= _tmp664_)) {
2159 									break;
2160 								}
2161 								_tmp665_ = param;
2162 								_tmp666_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp665_, dim);
2163 								length_cname = _tmp666_;
2164 								_tmp667_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2165 								_tmp668_ = _tmp667_;
2166 								_tmp669_ = length_ctype;
2167 								_tmp670_ = length_cname;
2168 								_tmp671_ = vala_ccode_constant_new ("0");
2169 								_tmp672_ = _tmp671_;
2170 								_tmp673_ = vala_ccode_variable_declarator_new_zero (_tmp670_, (ValaCCodeExpression*) _tmp672_, NULL);
2171 								_tmp674_ = _tmp673_;
2172 								vala_ccode_function_add_declaration (_tmp668_, _tmp669_, (ValaCCodeDeclarator*) _tmp674_, 0);
2173 								_vala_ccode_node_unref0 (_tmp674_);
2174 								_vala_ccode_node_unref0 (_tmp672_);
2175 								_g_free0 (length_cname);
2176 							}
2177 						}
2178 					}
2179 					_g_free0 (length_ctype);
2180 				}
2181 				_tmp675_ = param;
2182 				_tmp676_ = vala_variable_get_variable_type ((ValaVariable*) _tmp675_);
2183 				_tmp677_ = _tmp676_;
2184 				_tmp678_ = vala_ccode_identifier_new ("_reply_builder");
2185 				_tmp679_ = _tmp678_;
2186 				_tmp680_ = param_name;
2187 				_tmp681_ = vala_ccode_identifier_new (_tmp680_);
2188 				_tmp682_ = _tmp681_;
2189 				_tmp683_ = param;
2190 				vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp677_, (ValaCCodeExpression*) _tmp679_, (ValaCCodeExpression*) _tmp682_, (ValaSymbol*) _tmp683_);
2191 				_vala_ccode_node_unref0 (_tmp682_);
2192 				_vala_ccode_node_unref0 (_tmp679_);
2193 				_vala_code_node_unref0 (array_type);
2194 				_vala_code_node_unref0 (owned_type);
2195 				_g_free0 (param_name);
2196 				_vala_code_node_unref0 (param);
2197 			}
2198 			_vala_iterable_unref0 (_param_list);
2199 		}
2200 		_tmp684_ = vala_callable_get_return_type ((ValaCallable*) m);
2201 		_tmp685_ = _tmp684_;
2202 		if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp685_, VALA_TYPE_VOID_TYPE)) {
2203 			ValaDataType* _tmp686_;
2204 			ValaDataType* _tmp687_;
2205 			_tmp686_ = vala_callable_get_return_type ((ValaCallable*) m);
2206 			_tmp687_ = _tmp686_;
2207 			if (vala_data_type_is_real_non_null_struct_type (_tmp687_)) {
2208 				ValaCCodeFunction* _tmp688_;
2209 				ValaCCodeFunction* _tmp689_;
2210 				ValaDataType* _tmp690_;
2211 				ValaDataType* _tmp691_;
2212 				gchar* _tmp692_;
2213 				gchar* _tmp693_;
2214 				ValaDataType* _tmp694_;
2215 				ValaDataType* _tmp695_;
2216 				ValaCCodeExpression* _tmp696_;
2217 				ValaCCodeExpression* _tmp697_;
2218 				ValaCCodeVariableDeclarator* _tmp698_;
2219 				ValaCCodeVariableDeclarator* _tmp699_;
2220 				ValaDataType* _tmp700_;
2221 				ValaDataType* _tmp701_;
2222 				ValaCCodeIdentifier* _tmp702_;
2223 				ValaCCodeIdentifier* _tmp703_;
2224 				ValaCCodeIdentifier* _tmp704_;
2225 				ValaCCodeIdentifier* _tmp705_;
2226 				ValaDataType* _tmp706_;
2227 				ValaDataType* _tmp707_;
2228 				_tmp688_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2229 				_tmp689_ = _tmp688_;
2230 				_tmp690_ = vala_callable_get_return_type ((ValaCallable*) m);
2231 				_tmp691_ = _tmp690_;
2232 				_tmp692_ = vala_get_ccode_name ((ValaCodeNode*) _tmp691_);
2233 				_tmp693_ = _tmp692_;
2234 				_tmp694_ = vala_callable_get_return_type ((ValaCallable*) m);
2235 				_tmp695_ = _tmp694_;
2236 				_tmp696_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp695_, TRUE, FALSE);
2237 				_tmp697_ = _tmp696_;
2238 				_tmp698_ = vala_ccode_variable_declarator_new_zero ("result", _tmp697_, NULL);
2239 				_tmp699_ = _tmp698_;
2240 				vala_ccode_function_add_declaration (_tmp689_, _tmp693_, (ValaCCodeDeclarator*) _tmp699_, 0);
2241 				_vala_ccode_node_unref0 (_tmp699_);
2242 				_vala_ccode_node_unref0 (_tmp697_);
2243 				_g_free0 (_tmp693_);
2244 				_tmp700_ = vala_callable_get_return_type ((ValaCallable*) m);
2245 				_tmp701_ = _tmp700_;
2246 				_tmp702_ = vala_ccode_identifier_new ("_reply_builder");
2247 				_tmp703_ = _tmp702_;
2248 				_tmp704_ = vala_ccode_identifier_new ("result");
2249 				_tmp705_ = _tmp704_;
2250 				vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp701_, (ValaCCodeExpression*) _tmp703_, (ValaCCodeExpression*) _tmp705_, (ValaSymbol*) m);
2251 				_vala_ccode_node_unref0 (_tmp705_);
2252 				_vala_ccode_node_unref0 (_tmp703_);
2253 				_tmp706_ = vala_callable_get_return_type ((ValaCallable*) m);
2254 				_tmp707_ = _tmp706_;
2255 				if (vala_ccode_base_module_requires_destroy (_tmp707_)) {
2256 					ValaLocalVariable* local = NULL;
2257 					ValaDataType* _tmp708_;
2258 					ValaDataType* _tmp709_;
2259 					ValaLocalVariable* _tmp710_;
2260 					ValaCCodeFunction* _tmp711_;
2261 					ValaCCodeFunction* _tmp712_;
2262 					ValaLocalVariable* _tmp713_;
2263 					ValaCCodeExpression* _tmp714_;
2264 					ValaCCodeExpression* _tmp715_;
2265 					_tmp708_ = vala_callable_get_return_type ((ValaCallable*) m);
2266 					_tmp709_ = _tmp708_;
2267 					_tmp710_ = vala_local_variable_new (_tmp709_, ".result", NULL, NULL);
2268 					local = _tmp710_;
2269 					_tmp711_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2270 					_tmp712_ = _tmp711_;
2271 					_tmp713_ = local;
2272 					_tmp714_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp713_);
2273 					_tmp715_ = _tmp714_;
2274 					vala_ccode_function_add_expression (_tmp712_, _tmp715_);
2275 					_vala_ccode_node_unref0 (_tmp715_);
2276 					_vala_code_node_unref0 (local);
2277 				}
2278 			} else {
2279 				ValaCCodeFunction* _tmp716_;
2280 				ValaCCodeFunction* _tmp717_;
2281 				ValaDataType* _tmp718_;
2282 				ValaDataType* _tmp719_;
2283 				gchar* _tmp720_;
2284 				gchar* _tmp721_;
2285 				ValaCCodeVariableDeclarator* _tmp722_;
2286 				ValaCCodeVariableDeclarator* _tmp723_;
2287 				ValaArrayType* array_type = NULL;
2288 				ValaDataType* _tmp724_;
2289 				ValaDataType* _tmp725_;
2290 				ValaArrayType* _tmp726_;
2291 				ValaArrayType* _tmp727_;
2292 				ValaDataType* _tmp744_;
2293 				ValaDataType* _tmp745_;
2294 				ValaCCodeIdentifier* _tmp746_;
2295 				ValaCCodeIdentifier* _tmp747_;
2296 				ValaCCodeIdentifier* _tmp748_;
2297 				ValaCCodeIdentifier* _tmp749_;
2298 				ValaDataType* _tmp750_;
2299 				ValaDataType* _tmp751_;
2300 				_tmp716_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2301 				_tmp717_ = _tmp716_;
2302 				_tmp718_ = vala_callable_get_return_type ((ValaCallable*) m);
2303 				_tmp719_ = _tmp718_;
2304 				_tmp720_ = vala_get_ccode_name ((ValaCodeNode*) _tmp719_);
2305 				_tmp721_ = _tmp720_;
2306 				_tmp722_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
2307 				_tmp723_ = _tmp722_;
2308 				vala_ccode_function_add_declaration (_tmp717_, _tmp721_, (ValaCCodeDeclarator*) _tmp723_, 0);
2309 				_vala_ccode_node_unref0 (_tmp723_);
2310 				_g_free0 (_tmp721_);
2311 				_tmp724_ = vala_callable_get_return_type ((ValaCallable*) m);
2312 				_tmp725_ = _tmp724_;
2313 				_tmp726_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp725_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp725_) : NULL);
2314 				array_type = _tmp726_;
2315 				_tmp727_ = array_type;
2316 				if (_tmp727_ != NULL) {
2317 					gchar* length_ctype = NULL;
2318 					ValaArrayType* _tmp728_;
2319 					gchar* _tmp729_;
2320 					_tmp728_ = array_type;
2321 					_tmp729_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp728_);
2322 					length_ctype = _tmp729_;
2323 					{
2324 						gint dim = 0;
2325 						dim = 1;
2326 						{
2327 							gboolean _tmp730_ = FALSE;
2328 							_tmp730_ = TRUE;
2329 							while (TRUE) {
2330 								ValaArrayType* _tmp732_;
2331 								gint _tmp733_;
2332 								gint _tmp734_;
2333 								gchar* length_cname = NULL;
2334 								gchar* _tmp735_;
2335 								ValaCCodeFunction* _tmp736_;
2336 								ValaCCodeFunction* _tmp737_;
2337 								const gchar* _tmp738_;
2338 								const gchar* _tmp739_;
2339 								ValaCCodeConstant* _tmp740_;
2340 								ValaCCodeConstant* _tmp741_;
2341 								ValaCCodeVariableDeclarator* _tmp742_;
2342 								ValaCCodeVariableDeclarator* _tmp743_;
2343 								if (!_tmp730_) {
2344 									gint _tmp731_;
2345 									_tmp731_ = dim;
2346 									dim = _tmp731_ + 1;
2347 								}
2348 								_tmp730_ = FALSE;
2349 								_tmp732_ = array_type;
2350 								_tmp733_ = vala_array_type_get_rank (_tmp732_);
2351 								_tmp734_ = _tmp733_;
2352 								if (!(dim <= _tmp734_)) {
2353 									break;
2354 								}
2355 								_tmp735_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
2356 								length_cname = _tmp735_;
2357 								_tmp736_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2358 								_tmp737_ = _tmp736_;
2359 								_tmp738_ = length_ctype;
2360 								_tmp739_ = length_cname;
2361 								_tmp740_ = vala_ccode_constant_new ("0");
2362 								_tmp741_ = _tmp740_;
2363 								_tmp742_ = vala_ccode_variable_declarator_new_zero (_tmp739_, (ValaCCodeExpression*) _tmp741_, NULL);
2364 								_tmp743_ = _tmp742_;
2365 								vala_ccode_function_add_declaration (_tmp737_, _tmp738_, (ValaCCodeDeclarator*) _tmp743_, 0);
2366 								_vala_ccode_node_unref0 (_tmp743_);
2367 								_vala_ccode_node_unref0 (_tmp741_);
2368 								_g_free0 (length_cname);
2369 							}
2370 						}
2371 					}
2372 					_g_free0 (length_ctype);
2373 				}
2374 				_tmp744_ = vala_callable_get_return_type ((ValaCallable*) m);
2375 				_tmp745_ = _tmp744_;
2376 				_tmp746_ = vala_ccode_identifier_new ("_reply_builder");
2377 				_tmp747_ = _tmp746_;
2378 				_tmp748_ = vala_ccode_identifier_new ("result");
2379 				_tmp749_ = _tmp748_;
2380 				vala_gd_bus_module_send_dbus_value ((ValaGDBusModule*) self, _tmp745_, (ValaCCodeExpression*) _tmp747_, (ValaCCodeExpression*) _tmp749_, (ValaSymbol*) m);
2381 				_vala_ccode_node_unref0 (_tmp749_);
2382 				_vala_ccode_node_unref0 (_tmp747_);
2383 				_tmp750_ = vala_callable_get_return_type ((ValaCallable*) m);
2384 				_tmp751_ = _tmp750_;
2385 				if (vala_ccode_base_module_requires_destroy (_tmp751_)) {
2386 					ValaLocalVariable* local = NULL;
2387 					ValaDataType* _tmp752_;
2388 					ValaDataType* _tmp753_;
2389 					ValaLocalVariable* _tmp754_;
2390 					ValaCCodeFunction* _tmp755_;
2391 					ValaCCodeFunction* _tmp756_;
2392 					ValaLocalVariable* _tmp757_;
2393 					ValaCCodeExpression* _tmp758_;
2394 					ValaCCodeExpression* _tmp759_;
2395 					_tmp752_ = vala_callable_get_return_type ((ValaCallable*) m);
2396 					_tmp753_ = _tmp752_;
2397 					_tmp754_ = vala_local_variable_new (_tmp753_, ".result", NULL, NULL);
2398 					local = _tmp754_;
2399 					_tmp755_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2400 					_tmp756_ = _tmp755_;
2401 					_tmp757_ = local;
2402 					_tmp758_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp757_);
2403 					_tmp759_ = _tmp758_;
2404 					vala_ccode_function_add_expression (_tmp756_, _tmp759_);
2405 					_vala_ccode_node_unref0 (_tmp759_);
2406 					_vala_code_node_unref0 (local);
2407 				}
2408 				_vala_code_node_unref0 (array_type);
2409 			}
2410 		}
2411 		_tmp760_ = vala_ccode_identifier_new ("g_variant_builder_end");
2412 		_tmp761_ = _tmp760_;
2413 		_tmp762_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp761_);
2414 		_tmp763_ = _tmp762_;
2415 		_vala_ccode_node_unref0 (_tmp761_);
2416 		builder_end = _tmp763_;
2417 		_tmp764_ = builder_end;
2418 		_tmp765_ = vala_ccode_identifier_new ("_reply_builder");
2419 		_tmp766_ = _tmp765_;
2420 		_tmp767_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp766_);
2421 		_tmp768_ = _tmp767_;
2422 		vala_ccode_function_call_add_argument (_tmp764_, (ValaCCodeExpression*) _tmp768_);
2423 		_vala_ccode_node_unref0 (_tmp768_);
2424 		_vala_ccode_node_unref0 (_tmp766_);
2425 		_tmp769_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2426 		_tmp770_ = _tmp769_;
2427 		_tmp771_ = vala_ccode_identifier_new ("_reply");
2428 		_tmp772_ = _tmp771_;
2429 		_tmp773_ = builder_end;
2430 		vala_ccode_function_add_assignment (_tmp770_, (ValaCCodeExpression*) _tmp772_, (ValaCCodeExpression*) _tmp773_);
2431 		_vala_ccode_node_unref0 (_tmp772_);
2432 		_tmp774_ = vala_ccode_identifier_new ("g_dbus_message_set_body");
2433 		_tmp775_ = _tmp774_;
2434 		_tmp776_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp775_);
2435 		_tmp777_ = _tmp776_;
2436 		_vala_ccode_node_unref0 (_tmp775_);
2437 		set_body = _tmp777_;
2438 		_tmp778_ = set_body;
2439 		_tmp779_ = vala_ccode_identifier_new ("_reply_message");
2440 		_tmp780_ = _tmp779_;
2441 		vala_ccode_function_call_add_argument (_tmp778_, (ValaCCodeExpression*) _tmp780_);
2442 		_vala_ccode_node_unref0 (_tmp780_);
2443 		_tmp781_ = set_body;
2444 		_tmp782_ = vala_ccode_identifier_new ("_reply");
2445 		_tmp783_ = _tmp782_;
2446 		vala_ccode_function_call_add_argument (_tmp781_, (ValaCCodeExpression*) _tmp783_);
2447 		_vala_ccode_node_unref0 (_tmp783_);
2448 		_tmp784_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2449 		_tmp785_ = _tmp784_;
2450 		_tmp786_ = set_body;
2451 		vala_ccode_function_add_expression (_tmp785_, (ValaCCodeExpression*) _tmp786_);
2452 		if (uses_fd) {
2453 			ValaCCodeIdentifier* _tmp787_;
2454 			ValaCCodeIdentifier* _tmp788_;
2455 			ValaCCodeFunctionCall* _tmp789_;
2456 			ValaCCodeFunctionCall* _tmp790_;
2457 			ValaCCodeIdentifier* _tmp791_;
2458 			ValaCCodeIdentifier* _tmp792_;
2459 			ValaCCodeFunctionCall* _tmp793_;
2460 			ValaCCodeIdentifier* _tmp794_;
2461 			ValaCCodeIdentifier* _tmp795_;
2462 			ValaCCodeFunction* _tmp796_;
2463 			ValaCCodeFunction* _tmp797_;
2464 			ValaCCodeFunctionCall* _tmp798_;
2465 			ValaCCodeIdentifier* _tmp799_;
2466 			ValaCCodeIdentifier* _tmp800_;
2467 			ValaCCodeFunctionCall* _tmp801_;
2468 			ValaCCodeFunctionCall* _tmp802_;
2469 			ValaCCodeIdentifier* _tmp803_;
2470 			ValaCCodeIdentifier* _tmp804_;
2471 			ValaCCodeFunction* _tmp805_;
2472 			ValaCCodeFunction* _tmp806_;
2473 			ValaCCodeFunctionCall* _tmp807_;
2474 			_tmp787_ = vala_ccode_identifier_new ("g_dbus_message_set_unix_fd_list");
2475 			_tmp788_ = _tmp787_;
2476 			_tmp789_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp788_);
2477 			_vala_ccode_node_unref0 (ccall);
2478 			ccall = _tmp789_;
2479 			_vala_ccode_node_unref0 (_tmp788_);
2480 			_tmp790_ = ccall;
2481 			_tmp791_ = vala_ccode_identifier_new ("_reply_message");
2482 			_tmp792_ = _tmp791_;
2483 			vala_ccode_function_call_add_argument (_tmp790_, (ValaCCodeExpression*) _tmp792_);
2484 			_vala_ccode_node_unref0 (_tmp792_);
2485 			_tmp793_ = ccall;
2486 			_tmp794_ = vala_ccode_identifier_new ("_fd_list");
2487 			_tmp795_ = _tmp794_;
2488 			vala_ccode_function_call_add_argument (_tmp793_, (ValaCCodeExpression*) _tmp795_);
2489 			_vala_ccode_node_unref0 (_tmp795_);
2490 			_tmp796_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2491 			_tmp797_ = _tmp796_;
2492 			_tmp798_ = ccall;
2493 			vala_ccode_function_add_expression (_tmp797_, (ValaCCodeExpression*) _tmp798_);
2494 			_tmp799_ = vala_ccode_identifier_new ("g_object_unref");
2495 			_tmp800_ = _tmp799_;
2496 			_tmp801_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp800_);
2497 			_vala_ccode_node_unref0 (ccall);
2498 			ccall = _tmp801_;
2499 			_vala_ccode_node_unref0 (_tmp800_);
2500 			_tmp802_ = ccall;
2501 			_tmp803_ = vala_ccode_identifier_new ("_fd_list");
2502 			_tmp804_ = _tmp803_;
2503 			vala_ccode_function_call_add_argument (_tmp802_, (ValaCCodeExpression*) _tmp804_);
2504 			_vala_ccode_node_unref0 (_tmp804_);
2505 			_tmp805_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2506 			_tmp806_ = _tmp805_;
2507 			_tmp807_ = ccall;
2508 			vala_ccode_function_add_expression (_tmp806_, (ValaCCodeExpression*) _tmp807_);
2509 		}
2510 		_vala_ccode_node_unref0 (set_body);
2511 		_vala_ccode_node_unref0 (builder_end);
2512 		_vala_ccode_node_unref0 (builder_init);
2513 		_vala_ccode_node_unref0 (message_expr);
2514 	} else {
2515 		ValaCCodeFunction* _tmp808_;
2516 		ValaCCodeFunction* _tmp809_;
2517 		ValaCCodeFunctionCall* _tmp810_;
2518 		_tmp808_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2519 		_tmp809_ = _tmp808_;
2520 		_tmp810_ = ccall;
2521 		vala_ccode_function_add_expression (_tmp809_, (ValaCCodeExpression*) _tmp810_);
2522 	}
2523 	if (!no_reply) {
2524 		gboolean _tmp812_ = FALSE;
2525 		gboolean _tmp813_;
2526 		gboolean _tmp814_;
2527 		_tmp813_ = vala_method_get_coroutine (m);
2528 		_tmp814_ = _tmp813_;
2529 		if (!_tmp814_) {
2530 			_tmp812_ = TRUE;
2531 		} else {
2532 			_tmp812_ = ready;
2533 		}
2534 		_tmp811_ = _tmp812_;
2535 	} else {
2536 		_tmp811_ = FALSE;
2537 	}
2538 	if (_tmp811_) {
2539 		ValaCCodeFunctionCall* return_value = NULL;
2540 		ValaCCodeIdentifier* _tmp815_;
2541 		ValaCCodeIdentifier* _tmp816_;
2542 		ValaCCodeFunctionCall* _tmp817_;
2543 		ValaCCodeFunctionCall* _tmp818_;
2544 		ValaCCodeFunctionCall* _tmp819_;
2545 		ValaCCodeFunctionCall* _tmp820_;
2546 		ValaCCodeFunctionCall* _tmp821_;
2547 		ValaCCodeIdentifier* _tmp822_;
2548 		ValaCCodeIdentifier* _tmp823_;
2549 		ValaCCodeFunctionCall* _tmp824_;
2550 		ValaCCodeConstant* _tmp825_;
2551 		ValaCCodeConstant* _tmp826_;
2552 		ValaCCodeFunctionCall* _tmp827_;
2553 		ValaCCodeConstant* _tmp828_;
2554 		ValaCCodeConstant* _tmp829_;
2555 		ValaCCodeFunctionCall* _tmp830_;
2556 		ValaCCodeConstant* _tmp831_;
2557 		ValaCCodeConstant* _tmp832_;
2558 		ValaCCodeFunction* _tmp833_;
2559 		ValaCCodeFunction* _tmp834_;
2560 		ValaCCodeFunctionCall* _tmp835_;
2561 		ValaCCodeFunctionCall* unref_call = NULL;
2562 		ValaCCodeIdentifier* _tmp836_;
2563 		ValaCCodeIdentifier* _tmp837_;
2564 		ValaCCodeFunctionCall* _tmp838_;
2565 		ValaCCodeFunctionCall* _tmp839_;
2566 		ValaCCodeFunctionCall* _tmp840_;
2567 		ValaCCodeIdentifier* _tmp841_;
2568 		ValaCCodeIdentifier* _tmp842_;
2569 		ValaCCodeFunction* _tmp843_;
2570 		ValaCCodeFunction* _tmp844_;
2571 		ValaCCodeFunctionCall* _tmp845_;
2572 		ValaCCodeIdentifier* _tmp846_;
2573 		ValaCCodeIdentifier* _tmp847_;
2574 		ValaCCodeFunctionCall* _tmp848_;
2575 		ValaCCodeFunctionCall* _tmp849_;
2576 		ValaCCodeIdentifier* _tmp850_;
2577 		ValaCCodeIdentifier* _tmp851_;
2578 		ValaCCodeFunction* _tmp852_;
2579 		ValaCCodeFunction* _tmp853_;
2580 		ValaCCodeFunctionCall* _tmp854_;
2581 		_tmp815_ = vala_ccode_identifier_new ("g_dbus_connection_send_message");
2582 		_tmp816_ = _tmp815_;
2583 		_tmp817_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp816_);
2584 		_tmp818_ = _tmp817_;
2585 		_vala_ccode_node_unref0 (_tmp816_);
2586 		return_value = _tmp818_;
2587 		_tmp819_ = return_value;
2588 		_tmp820_ = connection;
2589 		vala_ccode_function_call_add_argument (_tmp819_, (ValaCCodeExpression*) _tmp820_);
2590 		_tmp821_ = return_value;
2591 		_tmp822_ = vala_ccode_identifier_new ("_reply_message");
2592 		_tmp823_ = _tmp822_;
2593 		vala_ccode_function_call_add_argument (_tmp821_, (ValaCCodeExpression*) _tmp823_);
2594 		_vala_ccode_node_unref0 (_tmp823_);
2595 		_tmp824_ = return_value;
2596 		_tmp825_ = vala_ccode_constant_new ("G_DBUS_SEND_MESSAGE_FLAGS_NONE");
2597 		_tmp826_ = _tmp825_;
2598 		vala_ccode_function_call_add_argument (_tmp824_, (ValaCCodeExpression*) _tmp826_);
2599 		_vala_ccode_node_unref0 (_tmp826_);
2600 		_tmp827_ = return_value;
2601 		_tmp828_ = vala_ccode_constant_new ("NULL");
2602 		_tmp829_ = _tmp828_;
2603 		vala_ccode_function_call_add_argument (_tmp827_, (ValaCCodeExpression*) _tmp829_);
2604 		_vala_ccode_node_unref0 (_tmp829_);
2605 		_tmp830_ = return_value;
2606 		_tmp831_ = vala_ccode_constant_new ("NULL");
2607 		_tmp832_ = _tmp831_;
2608 		vala_ccode_function_call_add_argument (_tmp830_, (ValaCCodeExpression*) _tmp832_);
2609 		_vala_ccode_node_unref0 (_tmp832_);
2610 		_tmp833_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2611 		_tmp834_ = _tmp833_;
2612 		_tmp835_ = return_value;
2613 		vala_ccode_function_add_expression (_tmp834_, (ValaCCodeExpression*) _tmp835_);
2614 		_tmp836_ = vala_ccode_identifier_new ("g_object_unref");
2615 		_tmp837_ = _tmp836_;
2616 		_tmp838_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp837_);
2617 		_tmp839_ = _tmp838_;
2618 		_vala_ccode_node_unref0 (_tmp837_);
2619 		unref_call = _tmp839_;
2620 		_tmp840_ = unref_call;
2621 		_tmp841_ = vala_ccode_identifier_new ("invocation");
2622 		_tmp842_ = _tmp841_;
2623 		vala_ccode_function_call_add_argument (_tmp840_, (ValaCCodeExpression*) _tmp842_);
2624 		_vala_ccode_node_unref0 (_tmp842_);
2625 		_tmp843_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2626 		_tmp844_ = _tmp843_;
2627 		_tmp845_ = unref_call;
2628 		vala_ccode_function_add_expression (_tmp844_, (ValaCCodeExpression*) _tmp845_);
2629 		_tmp846_ = vala_ccode_identifier_new ("g_object_unref");
2630 		_tmp847_ = _tmp846_;
2631 		_tmp848_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp847_);
2632 		_vala_ccode_node_unref0 (unref_call);
2633 		unref_call = _tmp848_;
2634 		_vala_ccode_node_unref0 (_tmp847_);
2635 		_tmp849_ = unref_call;
2636 		_tmp850_ = vala_ccode_identifier_new ("_reply_message");
2637 		_tmp851_ = _tmp850_;
2638 		vala_ccode_function_call_add_argument (_tmp849_, (ValaCCodeExpression*) _tmp851_);
2639 		_vala_ccode_node_unref0 (_tmp851_);
2640 		_tmp852_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2641 		_tmp853_ = _tmp852_;
2642 		_tmp854_ = unref_call;
2643 		vala_ccode_function_add_expression (_tmp853_, (ValaCCodeExpression*) _tmp854_);
2644 		_vala_ccode_node_unref0 (unref_call);
2645 		_vala_ccode_node_unref0 (return_value);
2646 	}
2647 	if (need_goto_label) {
2648 		ValaCCodeFunction* _tmp855_;
2649 		ValaCCodeFunction* _tmp856_;
2650 		_tmp855_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2651 		_tmp856_ = _tmp855_;
2652 		vala_ccode_function_add_label (_tmp856_, "_error");
2653 	}
2654 	{
2655 		ValaList* _param_list = NULL;
2656 		ValaList* _tmp857_;
2657 		ValaList* _tmp858_;
2658 		gint _param_size = 0;
2659 		ValaList* _tmp859_;
2660 		gint _tmp860_;
2661 		gint _tmp861_;
2662 		gint _param_index = 0;
2663 		_tmp857_ = vala_callable_get_parameters ((ValaCallable*) m);
2664 		_tmp858_ = _vala_iterable_ref0 (_tmp857_);
2665 		_param_list = _tmp858_;
2666 		_tmp859_ = _param_list;
2667 		_tmp860_ = vala_collection_get_size ((ValaCollection*) _tmp859_);
2668 		_tmp861_ = _tmp860_;
2669 		_param_size = _tmp861_;
2670 		_param_index = -1;
2671 		while (TRUE) {
2672 			gint _tmp862_;
2673 			gint _tmp863_;
2674 			ValaParameter* param = NULL;
2675 			ValaList* _tmp864_;
2676 			gpointer _tmp865_;
2677 			gboolean _tmp866_ = FALSE;
2678 			gboolean _tmp867_ = FALSE;
2679 			ValaParameter* _tmp868_;
2680 			ValaParameterDirection _tmp869_;
2681 			ValaParameterDirection _tmp870_;
2682 			_param_index = _param_index + 1;
2683 			_tmp862_ = _param_index;
2684 			_tmp863_ = _param_size;
2685 			if (!(_tmp862_ < _tmp863_)) {
2686 				break;
2687 			}
2688 			_tmp864_ = _param_list;
2689 			_tmp865_ = vala_list_get (_tmp864_, _param_index);
2690 			param = (ValaParameter*) _tmp865_;
2691 			_tmp868_ = param;
2692 			_tmp869_ = vala_parameter_get_direction (_tmp868_);
2693 			_tmp870_ = _tmp869_;
2694 			if (_tmp870_ == VALA_PARAMETER_DIRECTION_IN) {
2695 				gboolean _tmp871_ = FALSE;
2696 				ValaCCodeIdentifier* _tmp872_;
2697 				_tmp872_ = ready_data_expr;
2698 				if (_tmp872_ == NULL) {
2699 					_tmp871_ = TRUE;
2700 				} else {
2701 					_tmp871_ = ready;
2702 				}
2703 				_tmp867_ = _tmp871_;
2704 			} else {
2705 				_tmp867_ = FALSE;
2706 			}
2707 			if (_tmp867_) {
2708 				_tmp866_ = TRUE;
2709 			} else {
2710 				gboolean _tmp873_ = FALSE;
2711 				gboolean _tmp874_ = FALSE;
2712 				ValaParameter* _tmp875_;
2713 				ValaParameterDirection _tmp876_;
2714 				ValaParameterDirection _tmp877_;
2715 				_tmp875_ = param;
2716 				_tmp876_ = vala_parameter_get_direction (_tmp875_);
2717 				_tmp877_ = _tmp876_;
2718 				if (_tmp877_ == VALA_PARAMETER_DIRECTION_OUT) {
2719 					_tmp874_ = !no_reply;
2720 				} else {
2721 					_tmp874_ = FALSE;
2722 				}
2723 				if (_tmp874_) {
2724 					gboolean _tmp878_ = FALSE;
2725 					gboolean _tmp879_;
2726 					gboolean _tmp880_;
2727 					_tmp879_ = vala_method_get_coroutine (m);
2728 					_tmp880_ = _tmp879_;
2729 					if (!_tmp880_) {
2730 						_tmp878_ = TRUE;
2731 					} else {
2732 						_tmp878_ = ready;
2733 					}
2734 					_tmp873_ = _tmp878_;
2735 				} else {
2736 					_tmp873_ = FALSE;
2737 				}
2738 				_tmp866_ = _tmp873_;
2739 			}
2740 			if (_tmp866_) {
2741 				gboolean _tmp881_ = FALSE;
2742 				ValaParameter* _tmp882_;
2743 				ValaDataType* _tmp883_;
2744 				ValaDataType* _tmp884_;
2745 				gboolean _tmp892_ = FALSE;
2746 				ValaParameter* _tmp893_;
2747 				ValaDataType* _tmp894_;
2748 				ValaDataType* _tmp895_;
2749 				ValaDataType* owned_type = NULL;
2750 				ValaParameter* _tmp903_;
2751 				ValaDataType* _tmp904_;
2752 				ValaDataType* _tmp905_;
2753 				ValaDataType* _tmp906_;
2754 				ValaDataType* _tmp907_;
2755 				ValaDataType* _tmp908_;
2756 				_tmp882_ = param;
2757 				_tmp883_ = vala_variable_get_variable_type ((ValaVariable*) _tmp882_);
2758 				_tmp884_ = _tmp883_;
2759 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp884_, VALA_TYPE_OBJECT_TYPE)) {
2760 					ValaParameter* _tmp885_;
2761 					ValaDataType* _tmp886_;
2762 					ValaDataType* _tmp887_;
2763 					ValaTypeSymbol* _tmp888_;
2764 					ValaTypeSymbol* _tmp889_;
2765 					gchar* _tmp890_;
2766 					gchar* _tmp891_;
2767 					_tmp885_ = param;
2768 					_tmp886_ = vala_variable_get_variable_type ((ValaVariable*) _tmp885_);
2769 					_tmp887_ = _tmp886_;
2770 					_tmp888_ = vala_data_type_get_type_symbol (_tmp887_);
2771 					_tmp889_ = _tmp888_;
2772 					_tmp890_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp889_);
2773 					_tmp891_ = _tmp890_;
2774 					_tmp881_ = g_strcmp0 (_tmp891_, "GLib.Cancellable") == 0;
2775 					_g_free0 (_tmp891_);
2776 				} else {
2777 					_tmp881_ = FALSE;
2778 				}
2779 				if (_tmp881_) {
2780 					_vala_code_node_unref0 (param);
2781 					continue;
2782 				}
2783 				_tmp893_ = param;
2784 				_tmp894_ = vala_variable_get_variable_type ((ValaVariable*) _tmp893_);
2785 				_tmp895_ = _tmp894_;
2786 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp895_, VALA_TYPE_OBJECT_TYPE)) {
2787 					ValaParameter* _tmp896_;
2788 					ValaDataType* _tmp897_;
2789 					ValaDataType* _tmp898_;
2790 					ValaTypeSymbol* _tmp899_;
2791 					ValaTypeSymbol* _tmp900_;
2792 					gchar* _tmp901_;
2793 					gchar* _tmp902_;
2794 					_tmp896_ = param;
2795 					_tmp897_ = vala_variable_get_variable_type ((ValaVariable*) _tmp896_);
2796 					_tmp898_ = _tmp897_;
2797 					_tmp899_ = vala_data_type_get_type_symbol (_tmp898_);
2798 					_tmp900_ = _tmp899_;
2799 					_tmp901_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp900_);
2800 					_tmp902_ = _tmp901_;
2801 					_tmp892_ = g_strcmp0 (_tmp902_, "GLib.BusName") == 0;
2802 					_g_free0 (_tmp902_);
2803 				} else {
2804 					_tmp892_ = FALSE;
2805 				}
2806 				if (_tmp892_) {
2807 					_vala_code_node_unref0 (param);
2808 					continue;
2809 				}
2810 				_tmp903_ = param;
2811 				_tmp904_ = vala_variable_get_variable_type ((ValaVariable*) _tmp903_);
2812 				_tmp905_ = _tmp904_;
2813 				_tmp906_ = vala_data_type_copy (_tmp905_);
2814 				owned_type = _tmp906_;
2815 				_tmp907_ = owned_type;
2816 				vala_data_type_set_value_owned (_tmp907_, TRUE);
2817 				_tmp908_ = owned_type;
2818 				if (vala_ccode_base_module_requires_destroy (_tmp908_)) {
2819 					gboolean _tmp909_ = FALSE;
2820 					ValaCCodeIdentifier* _tmp910_;
2821 					_tmp910_ = ready_data_expr;
2822 					if (_tmp910_ != NULL) {
2823 						ValaParameter* _tmp911_;
2824 						ValaParameterDirection _tmp912_;
2825 						ValaParameterDirection _tmp913_;
2826 						_tmp911_ = param;
2827 						_tmp912_ = vala_parameter_get_direction (_tmp911_);
2828 						_tmp913_ = _tmp912_;
2829 						_tmp909_ = _tmp913_ == VALA_PARAMETER_DIRECTION_IN;
2830 					} else {
2831 						_tmp909_ = FALSE;
2832 					}
2833 					if (_tmp909_) {
2834 						ValaGLibValue* target = NULL;
2835 						ValaDataType* _tmp914_;
2836 						ValaCCodeIdentifier* _tmp915_;
2837 						ValaParameter* _tmp916_;
2838 						const gchar* _tmp917_;
2839 						const gchar* _tmp918_;
2840 						ValaCCodeMemberAccess* _tmp919_;
2841 						ValaCCodeMemberAccess* _tmp920_;
2842 						ValaGLibValue* _tmp921_;
2843 						ValaGLibValue* _tmp922_;
2844 						ValaArrayType* array_type = NULL;
2845 						ValaDataType* _tmp923_;
2846 						ValaArrayType* _tmp924_;
2847 						ValaArrayType* _tmp925_;
2848 						ValaCCodeFunction* _tmp938_;
2849 						ValaCCodeFunction* _tmp939_;
2850 						ValaGLibValue* _tmp940_;
2851 						ValaCCodeExpression* _tmp941_;
2852 						ValaCCodeExpression* _tmp942_;
2853 						_tmp914_ = owned_type;
2854 						_tmp915_ = ready_data_expr;
2855 						_tmp916_ = param;
2856 						_tmp917_ = vala_symbol_get_name ((ValaSymbol*) _tmp916_);
2857 						_tmp918_ = _tmp917_;
2858 						_tmp919_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp915_, _tmp918_);
2859 						_tmp920_ = _tmp919_;
2860 						_tmp921_ = vala_glib_value_new (_tmp914_, (ValaCCodeExpression*) _tmp920_, TRUE);
2861 						_tmp922_ = _tmp921_;
2862 						_vala_ccode_node_unref0 (_tmp920_);
2863 						target = _tmp922_;
2864 						_tmp923_ = owned_type;
2865 						_tmp924_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp923_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp923_) : NULL);
2866 						array_type = _tmp924_;
2867 						_tmp925_ = array_type;
2868 						if (_tmp925_ != NULL) {
2869 							{
2870 								gint dim = 0;
2871 								dim = 1;
2872 								{
2873 									gboolean _tmp926_ = FALSE;
2874 									_tmp926_ = TRUE;
2875 									while (TRUE) {
2876 										ValaArrayType* _tmp928_;
2877 										gint _tmp929_;
2878 										gint _tmp930_;
2879 										gchar* length_cname = NULL;
2880 										ValaParameter* _tmp931_;
2881 										gchar* _tmp932_;
2882 										ValaGLibValue* _tmp933_;
2883 										ValaCCodeIdentifier* _tmp934_;
2884 										const gchar* _tmp935_;
2885 										ValaCCodeMemberAccess* _tmp936_;
2886 										ValaCCodeMemberAccess* _tmp937_;
2887 										if (!_tmp926_) {
2888 											gint _tmp927_;
2889 											_tmp927_ = dim;
2890 											dim = _tmp927_ + 1;
2891 										}
2892 										_tmp926_ = FALSE;
2893 										_tmp928_ = array_type;
2894 										_tmp929_ = vala_array_type_get_rank (_tmp928_);
2895 										_tmp930_ = _tmp929_;
2896 										if (!(dim <= _tmp930_)) {
2897 											break;
2898 										}
2899 										_tmp931_ = param;
2900 										_tmp932_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp931_, dim);
2901 										length_cname = _tmp932_;
2902 										_tmp933_ = target;
2903 										_tmp934_ = ready_data_expr;
2904 										_tmp935_ = length_cname;
2905 										_tmp936_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp934_, _tmp935_);
2906 										_tmp937_ = _tmp936_;
2907 										vala_glib_value_append_array_length_cvalue (_tmp933_, (ValaCCodeExpression*) _tmp937_);
2908 										_vala_ccode_node_unref0 (_tmp937_);
2909 										_g_free0 (length_cname);
2910 									}
2911 								}
2912 							}
2913 						}
2914 						_tmp938_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2915 						_tmp939_ = _tmp938_;
2916 						_tmp940_ = target;
2917 						_tmp941_ = vala_ccode_base_module_destroy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp940_, FALSE);
2918 						_tmp942_ = _tmp941_;
2919 						vala_ccode_function_add_expression (_tmp939_, _tmp942_);
2920 						_vala_ccode_node_unref0 (_tmp942_);
2921 						_vala_code_node_unref0 (array_type);
2922 						_vala_target_value_unref0 (target);
2923 					} else {
2924 						ValaLocalVariable* local = NULL;
2925 						ValaDataType* _tmp943_;
2926 						ValaParameter* _tmp944_;
2927 						const gchar* _tmp945_;
2928 						const gchar* _tmp946_;
2929 						gchar* _tmp947_;
2930 						gchar* _tmp948_;
2931 						ValaLocalVariable* _tmp949_;
2932 						ValaLocalVariable* _tmp950_;
2933 						ValaCCodeFunction* _tmp951_;
2934 						ValaCCodeFunction* _tmp952_;
2935 						ValaLocalVariable* _tmp953_;
2936 						ValaCCodeExpression* _tmp954_;
2937 						ValaCCodeExpression* _tmp955_;
2938 						_tmp943_ = owned_type;
2939 						_tmp944_ = param;
2940 						_tmp945_ = vala_symbol_get_name ((ValaSymbol*) _tmp944_);
2941 						_tmp946_ = _tmp945_;
2942 						_tmp947_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp946_);
2943 						_tmp948_ = _tmp947_;
2944 						_tmp949_ = vala_local_variable_new (_tmp943_, _tmp948_, NULL, NULL);
2945 						_tmp950_ = _tmp949_;
2946 						_g_free0 (_tmp948_);
2947 						local = _tmp950_;
2948 						_tmp951_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2949 						_tmp952_ = _tmp951_;
2950 						_tmp953_ = local;
2951 						_tmp954_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp953_);
2952 						_tmp955_ = _tmp954_;
2953 						vala_ccode_function_add_expression (_tmp952_, _tmp955_);
2954 						_vala_ccode_node_unref0 (_tmp955_);
2955 						_vala_code_node_unref0 (local);
2956 					}
2957 				}
2958 				_vala_code_node_unref0 (owned_type);
2959 			}
2960 			_vala_code_node_unref0 (param);
2961 		}
2962 		_vala_iterable_unref0 (_param_list);
2963 	}
2964 	if (ready) {
2965 		ValaCCodeFunctionCall* freecall = NULL;
2966 		ValaCCodeIdentifier* _tmp956_;
2967 		ValaCCodeIdentifier* _tmp957_;
2968 		ValaCCodeFunctionCall* _tmp958_;
2969 		ValaCCodeFunctionCall* _tmp959_;
2970 		ValaCCodeFunctionCall* _tmp960_;
2971 		const gchar* _tmp961_;
2972 		ValaCCodeIdentifier* _tmp962_;
2973 		ValaCCodeIdentifier* _tmp963_;
2974 		ValaCCodeFunctionCall* _tmp964_;
2975 		ValaCCodeIdentifier* _tmp965_;
2976 		ValaCCodeFunction* _tmp966_;
2977 		ValaCCodeFunction* _tmp967_;
2978 		ValaCCodeFunctionCall* _tmp968_;
2979 		_tmp956_ = vala_ccode_identifier_new ("g_slice_free");
2980 		_tmp957_ = _tmp956_;
2981 		_tmp958_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp957_);
2982 		_tmp959_ = _tmp958_;
2983 		_vala_ccode_node_unref0 (_tmp957_);
2984 		freecall = _tmp959_;
2985 		_tmp960_ = freecall;
2986 		_tmp961_ = ready_data_struct_name;
2987 		_tmp962_ = vala_ccode_identifier_new (_tmp961_);
2988 		_tmp963_ = _tmp962_;
2989 		vala_ccode_function_call_add_argument (_tmp960_, (ValaCCodeExpression*) _tmp963_);
2990 		_vala_ccode_node_unref0 (_tmp963_);
2991 		_tmp964_ = freecall;
2992 		_tmp965_ = ready_data_expr;
2993 		vala_ccode_function_call_add_argument (_tmp964_, (ValaCCodeExpression*) _tmp965_);
2994 		_tmp966_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2995 		_tmp967_ = _tmp966_;
2996 		_tmp968_ = freecall;
2997 		vala_ccode_function_add_expression (_tmp967_, (ValaCCodeExpression*) _tmp968_);
2998 		_vala_ccode_node_unref0 (freecall);
2999 	} else {
3000 		if (need_goto_label) {
3001 			ValaCCodeFunction* _tmp969_;
3002 			ValaCCodeFunction* _tmp970_;
3003 			ValaCCodeEmptyStatement* _tmp971_;
3004 			ValaCCodeEmptyStatement* _tmp972_;
3005 			_tmp969_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3006 			_tmp970_ = _tmp969_;
3007 			_tmp971_ = vala_ccode_empty_statement_new ();
3008 			_tmp972_ = _tmp971_;
3009 			vala_ccode_function_add_statement (_tmp970_, (ValaCCodeNode*) _tmp972_);
3010 			_vala_ccode_node_unref0 (_tmp972_);
3011 		}
3012 	}
3013 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
3014 	_tmp973_ = ((ValaCCodeBaseModule*) self)->cfile;
3015 	_tmp974_ = function;
3016 	vala_ccode_file_add_function_declaration (_tmp973_, _tmp974_);
3017 	_tmp975_ = ((ValaCCodeBaseModule*) self)->cfile;
3018 	_tmp976_ = function;
3019 	vala_ccode_file_add_function (_tmp975_, _tmp976_);
3020 	_tmp978_ = vala_method_get_coroutine (m);
3021 	_tmp979_ = _tmp978_;
3022 	if (_tmp979_) {
3023 		_tmp977_ = !ready;
3024 	} else {
3025 		_tmp977_ = FALSE;
3026 	}
3027 	if (_tmp977_) {
3028 		gchar* _tmp980_;
3029 		gchar* _tmp981_;
3030 		_tmp980_ = vala_gd_bus_server_module_generate_dbus_wrapper (self, m, sym, TRUE);
3031 		_tmp981_ = _tmp980_;
3032 		_g_free0 (_tmp981_);
3033 	}
3034 	result = wrapper_name;
3035 	_vala_ccode_node_unref0 (ccall);
3036 	_vala_ccode_node_unref0 (connection);
3037 	_g_free0 (ready_data_struct_name);
3038 	_vala_ccode_node_unref0 (ready_data_expr);
3039 	_vala_ccode_node_unref0 (_tmp40_);
3040 	_vala_ccode_node_unref0 (function);
3041 	return result;
3042 }
3043 
3044 static gchar*
vala_gd_bus_server_module_generate_dbus_signal_wrapper(ValaGDBusServerModule * self,ValaSignal * sig,ValaObjectTypeSymbol * sym,const gchar * dbus_iface_name)3045 vala_gd_bus_server_module_generate_dbus_signal_wrapper (ValaGDBusServerModule* self,
3046                                                         ValaSignal* sig,
3047                                                         ValaObjectTypeSymbol* sym,
3048                                                         const gchar* dbus_iface_name)
3049 {
3050 	gchar* wrapper_name = NULL;
3051 	gchar* _tmp0_;
3052 	gchar* _tmp1_;
3053 	gchar* _tmp2_;
3054 	gchar* _tmp3_;
3055 	gchar* _tmp4_;
3056 	gchar* _tmp5_;
3057 	ValaCCodeFunction* function = NULL;
3058 	const gchar* _tmp6_;
3059 	ValaCCodeFunction* _tmp7_;
3060 	ValaCCodeFunction* _tmp8_;
3061 	ValaCCodeFunction* _tmp9_;
3062 	ValaCCodeParameter* _tmp10_;
3063 	ValaCCodeParameter* _tmp11_;
3064 	ValaCCodeFunction* _tmp53_;
3065 	ValaCCodeParameter* _tmp54_;
3066 	ValaCCodeParameter* _tmp55_;
3067 	ValaCCodeFunction* _tmp56_;
3068 	ValaCCodeFunction* _tmp57_;
3069 	ValaCCodeFunction* _tmp58_;
3070 	ValaCCodeIdentifier* _tmp59_;
3071 	ValaCCodeIdentifier* _tmp60_;
3072 	ValaCCodeConstant* _tmp61_;
3073 	ValaCCodeConstant* _tmp62_;
3074 	ValaCCodeElementAccess* _tmp63_;
3075 	ValaCCodeElementAccess* _tmp64_;
3076 	ValaCCodeVariableDeclarator* _tmp65_;
3077 	ValaCCodeVariableDeclarator* _tmp66_;
3078 	ValaCCodeFunction* _tmp67_;
3079 	ValaCCodeFunction* _tmp68_;
3080 	ValaCCodeIdentifier* _tmp69_;
3081 	ValaCCodeIdentifier* _tmp70_;
3082 	ValaCCodeConstant* _tmp71_;
3083 	ValaCCodeConstant* _tmp72_;
3084 	ValaCCodeElementAccess* _tmp73_;
3085 	ValaCCodeElementAccess* _tmp74_;
3086 	ValaCCodeVariableDeclarator* _tmp75_;
3087 	ValaCCodeVariableDeclarator* _tmp76_;
3088 	ValaCCodeFunction* _tmp77_;
3089 	ValaCCodeFunction* _tmp78_;
3090 	ValaCCodeVariableDeclarator* _tmp79_;
3091 	ValaCCodeVariableDeclarator* _tmp80_;
3092 	ValaCCodeFunction* _tmp81_;
3093 	ValaCCodeFunction* _tmp82_;
3094 	ValaCCodeVariableDeclarator* _tmp83_;
3095 	ValaCCodeVariableDeclarator* _tmp84_;
3096 	ValaCCodeFunctionCall* builder_init = NULL;
3097 	ValaCCodeIdentifier* _tmp85_;
3098 	ValaCCodeIdentifier* _tmp86_;
3099 	ValaCCodeFunctionCall* _tmp87_;
3100 	ValaCCodeFunctionCall* _tmp88_;
3101 	ValaCCodeFunctionCall* _tmp89_;
3102 	ValaCCodeIdentifier* _tmp90_;
3103 	ValaCCodeIdentifier* _tmp91_;
3104 	ValaCCodeUnaryExpression* _tmp92_;
3105 	ValaCCodeUnaryExpression* _tmp93_;
3106 	ValaCCodeFunctionCall* _tmp94_;
3107 	ValaCCodeIdentifier* _tmp95_;
3108 	ValaCCodeIdentifier* _tmp96_;
3109 	ValaCCodeFunction* _tmp97_;
3110 	ValaCCodeFunction* _tmp98_;
3111 	ValaCCodeFunctionCall* _tmp99_;
3112 	ValaCCodeFunctionCall* builder_end = NULL;
3113 	ValaCCodeIdentifier* _tmp127_;
3114 	ValaCCodeIdentifier* _tmp128_;
3115 	ValaCCodeFunctionCall* _tmp129_;
3116 	ValaCCodeFunctionCall* _tmp130_;
3117 	ValaCCodeIdentifier* _tmp131_;
3118 	ValaCCodeIdentifier* _tmp132_;
3119 	ValaCCodeUnaryExpression* _tmp133_;
3120 	ValaCCodeUnaryExpression* _tmp134_;
3121 	ValaCCodeFunction* _tmp135_;
3122 	ValaCCodeFunction* _tmp136_;
3123 	ValaCCodeIdentifier* _tmp137_;
3124 	ValaCCodeIdentifier* _tmp138_;
3125 	ValaCCodeFunctionCall* ccall = NULL;
3126 	ValaCCodeIdentifier* _tmp139_;
3127 	ValaCCodeIdentifier* _tmp140_;
3128 	ValaCCodeFunctionCall* _tmp141_;
3129 	ValaCCodeFunctionCall* _tmp142_;
3130 	ValaCCodeIdentifier* _tmp143_;
3131 	ValaCCodeIdentifier* _tmp144_;
3132 	ValaCCodeConstant* _tmp145_;
3133 	ValaCCodeConstant* _tmp146_;
3134 	ValaCCodeIdentifier* _tmp147_;
3135 	ValaCCodeIdentifier* _tmp148_;
3136 	gchar* _tmp149_;
3137 	gchar* _tmp150_;
3138 	ValaCCodeConstant* _tmp151_;
3139 	ValaCCodeConstant* _tmp152_;
3140 	gchar* _tmp153_;
3141 	gchar* _tmp154_;
3142 	gchar* _tmp155_;
3143 	gchar* _tmp156_;
3144 	ValaCCodeConstant* _tmp157_;
3145 	ValaCCodeConstant* _tmp158_;
3146 	ValaCCodeIdentifier* _tmp159_;
3147 	ValaCCodeIdentifier* _tmp160_;
3148 	ValaCCodeConstant* _tmp161_;
3149 	ValaCCodeConstant* _tmp162_;
3150 	ValaCCodeFunction* _tmp163_;
3151 	ValaCCodeFunction* _tmp164_;
3152 	ValaCCodeFile* _tmp165_;
3153 	ValaCCodeFunction* _tmp166_;
3154 	ValaCCodeFile* _tmp167_;
3155 	ValaCCodeFunction* _tmp168_;
3156 	gchar* result = NULL;
3157 	g_return_val_if_fail (self != NULL, NULL);
3158 	g_return_val_if_fail (sig != NULL, NULL);
3159 	g_return_val_if_fail (sym != NULL, NULL);
3160 	g_return_val_if_fail (dbus_iface_name != NULL, NULL);
3161 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
3162 	_tmp1_ = _tmp0_;
3163 	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sig, NULL);
3164 	_tmp3_ = _tmp2_;
3165 	_tmp4_ = g_strdup_printf ("_dbus_%s_%s", _tmp1_, _tmp3_);
3166 	_tmp5_ = _tmp4_;
3167 	_g_free0 (_tmp3_);
3168 	_g_free0 (_tmp1_);
3169 	wrapper_name = _tmp5_;
3170 	_tmp6_ = wrapper_name;
3171 	_tmp7_ = vala_ccode_function_new (_tmp6_, "void");
3172 	function = _tmp7_;
3173 	_tmp8_ = function;
3174 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
3175 	_tmp9_ = function;
3176 	_tmp10_ = vala_ccode_parameter_new ("_sender", "GObject*");
3177 	_tmp11_ = _tmp10_;
3178 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
3179 	_vala_ccode_node_unref0 (_tmp11_);
3180 	{
3181 		ValaList* _param_list = NULL;
3182 		ValaList* _tmp12_;
3183 		ValaList* _tmp13_;
3184 		gint _param_size = 0;
3185 		ValaList* _tmp14_;
3186 		gint _tmp15_;
3187 		gint _tmp16_;
3188 		gint _param_index = 0;
3189 		_tmp12_ = vala_callable_get_parameters ((ValaCallable*) sig);
3190 		_tmp13_ = _vala_iterable_ref0 (_tmp12_);
3191 		_param_list = _tmp13_;
3192 		_tmp14_ = _param_list;
3193 		_tmp15_ = vala_collection_get_size ((ValaCollection*) _tmp14_);
3194 		_tmp16_ = _tmp15_;
3195 		_param_size = _tmp16_;
3196 		_param_index = -1;
3197 		while (TRUE) {
3198 			gint _tmp17_;
3199 			gint _tmp18_;
3200 			ValaParameter* param = NULL;
3201 			ValaList* _tmp19_;
3202 			gpointer _tmp20_;
3203 			ValaCCodeParameter* cparam = NULL;
3204 			ValaParameter* _tmp21_;
3205 			ValaCCodeFile* _tmp22_;
3206 			GHashFunc _tmp23_;
3207 			GEqualFunc _tmp24_;
3208 			GEqualFunc _tmp25_;
3209 			ValaHashMap* _tmp26_;
3210 			ValaHashMap* _tmp27_;
3211 			ValaCCodeParameter* _tmp28_;
3212 			ValaCCodeParameter* _tmp29_;
3213 			ValaCCodeFunction* _tmp30_;
3214 			ValaCCodeParameter* _tmp31_;
3215 			ValaParameter* _tmp32_;
3216 			ValaDataType* _tmp33_;
3217 			ValaDataType* _tmp34_;
3218 			_param_index = _param_index + 1;
3219 			_tmp17_ = _param_index;
3220 			_tmp18_ = _param_size;
3221 			if (!(_tmp17_ < _tmp18_)) {
3222 				break;
3223 			}
3224 			_tmp19_ = _param_list;
3225 			_tmp20_ = vala_list_get (_tmp19_, _param_index);
3226 			param = (ValaParameter*) _tmp20_;
3227 			_tmp21_ = param;
3228 			_tmp22_ = ((ValaCCodeBaseModule*) self)->cfile;
3229 			_tmp23_ = g_direct_hash;
3230 			_tmp24_ = g_direct_equal;
3231 			_tmp25_ = g_direct_equal;
3232 			_tmp26_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp23_, _tmp24_, _tmp25_);
3233 			_tmp27_ = _tmp26_;
3234 			_tmp28_ = vala_ccode_method_module_generate_parameter ((ValaCCodeMethodModule*) self, _tmp21_, _tmp22_, (ValaMap*) _tmp27_, NULL);
3235 			_tmp29_ = _tmp28_;
3236 			_vala_map_unref0 (_tmp27_);
3237 			cparam = _tmp29_;
3238 			_tmp30_ = function;
3239 			_tmp31_ = cparam;
3240 			vala_ccode_function_add_parameter (_tmp30_, _tmp31_);
3241 			_tmp32_ = param;
3242 			_tmp33_ = vala_variable_get_variable_type ((ValaVariable*) _tmp32_);
3243 			_tmp34_ = _tmp33_;
3244 			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, VALA_TYPE_ARRAY_TYPE)) {
3245 				ValaArrayType* array_type = NULL;
3246 				ValaParameter* _tmp35_;
3247 				ValaDataType* _tmp36_;
3248 				ValaDataType* _tmp37_;
3249 				ValaArrayType* _tmp38_;
3250 				gchar* length_ctype = NULL;
3251 				ValaArrayType* _tmp39_;
3252 				gchar* _tmp40_;
3253 				_tmp35_ = param;
3254 				_tmp36_ = vala_variable_get_variable_type ((ValaVariable*) _tmp35_);
3255 				_tmp37_ = _tmp36_;
3256 				_tmp38_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
3257 				array_type = _tmp38_;
3258 				_tmp39_ = array_type;
3259 				_tmp40_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp39_);
3260 				length_ctype = _tmp40_;
3261 				{
3262 					gint dim = 0;
3263 					dim = 1;
3264 					{
3265 						gboolean _tmp41_ = FALSE;
3266 						_tmp41_ = TRUE;
3267 						while (TRUE) {
3268 							ValaArrayType* _tmp43_;
3269 							gint _tmp44_;
3270 							gint _tmp45_;
3271 							ValaCCodeFunction* _tmp46_;
3272 							ValaParameter* _tmp47_;
3273 							gchar* _tmp48_;
3274 							gchar* _tmp49_;
3275 							const gchar* _tmp50_;
3276 							ValaCCodeParameter* _tmp51_;
3277 							ValaCCodeParameter* _tmp52_;
3278 							if (!_tmp41_) {
3279 								gint _tmp42_;
3280 								_tmp42_ = dim;
3281 								dim = _tmp42_ + 1;
3282 							}
3283 							_tmp41_ = FALSE;
3284 							_tmp43_ = array_type;
3285 							_tmp44_ = vala_array_type_get_rank (_tmp43_);
3286 							_tmp45_ = _tmp44_;
3287 							if (!(dim <= _tmp45_)) {
3288 								break;
3289 							}
3290 							_tmp46_ = function;
3291 							_tmp47_ = param;
3292 							_tmp48_ = vala_ccode_base_module_get_variable_array_length_cname ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp47_, dim);
3293 							_tmp49_ = _tmp48_;
3294 							_tmp50_ = length_ctype;
3295 							_tmp51_ = vala_ccode_parameter_new (_tmp49_, _tmp50_);
3296 							_tmp52_ = _tmp51_;
3297 							vala_ccode_function_add_parameter (_tmp46_, _tmp52_);
3298 							_vala_ccode_node_unref0 (_tmp52_);
3299 							_g_free0 (_tmp49_);
3300 						}
3301 					}
3302 				}
3303 				_g_free0 (length_ctype);
3304 				_vala_code_node_unref0 (array_type);
3305 			}
3306 			_vala_ccode_node_unref0 (cparam);
3307 			_vala_code_node_unref0 (param);
3308 		}
3309 		_vala_iterable_unref0 (_param_list);
3310 	}
3311 	_tmp53_ = function;
3312 	_tmp54_ = vala_ccode_parameter_new ("_data", "gpointer*");
3313 	_tmp55_ = _tmp54_;
3314 	vala_ccode_function_add_parameter (_tmp53_, _tmp55_);
3315 	_vala_ccode_node_unref0 (_tmp55_);
3316 	_tmp56_ = function;
3317 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp56_);
3318 	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3319 	_tmp58_ = _tmp57_;
3320 	_tmp59_ = vala_ccode_identifier_new ("_data");
3321 	_tmp60_ = _tmp59_;
3322 	_tmp61_ = vala_ccode_constant_new ("1");
3323 	_tmp62_ = _tmp61_;
3324 	_tmp63_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp60_, (ValaCCodeExpression*) _tmp62_);
3325 	_tmp64_ = _tmp63_;
3326 	_tmp65_ = vala_ccode_variable_declarator_new ("_connection", (ValaCCodeExpression*) _tmp64_, NULL);
3327 	_tmp66_ = _tmp65_;
3328 	vala_ccode_function_add_declaration (_tmp58_, "GDBusConnection *", (ValaCCodeDeclarator*) _tmp66_, 0);
3329 	_vala_ccode_node_unref0 (_tmp66_);
3330 	_vala_ccode_node_unref0 (_tmp64_);
3331 	_vala_ccode_node_unref0 (_tmp62_);
3332 	_vala_ccode_node_unref0 (_tmp60_);
3333 	_tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3334 	_tmp68_ = _tmp67_;
3335 	_tmp69_ = vala_ccode_identifier_new ("_data");
3336 	_tmp70_ = _tmp69_;
3337 	_tmp71_ = vala_ccode_constant_new ("2");
3338 	_tmp72_ = _tmp71_;
3339 	_tmp73_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp70_, (ValaCCodeExpression*) _tmp72_);
3340 	_tmp74_ = _tmp73_;
3341 	_tmp75_ = vala_ccode_variable_declarator_new ("_path", (ValaCCodeExpression*) _tmp74_, NULL);
3342 	_tmp76_ = _tmp75_;
3343 	vala_ccode_function_add_declaration (_tmp68_, "const gchar *", (ValaCCodeDeclarator*) _tmp76_, 0);
3344 	_vala_ccode_node_unref0 (_tmp76_);
3345 	_vala_ccode_node_unref0 (_tmp74_);
3346 	_vala_ccode_node_unref0 (_tmp72_);
3347 	_vala_ccode_node_unref0 (_tmp70_);
3348 	_tmp77_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3349 	_tmp78_ = _tmp77_;
3350 	_tmp79_ = vala_ccode_variable_declarator_new ("*_arguments", NULL, NULL);
3351 	_tmp80_ = _tmp79_;
3352 	vala_ccode_function_add_declaration (_tmp78_, "GVariant", (ValaCCodeDeclarator*) _tmp80_, 0);
3353 	_vala_ccode_node_unref0 (_tmp80_);
3354 	_tmp81_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3355 	_tmp82_ = _tmp81_;
3356 	_tmp83_ = vala_ccode_variable_declarator_new ("_arguments_builder", NULL, NULL);
3357 	_tmp84_ = _tmp83_;
3358 	vala_ccode_function_add_declaration (_tmp82_, "GVariantBuilder", (ValaCCodeDeclarator*) _tmp84_, 0);
3359 	_vala_ccode_node_unref0 (_tmp84_);
3360 	_tmp85_ = vala_ccode_identifier_new ("g_variant_builder_init");
3361 	_tmp86_ = _tmp85_;
3362 	_tmp87_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp86_);
3363 	_tmp88_ = _tmp87_;
3364 	_vala_ccode_node_unref0 (_tmp86_);
3365 	builder_init = _tmp88_;
3366 	_tmp89_ = builder_init;
3367 	_tmp90_ = vala_ccode_identifier_new ("_arguments_builder");
3368 	_tmp91_ = _tmp90_;
3369 	_tmp92_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp91_);
3370 	_tmp93_ = _tmp92_;
3371 	vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp93_);
3372 	_vala_ccode_node_unref0 (_tmp93_);
3373 	_vala_ccode_node_unref0 (_tmp91_);
3374 	_tmp94_ = builder_init;
3375 	_tmp95_ = vala_ccode_identifier_new ("G_VARIANT_TYPE_TUPLE");
3376 	_tmp96_ = _tmp95_;
3377 	vala_ccode_function_call_add_argument (_tmp94_, (ValaCCodeExpression*) _tmp96_);
3378 	_vala_ccode_node_unref0 (_tmp96_);
3379 	_tmp97_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3380 	_tmp98_ = _tmp97_;
3381 	_tmp99_ = builder_init;
3382 	vala_ccode_function_add_expression (_tmp98_, (ValaCCodeExpression*) _tmp99_);
3383 	{
3384 		ValaList* _param_list = NULL;
3385 		ValaList* _tmp100_;
3386 		ValaList* _tmp101_;
3387 		gint _param_size = 0;
3388 		ValaList* _tmp102_;
3389 		gint _tmp103_;
3390 		gint _tmp104_;
3391 		gint _param_index = 0;
3392 		_tmp100_ = vala_callable_get_parameters ((ValaCallable*) sig);
3393 		_tmp101_ = _vala_iterable_ref0 (_tmp100_);
3394 		_param_list = _tmp101_;
3395 		_tmp102_ = _param_list;
3396 		_tmp103_ = vala_collection_get_size ((ValaCollection*) _tmp102_);
3397 		_tmp104_ = _tmp103_;
3398 		_param_size = _tmp104_;
3399 		_param_index = -1;
3400 		while (TRUE) {
3401 			gint _tmp105_;
3402 			gint _tmp106_;
3403 			ValaParameter* param = NULL;
3404 			ValaList* _tmp107_;
3405 			gpointer _tmp108_;
3406 			gchar* param_name = NULL;
3407 			ValaParameter* _tmp109_;
3408 			const gchar* _tmp110_;
3409 			const gchar* _tmp111_;
3410 			gchar* _tmp112_;
3411 			ValaCCodeExpression* expr = NULL;
3412 			const gchar* _tmp113_;
3413 			ValaCCodeIdentifier* _tmp114_;
3414 			ValaParameter* _tmp115_;
3415 			ValaDataType* _tmp116_;
3416 			ValaDataType* _tmp117_;
3417 			ValaParameter* _tmp120_;
3418 			ValaDataType* _tmp121_;
3419 			ValaDataType* _tmp122_;
3420 			ValaCCodeIdentifier* _tmp123_;
3421 			ValaCCodeIdentifier* _tmp124_;
3422 			ValaCCodeExpression* _tmp125_;
3423 			ValaParameter* _tmp126_;
3424 			_param_index = _param_index + 1;
3425 			_tmp105_ = _param_index;
3426 			_tmp106_ = _param_size;
3427 			if (!(_tmp105_ < _tmp106_)) {
3428 				break;
3429 			}
3430 			_tmp107_ = _param_list;
3431 			_tmp108_ = vala_list_get (_tmp107_, _param_index);
3432 			param = (ValaParameter*) _tmp108_;
3433 			_tmp109_ = param;
3434 			_tmp110_ = vala_symbol_get_name ((ValaSymbol*) _tmp109_);
3435 			_tmp111_ = _tmp110_;
3436 			_tmp112_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp111_);
3437 			param_name = _tmp112_;
3438 			_tmp113_ = param_name;
3439 			_tmp114_ = vala_ccode_identifier_new (_tmp113_);
3440 			expr = (ValaCCodeExpression*) _tmp114_;
3441 			_tmp115_ = param;
3442 			_tmp116_ = vala_variable_get_variable_type ((ValaVariable*) _tmp115_);
3443 			_tmp117_ = _tmp116_;
3444 			if (vala_data_type_is_real_struct_type (_tmp117_)) {
3445 				ValaCCodeExpression* _tmp118_;
3446 				ValaCCodeUnaryExpression* _tmp119_;
3447 				_tmp118_ = expr;
3448 				_tmp119_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp118_);
3449 				_vala_ccode_node_unref0 (expr);
3450 				expr = (ValaCCodeExpression*) _tmp119_;
3451 			}
3452 			_tmp120_ = param;
3453 			_tmp121_ = vala_variable_get_variable_type ((ValaVariable*) _tmp120_);
3454 			_tmp122_ = _tmp121_;
3455 			_tmp123_ = vala_ccode_identifier_new ("_arguments_builder");
3456 			_tmp124_ = _tmp123_;
3457 			_tmp125_ = expr;
3458 			_tmp126_ = param;
3459 			vala_gvariant_module_write_expression ((ValaGVariantModule*) self, _tmp122_, (ValaCCodeExpression*) _tmp124_, _tmp125_, (ValaSymbol*) _tmp126_);
3460 			_vala_ccode_node_unref0 (_tmp124_);
3461 			_vala_ccode_node_unref0 (expr);
3462 			_g_free0 (param_name);
3463 			_vala_code_node_unref0 (param);
3464 		}
3465 		_vala_iterable_unref0 (_param_list);
3466 	}
3467 	_tmp127_ = vala_ccode_identifier_new ("g_variant_builder_end");
3468 	_tmp128_ = _tmp127_;
3469 	_tmp129_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp128_);
3470 	_tmp130_ = _tmp129_;
3471 	_vala_ccode_node_unref0 (_tmp128_);
3472 	builder_end = _tmp130_;
3473 	_tmp131_ = vala_ccode_identifier_new ("_arguments_builder");
3474 	_tmp132_ = _tmp131_;
3475 	_tmp133_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp132_);
3476 	_tmp134_ = _tmp133_;
3477 	vala_ccode_function_call_add_argument (builder_end, (ValaCCodeExpression*) _tmp134_);
3478 	_vala_ccode_node_unref0 (_tmp134_);
3479 	_vala_ccode_node_unref0 (_tmp132_);
3480 	_tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3481 	_tmp136_ = _tmp135_;
3482 	_tmp137_ = vala_ccode_identifier_new ("_arguments");
3483 	_tmp138_ = _tmp137_;
3484 	vala_ccode_function_add_assignment (_tmp136_, (ValaCCodeExpression*) _tmp138_, (ValaCCodeExpression*) builder_end);
3485 	_vala_ccode_node_unref0 (_tmp138_);
3486 	_tmp139_ = vala_ccode_identifier_new ("g_dbus_connection_emit_signal");
3487 	_tmp140_ = _tmp139_;
3488 	_tmp141_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp140_);
3489 	_tmp142_ = _tmp141_;
3490 	_vala_ccode_node_unref0 (_tmp140_);
3491 	ccall = _tmp142_;
3492 	_tmp143_ = vala_ccode_identifier_new ("_connection");
3493 	_tmp144_ = _tmp143_;
3494 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp144_);
3495 	_vala_ccode_node_unref0 (_tmp144_);
3496 	_tmp145_ = vala_ccode_constant_new ("NULL");
3497 	_tmp146_ = _tmp145_;
3498 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp146_);
3499 	_vala_ccode_node_unref0 (_tmp146_);
3500 	_tmp147_ = vala_ccode_identifier_new ("_path");
3501 	_tmp148_ = _tmp147_;
3502 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp148_);
3503 	_vala_ccode_node_unref0 (_tmp148_);
3504 	_tmp149_ = g_strdup_printf ("\"%s\"", dbus_iface_name);
3505 	_tmp150_ = _tmp149_;
3506 	_tmp151_ = vala_ccode_constant_new (_tmp150_);
3507 	_tmp152_ = _tmp151_;
3508 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp152_);
3509 	_vala_ccode_node_unref0 (_tmp152_);
3510 	_g_free0 (_tmp150_);
3511 	_tmp153_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) sig);
3512 	_tmp154_ = _tmp153_;
3513 	_tmp155_ = g_strdup_printf ("\"%s\"", _tmp154_);
3514 	_tmp156_ = _tmp155_;
3515 	_tmp157_ = vala_ccode_constant_new (_tmp156_);
3516 	_tmp158_ = _tmp157_;
3517 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp158_);
3518 	_vala_ccode_node_unref0 (_tmp158_);
3519 	_g_free0 (_tmp156_);
3520 	_g_free0 (_tmp154_);
3521 	_tmp159_ = vala_ccode_identifier_new ("_arguments");
3522 	_tmp160_ = _tmp159_;
3523 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp160_);
3524 	_vala_ccode_node_unref0 (_tmp160_);
3525 	_tmp161_ = vala_ccode_constant_new ("NULL");
3526 	_tmp162_ = _tmp161_;
3527 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp162_);
3528 	_vala_ccode_node_unref0 (_tmp162_);
3529 	_tmp163_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3530 	_tmp164_ = _tmp163_;
3531 	vala_ccode_function_add_expression (_tmp164_, (ValaCCodeExpression*) ccall);
3532 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
3533 	_tmp165_ = ((ValaCCodeBaseModule*) self)->cfile;
3534 	_tmp166_ = function;
3535 	vala_ccode_file_add_function_declaration (_tmp165_, _tmp166_);
3536 	_tmp167_ = ((ValaCCodeBaseModule*) self)->cfile;
3537 	_tmp168_ = function;
3538 	vala_ccode_file_add_function (_tmp167_, _tmp168_);
3539 	result = wrapper_name;
3540 	_vala_ccode_node_unref0 (ccall);
3541 	_vala_ccode_node_unref0 (builder_end);
3542 	_vala_ccode_node_unref0 (builder_init);
3543 	_vala_ccode_node_unref0 (function);
3544 	return result;
3545 }
3546 
3547 static gchar*
vala_gd_bus_server_module_generate_dbus_property_get_wrapper(ValaGDBusServerModule * self,ValaProperty * prop,ValaObjectTypeSymbol * sym)3548 vala_gd_bus_server_module_generate_dbus_property_get_wrapper (ValaGDBusServerModule* self,
3549                                                               ValaProperty* prop,
3550                                                               ValaObjectTypeSymbol* sym)
3551 {
3552 	gchar* wrapper_name = NULL;
3553 	ValaPropertyAccessor* _tmp0_;
3554 	ValaPropertyAccessor* _tmp1_;
3555 	gchar* _tmp2_;
3556 	gchar* _tmp3_;
3557 	gchar* _tmp4_;
3558 	gchar* _tmp5_;
3559 	ValaCCodeFunction* function = NULL;
3560 	const gchar* _tmp6_;
3561 	ValaCCodeFunction* _tmp7_;
3562 	ValaCCodeFunction* _tmp8_;
3563 	ValaCCodeFunction* _tmp9_;
3564 	gchar* _tmp10_;
3565 	gchar* _tmp11_;
3566 	gchar* _tmp12_;
3567 	gchar* _tmp13_;
3568 	ValaCCodeParameter* _tmp14_;
3569 	ValaCCodeParameter* _tmp15_;
3570 	ValaCCodeFunction* _tmp16_;
3571 	ValaCCodeFunctionCall* ccall = NULL;
3572 	ValaPropertyAccessor* _tmp17_;
3573 	ValaPropertyAccessor* _tmp18_;
3574 	gchar* _tmp19_;
3575 	gchar* _tmp20_;
3576 	ValaCCodeIdentifier* _tmp21_;
3577 	ValaCCodeIdentifier* _tmp22_;
3578 	ValaCCodeFunctionCall* _tmp23_;
3579 	ValaCCodeFunctionCall* _tmp24_;
3580 	ValaCCodeFunctionCall* _tmp25_;
3581 	ValaCCodeIdentifier* _tmp26_;
3582 	ValaCCodeIdentifier* _tmp27_;
3583 	ValaPropertyAccessor* _tmp28_;
3584 	ValaPropertyAccessor* _tmp29_;
3585 	ValaDataType* _tmp30_;
3586 	ValaDataType* _tmp31_;
3587 	ValaCCodeFunction* _tmp99_;
3588 	ValaCCodeFunction* _tmp100_;
3589 	ValaCCodeVariableDeclarator* _tmp101_;
3590 	ValaCCodeVariableDeclarator* _tmp102_;
3591 	gchar* _tmp103_;
3592 	gchar* _tmp104_;
3593 	gboolean _tmp105_;
3594 	ValaCCodeFunction* _tmp139_;
3595 	ValaCCodeFunction* _tmp140_;
3596 	ValaCCodeIdentifier* _tmp141_;
3597 	ValaCCodeIdentifier* _tmp142_;
3598 	ValaCCodeFile* _tmp143_;
3599 	ValaCCodeFunction* _tmp144_;
3600 	ValaCCodeFile* _tmp145_;
3601 	ValaCCodeFunction* _tmp146_;
3602 	gchar* result = NULL;
3603 	g_return_val_if_fail (self != NULL, NULL);
3604 	g_return_val_if_fail (prop != NULL, NULL);
3605 	g_return_val_if_fail (sym != NULL, NULL);
3606 	_tmp0_ = vala_property_get_get_accessor (prop);
3607 	_tmp1_ = _tmp0_;
3608 	_tmp2_ = vala_get_ccode_name ((ValaCodeNode*) _tmp1_);
3609 	_tmp3_ = _tmp2_;
3610 	_tmp4_ = g_strdup_printf ("_dbus_%s", _tmp3_);
3611 	_tmp5_ = _tmp4_;
3612 	_g_free0 (_tmp3_);
3613 	wrapper_name = _tmp5_;
3614 	_tmp6_ = wrapper_name;
3615 	_tmp7_ = vala_ccode_function_new (_tmp6_, "GVariant*");
3616 	function = _tmp7_;
3617 	_tmp8_ = function;
3618 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
3619 	_tmp9_ = function;
3620 	_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) sym);
3621 	_tmp11_ = _tmp10_;
3622 	_tmp12_ = g_strconcat (_tmp11_, "*", NULL);
3623 	_tmp13_ = _tmp12_;
3624 	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
3625 	_tmp15_ = _tmp14_;
3626 	vala_ccode_function_add_parameter (_tmp9_, _tmp15_);
3627 	_vala_ccode_node_unref0 (_tmp15_);
3628 	_g_free0 (_tmp13_);
3629 	_g_free0 (_tmp11_);
3630 	_tmp16_ = function;
3631 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp16_);
3632 	_tmp17_ = vala_property_get_get_accessor (prop);
3633 	_tmp18_ = _tmp17_;
3634 	_tmp19_ = vala_get_ccode_name ((ValaCodeNode*) _tmp18_);
3635 	_tmp20_ = _tmp19_;
3636 	_tmp21_ = vala_ccode_identifier_new (_tmp20_);
3637 	_tmp22_ = _tmp21_;
3638 	_tmp23_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp22_);
3639 	_tmp24_ = _tmp23_;
3640 	_vala_ccode_node_unref0 (_tmp22_);
3641 	_g_free0 (_tmp20_);
3642 	ccall = _tmp24_;
3643 	_tmp25_ = ccall;
3644 	_tmp26_ = vala_ccode_identifier_new ("self");
3645 	_tmp27_ = _tmp26_;
3646 	vala_ccode_function_call_add_argument (_tmp25_, (ValaCCodeExpression*) _tmp27_);
3647 	_vala_ccode_node_unref0 (_tmp27_);
3648 	_tmp28_ = vala_property_get_get_accessor (prop);
3649 	_tmp29_ = _tmp28_;
3650 	_tmp30_ = vala_property_accessor_get_value_type (_tmp29_);
3651 	_tmp31_ = _tmp30_;
3652 	if (vala_data_type_is_real_non_null_struct_type (_tmp31_)) {
3653 		ValaCCodeFunction* _tmp32_;
3654 		ValaCCodeFunction* _tmp33_;
3655 		ValaPropertyAccessor* _tmp34_;
3656 		ValaPropertyAccessor* _tmp35_;
3657 		ValaDataType* _tmp36_;
3658 		ValaDataType* _tmp37_;
3659 		gchar* _tmp38_;
3660 		gchar* _tmp39_;
3661 		ValaPropertyAccessor* _tmp40_;
3662 		ValaPropertyAccessor* _tmp41_;
3663 		ValaDataType* _tmp42_;
3664 		ValaDataType* _tmp43_;
3665 		ValaCCodeExpression* _tmp44_;
3666 		ValaCCodeExpression* _tmp45_;
3667 		ValaCCodeVariableDeclarator* _tmp46_;
3668 		ValaCCodeVariableDeclarator* _tmp47_;
3669 		ValaCCodeFunctionCall* _tmp48_;
3670 		ValaCCodeIdentifier* _tmp49_;
3671 		ValaCCodeIdentifier* _tmp50_;
3672 		ValaCCodeUnaryExpression* _tmp51_;
3673 		ValaCCodeUnaryExpression* _tmp52_;
3674 		ValaCCodeFunction* _tmp53_;
3675 		ValaCCodeFunction* _tmp54_;
3676 		ValaCCodeFunctionCall* _tmp55_;
3677 		_tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3678 		_tmp33_ = _tmp32_;
3679 		_tmp34_ = vala_property_get_get_accessor (prop);
3680 		_tmp35_ = _tmp34_;
3681 		_tmp36_ = vala_property_accessor_get_value_type (_tmp35_);
3682 		_tmp37_ = _tmp36_;
3683 		_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
3684 		_tmp39_ = _tmp38_;
3685 		_tmp40_ = vala_property_get_get_accessor (prop);
3686 		_tmp41_ = _tmp40_;
3687 		_tmp42_ = vala_property_accessor_get_value_type (_tmp41_);
3688 		_tmp43_ = _tmp42_;
3689 		_tmp44_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp43_, TRUE, FALSE);
3690 		_tmp45_ = _tmp44_;
3691 		_tmp46_ = vala_ccode_variable_declarator_new_zero ("result", _tmp45_, NULL);
3692 		_tmp47_ = _tmp46_;
3693 		vala_ccode_function_add_declaration (_tmp33_, _tmp39_, (ValaCCodeDeclarator*) _tmp47_, 0);
3694 		_vala_ccode_node_unref0 (_tmp47_);
3695 		_vala_ccode_node_unref0 (_tmp45_);
3696 		_g_free0 (_tmp39_);
3697 		_tmp48_ = ccall;
3698 		_tmp49_ = vala_ccode_identifier_new ("result");
3699 		_tmp50_ = _tmp49_;
3700 		_tmp51_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp50_);
3701 		_tmp52_ = _tmp51_;
3702 		vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp52_);
3703 		_vala_ccode_node_unref0 (_tmp52_);
3704 		_vala_ccode_node_unref0 (_tmp50_);
3705 		_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3706 		_tmp54_ = _tmp53_;
3707 		_tmp55_ = ccall;
3708 		vala_ccode_function_add_expression (_tmp54_, (ValaCCodeExpression*) _tmp55_);
3709 	} else {
3710 		ValaCCodeFunction* _tmp56_;
3711 		ValaCCodeFunction* _tmp57_;
3712 		ValaPropertyAccessor* _tmp58_;
3713 		ValaPropertyAccessor* _tmp59_;
3714 		ValaDataType* _tmp60_;
3715 		ValaDataType* _tmp61_;
3716 		gchar* _tmp62_;
3717 		gchar* _tmp63_;
3718 		ValaCCodeVariableDeclarator* _tmp64_;
3719 		ValaCCodeVariableDeclarator* _tmp65_;
3720 		ValaCCodeFunction* _tmp66_;
3721 		ValaCCodeFunction* _tmp67_;
3722 		ValaCCodeIdentifier* _tmp68_;
3723 		ValaCCodeIdentifier* _tmp69_;
3724 		ValaCCodeFunctionCall* _tmp70_;
3725 		ValaArrayType* array_type = NULL;
3726 		ValaPropertyAccessor* _tmp71_;
3727 		ValaPropertyAccessor* _tmp72_;
3728 		ValaDataType* _tmp73_;
3729 		ValaDataType* _tmp74_;
3730 		ValaArrayType* _tmp75_;
3731 		ValaArrayType* _tmp76_;
3732 		_tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3733 		_tmp57_ = _tmp56_;
3734 		_tmp58_ = vala_property_get_get_accessor (prop);
3735 		_tmp59_ = _tmp58_;
3736 		_tmp60_ = vala_property_accessor_get_value_type (_tmp59_);
3737 		_tmp61_ = _tmp60_;
3738 		_tmp62_ = vala_get_ccode_name ((ValaCodeNode*) _tmp61_);
3739 		_tmp63_ = _tmp62_;
3740 		_tmp64_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
3741 		_tmp65_ = _tmp64_;
3742 		vala_ccode_function_add_declaration (_tmp57_, _tmp63_, (ValaCCodeDeclarator*) _tmp65_, 0);
3743 		_vala_ccode_node_unref0 (_tmp65_);
3744 		_g_free0 (_tmp63_);
3745 		_tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3746 		_tmp67_ = _tmp66_;
3747 		_tmp68_ = vala_ccode_identifier_new ("result");
3748 		_tmp69_ = _tmp68_;
3749 		_tmp70_ = ccall;
3750 		vala_ccode_function_add_assignment (_tmp67_, (ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp70_);
3751 		_vala_ccode_node_unref0 (_tmp69_);
3752 		_tmp71_ = vala_property_get_get_accessor (prop);
3753 		_tmp72_ = _tmp71_;
3754 		_tmp73_ = vala_property_accessor_get_value_type (_tmp72_);
3755 		_tmp74_ = _tmp73_;
3756 		_tmp75_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp74_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp74_) : NULL);
3757 		array_type = _tmp75_;
3758 		_tmp76_ = array_type;
3759 		if (_tmp76_ != NULL) {
3760 			gchar* length_ctype = NULL;
3761 			ValaArrayType* _tmp77_;
3762 			gchar* _tmp78_;
3763 			_tmp77_ = array_type;
3764 			_tmp78_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp77_);
3765 			length_ctype = _tmp78_;
3766 			{
3767 				gint dim = 0;
3768 				dim = 1;
3769 				{
3770 					gboolean _tmp79_ = FALSE;
3771 					_tmp79_ = TRUE;
3772 					while (TRUE) {
3773 						ValaArrayType* _tmp81_;
3774 						gint _tmp82_;
3775 						gint _tmp83_;
3776 						gchar* length_cname = NULL;
3777 						gchar* _tmp84_;
3778 						ValaCCodeFunction* _tmp85_;
3779 						ValaCCodeFunction* _tmp86_;
3780 						const gchar* _tmp87_;
3781 						const gchar* _tmp88_;
3782 						ValaCCodeConstant* _tmp89_;
3783 						ValaCCodeConstant* _tmp90_;
3784 						ValaCCodeVariableDeclarator* _tmp91_;
3785 						ValaCCodeVariableDeclarator* _tmp92_;
3786 						ValaCCodeFunctionCall* _tmp93_;
3787 						const gchar* _tmp94_;
3788 						ValaCCodeIdentifier* _tmp95_;
3789 						ValaCCodeIdentifier* _tmp96_;
3790 						ValaCCodeUnaryExpression* _tmp97_;
3791 						ValaCCodeUnaryExpression* _tmp98_;
3792 						if (!_tmp79_) {
3793 							gint _tmp80_;
3794 							_tmp80_ = dim;
3795 							dim = _tmp80_ + 1;
3796 						}
3797 						_tmp79_ = FALSE;
3798 						_tmp81_ = array_type;
3799 						_tmp82_ = vala_array_type_get_rank (_tmp81_);
3800 						_tmp83_ = _tmp82_;
3801 						if (!(dim <= _tmp83_)) {
3802 							break;
3803 						}
3804 						_tmp84_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
3805 						length_cname = _tmp84_;
3806 						_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3807 						_tmp86_ = _tmp85_;
3808 						_tmp87_ = length_ctype;
3809 						_tmp88_ = length_cname;
3810 						_tmp89_ = vala_ccode_constant_new ("0");
3811 						_tmp90_ = _tmp89_;
3812 						_tmp91_ = vala_ccode_variable_declarator_new_zero (_tmp88_, (ValaCCodeExpression*) _tmp90_, NULL);
3813 						_tmp92_ = _tmp91_;
3814 						vala_ccode_function_add_declaration (_tmp86_, _tmp87_, (ValaCCodeDeclarator*) _tmp92_, 0);
3815 						_vala_ccode_node_unref0 (_tmp92_);
3816 						_vala_ccode_node_unref0 (_tmp90_);
3817 						_tmp93_ = ccall;
3818 						_tmp94_ = length_cname;
3819 						_tmp95_ = vala_ccode_identifier_new (_tmp94_);
3820 						_tmp96_ = _tmp95_;
3821 						_tmp97_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp96_);
3822 						_tmp98_ = _tmp97_;
3823 						vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp98_);
3824 						_vala_ccode_node_unref0 (_tmp98_);
3825 						_vala_ccode_node_unref0 (_tmp96_);
3826 						_g_free0 (length_cname);
3827 					}
3828 				}
3829 			}
3830 			_g_free0 (length_ctype);
3831 		}
3832 		_vala_code_node_unref0 (array_type);
3833 	}
3834 	_tmp99_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3835 	_tmp100_ = _tmp99_;
3836 	_tmp101_ = vala_ccode_variable_declarator_new ("_reply", NULL, NULL);
3837 	_tmp102_ = _tmp101_;
3838 	vala_ccode_function_add_declaration (_tmp100_, "GVariant*", (ValaCCodeDeclarator*) _tmp102_, 0);
3839 	_vala_ccode_node_unref0 (_tmp102_);
3840 	_tmp103_ = vala_gvariant_module_get_dbus_signature ((ValaSymbol*) prop);
3841 	_tmp104_ = _tmp103_;
3842 	_tmp105_ = _tmp104_ != NULL;
3843 	_g_free0 (_tmp104_);
3844 	if (_tmp105_) {
3845 		ValaCCodeFunction* _tmp106_;
3846 		ValaCCodeFunction* _tmp107_;
3847 		ValaCCodeIdentifier* _tmp108_;
3848 		ValaCCodeIdentifier* _tmp109_;
3849 		ValaCCodeIdentifier* _tmp110_;
3850 		ValaCCodeIdentifier* _tmp111_;
3851 		_tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3852 		_tmp107_ = _tmp106_;
3853 		_tmp108_ = vala_ccode_identifier_new ("_reply");
3854 		_tmp109_ = _tmp108_;
3855 		_tmp110_ = vala_ccode_identifier_new ("result");
3856 		_tmp111_ = _tmp110_;
3857 		vala_ccode_function_add_assignment (_tmp107_, (ValaCCodeExpression*) _tmp109_, (ValaCCodeExpression*) _tmp111_);
3858 		_vala_ccode_node_unref0 (_tmp111_);
3859 		_vala_ccode_node_unref0 (_tmp109_);
3860 	} else {
3861 		ValaCCodeExpression* reply_expr = NULL;
3862 		ValaPropertyAccessor* _tmp112_;
3863 		ValaPropertyAccessor* _tmp113_;
3864 		ValaDataType* _tmp114_;
3865 		ValaDataType* _tmp115_;
3866 		ValaCCodeIdentifier* _tmp116_;
3867 		ValaCCodeIdentifier* _tmp117_;
3868 		ValaCCodeExpression* _tmp118_;
3869 		ValaCCodeExpression* _tmp119_;
3870 		ValaCCodeFunction* _tmp120_;
3871 		ValaCCodeFunction* _tmp121_;
3872 		ValaCCodeIdentifier* _tmp122_;
3873 		ValaCCodeIdentifier* _tmp123_;
3874 		ValaCCodeExpression* _tmp124_;
3875 		ValaPropertyAccessor* _tmp125_;
3876 		ValaPropertyAccessor* _tmp126_;
3877 		ValaDataType* _tmp127_;
3878 		ValaDataType* _tmp128_;
3879 		_tmp112_ = vala_property_get_get_accessor (prop);
3880 		_tmp113_ = _tmp112_;
3881 		_tmp114_ = vala_property_accessor_get_value_type (_tmp113_);
3882 		_tmp115_ = _tmp114_;
3883 		_tmp116_ = vala_ccode_identifier_new ("result");
3884 		_tmp117_ = _tmp116_;
3885 		_tmp118_ = vala_ccode_base_module_serialize_expression ((ValaCCodeBaseModule*) self, _tmp115_, (ValaCCodeExpression*) _tmp117_);
3886 		_tmp119_ = _tmp118_;
3887 		_vala_ccode_node_unref0 (_tmp117_);
3888 		reply_expr = _tmp119_;
3889 		_tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3890 		_tmp121_ = _tmp120_;
3891 		_tmp122_ = vala_ccode_identifier_new ("_reply");
3892 		_tmp123_ = _tmp122_;
3893 		_tmp124_ = reply_expr;
3894 		vala_ccode_function_add_assignment (_tmp121_, (ValaCCodeExpression*) _tmp123_, _tmp124_);
3895 		_vala_ccode_node_unref0 (_tmp123_);
3896 		_tmp125_ = vala_property_get_get_accessor (prop);
3897 		_tmp126_ = _tmp125_;
3898 		_tmp127_ = vala_property_accessor_get_value_type (_tmp126_);
3899 		_tmp128_ = _tmp127_;
3900 		if (vala_ccode_base_module_requires_destroy (_tmp128_)) {
3901 			ValaLocalVariable* local = NULL;
3902 			ValaPropertyAccessor* _tmp129_;
3903 			ValaPropertyAccessor* _tmp130_;
3904 			ValaDataType* _tmp131_;
3905 			ValaDataType* _tmp132_;
3906 			ValaLocalVariable* _tmp133_;
3907 			ValaCCodeFunction* _tmp134_;
3908 			ValaCCodeFunction* _tmp135_;
3909 			ValaLocalVariable* _tmp136_;
3910 			ValaCCodeExpression* _tmp137_;
3911 			ValaCCodeExpression* _tmp138_;
3912 			_tmp129_ = vala_property_get_get_accessor (prop);
3913 			_tmp130_ = _tmp129_;
3914 			_tmp131_ = vala_property_accessor_get_value_type (_tmp130_);
3915 			_tmp132_ = _tmp131_;
3916 			_tmp133_ = vala_local_variable_new (_tmp132_, ".result", NULL, NULL);
3917 			local = _tmp133_;
3918 			_tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3919 			_tmp135_ = _tmp134_;
3920 			_tmp136_ = local;
3921 			_tmp137_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp136_);
3922 			_tmp138_ = _tmp137_;
3923 			vala_ccode_function_add_expression (_tmp135_, _tmp138_);
3924 			_vala_ccode_node_unref0 (_tmp138_);
3925 			_vala_code_node_unref0 (local);
3926 		}
3927 		_vala_ccode_node_unref0 (reply_expr);
3928 	}
3929 	_tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3930 	_tmp140_ = _tmp139_;
3931 	_tmp141_ = vala_ccode_identifier_new ("_reply");
3932 	_tmp142_ = _tmp141_;
3933 	vala_ccode_function_add_return (_tmp140_, (ValaCCodeExpression*) _tmp142_);
3934 	_vala_ccode_node_unref0 (_tmp142_);
3935 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
3936 	_tmp143_ = ((ValaCCodeBaseModule*) self)->cfile;
3937 	_tmp144_ = function;
3938 	vala_ccode_file_add_function_declaration (_tmp143_, _tmp144_);
3939 	_tmp145_ = ((ValaCCodeBaseModule*) self)->cfile;
3940 	_tmp146_ = function;
3941 	vala_ccode_file_add_function (_tmp145_, _tmp146_);
3942 	result = wrapper_name;
3943 	_vala_ccode_node_unref0 (ccall);
3944 	_vala_ccode_node_unref0 (function);
3945 	return result;
3946 }
3947 
3948 static gchar*
vala_gd_bus_server_module_generate_dbus_property_set_wrapper(ValaGDBusServerModule * self,ValaProperty * prop,ValaObjectTypeSymbol * sym)3949 vala_gd_bus_server_module_generate_dbus_property_set_wrapper (ValaGDBusServerModule* self,
3950                                                               ValaProperty* prop,
3951                                                               ValaObjectTypeSymbol* sym)
3952 {
3953 	gchar* wrapper_name = NULL;
3954 	ValaPropertyAccessor* _tmp0_;
3955 	ValaPropertyAccessor* _tmp1_;
3956 	gchar* _tmp2_;
3957 	gchar* _tmp3_;
3958 	gchar* _tmp4_;
3959 	gchar* _tmp5_;
3960 	ValaCCodeFunction* function = NULL;
3961 	const gchar* _tmp6_;
3962 	ValaCCodeFunction* _tmp7_;
3963 	ValaCCodeFunction* _tmp8_;
3964 	ValaCCodeFunction* _tmp9_;
3965 	gchar* _tmp10_;
3966 	gchar* _tmp11_;
3967 	gchar* _tmp12_;
3968 	gchar* _tmp13_;
3969 	ValaCCodeParameter* _tmp14_;
3970 	ValaCCodeParameter* _tmp15_;
3971 	ValaCCodeFunction* _tmp16_;
3972 	ValaCCodeParameter* _tmp17_;
3973 	ValaCCodeParameter* _tmp18_;
3974 	ValaCCodeFunction* _tmp19_;
3975 	ValaCCodeFunctionCall* ccall = NULL;
3976 	ValaPropertyAccessor* _tmp20_;
3977 	ValaPropertyAccessor* _tmp21_;
3978 	gchar* _tmp22_;
3979 	gchar* _tmp23_;
3980 	ValaCCodeIdentifier* _tmp24_;
3981 	ValaCCodeIdentifier* _tmp25_;
3982 	ValaCCodeFunctionCall* _tmp26_;
3983 	ValaCCodeFunctionCall* _tmp27_;
3984 	ValaCCodeFunctionCall* _tmp28_;
3985 	ValaCCodeIdentifier* _tmp29_;
3986 	ValaCCodeIdentifier* _tmp30_;
3987 	ValaDataType* owned_type = NULL;
3988 	ValaDataType* _tmp31_;
3989 	ValaDataType* _tmp32_;
3990 	ValaDataType* _tmp33_;
3991 	ValaDataType* _tmp34_;
3992 	ValaCCodeFunction* _tmp35_;
3993 	ValaCCodeFunction* _tmp36_;
3994 	ValaDataType* _tmp37_;
3995 	gchar* _tmp38_;
3996 	gchar* _tmp39_;
3997 	ValaDataType* _tmp40_;
3998 	ValaDataType* _tmp41_;
3999 	ValaCCodeExpression* _tmp42_;
4000 	ValaCCodeExpression* _tmp43_;
4001 	ValaCCodeVariableDeclarator* _tmp44_;
4002 	ValaCCodeVariableDeclarator* _tmp45_;
4003 	ValaStruct* st = NULL;
4004 	ValaDataType* _tmp46_;
4005 	ValaDataType* _tmp47_;
4006 	ValaTypeSymbol* _tmp48_;
4007 	ValaTypeSymbol* _tmp49_;
4008 	gboolean _tmp50_ = FALSE;
4009 	ValaStruct* _tmp51_;
4010 	ValaCCodeIdentifier* target = NULL;
4011 	ValaCCodeIdentifier* _tmp84_;
4012 	gchar* _tmp85_;
4013 	gchar* _tmp86_;
4014 	gboolean _tmp87_;
4015 	ValaCCodeFile* _tmp118_;
4016 	ValaCCodeFunction* _tmp119_;
4017 	ValaCCodeFile* _tmp120_;
4018 	ValaCCodeFunction* _tmp121_;
4019 	gchar* result = NULL;
4020 	g_return_val_if_fail (self != NULL, NULL);
4021 	g_return_val_if_fail (prop != NULL, NULL);
4022 	g_return_val_if_fail (sym != NULL, NULL);
4023 	_tmp0_ = vala_property_get_set_accessor (prop);
4024 	_tmp1_ = _tmp0_;
4025 	_tmp2_ = vala_get_ccode_name ((ValaCodeNode*) _tmp1_);
4026 	_tmp3_ = _tmp2_;
4027 	_tmp4_ = g_strdup_printf ("_dbus_%s", _tmp3_);
4028 	_tmp5_ = _tmp4_;
4029 	_g_free0 (_tmp3_);
4030 	wrapper_name = _tmp5_;
4031 	_tmp6_ = wrapper_name;
4032 	_tmp7_ = vala_ccode_function_new (_tmp6_, "void");
4033 	function = _tmp7_;
4034 	_tmp8_ = function;
4035 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
4036 	_tmp9_ = function;
4037 	_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) sym);
4038 	_tmp11_ = _tmp10_;
4039 	_tmp12_ = g_strconcat (_tmp11_, "*", NULL);
4040 	_tmp13_ = _tmp12_;
4041 	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
4042 	_tmp15_ = _tmp14_;
4043 	vala_ccode_function_add_parameter (_tmp9_, _tmp15_);
4044 	_vala_ccode_node_unref0 (_tmp15_);
4045 	_g_free0 (_tmp13_);
4046 	_g_free0 (_tmp11_);
4047 	_tmp16_ = function;
4048 	_tmp17_ = vala_ccode_parameter_new ("_value", "GVariant*");
4049 	_tmp18_ = _tmp17_;
4050 	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
4051 	_vala_ccode_node_unref0 (_tmp18_);
4052 	_tmp19_ = function;
4053 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
4054 	_tmp20_ = vala_property_get_set_accessor (prop);
4055 	_tmp21_ = _tmp20_;
4056 	_tmp22_ = vala_get_ccode_name ((ValaCodeNode*) _tmp21_);
4057 	_tmp23_ = _tmp22_;
4058 	_tmp24_ = vala_ccode_identifier_new (_tmp23_);
4059 	_tmp25_ = _tmp24_;
4060 	_tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
4061 	_tmp27_ = _tmp26_;
4062 	_vala_ccode_node_unref0 (_tmp25_);
4063 	_g_free0 (_tmp23_);
4064 	ccall = _tmp27_;
4065 	_tmp28_ = ccall;
4066 	_tmp29_ = vala_ccode_identifier_new ("self");
4067 	_tmp30_ = _tmp29_;
4068 	vala_ccode_function_call_add_argument (_tmp28_, (ValaCCodeExpression*) _tmp30_);
4069 	_vala_ccode_node_unref0 (_tmp30_);
4070 	_tmp31_ = vala_property_get_property_type (prop);
4071 	_tmp32_ = _tmp31_;
4072 	_tmp33_ = vala_data_type_copy (_tmp32_);
4073 	owned_type = _tmp33_;
4074 	_tmp34_ = owned_type;
4075 	vala_data_type_set_value_owned (_tmp34_, TRUE);
4076 	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4077 	_tmp36_ = _tmp35_;
4078 	_tmp37_ = owned_type;
4079 	_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
4080 	_tmp39_ = _tmp38_;
4081 	_tmp40_ = vala_property_get_property_type (prop);
4082 	_tmp41_ = _tmp40_;
4083 	_tmp42_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp41_, TRUE, FALSE);
4084 	_tmp43_ = _tmp42_;
4085 	_tmp44_ = vala_ccode_variable_declarator_new_zero ("value", _tmp43_, NULL);
4086 	_tmp45_ = _tmp44_;
4087 	vala_ccode_function_add_declaration (_tmp36_, _tmp39_, (ValaCCodeDeclarator*) _tmp45_, 0);
4088 	_vala_ccode_node_unref0 (_tmp45_);
4089 	_vala_ccode_node_unref0 (_tmp43_);
4090 	_g_free0 (_tmp39_);
4091 	_tmp46_ = vala_property_get_property_type (prop);
4092 	_tmp47_ = _tmp46_;
4093 	_tmp48_ = vala_data_type_get_type_symbol (_tmp47_);
4094 	_tmp49_ = _tmp48_;
4095 	st = G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp49_) : NULL;
4096 	_tmp51_ = st;
4097 	if (_tmp51_ != NULL) {
4098 		ValaStruct* _tmp52_;
4099 		_tmp52_ = st;
4100 		_tmp50_ = !vala_struct_is_simple_type (_tmp52_);
4101 	} else {
4102 		_tmp50_ = FALSE;
4103 	}
4104 	if (_tmp50_) {
4105 		ValaCCodeFunctionCall* _tmp53_;
4106 		ValaCCodeIdentifier* _tmp54_;
4107 		ValaCCodeIdentifier* _tmp55_;
4108 		ValaCCodeUnaryExpression* _tmp56_;
4109 		ValaCCodeUnaryExpression* _tmp57_;
4110 		_tmp53_ = ccall;
4111 		_tmp54_ = vala_ccode_identifier_new ("value");
4112 		_tmp55_ = _tmp54_;
4113 		_tmp56_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp55_);
4114 		_tmp57_ = _tmp56_;
4115 		vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) _tmp57_);
4116 		_vala_ccode_node_unref0 (_tmp57_);
4117 		_vala_ccode_node_unref0 (_tmp55_);
4118 	} else {
4119 		ValaCCodeFunctionCall* _tmp58_;
4120 		ValaCCodeIdentifier* _tmp59_;
4121 		ValaCCodeIdentifier* _tmp60_;
4122 		ValaArrayType* array_type = NULL;
4123 		ValaDataType* _tmp61_;
4124 		ValaDataType* _tmp62_;
4125 		ValaArrayType* _tmp63_;
4126 		ValaArrayType* _tmp64_;
4127 		_tmp58_ = ccall;
4128 		_tmp59_ = vala_ccode_identifier_new ("value");
4129 		_tmp60_ = _tmp59_;
4130 		vala_ccode_function_call_add_argument (_tmp58_, (ValaCCodeExpression*) _tmp60_);
4131 		_vala_ccode_node_unref0 (_tmp60_);
4132 		_tmp61_ = vala_property_get_property_type (prop);
4133 		_tmp62_ = _tmp61_;
4134 		_tmp63_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp62_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp62_) : NULL);
4135 		array_type = _tmp63_;
4136 		_tmp64_ = array_type;
4137 		if (_tmp64_ != NULL) {
4138 			gchar* length_ctype = NULL;
4139 			ValaArrayType* _tmp65_;
4140 			gchar* _tmp66_;
4141 			_tmp65_ = array_type;
4142 			_tmp66_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp65_);
4143 			length_ctype = _tmp66_;
4144 			{
4145 				gint dim = 0;
4146 				dim = 1;
4147 				{
4148 					gboolean _tmp67_ = FALSE;
4149 					_tmp67_ = TRUE;
4150 					while (TRUE) {
4151 						ValaArrayType* _tmp69_;
4152 						gint _tmp70_;
4153 						gint _tmp71_;
4154 						ValaCCodeFunction* _tmp72_;
4155 						ValaCCodeFunction* _tmp73_;
4156 						const gchar* _tmp74_;
4157 						gchar* _tmp75_;
4158 						gchar* _tmp76_;
4159 						ValaCCodeVariableDeclarator* _tmp77_;
4160 						ValaCCodeVariableDeclarator* _tmp78_;
4161 						ValaCCodeFunctionCall* _tmp79_;
4162 						gchar* _tmp80_;
4163 						gchar* _tmp81_;
4164 						ValaCCodeIdentifier* _tmp82_;
4165 						ValaCCodeIdentifier* _tmp83_;
4166 						if (!_tmp67_) {
4167 							gint _tmp68_;
4168 							_tmp68_ = dim;
4169 							dim = _tmp68_ + 1;
4170 						}
4171 						_tmp67_ = FALSE;
4172 						_tmp69_ = array_type;
4173 						_tmp70_ = vala_array_type_get_rank (_tmp69_);
4174 						_tmp71_ = _tmp70_;
4175 						if (!(dim <= _tmp71_)) {
4176 							break;
4177 						}
4178 						_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4179 						_tmp73_ = _tmp72_;
4180 						_tmp74_ = length_ctype;
4181 						_tmp75_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
4182 						_tmp76_ = _tmp75_;
4183 						_tmp77_ = vala_ccode_variable_declarator_new (_tmp76_, NULL, NULL);
4184 						_tmp78_ = _tmp77_;
4185 						vala_ccode_function_add_declaration (_tmp73_, _tmp74_, (ValaCCodeDeclarator*) _tmp78_, 0);
4186 						_vala_ccode_node_unref0 (_tmp78_);
4187 						_g_free0 (_tmp76_);
4188 						_tmp79_ = ccall;
4189 						_tmp80_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
4190 						_tmp81_ = _tmp80_;
4191 						_tmp82_ = vala_ccode_identifier_new (_tmp81_);
4192 						_tmp83_ = _tmp82_;
4193 						vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp83_);
4194 						_vala_ccode_node_unref0 (_tmp83_);
4195 						_g_free0 (_tmp81_);
4196 					}
4197 				}
4198 			}
4199 			_g_free0 (length_ctype);
4200 		}
4201 		_vala_code_node_unref0 (array_type);
4202 	}
4203 	_tmp84_ = vala_ccode_identifier_new ("value");
4204 	target = _tmp84_;
4205 	_tmp85_ = vala_gvariant_module_get_dbus_signature ((ValaSymbol*) prop);
4206 	_tmp86_ = _tmp85_;
4207 	_tmp87_ = _tmp86_ != NULL;
4208 	_g_free0 (_tmp86_);
4209 	if (_tmp87_) {
4210 		ValaCCodeFunction* _tmp88_;
4211 		ValaCCodeFunction* _tmp89_;
4212 		ValaCCodeIdentifier* _tmp90_;
4213 		ValaCCodeIdentifier* _tmp91_;
4214 		ValaCCodeIdentifier* _tmp92_;
4215 		ValaCCodeFunction* _tmp93_;
4216 		ValaCCodeFunction* _tmp94_;
4217 		ValaCCodeFunctionCall* _tmp95_;
4218 		_tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4219 		_tmp89_ = _tmp88_;
4220 		_tmp90_ = target;
4221 		_tmp91_ = vala_ccode_identifier_new ("_value");
4222 		_tmp92_ = _tmp91_;
4223 		vala_ccode_function_add_assignment (_tmp89_, (ValaCCodeExpression*) _tmp90_, (ValaCCodeExpression*) _tmp92_);
4224 		_vala_ccode_node_unref0 (_tmp92_);
4225 		_tmp93_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4226 		_tmp94_ = _tmp93_;
4227 		_tmp95_ = ccall;
4228 		vala_ccode_function_add_expression (_tmp94_, (ValaCCodeExpression*) _tmp95_);
4229 	} else {
4230 		ValaCCodeExpression* expr = NULL;
4231 		ValaDataType* _tmp96_;
4232 		ValaDataType* _tmp97_;
4233 		ValaCCodeIdentifier* _tmp98_;
4234 		ValaCCodeIdentifier* _tmp99_;
4235 		ValaCCodeIdentifier* _tmp100_;
4236 		ValaCCodeExpression* _tmp101_;
4237 		ValaCCodeExpression* _tmp102_;
4238 		ValaCCodeFunction* _tmp103_;
4239 		ValaCCodeFunction* _tmp104_;
4240 		ValaCCodeIdentifier* _tmp105_;
4241 		ValaCCodeExpression* _tmp106_;
4242 		ValaCCodeFunction* _tmp107_;
4243 		ValaCCodeFunction* _tmp108_;
4244 		ValaCCodeFunctionCall* _tmp109_;
4245 		ValaDataType* _tmp110_;
4246 		_tmp96_ = vala_property_get_property_type (prop);
4247 		_tmp97_ = _tmp96_;
4248 		_tmp98_ = vala_ccode_identifier_new ("_value");
4249 		_tmp99_ = _tmp98_;
4250 		_tmp100_ = target;
4251 		_tmp101_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp97_, (ValaCCodeExpression*) _tmp99_, (ValaCCodeExpression*) _tmp100_, NULL, NULL);
4252 		_tmp102_ = _tmp101_;
4253 		_vala_ccode_node_unref0 (_tmp99_);
4254 		expr = _tmp102_;
4255 		_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4256 		_tmp104_ = _tmp103_;
4257 		_tmp105_ = target;
4258 		_tmp106_ = expr;
4259 		vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) _tmp105_, _tmp106_);
4260 		_tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4261 		_tmp108_ = _tmp107_;
4262 		_tmp109_ = ccall;
4263 		vala_ccode_function_add_expression (_tmp108_, (ValaCCodeExpression*) _tmp109_);
4264 		_tmp110_ = owned_type;
4265 		if (vala_ccode_base_module_requires_destroy (_tmp110_)) {
4266 			ValaLocalVariable* local = NULL;
4267 			ValaDataType* _tmp111_;
4268 			ValaLocalVariable* _tmp112_;
4269 			ValaCCodeFunction* _tmp113_;
4270 			ValaCCodeFunction* _tmp114_;
4271 			ValaLocalVariable* _tmp115_;
4272 			ValaCCodeExpression* _tmp116_;
4273 			ValaCCodeExpression* _tmp117_;
4274 			_tmp111_ = owned_type;
4275 			_tmp112_ = vala_local_variable_new (_tmp111_, "value", NULL, NULL);
4276 			local = _tmp112_;
4277 			_tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4278 			_tmp114_ = _tmp113_;
4279 			_tmp115_ = local;
4280 			_tmp116_ = vala_ccode_base_module_destroy_local ((ValaCCodeBaseModule*) self, _tmp115_);
4281 			_tmp117_ = _tmp116_;
4282 			vala_ccode_function_add_expression (_tmp114_, _tmp117_);
4283 			_vala_ccode_node_unref0 (_tmp117_);
4284 			_vala_code_node_unref0 (local);
4285 		}
4286 		_vala_ccode_node_unref0 (expr);
4287 	}
4288 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4289 	_tmp118_ = ((ValaCCodeBaseModule*) self)->cfile;
4290 	_tmp119_ = function;
4291 	vala_ccode_file_add_function_declaration (_tmp118_, _tmp119_);
4292 	_tmp120_ = ((ValaCCodeBaseModule*) self)->cfile;
4293 	_tmp121_ = function;
4294 	vala_ccode_file_add_function (_tmp120_, _tmp121_);
4295 	result = wrapper_name;
4296 	_vala_ccode_node_unref0 (target);
4297 	_vala_code_node_unref0 (owned_type);
4298 	_vala_ccode_node_unref0 (ccall);
4299 	_vala_ccode_node_unref0 (function);
4300 	return result;
4301 }
4302 
4303 static void
vala_gd_bus_server_module_handle_signals(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym,gboolean connect)4304 vala_gd_bus_server_module_handle_signals (ValaGDBusServerModule* self,
4305                                           ValaObjectTypeSymbol* sym,
4306                                           gboolean connect)
4307 {
4308 	gchar* dbus_iface_name = NULL;
4309 	gchar* _tmp0_;
4310 	const gchar* _tmp1_;
4311 	g_return_if_fail (self != NULL);
4312 	g_return_if_fail (sym != NULL);
4313 	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
4314 	dbus_iface_name = _tmp0_;
4315 	_tmp1_ = dbus_iface_name;
4316 	if (_tmp1_ == NULL) {
4317 		_g_free0 (dbus_iface_name);
4318 		return;
4319 	}
4320 	{
4321 		ValaList* _sig_list = NULL;
4322 		ValaList* _tmp2_;
4323 		ValaList* _tmp3_;
4324 		gint _sig_size = 0;
4325 		ValaList* _tmp4_;
4326 		gint _tmp5_;
4327 		gint _tmp6_;
4328 		gint _sig_index = 0;
4329 		_tmp2_ = vala_object_type_symbol_get_signals (sym);
4330 		_tmp3_ = _vala_iterable_ref0 (_tmp2_);
4331 		_sig_list = _tmp3_;
4332 		_tmp4_ = _sig_list;
4333 		_tmp5_ = vala_collection_get_size ((ValaCollection*) _tmp4_);
4334 		_tmp6_ = _tmp5_;
4335 		_sig_size = _tmp6_;
4336 		_sig_index = -1;
4337 		while (TRUE) {
4338 			gint _tmp7_;
4339 			gint _tmp8_;
4340 			ValaSignal* sig = NULL;
4341 			ValaList* _tmp9_;
4342 			gpointer _tmp10_;
4343 			ValaSignal* _tmp11_;
4344 			ValaSymbolAccessibility _tmp12_;
4345 			ValaSymbolAccessibility _tmp13_;
4346 			ValaSignal* _tmp14_;
4347 			_sig_index = _sig_index + 1;
4348 			_tmp7_ = _sig_index;
4349 			_tmp8_ = _sig_size;
4350 			if (!(_tmp7_ < _tmp8_)) {
4351 				break;
4352 			}
4353 			_tmp9_ = _sig_list;
4354 			_tmp10_ = vala_list_get (_tmp9_, _sig_index);
4355 			sig = (ValaSignal*) _tmp10_;
4356 			_tmp11_ = sig;
4357 			_tmp12_ = vala_symbol_get_access ((ValaSymbol*) _tmp11_);
4358 			_tmp13_ = _tmp12_;
4359 			if (_tmp13_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
4360 				_vala_code_node_unref0 (sig);
4361 				continue;
4362 			}
4363 			_tmp14_ = sig;
4364 			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp14_)) {
4365 				_vala_code_node_unref0 (sig);
4366 				continue;
4367 			}
4368 			if (connect) {
4369 				ValaCCodeFunctionCall* connect_call = NULL;
4370 				ValaCCodeIdentifier* _tmp15_;
4371 				ValaCCodeIdentifier* _tmp16_;
4372 				ValaCCodeFunctionCall* _tmp17_;
4373 				ValaCCodeFunctionCall* _tmp18_;
4374 				ValaCCodeFunctionCall* _tmp19_;
4375 				ValaCCodeIdentifier* _tmp20_;
4376 				ValaCCodeIdentifier* _tmp21_;
4377 				ValaCCodeFunctionCall* _tmp22_;
4378 				ValaSignal* _tmp23_;
4379 				ValaCCodeConstant* _tmp24_;
4380 				ValaCCodeConstant* _tmp25_;
4381 				ValaCCodeFunctionCall* _tmp26_;
4382 				ValaSignal* _tmp27_;
4383 				const gchar* _tmp28_;
4384 				gchar* _tmp29_;
4385 				gchar* _tmp30_;
4386 				ValaCCodeIdentifier* _tmp31_;
4387 				ValaCCodeIdentifier* _tmp32_;
4388 				ValaCCodeCastExpression* _tmp33_;
4389 				ValaCCodeCastExpression* _tmp34_;
4390 				ValaCCodeFunctionCall* _tmp35_;
4391 				ValaCCodeIdentifier* _tmp36_;
4392 				ValaCCodeIdentifier* _tmp37_;
4393 				ValaCCodeFunction* _tmp38_;
4394 				ValaCCodeFunction* _tmp39_;
4395 				ValaCCodeFunctionCall* _tmp40_;
4396 				_tmp15_ = vala_ccode_identifier_new ("g_signal_connect");
4397 				_tmp16_ = _tmp15_;
4398 				_tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
4399 				_tmp18_ = _tmp17_;
4400 				_vala_ccode_node_unref0 (_tmp16_);
4401 				connect_call = _tmp18_;
4402 				_tmp19_ = connect_call;
4403 				_tmp20_ = vala_ccode_identifier_new ("object");
4404 				_tmp21_ = _tmp20_;
4405 				vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp21_);
4406 				_vala_ccode_node_unref0 (_tmp21_);
4407 				_tmp22_ = connect_call;
4408 				_tmp23_ = sig;
4409 				_tmp24_ = vala_ccode_base_module_get_signal_canonical_constant ((ValaCCodeBaseModule*) self, _tmp23_, NULL);
4410 				_tmp25_ = _tmp24_;
4411 				vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp25_);
4412 				_vala_ccode_node_unref0 (_tmp25_);
4413 				_tmp26_ = connect_call;
4414 				_tmp27_ = sig;
4415 				_tmp28_ = dbus_iface_name;
4416 				_tmp29_ = vala_gd_bus_server_module_generate_dbus_signal_wrapper (self, _tmp27_, sym, _tmp28_);
4417 				_tmp30_ = _tmp29_;
4418 				_tmp31_ = vala_ccode_identifier_new (_tmp30_);
4419 				_tmp32_ = _tmp31_;
4420 				_tmp33_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp32_, "GCallback");
4421 				_tmp34_ = _tmp33_;
4422 				vala_ccode_function_call_add_argument (_tmp26_, (ValaCCodeExpression*) _tmp34_);
4423 				_vala_ccode_node_unref0 (_tmp34_);
4424 				_vala_ccode_node_unref0 (_tmp32_);
4425 				_g_free0 (_tmp30_);
4426 				_tmp35_ = connect_call;
4427 				_tmp36_ = vala_ccode_identifier_new ("data");
4428 				_tmp37_ = _tmp36_;
4429 				vala_ccode_function_call_add_argument (_tmp35_, (ValaCCodeExpression*) _tmp37_);
4430 				_vala_ccode_node_unref0 (_tmp37_);
4431 				_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4432 				_tmp39_ = _tmp38_;
4433 				_tmp40_ = connect_call;
4434 				vala_ccode_function_add_expression (_tmp39_, (ValaCCodeExpression*) _tmp40_);
4435 				_vala_ccode_node_unref0 (connect_call);
4436 			} else {
4437 				ValaCCodeFunctionCall* disconnect_call = NULL;
4438 				ValaCCodeIdentifier* _tmp41_;
4439 				ValaCCodeIdentifier* _tmp42_;
4440 				ValaCCodeFunctionCall* _tmp43_;
4441 				ValaCCodeFunctionCall* _tmp44_;
4442 				ValaCCodeFunctionCall* _tmp45_;
4443 				ValaCCodeIdentifier* _tmp46_;
4444 				ValaCCodeIdentifier* _tmp47_;
4445 				ValaCCodeConstant* _tmp48_;
4446 				ValaCCodeConstant* _tmp49_;
4447 				ValaCCodeElementAccess* _tmp50_;
4448 				ValaCCodeElementAccess* _tmp51_;
4449 				ValaCCodeFunctionCall* _tmp52_;
4450 				gchar* _tmp53_;
4451 				gchar* _tmp54_;
4452 				ValaSignal* _tmp55_;
4453 				gchar* _tmp56_;
4454 				gchar* _tmp57_;
4455 				gchar* _tmp58_;
4456 				gchar* _tmp59_;
4457 				ValaCCodeIdentifier* _tmp60_;
4458 				ValaCCodeIdentifier* _tmp61_;
4459 				ValaCCodeFunctionCall* _tmp62_;
4460 				ValaCCodeIdentifier* _tmp63_;
4461 				ValaCCodeIdentifier* _tmp64_;
4462 				ValaCCodeFunction* _tmp65_;
4463 				ValaCCodeFunction* _tmp66_;
4464 				ValaCCodeFunctionCall* _tmp67_;
4465 				_tmp41_ = vala_ccode_identifier_new ("g_signal_handlers_disconnect_by_func");
4466 				_tmp42_ = _tmp41_;
4467 				_tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
4468 				_tmp44_ = _tmp43_;
4469 				_vala_ccode_node_unref0 (_tmp42_);
4470 				disconnect_call = _tmp44_;
4471 				_tmp45_ = disconnect_call;
4472 				_tmp46_ = vala_ccode_identifier_new ("data");
4473 				_tmp47_ = _tmp46_;
4474 				_tmp48_ = vala_ccode_constant_new ("0");
4475 				_tmp49_ = _tmp48_;
4476 				_tmp50_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp47_, (ValaCCodeExpression*) _tmp49_);
4477 				_tmp51_ = _tmp50_;
4478 				vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp51_);
4479 				_vala_ccode_node_unref0 (_tmp51_);
4480 				_vala_ccode_node_unref0 (_tmp49_);
4481 				_vala_ccode_node_unref0 (_tmp47_);
4482 				_tmp52_ = disconnect_call;
4483 				_tmp53_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
4484 				_tmp54_ = _tmp53_;
4485 				_tmp55_ = sig;
4486 				_tmp56_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp55_, NULL);
4487 				_tmp57_ = _tmp56_;
4488 				_tmp58_ = g_strdup_printf ("_dbus_%s_%s", _tmp54_, _tmp57_);
4489 				_tmp59_ = _tmp58_;
4490 				_tmp60_ = vala_ccode_identifier_new (_tmp59_);
4491 				_tmp61_ = _tmp60_;
4492 				vala_ccode_function_call_add_argument (_tmp52_, (ValaCCodeExpression*) _tmp61_);
4493 				_vala_ccode_node_unref0 (_tmp61_);
4494 				_g_free0 (_tmp59_);
4495 				_g_free0 (_tmp57_);
4496 				_g_free0 (_tmp54_);
4497 				_tmp62_ = disconnect_call;
4498 				_tmp63_ = vala_ccode_identifier_new ("data");
4499 				_tmp64_ = _tmp63_;
4500 				vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_);
4501 				_vala_ccode_node_unref0 (_tmp64_);
4502 				_tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4503 				_tmp66_ = _tmp65_;
4504 				_tmp67_ = disconnect_call;
4505 				vala_ccode_function_add_expression (_tmp66_, (ValaCCodeExpression*) _tmp67_);
4506 				_vala_ccode_node_unref0 (disconnect_call);
4507 			}
4508 			_vala_code_node_unref0 (sig);
4509 		}
4510 		_vala_iterable_unref0 (_sig_list);
4511 	}
4512 	_g_free0 (dbus_iface_name);
4513 }
4514 
4515 static void
vala_gd_bus_server_module_generate_interface_method_call_function(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym)4516 vala_gd_bus_server_module_generate_interface_method_call_function (ValaGDBusServerModule* self,
4517                                                                    ValaObjectTypeSymbol* sym)
4518 {
4519 	ValaCCodeFunction* cfunc = NULL;
4520 	gchar* _tmp0_;
4521 	gchar* _tmp1_;
4522 	gchar* _tmp2_;
4523 	gchar* _tmp3_;
4524 	ValaCCodeFunction* _tmp4_;
4525 	ValaCCodeFunction* _tmp5_;
4526 	ValaCCodeFunction* _tmp6_;
4527 	ValaCCodeParameter* _tmp7_;
4528 	ValaCCodeParameter* _tmp8_;
4529 	ValaCCodeFunction* _tmp9_;
4530 	ValaCCodeParameter* _tmp10_;
4531 	ValaCCodeParameter* _tmp11_;
4532 	ValaCCodeFunction* _tmp12_;
4533 	ValaCCodeParameter* _tmp13_;
4534 	ValaCCodeParameter* _tmp14_;
4535 	ValaCCodeFunction* _tmp15_;
4536 	ValaCCodeParameter* _tmp16_;
4537 	ValaCCodeParameter* _tmp17_;
4538 	ValaCCodeFunction* _tmp18_;
4539 	ValaCCodeParameter* _tmp19_;
4540 	ValaCCodeParameter* _tmp20_;
4541 	ValaCCodeFunction* _tmp21_;
4542 	ValaCCodeParameter* _tmp22_;
4543 	ValaCCodeParameter* _tmp23_;
4544 	ValaCCodeFunction* _tmp24_;
4545 	ValaCCodeParameter* _tmp25_;
4546 	ValaCCodeParameter* _tmp26_;
4547 	ValaCCodeFunction* _tmp27_;
4548 	ValaCCodeParameter* _tmp28_;
4549 	ValaCCodeParameter* _tmp29_;
4550 	ValaCCodeFunction* _tmp30_;
4551 	ValaCCodeFunction* _tmp31_;
4552 	ValaCCodeModifiers _tmp32_;
4553 	ValaCCodeModifiers _tmp33_;
4554 	ValaCCodeFunction* _tmp34_;
4555 	ValaCCodeFunction* _tmp35_;
4556 	ValaCCodeFunction* _tmp36_;
4557 	ValaCCodeIdentifier* _tmp37_;
4558 	ValaCCodeIdentifier* _tmp38_;
4559 	ValaCCodeVariableDeclarator* _tmp39_;
4560 	ValaCCodeVariableDeclarator* _tmp40_;
4561 	ValaCCodeFunction* _tmp41_;
4562 	ValaCCodeFunction* _tmp42_;
4563 	ValaCCodeIdentifier* _tmp43_;
4564 	ValaCCodeIdentifier* _tmp44_;
4565 	ValaCCodeConstant* _tmp45_;
4566 	ValaCCodeConstant* _tmp46_;
4567 	ValaCCodeElementAccess* _tmp47_;
4568 	ValaCCodeElementAccess* _tmp48_;
4569 	ValaCCodeVariableDeclarator* _tmp49_;
4570 	ValaCCodeVariableDeclarator* _tmp50_;
4571 	gboolean first = FALSE;
4572 	ValaCCodeFunctionCall* ccall = NULL;
4573 	ValaCCodeIdentifier* _tmp125_;
4574 	ValaCCodeIdentifier* _tmp126_;
4575 	ValaCCodeFunctionCall* _tmp127_;
4576 	ValaCCodeFunctionCall* _tmp128_;
4577 	ValaCCodeFunctionCall* _tmp129_;
4578 	ValaCCodeIdentifier* _tmp130_;
4579 	ValaCCodeIdentifier* _tmp131_;
4580 	ValaCCodeFunction* _tmp132_;
4581 	ValaCCodeFunction* _tmp133_;
4582 	ValaCCodeFunctionCall* _tmp134_;
4583 	ValaCCodeFile* _tmp137_;
4584 	ValaCCodeFunction* _tmp138_;
4585 	ValaCCodeFile* _tmp139_;
4586 	ValaCCodeFunction* _tmp140_;
4587 	g_return_if_fail (self != NULL);
4588 	g_return_if_fail (sym != NULL);
4589 	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
4590 	_tmp1_ = _tmp0_;
4591 	_tmp2_ = g_strconcat (_tmp1_, "dbus_interface_method_call", NULL);
4592 	_tmp3_ = _tmp2_;
4593 	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4594 	_tmp5_ = _tmp4_;
4595 	_g_free0 (_tmp3_);
4596 	_g_free0 (_tmp1_);
4597 	cfunc = _tmp5_;
4598 	_tmp6_ = cfunc;
4599 	_tmp7_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
4600 	_tmp8_ = _tmp7_;
4601 	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
4602 	_vala_ccode_node_unref0 (_tmp8_);
4603 	_tmp9_ = cfunc;
4604 	_tmp10_ = vala_ccode_parameter_new ("sender", "const gchar*");
4605 	_tmp11_ = _tmp10_;
4606 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
4607 	_vala_ccode_node_unref0 (_tmp11_);
4608 	_tmp12_ = cfunc;
4609 	_tmp13_ = vala_ccode_parameter_new ("object_path", "const gchar*");
4610 	_tmp14_ = _tmp13_;
4611 	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
4612 	_vala_ccode_node_unref0 (_tmp14_);
4613 	_tmp15_ = cfunc;
4614 	_tmp16_ = vala_ccode_parameter_new ("interface_name", "const gchar*");
4615 	_tmp17_ = _tmp16_;
4616 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
4617 	_vala_ccode_node_unref0 (_tmp17_);
4618 	_tmp18_ = cfunc;
4619 	_tmp19_ = vala_ccode_parameter_new ("method_name", "const gchar*");
4620 	_tmp20_ = _tmp19_;
4621 	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
4622 	_vala_ccode_node_unref0 (_tmp20_);
4623 	_tmp21_ = cfunc;
4624 	_tmp22_ = vala_ccode_parameter_new ("parameters", "GVariant*");
4625 	_tmp23_ = _tmp22_;
4626 	vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
4627 	_vala_ccode_node_unref0 (_tmp23_);
4628 	_tmp24_ = cfunc;
4629 	_tmp25_ = vala_ccode_parameter_new ("invocation", "GDBusMethodInvocation*");
4630 	_tmp26_ = _tmp25_;
4631 	vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
4632 	_vala_ccode_node_unref0 (_tmp26_);
4633 	_tmp27_ = cfunc;
4634 	_tmp28_ = vala_ccode_parameter_new ("user_data", "gpointer");
4635 	_tmp29_ = _tmp28_;
4636 	vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
4637 	_vala_ccode_node_unref0 (_tmp29_);
4638 	_tmp30_ = cfunc;
4639 	_tmp31_ = cfunc;
4640 	_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
4641 	_tmp33_ = _tmp32_;
4642 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_STATIC);
4643 	_tmp34_ = cfunc;
4644 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp34_);
4645 	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4646 	_tmp36_ = _tmp35_;
4647 	_tmp37_ = vala_ccode_identifier_new ("user_data");
4648 	_tmp38_ = _tmp37_;
4649 	_tmp39_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp38_, NULL);
4650 	_tmp40_ = _tmp39_;
4651 	vala_ccode_function_add_declaration (_tmp36_, "gpointer*", (ValaCCodeDeclarator*) _tmp40_, 0);
4652 	_vala_ccode_node_unref0 (_tmp40_);
4653 	_vala_ccode_node_unref0 (_tmp38_);
4654 	_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4655 	_tmp42_ = _tmp41_;
4656 	_tmp43_ = vala_ccode_identifier_new ("data");
4657 	_tmp44_ = _tmp43_;
4658 	_tmp45_ = vala_ccode_constant_new ("0");
4659 	_tmp46_ = _tmp45_;
4660 	_tmp47_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp44_, (ValaCCodeExpression*) _tmp46_);
4661 	_tmp48_ = _tmp47_;
4662 	_tmp49_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) _tmp48_, NULL);
4663 	_tmp50_ = _tmp49_;
4664 	vala_ccode_function_add_declaration (_tmp42_, "gpointer", (ValaCCodeDeclarator*) _tmp50_, 0);
4665 	_vala_ccode_node_unref0 (_tmp50_);
4666 	_vala_ccode_node_unref0 (_tmp48_);
4667 	_vala_ccode_node_unref0 (_tmp46_);
4668 	_vala_ccode_node_unref0 (_tmp44_);
4669 	first = TRUE;
4670 	{
4671 		ValaList* _m_list = NULL;
4672 		ValaList* _tmp51_;
4673 		ValaList* _tmp52_;
4674 		gint _m_size = 0;
4675 		ValaList* _tmp53_;
4676 		gint _tmp54_;
4677 		gint _tmp55_;
4678 		gint _m_index = 0;
4679 		_tmp51_ = vala_object_type_symbol_get_methods (sym);
4680 		_tmp52_ = _vala_iterable_ref0 (_tmp51_);
4681 		_m_list = _tmp52_;
4682 		_tmp53_ = _m_list;
4683 		_tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
4684 		_tmp55_ = _tmp54_;
4685 		_m_size = _tmp55_;
4686 		_m_index = -1;
4687 		while (TRUE) {
4688 			gint _tmp56_;
4689 			gint _tmp57_;
4690 			ValaMethod* m = NULL;
4691 			ValaList* _tmp58_;
4692 			gpointer _tmp59_;
4693 			gboolean _tmp60_ = FALSE;
4694 			gboolean _tmp61_ = FALSE;
4695 			gboolean _tmp62_ = FALSE;
4696 			ValaMethod* _tmp63_;
4697 			ValaMethod* _tmp73_;
4698 			ValaCCodeFile* _tmp74_;
4699 			ValaCCodeFunctionCall* ccheck = NULL;
4700 			ValaCCodeIdentifier* _tmp75_;
4701 			ValaCCodeIdentifier* _tmp76_;
4702 			ValaCCodeFunctionCall* _tmp77_;
4703 			ValaCCodeFunctionCall* _tmp78_;
4704 			ValaCCodeFunctionCall* _tmp79_;
4705 			ValaCCodeIdentifier* _tmp80_;
4706 			ValaCCodeIdentifier* _tmp81_;
4707 			ValaCCodeFunctionCall* _tmp82_;
4708 			ValaMethod* _tmp83_;
4709 			gchar* _tmp84_;
4710 			gchar* _tmp85_;
4711 			gchar* _tmp86_;
4712 			gchar* _tmp87_;
4713 			ValaCCodeConstant* _tmp88_;
4714 			ValaCCodeConstant* _tmp89_;
4715 			ValaCCodeFunctionCall* ccall = NULL;
4716 			ValaMethod* _tmp104_;
4717 			gchar* _tmp105_;
4718 			gchar* _tmp106_;
4719 			ValaCCodeIdentifier* _tmp107_;
4720 			ValaCCodeIdentifier* _tmp108_;
4721 			ValaCCodeFunctionCall* _tmp109_;
4722 			ValaCCodeFunctionCall* _tmp110_;
4723 			ValaCCodeFunctionCall* _tmp111_;
4724 			ValaCCodeIdentifier* _tmp112_;
4725 			ValaCCodeIdentifier* _tmp113_;
4726 			ValaCCodeFunctionCall* _tmp114_;
4727 			ValaCCodeIdentifier* _tmp115_;
4728 			ValaCCodeIdentifier* _tmp116_;
4729 			ValaCCodeFunctionCall* _tmp117_;
4730 			ValaCCodeIdentifier* _tmp118_;
4731 			ValaCCodeIdentifier* _tmp119_;
4732 			ValaCCodeFunction* _tmp120_;
4733 			ValaCCodeFunction* _tmp121_;
4734 			ValaCCodeFunctionCall* _tmp122_;
4735 			_m_index = _m_index + 1;
4736 			_tmp56_ = _m_index;
4737 			_tmp57_ = _m_size;
4738 			if (!(_tmp56_ < _tmp57_)) {
4739 				break;
4740 			}
4741 			_tmp58_ = _m_list;
4742 			_tmp59_ = vala_list_get (_tmp58_, _m_index);
4743 			m = (ValaMethod*) _tmp59_;
4744 			_tmp63_ = m;
4745 			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp63_, VALA_TYPE_CREATION_METHOD)) {
4746 				_tmp62_ = TRUE;
4747 			} else {
4748 				ValaMethod* _tmp64_;
4749 				ValaMemberBinding _tmp65_;
4750 				ValaMemberBinding _tmp66_;
4751 				_tmp64_ = m;
4752 				_tmp65_ = vala_method_get_binding (_tmp64_);
4753 				_tmp66_ = _tmp65_;
4754 				_tmp62_ = _tmp66_ != VALA_MEMBER_BINDING_INSTANCE;
4755 			}
4756 			if (_tmp62_) {
4757 				_tmp61_ = TRUE;
4758 			} else {
4759 				ValaMethod* _tmp67_;
4760 				gboolean _tmp68_;
4761 				gboolean _tmp69_;
4762 				_tmp67_ = m;
4763 				_tmp68_ = vala_method_get_overrides (_tmp67_);
4764 				_tmp69_ = _tmp68_;
4765 				_tmp61_ = _tmp69_;
4766 			}
4767 			if (_tmp61_) {
4768 				_tmp60_ = TRUE;
4769 			} else {
4770 				ValaMethod* _tmp70_;
4771 				ValaSymbolAccessibility _tmp71_;
4772 				ValaSymbolAccessibility _tmp72_;
4773 				_tmp70_ = m;
4774 				_tmp71_ = vala_symbol_get_access ((ValaSymbol*) _tmp70_);
4775 				_tmp72_ = _tmp71_;
4776 				_tmp60_ = _tmp72_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
4777 			}
4778 			if (_tmp60_) {
4779 				_vala_code_node_unref0 (m);
4780 				continue;
4781 			}
4782 			_tmp73_ = m;
4783 			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp73_)) {
4784 				_vala_code_node_unref0 (m);
4785 				continue;
4786 			}
4787 			_tmp74_ = ((ValaCCodeBaseModule*) self)->cfile;
4788 			vala_ccode_file_add_include (_tmp74_, "string.h", FALSE);
4789 			_tmp75_ = vala_ccode_identifier_new ("strcmp");
4790 			_tmp76_ = _tmp75_;
4791 			_tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
4792 			_tmp78_ = _tmp77_;
4793 			_vala_ccode_node_unref0 (_tmp76_);
4794 			ccheck = _tmp78_;
4795 			_tmp79_ = ccheck;
4796 			_tmp80_ = vala_ccode_identifier_new ("method_name");
4797 			_tmp81_ = _tmp80_;
4798 			vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
4799 			_vala_ccode_node_unref0 (_tmp81_);
4800 			_tmp82_ = ccheck;
4801 			_tmp83_ = m;
4802 			_tmp84_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp83_);
4803 			_tmp85_ = _tmp84_;
4804 			_tmp86_ = g_strdup_printf ("\"%s\"", _tmp85_);
4805 			_tmp87_ = _tmp86_;
4806 			_tmp88_ = vala_ccode_constant_new (_tmp87_);
4807 			_tmp89_ = _tmp88_;
4808 			vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp89_);
4809 			_vala_ccode_node_unref0 (_tmp89_);
4810 			_g_free0 (_tmp87_);
4811 			_g_free0 (_tmp85_);
4812 			if (first) {
4813 				ValaCCodeFunction* _tmp90_;
4814 				ValaCCodeFunction* _tmp91_;
4815 				ValaCCodeFunctionCall* _tmp92_;
4816 				ValaCCodeConstant* _tmp93_;
4817 				ValaCCodeConstant* _tmp94_;
4818 				ValaCCodeBinaryExpression* _tmp95_;
4819 				ValaCCodeBinaryExpression* _tmp96_;
4820 				_tmp90_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4821 				_tmp91_ = _tmp90_;
4822 				_tmp92_ = ccheck;
4823 				_tmp93_ = vala_ccode_constant_new ("0");
4824 				_tmp94_ = _tmp93_;
4825 				_tmp95_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp94_);
4826 				_tmp96_ = _tmp95_;
4827 				vala_ccode_function_open_if (_tmp91_, (ValaCCodeExpression*) _tmp96_);
4828 				_vala_ccode_node_unref0 (_tmp96_);
4829 				_vala_ccode_node_unref0 (_tmp94_);
4830 				first = FALSE;
4831 			} else {
4832 				ValaCCodeFunction* _tmp97_;
4833 				ValaCCodeFunction* _tmp98_;
4834 				ValaCCodeFunctionCall* _tmp99_;
4835 				ValaCCodeConstant* _tmp100_;
4836 				ValaCCodeConstant* _tmp101_;
4837 				ValaCCodeBinaryExpression* _tmp102_;
4838 				ValaCCodeBinaryExpression* _tmp103_;
4839 				_tmp97_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4840 				_tmp98_ = _tmp97_;
4841 				_tmp99_ = ccheck;
4842 				_tmp100_ = vala_ccode_constant_new ("0");
4843 				_tmp101_ = _tmp100_;
4844 				_tmp102_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp99_, (ValaCCodeExpression*) _tmp101_);
4845 				_tmp103_ = _tmp102_;
4846 				vala_ccode_function_else_if (_tmp98_, (ValaCCodeExpression*) _tmp103_);
4847 				_vala_ccode_node_unref0 (_tmp103_);
4848 				_vala_ccode_node_unref0 (_tmp101_);
4849 			}
4850 			_tmp104_ = m;
4851 			_tmp105_ = vala_gd_bus_server_module_generate_dbus_wrapper (self, _tmp104_, sym, FALSE);
4852 			_tmp106_ = _tmp105_;
4853 			_tmp107_ = vala_ccode_identifier_new (_tmp106_);
4854 			_tmp108_ = _tmp107_;
4855 			_tmp109_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp108_);
4856 			_tmp110_ = _tmp109_;
4857 			_vala_ccode_node_unref0 (_tmp108_);
4858 			_g_free0 (_tmp106_);
4859 			ccall = _tmp110_;
4860 			_tmp111_ = ccall;
4861 			_tmp112_ = vala_ccode_identifier_new ("object");
4862 			_tmp113_ = _tmp112_;
4863 			vala_ccode_function_call_add_argument (_tmp111_, (ValaCCodeExpression*) _tmp113_);
4864 			_vala_ccode_node_unref0 (_tmp113_);
4865 			_tmp114_ = ccall;
4866 			_tmp115_ = vala_ccode_identifier_new ("parameters");
4867 			_tmp116_ = _tmp115_;
4868 			vala_ccode_function_call_add_argument (_tmp114_, (ValaCCodeExpression*) _tmp116_);
4869 			_vala_ccode_node_unref0 (_tmp116_);
4870 			_tmp117_ = ccall;
4871 			_tmp118_ = vala_ccode_identifier_new ("invocation");
4872 			_tmp119_ = _tmp118_;
4873 			vala_ccode_function_call_add_argument (_tmp117_, (ValaCCodeExpression*) _tmp119_);
4874 			_vala_ccode_node_unref0 (_tmp119_);
4875 			_tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4876 			_tmp121_ = _tmp120_;
4877 			_tmp122_ = ccall;
4878 			vala_ccode_function_add_expression (_tmp121_, (ValaCCodeExpression*) _tmp122_);
4879 			_vala_ccode_node_unref0 (ccall);
4880 			_vala_ccode_node_unref0 (ccheck);
4881 			_vala_code_node_unref0 (m);
4882 		}
4883 		_vala_iterable_unref0 (_m_list);
4884 	}
4885 	if (!first) {
4886 		ValaCCodeFunction* _tmp123_;
4887 		ValaCCodeFunction* _tmp124_;
4888 		_tmp123_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4889 		_tmp124_ = _tmp123_;
4890 		vala_ccode_function_add_else (_tmp124_);
4891 	}
4892 	_tmp125_ = vala_ccode_identifier_new ("g_object_unref");
4893 	_tmp126_ = _tmp125_;
4894 	_tmp127_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp126_);
4895 	_tmp128_ = _tmp127_;
4896 	_vala_ccode_node_unref0 (_tmp126_);
4897 	ccall = _tmp128_;
4898 	_tmp129_ = ccall;
4899 	_tmp130_ = vala_ccode_identifier_new ("invocation");
4900 	_tmp131_ = _tmp130_;
4901 	vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp131_);
4902 	_vala_ccode_node_unref0 (_tmp131_);
4903 	_tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4904 	_tmp133_ = _tmp132_;
4905 	_tmp134_ = ccall;
4906 	vala_ccode_function_add_expression (_tmp133_, (ValaCCodeExpression*) _tmp134_);
4907 	if (!first) {
4908 		ValaCCodeFunction* _tmp135_;
4909 		ValaCCodeFunction* _tmp136_;
4910 		_tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4911 		_tmp136_ = _tmp135_;
4912 		vala_ccode_function_close (_tmp136_);
4913 	}
4914 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4915 	_tmp137_ = ((ValaCCodeBaseModule*) self)->cfile;
4916 	_tmp138_ = cfunc;
4917 	vala_ccode_file_add_function_declaration (_tmp137_, _tmp138_);
4918 	_tmp139_ = ((ValaCCodeBaseModule*) self)->cfile;
4919 	_tmp140_ = cfunc;
4920 	vala_ccode_file_add_function (_tmp139_, _tmp140_);
4921 	_vala_ccode_node_unref0 (ccall);
4922 	_vala_ccode_node_unref0 (cfunc);
4923 }
4924 
4925 static void
vala_gd_bus_server_module_generate_interface_get_property_function(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym)4926 vala_gd_bus_server_module_generate_interface_get_property_function (ValaGDBusServerModule* self,
4927                                                                     ValaObjectTypeSymbol* sym)
4928 {
4929 	ValaCCodeFunction* cfunc = NULL;
4930 	gchar* _tmp0_;
4931 	gchar* _tmp1_;
4932 	gchar* _tmp2_;
4933 	gchar* _tmp3_;
4934 	ValaCCodeFunction* _tmp4_;
4935 	ValaCCodeFunction* _tmp5_;
4936 	ValaCCodeFunction* _tmp6_;
4937 	ValaCCodeParameter* _tmp7_;
4938 	ValaCCodeParameter* _tmp8_;
4939 	ValaCCodeFunction* _tmp9_;
4940 	ValaCCodeParameter* _tmp10_;
4941 	ValaCCodeParameter* _tmp11_;
4942 	ValaCCodeFunction* _tmp12_;
4943 	ValaCCodeParameter* _tmp13_;
4944 	ValaCCodeParameter* _tmp14_;
4945 	ValaCCodeFunction* _tmp15_;
4946 	ValaCCodeParameter* _tmp16_;
4947 	ValaCCodeParameter* _tmp17_;
4948 	ValaCCodeFunction* _tmp18_;
4949 	ValaCCodeParameter* _tmp19_;
4950 	ValaCCodeParameter* _tmp20_;
4951 	ValaCCodeFunction* _tmp21_;
4952 	ValaCCodeParameter* _tmp22_;
4953 	ValaCCodeParameter* _tmp23_;
4954 	ValaCCodeFunction* _tmp24_;
4955 	ValaCCodeParameter* _tmp25_;
4956 	ValaCCodeParameter* _tmp26_;
4957 	ValaCCodeFunction* _tmp27_;
4958 	ValaCCodeFunction* _tmp28_;
4959 	ValaCCodeModifiers _tmp29_;
4960 	ValaCCodeModifiers _tmp30_;
4961 	ValaCCodeFile* _tmp31_;
4962 	ValaCCodeFunction* _tmp32_;
4963 	ValaCCodeFunction* _tmp33_;
4964 	ValaCCodeFunction* _tmp34_;
4965 	ValaCCodeFunction* _tmp35_;
4966 	ValaCCodeIdentifier* _tmp36_;
4967 	ValaCCodeIdentifier* _tmp37_;
4968 	ValaCCodeVariableDeclarator* _tmp38_;
4969 	ValaCCodeVariableDeclarator* _tmp39_;
4970 	ValaCCodeFunction* _tmp40_;
4971 	ValaCCodeFunction* _tmp41_;
4972 	ValaCCodeIdentifier* _tmp42_;
4973 	ValaCCodeIdentifier* _tmp43_;
4974 	ValaCCodeConstant* _tmp44_;
4975 	ValaCCodeConstant* _tmp45_;
4976 	ValaCCodeElementAccess* _tmp46_;
4977 	ValaCCodeElementAccess* _tmp47_;
4978 	ValaCCodeVariableDeclarator* _tmp48_;
4979 	ValaCCodeVariableDeclarator* _tmp49_;
4980 	gboolean firstif = FALSE;
4981 	ValaCCodeFunction* _tmp116_;
4982 	ValaCCodeFunction* _tmp117_;
4983 	ValaCCodeConstant* _tmp118_;
4984 	ValaCCodeConstant* _tmp119_;
4985 	ValaCCodeFile* _tmp120_;
4986 	ValaCCodeFunction* _tmp121_;
4987 	g_return_if_fail (self != NULL);
4988 	g_return_if_fail (sym != NULL);
4989 	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
4990 	_tmp1_ = _tmp0_;
4991 	_tmp2_ = g_strconcat (_tmp1_, "dbus_interface_get_property", NULL);
4992 	_tmp3_ = _tmp2_;
4993 	_tmp4_ = vala_ccode_function_new (_tmp3_, "GVariant*");
4994 	_tmp5_ = _tmp4_;
4995 	_g_free0 (_tmp3_);
4996 	_g_free0 (_tmp1_);
4997 	cfunc = _tmp5_;
4998 	_tmp6_ = cfunc;
4999 	_tmp7_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
5000 	_tmp8_ = _tmp7_;
5001 	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
5002 	_vala_ccode_node_unref0 (_tmp8_);
5003 	_tmp9_ = cfunc;
5004 	_tmp10_ = vala_ccode_parameter_new ("sender", "const gchar*");
5005 	_tmp11_ = _tmp10_;
5006 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
5007 	_vala_ccode_node_unref0 (_tmp11_);
5008 	_tmp12_ = cfunc;
5009 	_tmp13_ = vala_ccode_parameter_new ("object_path", "const gchar*");
5010 	_tmp14_ = _tmp13_;
5011 	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
5012 	_vala_ccode_node_unref0 (_tmp14_);
5013 	_tmp15_ = cfunc;
5014 	_tmp16_ = vala_ccode_parameter_new ("interface_name", "const gchar*");
5015 	_tmp17_ = _tmp16_;
5016 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
5017 	_vala_ccode_node_unref0 (_tmp17_);
5018 	_tmp18_ = cfunc;
5019 	_tmp19_ = vala_ccode_parameter_new ("property_name", "const gchar*");
5020 	_tmp20_ = _tmp19_;
5021 	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
5022 	_vala_ccode_node_unref0 (_tmp20_);
5023 	_tmp21_ = cfunc;
5024 	_tmp22_ = vala_ccode_parameter_new ("error", "GError**");
5025 	_tmp23_ = _tmp22_;
5026 	vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
5027 	_vala_ccode_node_unref0 (_tmp23_);
5028 	_tmp24_ = cfunc;
5029 	_tmp25_ = vala_ccode_parameter_new ("user_data", "gpointer");
5030 	_tmp26_ = _tmp25_;
5031 	vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
5032 	_vala_ccode_node_unref0 (_tmp26_);
5033 	_tmp27_ = cfunc;
5034 	_tmp28_ = cfunc;
5035 	_tmp29_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp28_);
5036 	_tmp30_ = _tmp29_;
5037 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp28_, _tmp30_ | VALA_CCODE_MODIFIERS_STATIC);
5038 	_tmp31_ = ((ValaCCodeBaseModule*) self)->cfile;
5039 	_tmp32_ = cfunc;
5040 	vala_ccode_file_add_function_declaration (_tmp31_, _tmp32_);
5041 	_tmp33_ = cfunc;
5042 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
5043 	_tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5044 	_tmp35_ = _tmp34_;
5045 	_tmp36_ = vala_ccode_identifier_new ("user_data");
5046 	_tmp37_ = _tmp36_;
5047 	_tmp38_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp37_, NULL);
5048 	_tmp39_ = _tmp38_;
5049 	vala_ccode_function_add_declaration (_tmp35_, "gpointer*", (ValaCCodeDeclarator*) _tmp39_, 0);
5050 	_vala_ccode_node_unref0 (_tmp39_);
5051 	_vala_ccode_node_unref0 (_tmp37_);
5052 	_tmp40_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5053 	_tmp41_ = _tmp40_;
5054 	_tmp42_ = vala_ccode_identifier_new ("data");
5055 	_tmp43_ = _tmp42_;
5056 	_tmp44_ = vala_ccode_constant_new ("0");
5057 	_tmp45_ = _tmp44_;
5058 	_tmp46_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp43_, (ValaCCodeExpression*) _tmp45_);
5059 	_tmp47_ = _tmp46_;
5060 	_tmp48_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) _tmp47_, NULL);
5061 	_tmp49_ = _tmp48_;
5062 	vala_ccode_function_add_declaration (_tmp41_, "gpointer", (ValaCCodeDeclarator*) _tmp49_, 0);
5063 	_vala_ccode_node_unref0 (_tmp49_);
5064 	_vala_ccode_node_unref0 (_tmp47_);
5065 	_vala_ccode_node_unref0 (_tmp45_);
5066 	_vala_ccode_node_unref0 (_tmp43_);
5067 	firstif = TRUE;
5068 	{
5069 		ValaList* _prop_list = NULL;
5070 		ValaList* _tmp50_;
5071 		ValaList* _tmp51_;
5072 		gint _prop_size = 0;
5073 		ValaList* _tmp52_;
5074 		gint _tmp53_;
5075 		gint _tmp54_;
5076 		gint _prop_index = 0;
5077 		_tmp50_ = vala_object_type_symbol_get_properties (sym);
5078 		_tmp51_ = _vala_iterable_ref0 (_tmp50_);
5079 		_prop_list = _tmp51_;
5080 		_tmp52_ = _prop_list;
5081 		_tmp53_ = vala_collection_get_size ((ValaCollection*) _tmp52_);
5082 		_tmp54_ = _tmp53_;
5083 		_prop_size = _tmp54_;
5084 		_prop_index = -1;
5085 		while (TRUE) {
5086 			gint _tmp55_;
5087 			gint _tmp56_;
5088 			ValaProperty* prop = NULL;
5089 			ValaList* _tmp57_;
5090 			gpointer _tmp58_;
5091 			gboolean _tmp59_ = FALSE;
5092 			gboolean _tmp60_ = FALSE;
5093 			ValaProperty* _tmp61_;
5094 			ValaMemberBinding _tmp62_;
5095 			ValaMemberBinding _tmp63_;
5096 			ValaProperty* _tmp70_;
5097 			ValaProperty* _tmp71_;
5098 			ValaPropertyAccessor* _tmp72_;
5099 			ValaPropertyAccessor* _tmp73_;
5100 			ValaCCodeFile* _tmp74_;
5101 			ValaCCodeFunctionCall* ccheck = NULL;
5102 			ValaCCodeIdentifier* _tmp75_;
5103 			ValaCCodeIdentifier* _tmp76_;
5104 			ValaCCodeFunctionCall* _tmp77_;
5105 			ValaCCodeFunctionCall* _tmp78_;
5106 			ValaCCodeFunctionCall* _tmp79_;
5107 			ValaCCodeIdentifier* _tmp80_;
5108 			ValaCCodeIdentifier* _tmp81_;
5109 			ValaCCodeFunctionCall* _tmp82_;
5110 			ValaProperty* _tmp83_;
5111 			gchar* _tmp84_;
5112 			gchar* _tmp85_;
5113 			gchar* _tmp86_;
5114 			gchar* _tmp87_;
5115 			ValaCCodeConstant* _tmp88_;
5116 			ValaCCodeConstant* _tmp89_;
5117 			ValaCCodeBinaryExpression* cond = NULL;
5118 			ValaCCodeFunctionCall* _tmp90_;
5119 			ValaCCodeConstant* _tmp91_;
5120 			ValaCCodeConstant* _tmp92_;
5121 			ValaCCodeBinaryExpression* _tmp93_;
5122 			ValaCCodeBinaryExpression* _tmp94_;
5123 			ValaCCodeFunctionCall* ccall = NULL;
5124 			ValaProperty* _tmp101_;
5125 			gchar* _tmp102_;
5126 			gchar* _tmp103_;
5127 			ValaCCodeIdentifier* _tmp104_;
5128 			ValaCCodeIdentifier* _tmp105_;
5129 			ValaCCodeFunctionCall* _tmp106_;
5130 			ValaCCodeFunctionCall* _tmp107_;
5131 			ValaCCodeFunctionCall* _tmp108_;
5132 			ValaCCodeIdentifier* _tmp109_;
5133 			ValaCCodeIdentifier* _tmp110_;
5134 			ValaCCodeFunction* _tmp111_;
5135 			ValaCCodeFunction* _tmp112_;
5136 			ValaCCodeFunctionCall* _tmp113_;
5137 			_prop_index = _prop_index + 1;
5138 			_tmp55_ = _prop_index;
5139 			_tmp56_ = _prop_size;
5140 			if (!(_tmp55_ < _tmp56_)) {
5141 				break;
5142 			}
5143 			_tmp57_ = _prop_list;
5144 			_tmp58_ = vala_list_get (_tmp57_, _prop_index);
5145 			prop = (ValaProperty*) _tmp58_;
5146 			_tmp61_ = prop;
5147 			_tmp62_ = vala_property_get_binding (_tmp61_);
5148 			_tmp63_ = _tmp62_;
5149 			if (_tmp63_ != VALA_MEMBER_BINDING_INSTANCE) {
5150 				_tmp60_ = TRUE;
5151 			} else {
5152 				ValaProperty* _tmp64_;
5153 				gboolean _tmp65_;
5154 				gboolean _tmp66_;
5155 				_tmp64_ = prop;
5156 				_tmp65_ = vala_property_get_overrides (_tmp64_);
5157 				_tmp66_ = _tmp65_;
5158 				_tmp60_ = _tmp66_;
5159 			}
5160 			if (_tmp60_) {
5161 				_tmp59_ = TRUE;
5162 			} else {
5163 				ValaProperty* _tmp67_;
5164 				ValaSymbolAccessibility _tmp68_;
5165 				ValaSymbolAccessibility _tmp69_;
5166 				_tmp67_ = prop;
5167 				_tmp68_ = vala_symbol_get_access ((ValaSymbol*) _tmp67_);
5168 				_tmp69_ = _tmp68_;
5169 				_tmp59_ = _tmp69_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
5170 			}
5171 			if (_tmp59_) {
5172 				_vala_code_node_unref0 (prop);
5173 				continue;
5174 			}
5175 			_tmp70_ = prop;
5176 			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp70_)) {
5177 				_vala_code_node_unref0 (prop);
5178 				continue;
5179 			}
5180 			_tmp71_ = prop;
5181 			_tmp72_ = vala_property_get_get_accessor (_tmp71_);
5182 			_tmp73_ = _tmp72_;
5183 			if (_tmp73_ == NULL) {
5184 				_vala_code_node_unref0 (prop);
5185 				continue;
5186 			}
5187 			_tmp74_ = ((ValaCCodeBaseModule*) self)->cfile;
5188 			vala_ccode_file_add_include (_tmp74_, "string.h", FALSE);
5189 			_tmp75_ = vala_ccode_identifier_new ("strcmp");
5190 			_tmp76_ = _tmp75_;
5191 			_tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
5192 			_tmp78_ = _tmp77_;
5193 			_vala_ccode_node_unref0 (_tmp76_);
5194 			ccheck = _tmp78_;
5195 			_tmp79_ = ccheck;
5196 			_tmp80_ = vala_ccode_identifier_new ("property_name");
5197 			_tmp81_ = _tmp80_;
5198 			vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
5199 			_vala_ccode_node_unref0 (_tmp81_);
5200 			_tmp82_ = ccheck;
5201 			_tmp83_ = prop;
5202 			_tmp84_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp83_);
5203 			_tmp85_ = _tmp84_;
5204 			_tmp86_ = g_strdup_printf ("\"%s\"", _tmp85_);
5205 			_tmp87_ = _tmp86_;
5206 			_tmp88_ = vala_ccode_constant_new (_tmp87_);
5207 			_tmp89_ = _tmp88_;
5208 			vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp89_);
5209 			_vala_ccode_node_unref0 (_tmp89_);
5210 			_g_free0 (_tmp87_);
5211 			_g_free0 (_tmp85_);
5212 			_tmp90_ = ccheck;
5213 			_tmp91_ = vala_ccode_constant_new ("0");
5214 			_tmp92_ = _tmp91_;
5215 			_tmp93_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp90_, (ValaCCodeExpression*) _tmp92_);
5216 			_tmp94_ = _tmp93_;
5217 			_vala_ccode_node_unref0 (_tmp92_);
5218 			cond = _tmp94_;
5219 			if (firstif) {
5220 				ValaCCodeFunction* _tmp95_;
5221 				ValaCCodeFunction* _tmp96_;
5222 				ValaCCodeBinaryExpression* _tmp97_;
5223 				_tmp95_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5224 				_tmp96_ = _tmp95_;
5225 				_tmp97_ = cond;
5226 				vala_ccode_function_open_if (_tmp96_, (ValaCCodeExpression*) _tmp97_);
5227 				firstif = FALSE;
5228 			} else {
5229 				ValaCCodeFunction* _tmp98_;
5230 				ValaCCodeFunction* _tmp99_;
5231 				ValaCCodeBinaryExpression* _tmp100_;
5232 				_tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5233 				_tmp99_ = _tmp98_;
5234 				_tmp100_ = cond;
5235 				vala_ccode_function_else_if (_tmp99_, (ValaCCodeExpression*) _tmp100_);
5236 			}
5237 			_tmp101_ = prop;
5238 			_tmp102_ = vala_gd_bus_server_module_generate_dbus_property_get_wrapper (self, _tmp101_, sym);
5239 			_tmp103_ = _tmp102_;
5240 			_tmp104_ = vala_ccode_identifier_new (_tmp103_);
5241 			_tmp105_ = _tmp104_;
5242 			_tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
5243 			_tmp107_ = _tmp106_;
5244 			_vala_ccode_node_unref0 (_tmp105_);
5245 			_g_free0 (_tmp103_);
5246 			ccall = _tmp107_;
5247 			_tmp108_ = ccall;
5248 			_tmp109_ = vala_ccode_identifier_new ("object");
5249 			_tmp110_ = _tmp109_;
5250 			vala_ccode_function_call_add_argument (_tmp108_, (ValaCCodeExpression*) _tmp110_);
5251 			_vala_ccode_node_unref0 (_tmp110_);
5252 			_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5253 			_tmp112_ = _tmp111_;
5254 			_tmp113_ = ccall;
5255 			vala_ccode_function_add_return (_tmp112_, (ValaCCodeExpression*) _tmp113_);
5256 			_vala_ccode_node_unref0 (ccall);
5257 			_vala_ccode_node_unref0 (cond);
5258 			_vala_ccode_node_unref0 (ccheck);
5259 			_vala_code_node_unref0 (prop);
5260 		}
5261 		_vala_iterable_unref0 (_prop_list);
5262 	}
5263 	if (!firstif) {
5264 		ValaCCodeFunction* _tmp114_;
5265 		ValaCCodeFunction* _tmp115_;
5266 		_tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5267 		_tmp115_ = _tmp114_;
5268 		vala_ccode_function_close (_tmp115_);
5269 	}
5270 	_tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5271 	_tmp117_ = _tmp116_;
5272 	_tmp118_ = vala_ccode_constant_new ("NULL");
5273 	_tmp119_ = _tmp118_;
5274 	vala_ccode_function_add_return (_tmp117_, (ValaCCodeExpression*) _tmp119_);
5275 	_vala_ccode_node_unref0 (_tmp119_);
5276 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5277 	_tmp120_ = ((ValaCCodeBaseModule*) self)->cfile;
5278 	_tmp121_ = cfunc;
5279 	vala_ccode_file_add_function (_tmp120_, _tmp121_);
5280 	_vala_ccode_node_unref0 (cfunc);
5281 }
5282 
5283 static void
vala_gd_bus_server_module_generate_interface_set_property_function(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym)5284 vala_gd_bus_server_module_generate_interface_set_property_function (ValaGDBusServerModule* self,
5285                                                                     ValaObjectTypeSymbol* sym)
5286 {
5287 	ValaCCodeFunction* cfunc = NULL;
5288 	gchar* _tmp0_;
5289 	gchar* _tmp1_;
5290 	gchar* _tmp2_;
5291 	gchar* _tmp3_;
5292 	ValaCCodeFunction* _tmp4_;
5293 	ValaCCodeFunction* _tmp5_;
5294 	ValaCCodeFunction* _tmp6_;
5295 	ValaCCodeParameter* _tmp7_;
5296 	ValaCCodeParameter* _tmp8_;
5297 	ValaCCodeFunction* _tmp9_;
5298 	ValaCCodeParameter* _tmp10_;
5299 	ValaCCodeParameter* _tmp11_;
5300 	ValaCCodeFunction* _tmp12_;
5301 	ValaCCodeParameter* _tmp13_;
5302 	ValaCCodeParameter* _tmp14_;
5303 	ValaCCodeFunction* _tmp15_;
5304 	ValaCCodeParameter* _tmp16_;
5305 	ValaCCodeParameter* _tmp17_;
5306 	ValaCCodeFunction* _tmp18_;
5307 	ValaCCodeParameter* _tmp19_;
5308 	ValaCCodeParameter* _tmp20_;
5309 	ValaCCodeFunction* _tmp21_;
5310 	ValaCCodeParameter* _tmp22_;
5311 	ValaCCodeParameter* _tmp23_;
5312 	ValaCCodeFunction* _tmp24_;
5313 	ValaCCodeParameter* _tmp25_;
5314 	ValaCCodeParameter* _tmp26_;
5315 	ValaCCodeFunction* _tmp27_;
5316 	ValaCCodeParameter* _tmp28_;
5317 	ValaCCodeParameter* _tmp29_;
5318 	ValaCCodeFunction* _tmp30_;
5319 	ValaCCodeFunction* _tmp31_;
5320 	ValaCCodeModifiers _tmp32_;
5321 	ValaCCodeModifiers _tmp33_;
5322 	ValaCCodeFile* _tmp34_;
5323 	ValaCCodeFunction* _tmp35_;
5324 	ValaCCodeFunction* _tmp36_;
5325 	ValaCCodeFunction* _tmp37_;
5326 	ValaCCodeFunction* _tmp38_;
5327 	ValaCCodeIdentifier* _tmp39_;
5328 	ValaCCodeIdentifier* _tmp40_;
5329 	ValaCCodeVariableDeclarator* _tmp41_;
5330 	ValaCCodeVariableDeclarator* _tmp42_;
5331 	ValaCCodeFunction* _tmp43_;
5332 	ValaCCodeFunction* _tmp44_;
5333 	ValaCCodeIdentifier* _tmp45_;
5334 	ValaCCodeIdentifier* _tmp46_;
5335 	ValaCCodeConstant* _tmp47_;
5336 	ValaCCodeConstant* _tmp48_;
5337 	ValaCCodeElementAccess* _tmp49_;
5338 	ValaCCodeElementAccess* _tmp50_;
5339 	ValaCCodeVariableDeclarator* _tmp51_;
5340 	ValaCCodeVariableDeclarator* _tmp52_;
5341 	gboolean firstif = FALSE;
5342 	ValaCCodeFunction* _tmp126_;
5343 	ValaCCodeFunction* _tmp127_;
5344 	ValaCCodeConstant* _tmp128_;
5345 	ValaCCodeConstant* _tmp129_;
5346 	ValaCCodeFile* _tmp130_;
5347 	ValaCCodeFunction* _tmp131_;
5348 	g_return_if_fail (self != NULL);
5349 	g_return_if_fail (sym != NULL);
5350 	_tmp0_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
5351 	_tmp1_ = _tmp0_;
5352 	_tmp2_ = g_strconcat (_tmp1_, "dbus_interface_set_property", NULL);
5353 	_tmp3_ = _tmp2_;
5354 	_tmp4_ = vala_ccode_function_new (_tmp3_, "gboolean");
5355 	_tmp5_ = _tmp4_;
5356 	_g_free0 (_tmp3_);
5357 	_g_free0 (_tmp1_);
5358 	cfunc = _tmp5_;
5359 	_tmp6_ = cfunc;
5360 	_tmp7_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
5361 	_tmp8_ = _tmp7_;
5362 	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
5363 	_vala_ccode_node_unref0 (_tmp8_);
5364 	_tmp9_ = cfunc;
5365 	_tmp10_ = vala_ccode_parameter_new ("sender", "const gchar*");
5366 	_tmp11_ = _tmp10_;
5367 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
5368 	_vala_ccode_node_unref0 (_tmp11_);
5369 	_tmp12_ = cfunc;
5370 	_tmp13_ = vala_ccode_parameter_new ("object_path", "const gchar*");
5371 	_tmp14_ = _tmp13_;
5372 	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
5373 	_vala_ccode_node_unref0 (_tmp14_);
5374 	_tmp15_ = cfunc;
5375 	_tmp16_ = vala_ccode_parameter_new ("interface_name", "const gchar*");
5376 	_tmp17_ = _tmp16_;
5377 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
5378 	_vala_ccode_node_unref0 (_tmp17_);
5379 	_tmp18_ = cfunc;
5380 	_tmp19_ = vala_ccode_parameter_new ("property_name", "const gchar*");
5381 	_tmp20_ = _tmp19_;
5382 	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
5383 	_vala_ccode_node_unref0 (_tmp20_);
5384 	_tmp21_ = cfunc;
5385 	_tmp22_ = vala_ccode_parameter_new ("value", "GVariant*");
5386 	_tmp23_ = _tmp22_;
5387 	vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
5388 	_vala_ccode_node_unref0 (_tmp23_);
5389 	_tmp24_ = cfunc;
5390 	_tmp25_ = vala_ccode_parameter_new ("error", "GError**");
5391 	_tmp26_ = _tmp25_;
5392 	vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
5393 	_vala_ccode_node_unref0 (_tmp26_);
5394 	_tmp27_ = cfunc;
5395 	_tmp28_ = vala_ccode_parameter_new ("user_data", "gpointer");
5396 	_tmp29_ = _tmp28_;
5397 	vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
5398 	_vala_ccode_node_unref0 (_tmp29_);
5399 	_tmp30_ = cfunc;
5400 	_tmp31_ = cfunc;
5401 	_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
5402 	_tmp33_ = _tmp32_;
5403 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_STATIC);
5404 	_tmp34_ = ((ValaCCodeBaseModule*) self)->cfile;
5405 	_tmp35_ = cfunc;
5406 	vala_ccode_file_add_function_declaration (_tmp34_, _tmp35_);
5407 	_tmp36_ = cfunc;
5408 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp36_);
5409 	_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5410 	_tmp38_ = _tmp37_;
5411 	_tmp39_ = vala_ccode_identifier_new ("user_data");
5412 	_tmp40_ = _tmp39_;
5413 	_tmp41_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp40_, NULL);
5414 	_tmp42_ = _tmp41_;
5415 	vala_ccode_function_add_declaration (_tmp38_, "gpointer*", (ValaCCodeDeclarator*) _tmp42_, 0);
5416 	_vala_ccode_node_unref0 (_tmp42_);
5417 	_vala_ccode_node_unref0 (_tmp40_);
5418 	_tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5419 	_tmp44_ = _tmp43_;
5420 	_tmp45_ = vala_ccode_identifier_new ("data");
5421 	_tmp46_ = _tmp45_;
5422 	_tmp47_ = vala_ccode_constant_new ("0");
5423 	_tmp48_ = _tmp47_;
5424 	_tmp49_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp46_, (ValaCCodeExpression*) _tmp48_);
5425 	_tmp50_ = _tmp49_;
5426 	_tmp51_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) _tmp50_, NULL);
5427 	_tmp52_ = _tmp51_;
5428 	vala_ccode_function_add_declaration (_tmp44_, "gpointer", (ValaCCodeDeclarator*) _tmp52_, 0);
5429 	_vala_ccode_node_unref0 (_tmp52_);
5430 	_vala_ccode_node_unref0 (_tmp50_);
5431 	_vala_ccode_node_unref0 (_tmp48_);
5432 	_vala_ccode_node_unref0 (_tmp46_);
5433 	firstif = TRUE;
5434 	{
5435 		ValaList* _prop_list = NULL;
5436 		ValaList* _tmp53_;
5437 		ValaList* _tmp54_;
5438 		gint _prop_size = 0;
5439 		ValaList* _tmp55_;
5440 		gint _tmp56_;
5441 		gint _tmp57_;
5442 		gint _prop_index = 0;
5443 		_tmp53_ = vala_object_type_symbol_get_properties (sym);
5444 		_tmp54_ = _vala_iterable_ref0 (_tmp53_);
5445 		_prop_list = _tmp54_;
5446 		_tmp55_ = _prop_list;
5447 		_tmp56_ = vala_collection_get_size ((ValaCollection*) _tmp55_);
5448 		_tmp57_ = _tmp56_;
5449 		_prop_size = _tmp57_;
5450 		_prop_index = -1;
5451 		while (TRUE) {
5452 			gint _tmp58_;
5453 			gint _tmp59_;
5454 			ValaProperty* prop = NULL;
5455 			ValaList* _tmp60_;
5456 			gpointer _tmp61_;
5457 			gboolean _tmp62_ = FALSE;
5458 			gboolean _tmp63_ = FALSE;
5459 			ValaProperty* _tmp64_;
5460 			ValaMemberBinding _tmp65_;
5461 			ValaMemberBinding _tmp66_;
5462 			ValaProperty* _tmp73_;
5463 			ValaProperty* _tmp74_;
5464 			ValaPropertyAccessor* _tmp75_;
5465 			ValaPropertyAccessor* _tmp76_;
5466 			ValaCCodeFile* _tmp77_;
5467 			ValaCCodeFunctionCall* ccheck = NULL;
5468 			ValaCCodeIdentifier* _tmp78_;
5469 			ValaCCodeIdentifier* _tmp79_;
5470 			ValaCCodeFunctionCall* _tmp80_;
5471 			ValaCCodeFunctionCall* _tmp81_;
5472 			ValaCCodeFunctionCall* _tmp82_;
5473 			ValaCCodeIdentifier* _tmp83_;
5474 			ValaCCodeIdentifier* _tmp84_;
5475 			ValaCCodeFunctionCall* _tmp85_;
5476 			ValaProperty* _tmp86_;
5477 			gchar* _tmp87_;
5478 			gchar* _tmp88_;
5479 			gchar* _tmp89_;
5480 			gchar* _tmp90_;
5481 			ValaCCodeConstant* _tmp91_;
5482 			ValaCCodeConstant* _tmp92_;
5483 			ValaCCodeBinaryExpression* cond = NULL;
5484 			ValaCCodeFunctionCall* _tmp93_;
5485 			ValaCCodeConstant* _tmp94_;
5486 			ValaCCodeConstant* _tmp95_;
5487 			ValaCCodeBinaryExpression* _tmp96_;
5488 			ValaCCodeBinaryExpression* _tmp97_;
5489 			ValaCCodeFunctionCall* ccall = NULL;
5490 			ValaProperty* _tmp104_;
5491 			gchar* _tmp105_;
5492 			gchar* _tmp106_;
5493 			ValaCCodeIdentifier* _tmp107_;
5494 			ValaCCodeIdentifier* _tmp108_;
5495 			ValaCCodeFunctionCall* _tmp109_;
5496 			ValaCCodeFunctionCall* _tmp110_;
5497 			ValaCCodeFunctionCall* _tmp111_;
5498 			ValaCCodeIdentifier* _tmp112_;
5499 			ValaCCodeIdentifier* _tmp113_;
5500 			ValaCCodeFunctionCall* _tmp114_;
5501 			ValaCCodeIdentifier* _tmp115_;
5502 			ValaCCodeIdentifier* _tmp116_;
5503 			ValaCCodeFunction* _tmp117_;
5504 			ValaCCodeFunction* _tmp118_;
5505 			ValaCCodeFunctionCall* _tmp119_;
5506 			ValaCCodeFunction* _tmp120_;
5507 			ValaCCodeFunction* _tmp121_;
5508 			ValaCCodeConstant* _tmp122_;
5509 			ValaCCodeConstant* _tmp123_;
5510 			_prop_index = _prop_index + 1;
5511 			_tmp58_ = _prop_index;
5512 			_tmp59_ = _prop_size;
5513 			if (!(_tmp58_ < _tmp59_)) {
5514 				break;
5515 			}
5516 			_tmp60_ = _prop_list;
5517 			_tmp61_ = vala_list_get (_tmp60_, _prop_index);
5518 			prop = (ValaProperty*) _tmp61_;
5519 			_tmp64_ = prop;
5520 			_tmp65_ = vala_property_get_binding (_tmp64_);
5521 			_tmp66_ = _tmp65_;
5522 			if (_tmp66_ != VALA_MEMBER_BINDING_INSTANCE) {
5523 				_tmp63_ = TRUE;
5524 			} else {
5525 				ValaProperty* _tmp67_;
5526 				gboolean _tmp68_;
5527 				gboolean _tmp69_;
5528 				_tmp67_ = prop;
5529 				_tmp68_ = vala_property_get_overrides (_tmp67_);
5530 				_tmp69_ = _tmp68_;
5531 				_tmp63_ = _tmp69_;
5532 			}
5533 			if (_tmp63_) {
5534 				_tmp62_ = TRUE;
5535 			} else {
5536 				ValaProperty* _tmp70_;
5537 				ValaSymbolAccessibility _tmp71_;
5538 				ValaSymbolAccessibility _tmp72_;
5539 				_tmp70_ = prop;
5540 				_tmp71_ = vala_symbol_get_access ((ValaSymbol*) _tmp70_);
5541 				_tmp72_ = _tmp71_;
5542 				_tmp62_ = _tmp72_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
5543 			}
5544 			if (_tmp62_) {
5545 				_vala_code_node_unref0 (prop);
5546 				continue;
5547 			}
5548 			_tmp73_ = prop;
5549 			if (!vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp73_)) {
5550 				_vala_code_node_unref0 (prop);
5551 				continue;
5552 			}
5553 			_tmp74_ = prop;
5554 			_tmp75_ = vala_property_get_set_accessor (_tmp74_);
5555 			_tmp76_ = _tmp75_;
5556 			if (_tmp76_ == NULL) {
5557 				_vala_code_node_unref0 (prop);
5558 				continue;
5559 			}
5560 			_tmp77_ = ((ValaCCodeBaseModule*) self)->cfile;
5561 			vala_ccode_file_add_include (_tmp77_, "string.h", FALSE);
5562 			_tmp78_ = vala_ccode_identifier_new ("strcmp");
5563 			_tmp79_ = _tmp78_;
5564 			_tmp80_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp79_);
5565 			_tmp81_ = _tmp80_;
5566 			_vala_ccode_node_unref0 (_tmp79_);
5567 			ccheck = _tmp81_;
5568 			_tmp82_ = ccheck;
5569 			_tmp83_ = vala_ccode_identifier_new ("property_name");
5570 			_tmp84_ = _tmp83_;
5571 			vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp84_);
5572 			_vala_ccode_node_unref0 (_tmp84_);
5573 			_tmp85_ = ccheck;
5574 			_tmp86_ = prop;
5575 			_tmp87_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp86_);
5576 			_tmp88_ = _tmp87_;
5577 			_tmp89_ = g_strdup_printf ("\"%s\"", _tmp88_);
5578 			_tmp90_ = _tmp89_;
5579 			_tmp91_ = vala_ccode_constant_new (_tmp90_);
5580 			_tmp92_ = _tmp91_;
5581 			vala_ccode_function_call_add_argument (_tmp85_, (ValaCCodeExpression*) _tmp92_);
5582 			_vala_ccode_node_unref0 (_tmp92_);
5583 			_g_free0 (_tmp90_);
5584 			_g_free0 (_tmp88_);
5585 			_tmp93_ = ccheck;
5586 			_tmp94_ = vala_ccode_constant_new ("0");
5587 			_tmp95_ = _tmp94_;
5588 			_tmp96_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp93_, (ValaCCodeExpression*) _tmp95_);
5589 			_tmp97_ = _tmp96_;
5590 			_vala_ccode_node_unref0 (_tmp95_);
5591 			cond = _tmp97_;
5592 			if (firstif) {
5593 				ValaCCodeFunction* _tmp98_;
5594 				ValaCCodeFunction* _tmp99_;
5595 				ValaCCodeBinaryExpression* _tmp100_;
5596 				_tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5597 				_tmp99_ = _tmp98_;
5598 				_tmp100_ = cond;
5599 				vala_ccode_function_open_if (_tmp99_, (ValaCCodeExpression*) _tmp100_);
5600 				firstif = FALSE;
5601 			} else {
5602 				ValaCCodeFunction* _tmp101_;
5603 				ValaCCodeFunction* _tmp102_;
5604 				ValaCCodeBinaryExpression* _tmp103_;
5605 				_tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5606 				_tmp102_ = _tmp101_;
5607 				_tmp103_ = cond;
5608 				vala_ccode_function_else_if (_tmp102_, (ValaCCodeExpression*) _tmp103_);
5609 			}
5610 			_tmp104_ = prop;
5611 			_tmp105_ = vala_gd_bus_server_module_generate_dbus_property_set_wrapper (self, _tmp104_, sym);
5612 			_tmp106_ = _tmp105_;
5613 			_tmp107_ = vala_ccode_identifier_new (_tmp106_);
5614 			_tmp108_ = _tmp107_;
5615 			_tmp109_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp108_);
5616 			_tmp110_ = _tmp109_;
5617 			_vala_ccode_node_unref0 (_tmp108_);
5618 			_g_free0 (_tmp106_);
5619 			ccall = _tmp110_;
5620 			_tmp111_ = ccall;
5621 			_tmp112_ = vala_ccode_identifier_new ("object");
5622 			_tmp113_ = _tmp112_;
5623 			vala_ccode_function_call_add_argument (_tmp111_, (ValaCCodeExpression*) _tmp113_);
5624 			_vala_ccode_node_unref0 (_tmp113_);
5625 			_tmp114_ = ccall;
5626 			_tmp115_ = vala_ccode_identifier_new ("value");
5627 			_tmp116_ = _tmp115_;
5628 			vala_ccode_function_call_add_argument (_tmp114_, (ValaCCodeExpression*) _tmp116_);
5629 			_vala_ccode_node_unref0 (_tmp116_);
5630 			_tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5631 			_tmp118_ = _tmp117_;
5632 			_tmp119_ = ccall;
5633 			vala_ccode_function_add_expression (_tmp118_, (ValaCCodeExpression*) _tmp119_);
5634 			_tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5635 			_tmp121_ = _tmp120_;
5636 			_tmp122_ = vala_ccode_constant_new ("TRUE");
5637 			_tmp123_ = _tmp122_;
5638 			vala_ccode_function_add_return (_tmp121_, (ValaCCodeExpression*) _tmp123_);
5639 			_vala_ccode_node_unref0 (_tmp123_);
5640 			_vala_ccode_node_unref0 (ccall);
5641 			_vala_ccode_node_unref0 (cond);
5642 			_vala_ccode_node_unref0 (ccheck);
5643 			_vala_code_node_unref0 (prop);
5644 		}
5645 		_vala_iterable_unref0 (_prop_list);
5646 	}
5647 	if (!firstif) {
5648 		ValaCCodeFunction* _tmp124_;
5649 		ValaCCodeFunction* _tmp125_;
5650 		_tmp124_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5651 		_tmp125_ = _tmp124_;
5652 		vala_ccode_function_close (_tmp125_);
5653 	}
5654 	_tmp126_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5655 	_tmp127_ = _tmp126_;
5656 	_tmp128_ = vala_ccode_constant_new ("FALSE");
5657 	_tmp129_ = _tmp128_;
5658 	vala_ccode_function_add_return (_tmp127_, (ValaCCodeExpression*) _tmp129_);
5659 	_vala_ccode_node_unref0 (_tmp129_);
5660 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5661 	_tmp130_ = ((ValaCCodeBaseModule*) self)->cfile;
5662 	_tmp131_ = cfunc;
5663 	vala_ccode_file_add_function (_tmp130_, _tmp131_);
5664 	_vala_ccode_node_unref0 (cfunc);
5665 }
5666 
5667 static ValaCCodeExpression*
vala_gd_bus_server_module_get_interface_vtable(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym)5668 vala_gd_bus_server_module_get_interface_vtable (ValaGDBusServerModule* self,
5669                                                 ValaObjectTypeSymbol* sym)
5670 {
5671 	ValaCCodeInitializerList* vtable = NULL;
5672 	ValaCCodeInitializerList* _tmp0_;
5673 	gchar* _tmp1_;
5674 	gchar* _tmp2_;
5675 	gchar* _tmp3_;
5676 	gchar* _tmp4_;
5677 	ValaCCodeIdentifier* _tmp5_;
5678 	ValaCCodeIdentifier* _tmp6_;
5679 	gchar* _tmp7_;
5680 	gchar* _tmp8_;
5681 	gchar* _tmp9_;
5682 	gchar* _tmp10_;
5683 	ValaCCodeIdentifier* _tmp11_;
5684 	ValaCCodeIdentifier* _tmp12_;
5685 	gchar* _tmp13_;
5686 	gchar* _tmp14_;
5687 	gchar* _tmp15_;
5688 	gchar* _tmp16_;
5689 	ValaCCodeIdentifier* _tmp17_;
5690 	ValaCCodeIdentifier* _tmp18_;
5691 	ValaCCodeDeclaration* _cdecl_ = NULL;
5692 	ValaCCodeDeclaration* _tmp19_;
5693 	gchar* _tmp20_;
5694 	gchar* _tmp21_;
5695 	gchar* _tmp22_;
5696 	gchar* _tmp23_;
5697 	gchar* _tmp24_;
5698 	gchar* _tmp25_;
5699 	ValaCCodeVariableDeclarator* _tmp26_;
5700 	ValaCCodeVariableDeclarator* _tmp27_;
5701 	ValaCCodeFile* _tmp28_;
5702 	gchar* _tmp29_;
5703 	gchar* _tmp30_;
5704 	gchar* _tmp31_;
5705 	gchar* _tmp32_;
5706 	gchar* _tmp33_;
5707 	gchar* _tmp34_;
5708 	ValaCCodeIdentifier* _tmp35_;
5709 	ValaCCodeExpression* _tmp36_;
5710 	ValaCCodeExpression* result = NULL;
5711 	g_return_val_if_fail (self != NULL, NULL);
5712 	g_return_val_if_fail (sym != NULL, NULL);
5713 	_tmp0_ = vala_ccode_initializer_list_new ();
5714 	vtable = _tmp0_;
5715 	_tmp1_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
5716 	_tmp2_ = _tmp1_;
5717 	_tmp3_ = g_strconcat (_tmp2_, "dbus_interface_method_call", NULL);
5718 	_tmp4_ = _tmp3_;
5719 	_tmp5_ = vala_ccode_identifier_new (_tmp4_);
5720 	_tmp6_ = _tmp5_;
5721 	vala_ccode_initializer_list_append (vtable, (ValaCCodeExpression*) _tmp6_);
5722 	_vala_ccode_node_unref0 (_tmp6_);
5723 	_g_free0 (_tmp4_);
5724 	_g_free0 (_tmp2_);
5725 	_tmp7_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
5726 	_tmp8_ = _tmp7_;
5727 	_tmp9_ = g_strconcat (_tmp8_, "dbus_interface_get_property", NULL);
5728 	_tmp10_ = _tmp9_;
5729 	_tmp11_ = vala_ccode_identifier_new (_tmp10_);
5730 	_tmp12_ = _tmp11_;
5731 	vala_ccode_initializer_list_append (vtable, (ValaCCodeExpression*) _tmp12_);
5732 	_vala_ccode_node_unref0 (_tmp12_);
5733 	_g_free0 (_tmp10_);
5734 	_g_free0 (_tmp8_);
5735 	_tmp13_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
5736 	_tmp14_ = _tmp13_;
5737 	_tmp15_ = g_strconcat (_tmp14_, "dbus_interface_set_property", NULL);
5738 	_tmp16_ = _tmp15_;
5739 	_tmp17_ = vala_ccode_identifier_new (_tmp16_);
5740 	_tmp18_ = _tmp17_;
5741 	vala_ccode_initializer_list_append (vtable, (ValaCCodeExpression*) _tmp18_);
5742 	_vala_ccode_node_unref0 (_tmp18_);
5743 	_g_free0 (_tmp16_);
5744 	_g_free0 (_tmp14_);
5745 	vala_gd_bus_server_module_generate_interface_method_call_function (self, sym);
5746 	vala_gd_bus_server_module_generate_interface_get_property_function (self, sym);
5747 	vala_gd_bus_server_module_generate_interface_set_property_function (self, sym);
5748 	_tmp19_ = vala_ccode_declaration_new ("const GDBusInterfaceVTable");
5749 	_cdecl_ = _tmp19_;
5750 	_tmp20_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
5751 	_tmp21_ = _tmp20_;
5752 	_tmp22_ = g_strconcat ("_", _tmp21_, NULL);
5753 	_tmp23_ = _tmp22_;
5754 	_tmp24_ = g_strconcat (_tmp23_, "dbus_interface_vtable", NULL);
5755 	_tmp25_ = _tmp24_;
5756 	_tmp26_ = vala_ccode_variable_declarator_new (_tmp25_, (ValaCCodeExpression*) vtable, NULL);
5757 	_tmp27_ = _tmp26_;
5758 	vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp27_);
5759 	_vala_ccode_node_unref0 (_tmp27_);
5760 	_g_free0 (_tmp25_);
5761 	_g_free0 (_tmp23_);
5762 	_g_free0 (_tmp21_);
5763 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _cdecl_, VALA_CCODE_MODIFIERS_STATIC);
5764 	_tmp28_ = ((ValaCCodeBaseModule*) self)->cfile;
5765 	vala_ccode_file_add_constant_declaration (_tmp28_, (ValaCCodeNode*) _cdecl_);
5766 	_tmp29_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
5767 	_tmp30_ = _tmp29_;
5768 	_tmp31_ = g_strconcat ("_", _tmp30_, NULL);
5769 	_tmp32_ = _tmp31_;
5770 	_tmp33_ = g_strconcat (_tmp32_, "dbus_interface_vtable", NULL);
5771 	_tmp34_ = _tmp33_;
5772 	_tmp35_ = vala_ccode_identifier_new (_tmp34_);
5773 	_tmp36_ = (ValaCCodeExpression*) _tmp35_;
5774 	_g_free0 (_tmp34_);
5775 	_g_free0 (_tmp32_);
5776 	_g_free0 (_tmp30_);
5777 	result = _tmp36_;
5778 	_vala_ccode_node_unref0 (_cdecl_);
5779 	_vala_ccode_node_unref0 (vtable);
5780 	return result;
5781 }
5782 
5783 static gchar*
vala_gd_bus_server_module_generate_register_object_function(ValaGDBusServerModule * self)5784 vala_gd_bus_server_module_generate_register_object_function (ValaGDBusServerModule* self)
5785 {
5786 	gchar* register_object_func = NULL;
5787 	gchar* _tmp0_;
5788 	const gchar* _tmp1_;
5789 	ValaCCodeFile* _tmp2_;
5790 	ValaCCodeFunction* function = NULL;
5791 	const gchar* _tmp3_;
5792 	ValaCCodeFunction* _tmp4_;
5793 	ValaCCodeFunction* _tmp5_;
5794 	ValaCCodeFunction* _tmp6_;
5795 	ValaCCodeParameter* _tmp7_;
5796 	ValaCCodeParameter* _tmp8_;
5797 	ValaCCodeFunction* _tmp9_;
5798 	ValaCCodeParameter* _tmp10_;
5799 	ValaCCodeParameter* _tmp11_;
5800 	ValaCCodeFunction* _tmp12_;
5801 	ValaCCodeParameter* _tmp13_;
5802 	ValaCCodeParameter* _tmp14_;
5803 	ValaCCodeFunction* _tmp15_;
5804 	ValaCCodeParameter* _tmp16_;
5805 	ValaCCodeParameter* _tmp17_;
5806 	ValaCCodeFunction* _tmp18_;
5807 	ValaCCodeParameter* _tmp19_;
5808 	ValaCCodeParameter* _tmp20_;
5809 	ValaCCodeFunction* _tmp21_;
5810 	ValaCCodeFunctionCall* quark = NULL;
5811 	ValaCCodeIdentifier* _tmp22_;
5812 	ValaCCodeIdentifier* _tmp23_;
5813 	ValaCCodeFunctionCall* _tmp24_;
5814 	ValaCCodeFunctionCall* _tmp25_;
5815 	ValaCCodeFunctionCall* _tmp26_;
5816 	ValaCCodeConstant* _tmp27_;
5817 	ValaCCodeConstant* _tmp28_;
5818 	ValaCCodeFunctionCall* get_qdata = NULL;
5819 	ValaCCodeIdentifier* _tmp29_;
5820 	ValaCCodeIdentifier* _tmp30_;
5821 	ValaCCodeFunctionCall* _tmp31_;
5822 	ValaCCodeFunctionCall* _tmp32_;
5823 	ValaCCodeFunctionCall* _tmp33_;
5824 	ValaCCodeIdentifier* _tmp34_;
5825 	ValaCCodeIdentifier* _tmp35_;
5826 	ValaCCodeFunctionCall* _tmp36_;
5827 	ValaCCodeFunctionCall* _tmp37_;
5828 	ValaCCodeFunction* _tmp38_;
5829 	ValaCCodeFunction* _tmp39_;
5830 	ValaCCodeVariableDeclarator* _tmp40_;
5831 	ValaCCodeVariableDeclarator* _tmp41_;
5832 	ValaCCodeFunction* _tmp42_;
5833 	ValaCCodeFunction* _tmp43_;
5834 	ValaCCodeIdentifier* _tmp44_;
5835 	ValaCCodeIdentifier* _tmp45_;
5836 	ValaCCodeFunctionCall* _tmp46_;
5837 	ValaCCodeFunction* _tmp47_;
5838 	ValaCCodeFunction* _tmp48_;
5839 	ValaCCodeIdentifier* _tmp49_;
5840 	ValaCCodeIdentifier* _tmp50_;
5841 	ValaCCodeUnaryExpression* _tmp51_;
5842 	ValaCCodeUnaryExpression* _tmp52_;
5843 	ValaCCodeFunctionCall* set_error = NULL;
5844 	ValaCCodeIdentifier* _tmp53_;
5845 	ValaCCodeIdentifier* _tmp54_;
5846 	ValaCCodeFunctionCall* _tmp55_;
5847 	ValaCCodeFunctionCall* _tmp56_;
5848 	ValaCCodeFunctionCall* _tmp57_;
5849 	ValaCCodeIdentifier* _tmp58_;
5850 	ValaCCodeIdentifier* _tmp59_;
5851 	ValaCCodeFunctionCall* _tmp60_;
5852 	ValaCCodeIdentifier* _tmp61_;
5853 	ValaCCodeIdentifier* _tmp62_;
5854 	ValaCCodeFunctionCall* _tmp63_;
5855 	ValaCCodeIdentifier* _tmp64_;
5856 	ValaCCodeIdentifier* _tmp65_;
5857 	ValaCCodeFunctionCall* _tmp66_;
5858 	ValaCCodeConstant* _tmp67_;
5859 	ValaCCodeConstant* _tmp68_;
5860 	ValaCCodeFunction* _tmp69_;
5861 	ValaCCodeFunction* _tmp70_;
5862 	ValaCCodeFunctionCall* _tmp71_;
5863 	ValaCCodeFunction* _tmp72_;
5864 	ValaCCodeFunction* _tmp73_;
5865 	ValaCCodeConstant* _tmp74_;
5866 	ValaCCodeConstant* _tmp75_;
5867 	ValaCCodeFunction* _tmp76_;
5868 	ValaCCodeFunction* _tmp77_;
5869 	ValaCCodeCastExpression* register_object = NULL;
5870 	ValaCCodeIdentifier* _tmp78_;
5871 	ValaCCodeIdentifier* _tmp79_;
5872 	ValaCCodeCastExpression* _tmp80_;
5873 	ValaCCodeCastExpression* _tmp81_;
5874 	ValaCCodeFunctionCall* ccall = NULL;
5875 	ValaCCodeCastExpression* _tmp82_;
5876 	ValaCCodeFunctionCall* _tmp83_;
5877 	ValaCCodeFunctionCall* _tmp84_;
5878 	ValaCCodeIdentifier* _tmp85_;
5879 	ValaCCodeIdentifier* _tmp86_;
5880 	ValaCCodeFunctionCall* _tmp87_;
5881 	ValaCCodeIdentifier* _tmp88_;
5882 	ValaCCodeIdentifier* _tmp89_;
5883 	ValaCCodeFunctionCall* _tmp90_;
5884 	ValaCCodeIdentifier* _tmp91_;
5885 	ValaCCodeIdentifier* _tmp92_;
5886 	ValaCCodeFunctionCall* _tmp93_;
5887 	ValaCCodeIdentifier* _tmp94_;
5888 	ValaCCodeIdentifier* _tmp95_;
5889 	ValaCCodeFunction* _tmp96_;
5890 	ValaCCodeFunction* _tmp97_;
5891 	ValaCCodeFunctionCall* _tmp98_;
5892 	ValaCCodeFile* _tmp99_;
5893 	ValaCCodeFunction* _tmp100_;
5894 	ValaCCodeFile* _tmp101_;
5895 	ValaCCodeFunction* _tmp102_;
5896 	gchar* result = NULL;
5897 	g_return_val_if_fail (self != NULL, NULL);
5898 	_tmp0_ = g_strdup ("_vala_g_dbus_connection_register_object");
5899 	register_object_func = _tmp0_;
5900 	_tmp1_ = register_object_func;
5901 	if (!vala_ccode_base_module_add_wrapper ((ValaCCodeBaseModule*) self, _tmp1_)) {
5902 		result = register_object_func;
5903 		return result;
5904 	}
5905 	_tmp2_ = ((ValaCCodeBaseModule*) self)->cfile;
5906 	vala_ccode_file_add_include (_tmp2_, "gio/gio.h", FALSE);
5907 	_tmp3_ = register_object_func;
5908 	_tmp4_ = vala_ccode_function_new (_tmp3_, "guint");
5909 	function = _tmp4_;
5910 	_tmp5_ = function;
5911 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp5_, VALA_CCODE_MODIFIERS_STATIC);
5912 	_tmp6_ = function;
5913 	_tmp7_ = vala_ccode_parameter_new ("type", "GType");
5914 	_tmp8_ = _tmp7_;
5915 	vala_ccode_function_add_parameter (_tmp6_, _tmp8_);
5916 	_vala_ccode_node_unref0 (_tmp8_);
5917 	_tmp9_ = function;
5918 	_tmp10_ = vala_ccode_parameter_new ("object", "void*");
5919 	_tmp11_ = _tmp10_;
5920 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
5921 	_vala_ccode_node_unref0 (_tmp11_);
5922 	_tmp12_ = function;
5923 	_tmp13_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
5924 	_tmp14_ = _tmp13_;
5925 	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
5926 	_vala_ccode_node_unref0 (_tmp14_);
5927 	_tmp15_ = function;
5928 	_tmp16_ = vala_ccode_parameter_new ("path", "const gchar*");
5929 	_tmp17_ = _tmp16_;
5930 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
5931 	_vala_ccode_node_unref0 (_tmp17_);
5932 	_tmp18_ = function;
5933 	_tmp19_ = vala_ccode_parameter_new ("error", "GError**");
5934 	_tmp20_ = _tmp19_;
5935 	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
5936 	_vala_ccode_node_unref0 (_tmp20_);
5937 	_tmp21_ = function;
5938 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp21_);
5939 	_tmp22_ = vala_ccode_identifier_new ("g_quark_from_static_string");
5940 	_tmp23_ = _tmp22_;
5941 	_tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
5942 	_tmp25_ = _tmp24_;
5943 	_vala_ccode_node_unref0 (_tmp23_);
5944 	quark = _tmp25_;
5945 	_tmp26_ = quark;
5946 	_tmp27_ = vala_ccode_constant_new ("\"vala-dbus-register-object\"");
5947 	_tmp28_ = _tmp27_;
5948 	vala_ccode_function_call_add_argument (_tmp26_, (ValaCCodeExpression*) _tmp28_);
5949 	_vala_ccode_node_unref0 (_tmp28_);
5950 	_tmp29_ = vala_ccode_identifier_new ("g_type_get_qdata");
5951 	_tmp30_ = _tmp29_;
5952 	_tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
5953 	_tmp32_ = _tmp31_;
5954 	_vala_ccode_node_unref0 (_tmp30_);
5955 	get_qdata = _tmp32_;
5956 	_tmp33_ = get_qdata;
5957 	_tmp34_ = vala_ccode_identifier_new ("type");
5958 	_tmp35_ = _tmp34_;
5959 	vala_ccode_function_call_add_argument (_tmp33_, (ValaCCodeExpression*) _tmp35_);
5960 	_vala_ccode_node_unref0 (_tmp35_);
5961 	_tmp36_ = get_qdata;
5962 	_tmp37_ = quark;
5963 	vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp37_);
5964 	_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5965 	_tmp39_ = _tmp38_;
5966 	_tmp40_ = vala_ccode_variable_declarator_new ("*func", NULL, NULL);
5967 	_tmp41_ = _tmp40_;
5968 	vala_ccode_function_add_declaration (_tmp39_, "void", (ValaCCodeDeclarator*) _tmp41_, 0);
5969 	_vala_ccode_node_unref0 (_tmp41_);
5970 	_tmp42_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5971 	_tmp43_ = _tmp42_;
5972 	_tmp44_ = vala_ccode_identifier_new ("func");
5973 	_tmp45_ = _tmp44_;
5974 	_tmp46_ = get_qdata;
5975 	vala_ccode_function_add_assignment (_tmp43_, (ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_);
5976 	_vala_ccode_node_unref0 (_tmp45_);
5977 	_tmp47_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5978 	_tmp48_ = _tmp47_;
5979 	_tmp49_ = vala_ccode_identifier_new ("func");
5980 	_tmp50_ = _tmp49_;
5981 	_tmp51_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp50_);
5982 	_tmp52_ = _tmp51_;
5983 	vala_ccode_function_open_if (_tmp48_, (ValaCCodeExpression*) _tmp52_);
5984 	_vala_ccode_node_unref0 (_tmp52_);
5985 	_vala_ccode_node_unref0 (_tmp50_);
5986 	_tmp53_ = vala_ccode_identifier_new ("g_set_error_literal");
5987 	_tmp54_ = _tmp53_;
5988 	_tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
5989 	_tmp56_ = _tmp55_;
5990 	_vala_ccode_node_unref0 (_tmp54_);
5991 	set_error = _tmp56_;
5992 	_tmp57_ = set_error;
5993 	_tmp58_ = vala_ccode_identifier_new ("error");
5994 	_tmp59_ = _tmp58_;
5995 	vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp59_);
5996 	_vala_ccode_node_unref0 (_tmp59_);
5997 	_tmp60_ = set_error;
5998 	_tmp61_ = vala_ccode_identifier_new ("G_IO_ERROR");
5999 	_tmp62_ = _tmp61_;
6000 	vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp62_);
6001 	_vala_ccode_node_unref0 (_tmp62_);
6002 	_tmp63_ = set_error;
6003 	_tmp64_ = vala_ccode_identifier_new ("G_IO_ERROR_FAILED");
6004 	_tmp65_ = _tmp64_;
6005 	vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_);
6006 	_vala_ccode_node_unref0 (_tmp65_);
6007 	_tmp66_ = set_error;
6008 	_tmp67_ = vala_ccode_constant_new ("\"The specified type does not support D-Bus registration\"");
6009 	_tmp68_ = _tmp67_;
6010 	vala_ccode_function_call_add_argument (_tmp66_, (ValaCCodeExpression*) _tmp68_);
6011 	_vala_ccode_node_unref0 (_tmp68_);
6012 	_tmp69_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6013 	_tmp70_ = _tmp69_;
6014 	_tmp71_ = set_error;
6015 	vala_ccode_function_add_expression (_tmp70_, (ValaCCodeExpression*) _tmp71_);
6016 	_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6017 	_tmp73_ = _tmp72_;
6018 	_tmp74_ = vala_ccode_constant_new ("0");
6019 	_tmp75_ = _tmp74_;
6020 	vala_ccode_function_add_return (_tmp73_, (ValaCCodeExpression*) _tmp75_);
6021 	_vala_ccode_node_unref0 (_tmp75_);
6022 	_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6023 	_tmp77_ = _tmp76_;
6024 	vala_ccode_function_close (_tmp77_);
6025 	_tmp78_ = vala_ccode_identifier_new ("func");
6026 	_tmp79_ = _tmp78_;
6027 	_tmp80_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp79_, "guint (*) (void *, GDBusConnection *, const gchar *, GError **)");
6028 	_tmp81_ = _tmp80_;
6029 	_vala_ccode_node_unref0 (_tmp79_);
6030 	register_object = _tmp81_;
6031 	_tmp82_ = register_object;
6032 	_tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
6033 	ccall = _tmp83_;
6034 	_tmp84_ = ccall;
6035 	_tmp85_ = vala_ccode_identifier_new ("object");
6036 	_tmp86_ = _tmp85_;
6037 	vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp86_);
6038 	_vala_ccode_node_unref0 (_tmp86_);
6039 	_tmp87_ = ccall;
6040 	_tmp88_ = vala_ccode_identifier_new ("connection");
6041 	_tmp89_ = _tmp88_;
6042 	vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp89_);
6043 	_vala_ccode_node_unref0 (_tmp89_);
6044 	_tmp90_ = ccall;
6045 	_tmp91_ = vala_ccode_identifier_new ("path");
6046 	_tmp92_ = _tmp91_;
6047 	vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_);
6048 	_vala_ccode_node_unref0 (_tmp92_);
6049 	_tmp93_ = ccall;
6050 	_tmp94_ = vala_ccode_identifier_new ("error");
6051 	_tmp95_ = _tmp94_;
6052 	vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_);
6053 	_vala_ccode_node_unref0 (_tmp95_);
6054 	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6055 	_tmp97_ = _tmp96_;
6056 	_tmp98_ = ccall;
6057 	vala_ccode_function_add_return (_tmp97_, (ValaCCodeExpression*) _tmp98_);
6058 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6059 	_tmp99_ = ((ValaCCodeBaseModule*) self)->cfile;
6060 	_tmp100_ = function;
6061 	vala_ccode_file_add_function_declaration (_tmp99_, _tmp100_);
6062 	_tmp101_ = ((ValaCCodeBaseModule*) self)->cfile;
6063 	_tmp102_ = function;
6064 	vala_ccode_file_add_function (_tmp101_, _tmp102_);
6065 	result = register_object_func;
6066 	_vala_ccode_node_unref0 (ccall);
6067 	_vala_ccode_node_unref0 (register_object);
6068 	_vala_ccode_node_unref0 (set_error);
6069 	_vala_ccode_node_unref0 (get_qdata);
6070 	_vala_ccode_node_unref0 (quark);
6071 	_vala_ccode_node_unref0 (function);
6072 	return result;
6073 }
6074 
6075 static void
vala_gd_bus_server_module_real_visit_method_call(ValaCodeVisitor * base,ValaMethodCall * expr)6076 vala_gd_bus_server_module_real_visit_method_call (ValaCodeVisitor* base,
6077                                                   ValaMethodCall* expr)
6078 {
6079 	ValaGDBusServerModule * self;
6080 	ValaMethodType* mtype = NULL;
6081 	ValaExpression* _tmp0_;
6082 	ValaExpression* _tmp1_;
6083 	ValaDataType* _tmp2_;
6084 	ValaDataType* _tmp3_;
6085 	ValaMethodType* _tmp4_;
6086 	gboolean _tmp5_ = FALSE;
6087 	ValaMethodType* _tmp6_;
6088 	ValaMemberAccess* ma = NULL;
6089 	ValaExpression* _tmp12_;
6090 	ValaExpression* _tmp13_;
6091 	ValaMemberAccess* _tmp14_;
6092 	ValaDataType* type_arg = NULL;
6093 	ValaMemberAccess* _tmp15_;
6094 	ValaList* _tmp16_;
6095 	gpointer _tmp17_;
6096 	ValaCCodeFunctionCall* cregister = NULL;
6097 	ValaObjectType* object_type = NULL;
6098 	ValaDataType* _tmp18_;
6099 	ValaObjectType* _tmp19_;
6100 	ValaObjectType* _tmp20_;
6101 	ValaList* args = NULL;
6102 	ValaList* _tmp48_;
6103 	ValaList* _tmp49_;
6104 	ValaExpression* path_arg = NULL;
6105 	ValaList* _tmp50_;
6106 	gpointer _tmp51_;
6107 	ValaExpression* obj_arg = NULL;
6108 	ValaList* _tmp52_;
6109 	gpointer _tmp53_;
6110 	ValaCCodeFunctionCall* _tmp54_;
6111 	ValaExpression* _tmp55_;
6112 	ValaCCodeExpression* _tmp56_;
6113 	ValaCCodeFunctionCall* _tmp57_;
6114 	ValaMemberAccess* _tmp58_;
6115 	ValaExpression* _tmp59_;
6116 	ValaExpression* _tmp60_;
6117 	ValaCCodeExpression* _tmp61_;
6118 	ValaCCodeFunctionCall* _tmp62_;
6119 	ValaExpression* _tmp63_;
6120 	ValaCCodeExpression* _tmp64_;
6121 	ValaCCodeFunctionCall* _tmp65_;
6122 	ValaCCodeExpression* _tmp66_;
6123 	ValaCCodeExpression* _tmp67_;
6124 	ValaCCodeUnaryExpression* _tmp68_;
6125 	ValaCCodeUnaryExpression* _tmp69_;
6126 	ValaCodeNode* _tmp70_;
6127 	ValaCodeNode* _tmp71_;
6128 	self = (ValaGDBusServerModule*) base;
6129 	g_return_if_fail (expr != NULL);
6130 	_tmp0_ = vala_method_call_get_call (expr);
6131 	_tmp1_ = _tmp0_;
6132 	_tmp2_ = vala_expression_get_value_type (_tmp1_);
6133 	_tmp3_ = _tmp2_;
6134 	_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp3_) : NULL);
6135 	mtype = _tmp4_;
6136 	_tmp6_ = mtype;
6137 	if (_tmp6_ == NULL) {
6138 		_tmp5_ = TRUE;
6139 	} else {
6140 		ValaMethodType* _tmp7_;
6141 		ValaMethod* _tmp8_;
6142 		ValaMethod* _tmp9_;
6143 		gchar* _tmp10_;
6144 		gchar* _tmp11_;
6145 		_tmp7_ = mtype;
6146 		_tmp8_ = vala_method_type_get_method_symbol (_tmp7_);
6147 		_tmp9_ = _tmp8_;
6148 		_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) _tmp9_);
6149 		_tmp11_ = _tmp10_;
6150 		_tmp5_ = g_strcmp0 (_tmp11_, "g_dbus_connection_register_object") != 0;
6151 		_g_free0 (_tmp11_);
6152 	}
6153 	if (_tmp5_) {
6154 		VALA_CODE_VISITOR_CLASS (vala_gd_bus_server_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), expr);
6155 		_vala_code_node_unref0 (mtype);
6156 		return;
6157 	}
6158 	_tmp12_ = vala_method_call_get_call (expr);
6159 	_tmp13_ = _tmp12_;
6160 	_tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
6161 	ma = _tmp14_;
6162 	_tmp15_ = ma;
6163 	_tmp16_ = vala_member_access_get_type_arguments (_tmp15_);
6164 	_tmp17_ = vala_list_get (_tmp16_, 0);
6165 	type_arg = (ValaDataType*) _tmp17_;
6166 	_tmp18_ = type_arg;
6167 	_tmp19_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_OBJECT_TYPE) ? ((ValaObjectType*) _tmp18_) : NULL);
6168 	object_type = _tmp19_;
6169 	_tmp20_ = object_type;
6170 	if (_tmp20_ != NULL) {
6171 		ValaObjectType* _tmp21_;
6172 		ValaTypeSymbol* _tmp22_;
6173 		ValaTypeSymbol* _tmp23_;
6174 		gchar* _tmp24_;
6175 		gchar* _tmp25_;
6176 		gboolean _tmp26_;
6177 		ValaObjectType* _tmp29_;
6178 		ValaTypeSymbol* _tmp30_;
6179 		ValaTypeSymbol* _tmp31_;
6180 		gchar* _tmp32_;
6181 		gchar* _tmp33_;
6182 		gchar* _tmp34_;
6183 		gchar* _tmp35_;
6184 		ValaCCodeIdentifier* _tmp36_;
6185 		ValaCCodeIdentifier* _tmp37_;
6186 		ValaCCodeFunctionCall* _tmp38_;
6187 		_tmp21_ = object_type;
6188 		_tmp22_ = vala_data_type_get_type_symbol ((ValaDataType*) _tmp21_);
6189 		_tmp23_ = _tmp22_;
6190 		_tmp24_ = vala_gd_bus_module_get_dbus_name (_tmp23_);
6191 		_tmp25_ = _tmp24_;
6192 		_tmp26_ = _tmp25_ == NULL;
6193 		_g_free0 (_tmp25_);
6194 		if (_tmp26_) {
6195 			ValaSourceReference* _tmp27_;
6196 			ValaSourceReference* _tmp28_;
6197 			_tmp27_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
6198 			_tmp28_ = _tmp27_;
6199 			vala_report_error (_tmp28_, "DBusConnection.register_object requires type argument with [DBus (name" \
6200 " = ...)] attribute");
6201 			_vala_code_node_unref0 (object_type);
6202 			_vala_ccode_node_unref0 (cregister);
6203 			_vala_code_node_unref0 (type_arg);
6204 			_vala_code_node_unref0 (ma);
6205 			_vala_code_node_unref0 (mtype);
6206 			return;
6207 		}
6208 		_tmp29_ = object_type;
6209 		_tmp30_ = vala_data_type_get_type_symbol ((ValaDataType*) _tmp29_);
6210 		_tmp31_ = _tmp30_;
6211 		_tmp32_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp31_);
6212 		_tmp33_ = _tmp32_;
6213 		_tmp34_ = g_strdup_printf ("%sregister_object", _tmp33_);
6214 		_tmp35_ = _tmp34_;
6215 		_tmp36_ = vala_ccode_identifier_new (_tmp35_);
6216 		_tmp37_ = _tmp36_;
6217 		_tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
6218 		_vala_ccode_node_unref0 (cregister);
6219 		cregister = _tmp38_;
6220 		_vala_ccode_node_unref0 (_tmp37_);
6221 		_g_free0 (_tmp35_);
6222 		_g_free0 (_tmp33_);
6223 	} else {
6224 		gchar* _tmp39_;
6225 		gchar* _tmp40_;
6226 		ValaCCodeIdentifier* _tmp41_;
6227 		ValaCCodeIdentifier* _tmp42_;
6228 		ValaCCodeFunctionCall* _tmp43_;
6229 		ValaCCodeFunctionCall* _tmp44_;
6230 		ValaDataType* _tmp45_;
6231 		ValaCCodeExpression* _tmp46_;
6232 		ValaCCodeExpression* _tmp47_;
6233 		_tmp39_ = vala_gd_bus_server_module_generate_register_object_function (self);
6234 		_tmp40_ = _tmp39_;
6235 		_tmp41_ = vala_ccode_identifier_new (_tmp40_);
6236 		_tmp42_ = _tmp41_;
6237 		_tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
6238 		_vala_ccode_node_unref0 (cregister);
6239 		cregister = _tmp43_;
6240 		_vala_ccode_node_unref0 (_tmp42_);
6241 		_g_free0 (_tmp40_);
6242 		_tmp44_ = cregister;
6243 		_tmp45_ = type_arg;
6244 		_tmp46_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp45_, FALSE);
6245 		_tmp47_ = _tmp46_;
6246 		vala_ccode_function_call_add_argument (_tmp44_, _tmp47_);
6247 		_vala_ccode_node_unref0 (_tmp47_);
6248 	}
6249 	_tmp48_ = vala_method_call_get_argument_list (expr);
6250 	_tmp49_ = _vala_iterable_ref0 (_tmp48_);
6251 	args = _tmp49_;
6252 	_tmp50_ = args;
6253 	_tmp51_ = vala_list_get (_tmp50_, 0);
6254 	path_arg = (ValaExpression*) _tmp51_;
6255 	_tmp52_ = args;
6256 	_tmp53_ = vala_list_get (_tmp52_, 1);
6257 	obj_arg = (ValaExpression*) _tmp53_;
6258 	vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
6259 	_tmp54_ = cregister;
6260 	_tmp55_ = obj_arg;
6261 	_tmp56_ = vala_get_cvalue (_tmp55_);
6262 	vala_ccode_function_call_add_argument (_tmp54_, _tmp56_);
6263 	_tmp57_ = cregister;
6264 	_tmp58_ = ma;
6265 	_tmp59_ = vala_member_access_get_inner (_tmp58_);
6266 	_tmp60_ = _tmp59_;
6267 	_tmp61_ = vala_get_cvalue (_tmp60_);
6268 	vala_ccode_function_call_add_argument (_tmp57_, _tmp61_);
6269 	_tmp62_ = cregister;
6270 	_tmp63_ = path_arg;
6271 	_tmp64_ = vala_get_cvalue (_tmp63_);
6272 	vala_ccode_function_call_add_argument (_tmp62_, _tmp64_);
6273 	_tmp65_ = cregister;
6274 	_tmp66_ = vala_ccode_base_module_get_inner_error_cexpression ((ValaCCodeBaseModule*) self);
6275 	_tmp67_ = _tmp66_;
6276 	_tmp68_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp67_);
6277 	_tmp69_ = _tmp68_;
6278 	vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp69_);
6279 	_vala_ccode_node_unref0 (_tmp69_);
6280 	_vala_ccode_node_unref0 (_tmp67_);
6281 	_tmp70_ = vala_code_node_get_parent_node ((ValaCodeNode*) expr);
6282 	_tmp71_ = _tmp70_;
6283 	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp71_, VALA_TYPE_EXPRESSION_STATEMENT)) {
6284 		ValaCCodeFunction* _tmp72_;
6285 		ValaCCodeFunction* _tmp73_;
6286 		ValaCCodeFunctionCall* _tmp74_;
6287 		_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6288 		_tmp73_ = _tmp72_;
6289 		_tmp74_ = cregister;
6290 		vala_ccode_function_add_expression (_tmp73_, (ValaCCodeExpression*) _tmp74_);
6291 	} else {
6292 		ValaLocalVariable* temp_var = NULL;
6293 		ValaDataType* _tmp75_;
6294 		ValaDataType* _tmp76_;
6295 		ValaDataType* _tmp77_;
6296 		ValaDataType* _tmp78_;
6297 		gboolean _tmp79_;
6298 		gboolean _tmp80_;
6299 		ValaLocalVariable* _tmp81_;
6300 		ValaCCodeExpression* temp_ref = NULL;
6301 		ValaLocalVariable* _tmp82_;
6302 		const gchar* _tmp83_;
6303 		const gchar* _tmp84_;
6304 		ValaCCodeExpression* _tmp85_;
6305 		ValaLocalVariable* _tmp86_;
6306 		ValaCCodeFunction* _tmp87_;
6307 		ValaCCodeFunction* _tmp88_;
6308 		ValaCCodeExpression* _tmp89_;
6309 		ValaCCodeFunctionCall* _tmp90_;
6310 		ValaCCodeExpression* _tmp91_;
6311 		_tmp75_ = vala_expression_get_value_type ((ValaExpression*) expr);
6312 		_tmp76_ = _tmp75_;
6313 		_tmp77_ = vala_expression_get_value_type ((ValaExpression*) expr);
6314 		_tmp78_ = _tmp77_;
6315 		_tmp79_ = vala_data_type_get_value_owned (_tmp78_);
6316 		_tmp80_ = _tmp79_;
6317 		_tmp81_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp76_, _tmp80_, NULL, FALSE);
6318 		temp_var = _tmp81_;
6319 		_tmp82_ = temp_var;
6320 		_tmp83_ = vala_symbol_get_name ((ValaSymbol*) _tmp82_);
6321 		_tmp84_ = _tmp83_;
6322 		_tmp85_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp84_);
6323 		temp_ref = _tmp85_;
6324 		_tmp86_ = temp_var;
6325 		vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp86_, FALSE);
6326 		_tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6327 		_tmp88_ = _tmp87_;
6328 		_tmp89_ = temp_ref;
6329 		_tmp90_ = cregister;
6330 		vala_ccode_function_add_assignment (_tmp88_, _tmp89_, (ValaCCodeExpression*) _tmp90_);
6331 		_tmp91_ = temp_ref;
6332 		vala_set_cvalue ((ValaExpression*) expr, _tmp91_);
6333 		_vala_ccode_node_unref0 (temp_ref);
6334 		_vala_code_node_unref0 (temp_var);
6335 	}
6336 	_vala_code_node_unref0 (obj_arg);
6337 	_vala_code_node_unref0 (path_arg);
6338 	_vala_iterable_unref0 (args);
6339 	_vala_code_node_unref0 (object_type);
6340 	_vala_ccode_node_unref0 (cregister);
6341 	_vala_code_node_unref0 (type_arg);
6342 	_vala_code_node_unref0 (ma);
6343 	_vala_code_node_unref0 (mtype);
6344 }
6345 
6346 static void
vala_gd_bus_server_module_real_generate_class_declaration(ValaCCodeBaseModule * base,ValaClass * cl,ValaCCodeFile * decl_space)6347 vala_gd_bus_server_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
6348                                                            ValaClass* cl,
6349                                                            ValaCCodeFile* decl_space)
6350 {
6351 	ValaGDBusServerModule * self;
6352 	self = (ValaGDBusServerModule*) base;
6353 	g_return_if_fail (cl != NULL);
6354 	g_return_if_fail (decl_space != NULL);
6355 	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_server_module_parent_class)->generate_class_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), cl, decl_space);
6356 	vala_gd_bus_server_module_generate_object_type_symbol_declaration (self, (ValaObjectTypeSymbol*) cl, decl_space);
6357 }
6358 
6359 static void
vala_gd_bus_server_module_real_generate_interface_declaration(ValaCCodeBaseModule * base,ValaInterface * iface,ValaCCodeFile * decl_space)6360 vala_gd_bus_server_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
6361                                                                ValaInterface* iface,
6362                                                                ValaCCodeFile* decl_space)
6363 {
6364 	ValaGDBusServerModule * self;
6365 	self = (ValaGDBusServerModule*) base;
6366 	g_return_if_fail (iface != NULL);
6367 	g_return_if_fail (decl_space != NULL);
6368 	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_server_module_parent_class)->generate_interface_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), iface, decl_space);
6369 	vala_gd_bus_server_module_generate_object_type_symbol_declaration (self, (ValaObjectTypeSymbol*) iface, decl_space);
6370 }
6371 
6372 static void
vala_gd_bus_server_module_real_visit_class(ValaCodeVisitor * base,ValaClass * cl)6373 vala_gd_bus_server_module_real_visit_class (ValaCodeVisitor* base,
6374                                             ValaClass* cl)
6375 {
6376 	ValaGDBusServerModule * self;
6377 	self = (ValaGDBusServerModule*) base;
6378 	g_return_if_fail (cl != NULL);
6379 	VALA_CODE_VISITOR_CLASS (vala_gd_bus_server_module_parent_class)->visit_class ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), cl);
6380 	vala_gd_bus_server_module_visit_object_type_symbol (self, (ValaObjectTypeSymbol*) cl);
6381 }
6382 
6383 static void
vala_gd_bus_server_module_real_visit_interface(ValaCodeVisitor * base,ValaInterface * iface)6384 vala_gd_bus_server_module_real_visit_interface (ValaCodeVisitor* base,
6385                                                 ValaInterface* iface)
6386 {
6387 	ValaGDBusServerModule * self;
6388 	self = (ValaGDBusServerModule*) base;
6389 	g_return_if_fail (iface != NULL);
6390 	VALA_CODE_VISITOR_CLASS (vala_gd_bus_server_module_parent_class)->visit_interface ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), iface);
6391 	vala_gd_bus_server_module_visit_object_type_symbol (self, (ValaObjectTypeSymbol*) iface);
6392 }
6393 
6394 static void
vala_gd_bus_server_module_generate_object_type_symbol_declaration(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym,ValaCCodeFile * decl_space)6395 vala_gd_bus_server_module_generate_object_type_symbol_declaration (ValaGDBusServerModule* self,
6396                                                                    ValaObjectTypeSymbol* sym,
6397                                                                    ValaCCodeFile* decl_space)
6398 {
6399 	gchar* dbus_iface_name = NULL;
6400 	gchar* _tmp0_;
6401 	const gchar* _tmp1_;
6402 	gchar* register_object_name = NULL;
6403 	gchar* _tmp2_;
6404 	gchar* _tmp3_;
6405 	gchar* _tmp4_;
6406 	gchar* _tmp5_;
6407 	const gchar* _tmp6_;
6408 	ValaCCodeFunction* cfunc = NULL;
6409 	const gchar* _tmp7_;
6410 	ValaCCodeFunction* _tmp8_;
6411 	ValaCCodeFunction* _tmp9_;
6412 	ValaCCodeParameter* _tmp10_;
6413 	ValaCCodeParameter* _tmp11_;
6414 	ValaCCodeFunction* _tmp12_;
6415 	ValaCCodeParameter* _tmp13_;
6416 	ValaCCodeParameter* _tmp14_;
6417 	ValaCCodeFunction* _tmp15_;
6418 	ValaCCodeParameter* _tmp16_;
6419 	ValaCCodeParameter* _tmp17_;
6420 	ValaCCodeFunction* _tmp18_;
6421 	ValaCCodeParameter* _tmp19_;
6422 	ValaCCodeParameter* _tmp20_;
6423 	ValaCCodeFunction* _tmp34_;
6424 	g_return_if_fail (self != NULL);
6425 	g_return_if_fail (sym != NULL);
6426 	g_return_if_fail (decl_space != NULL);
6427 	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
6428 	dbus_iface_name = _tmp0_;
6429 	_tmp1_ = dbus_iface_name;
6430 	if (_tmp1_ == NULL) {
6431 		_g_free0 (dbus_iface_name);
6432 		return;
6433 	}
6434 	_tmp2_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
6435 	_tmp3_ = _tmp2_;
6436 	_tmp4_ = g_strdup_printf ("%sregister_object", _tmp3_);
6437 	_tmp5_ = _tmp4_;
6438 	_g_free0 (_tmp3_);
6439 	register_object_name = _tmp5_;
6440 	_tmp6_ = register_object_name;
6441 	if (vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) sym, _tmp6_)) {
6442 		_g_free0 (register_object_name);
6443 		_g_free0 (dbus_iface_name);
6444 		return;
6445 	}
6446 	vala_ccode_file_add_include (decl_space, "gio/gio.h", FALSE);
6447 	_tmp7_ = register_object_name;
6448 	_tmp8_ = vala_ccode_function_new (_tmp7_, "guint");
6449 	cfunc = _tmp8_;
6450 	_tmp9_ = cfunc;
6451 	_tmp10_ = vala_ccode_parameter_new ("object", "void*");
6452 	_tmp11_ = _tmp10_;
6453 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
6454 	_vala_ccode_node_unref0 (_tmp11_);
6455 	_tmp12_ = cfunc;
6456 	_tmp13_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
6457 	_tmp14_ = _tmp13_;
6458 	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
6459 	_vala_ccode_node_unref0 (_tmp14_);
6460 	_tmp15_ = cfunc;
6461 	_tmp16_ = vala_ccode_parameter_new ("path", "const gchar*");
6462 	_tmp17_ = _tmp16_;
6463 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
6464 	_vala_ccode_node_unref0 (_tmp17_);
6465 	_tmp18_ = cfunc;
6466 	_tmp19_ = vala_ccode_parameter_new ("error", "GError**");
6467 	_tmp20_ = _tmp19_;
6468 	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
6469 	_vala_ccode_node_unref0 (_tmp20_);
6470 	if (vala_symbol_is_private_symbol ((ValaSymbol*) sym)) {
6471 		ValaCCodeFunction* _tmp21_;
6472 		ValaCCodeFunction* _tmp22_;
6473 		ValaCCodeModifiers _tmp23_;
6474 		ValaCCodeModifiers _tmp24_;
6475 		_tmp21_ = cfunc;
6476 		_tmp22_ = cfunc;
6477 		_tmp23_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp22_);
6478 		_tmp24_ = _tmp23_;
6479 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp22_, _tmp24_ | VALA_CCODE_MODIFIERS_STATIC);
6480 	} else {
6481 		gboolean _tmp25_ = FALSE;
6482 		ValaCodeContext* _tmp26_;
6483 		ValaCodeContext* _tmp27_;
6484 		gboolean _tmp28_;
6485 		gboolean _tmp29_;
6486 		_tmp26_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6487 		_tmp27_ = _tmp26_;
6488 		_tmp28_ = vala_code_context_get_hide_internal (_tmp27_);
6489 		_tmp29_ = _tmp28_;
6490 		if (_tmp29_) {
6491 			_tmp25_ = vala_symbol_is_internal_symbol ((ValaSymbol*) sym);
6492 		} else {
6493 			_tmp25_ = FALSE;
6494 		}
6495 		if (_tmp25_) {
6496 			ValaCCodeFunction* _tmp30_;
6497 			ValaCCodeFunction* _tmp31_;
6498 			ValaCCodeModifiers _tmp32_;
6499 			ValaCCodeModifiers _tmp33_;
6500 			_tmp30_ = cfunc;
6501 			_tmp31_ = cfunc;
6502 			_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
6503 			_tmp33_ = _tmp32_;
6504 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_INTERNAL);
6505 		}
6506 	}
6507 	_tmp34_ = cfunc;
6508 	vala_ccode_file_add_function_declaration (decl_space, _tmp34_);
6509 	_vala_ccode_node_unref0 (cfunc);
6510 	_g_free0 (register_object_name);
6511 	_g_free0 (dbus_iface_name);
6512 }
6513 
6514 static void
vala_gd_bus_server_module_visit_object_type_symbol(ValaGDBusServerModule * self,ValaObjectTypeSymbol * sym)6515 vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerModule* self,
6516                                                     ValaObjectTypeSymbol* sym)
6517 {
6518 	gchar* dbus_iface_name = NULL;
6519 	gchar* _tmp0_;
6520 	const gchar* _tmp1_;
6521 	ValaCCodeFile* _tmp2_;
6522 	ValaCCodeFunction* cfunc = NULL;
6523 	gchar* _tmp3_;
6524 	gchar* _tmp4_;
6525 	gchar* _tmp5_;
6526 	gchar* _tmp6_;
6527 	ValaCCodeFunction* _tmp7_;
6528 	ValaCCodeFunction* _tmp8_;
6529 	ValaCCodeFunction* _tmp9_;
6530 	ValaCCodeParameter* _tmp10_;
6531 	ValaCCodeParameter* _tmp11_;
6532 	ValaCCodeFunction* _tmp12_;
6533 	ValaCCodeParameter* _tmp13_;
6534 	ValaCCodeParameter* _tmp14_;
6535 	ValaCCodeFunction* _tmp15_;
6536 	ValaCCodeParameter* _tmp16_;
6537 	ValaCCodeParameter* _tmp17_;
6538 	ValaCCodeFunction* _tmp18_;
6539 	ValaCCodeParameter* _tmp19_;
6540 	ValaCCodeParameter* _tmp20_;
6541 	ValaCCodeFunction* _tmp34_;
6542 	ValaCCodeFunction* _tmp35_;
6543 	ValaCCodeFunction* _tmp36_;
6544 	ValaCCodeVariableDeclarator* _tmp37_;
6545 	ValaCCodeVariableDeclarator* _tmp38_;
6546 	ValaCCodeFunction* _tmp39_;
6547 	ValaCCodeFunction* _tmp40_;
6548 	ValaCCodeVariableDeclarator* _tmp41_;
6549 	ValaCCodeVariableDeclarator* _tmp42_;
6550 	ValaCCodeFunctionCall* alloc_data = NULL;
6551 	ValaCCodeIdentifier* _tmp43_;
6552 	ValaCCodeIdentifier* _tmp44_;
6553 	ValaCCodeFunctionCall* _tmp45_;
6554 	ValaCCodeFunctionCall* _tmp46_;
6555 	ValaCCodeFunctionCall* _tmp47_;
6556 	ValaCCodeIdentifier* _tmp48_;
6557 	ValaCCodeIdentifier* _tmp49_;
6558 	ValaCCodeFunctionCall* _tmp50_;
6559 	ValaCCodeConstant* _tmp51_;
6560 	ValaCCodeConstant* _tmp52_;
6561 	ValaCCodeFunction* _tmp53_;
6562 	ValaCCodeFunction* _tmp54_;
6563 	ValaCCodeIdentifier* _tmp55_;
6564 	ValaCCodeIdentifier* _tmp56_;
6565 	ValaCCodeFunctionCall* _tmp57_;
6566 	gchar* ref_function = NULL;
6567 	gchar* _tmp58_;
6568 	gboolean _tmp59_ = FALSE;
6569 	ValaCCodeFunctionCall* ref_object = NULL;
6570 	const gchar* _tmp67_;
6571 	ValaCCodeIdentifier* _tmp68_;
6572 	ValaCCodeIdentifier* _tmp69_;
6573 	ValaCCodeFunctionCall* _tmp70_;
6574 	ValaCCodeFunctionCall* _tmp71_;
6575 	ValaCCodeFunctionCall* _tmp72_;
6576 	ValaCCodeIdentifier* _tmp73_;
6577 	ValaCCodeIdentifier* _tmp74_;
6578 	ValaCCodeFunction* _tmp75_;
6579 	ValaCCodeFunction* _tmp76_;
6580 	ValaCCodeIdentifier* _tmp77_;
6581 	ValaCCodeIdentifier* _tmp78_;
6582 	ValaCCodeConstant* _tmp79_;
6583 	ValaCCodeConstant* _tmp80_;
6584 	ValaCCodeElementAccess* _tmp81_;
6585 	ValaCCodeElementAccess* _tmp82_;
6586 	ValaCCodeFunctionCall* _tmp83_;
6587 	ValaCCodeIdentifier* _tmp84_;
6588 	ValaCCodeIdentifier* _tmp85_;
6589 	ValaCCodeFunctionCall* _tmp86_;
6590 	ValaCCodeFunctionCall* _tmp87_;
6591 	ValaCCodeIdentifier* _tmp88_;
6592 	ValaCCodeIdentifier* _tmp89_;
6593 	ValaCCodeFunction* _tmp90_;
6594 	ValaCCodeFunction* _tmp91_;
6595 	ValaCCodeIdentifier* _tmp92_;
6596 	ValaCCodeIdentifier* _tmp93_;
6597 	ValaCCodeConstant* _tmp94_;
6598 	ValaCCodeConstant* _tmp95_;
6599 	ValaCCodeElementAccess* _tmp96_;
6600 	ValaCCodeElementAccess* _tmp97_;
6601 	ValaCCodeFunctionCall* _tmp98_;
6602 	ValaCCodeFunctionCall* dup_path = NULL;
6603 	ValaCCodeIdentifier* _tmp99_;
6604 	ValaCCodeIdentifier* _tmp100_;
6605 	ValaCCodeFunctionCall* _tmp101_;
6606 	ValaCCodeFunctionCall* _tmp102_;
6607 	ValaCCodeFunctionCall* _tmp103_;
6608 	ValaCCodeIdentifier* _tmp104_;
6609 	ValaCCodeIdentifier* _tmp105_;
6610 	ValaCCodeFunction* _tmp106_;
6611 	ValaCCodeFunction* _tmp107_;
6612 	ValaCCodeIdentifier* _tmp108_;
6613 	ValaCCodeIdentifier* _tmp109_;
6614 	ValaCCodeConstant* _tmp110_;
6615 	ValaCCodeConstant* _tmp111_;
6616 	ValaCCodeElementAccess* _tmp112_;
6617 	ValaCCodeElementAccess* _tmp113_;
6618 	ValaCCodeFunctionCall* _tmp114_;
6619 	ValaCCodeFunctionCall* cregister = NULL;
6620 	ValaCCodeIdentifier* _tmp115_;
6621 	ValaCCodeIdentifier* _tmp116_;
6622 	ValaCCodeFunctionCall* _tmp117_;
6623 	ValaCCodeFunctionCall* _tmp118_;
6624 	ValaCCodeFunctionCall* _tmp119_;
6625 	ValaCCodeIdentifier* _tmp120_;
6626 	ValaCCodeIdentifier* _tmp121_;
6627 	ValaCCodeFunctionCall* _tmp122_;
6628 	ValaCCodeIdentifier* _tmp123_;
6629 	ValaCCodeIdentifier* _tmp124_;
6630 	ValaCCodeFunctionCall* _tmp125_;
6631 	ValaCCodeExpression* _tmp126_;
6632 	ValaCCodeExpression* _tmp127_;
6633 	ValaCCodeUnaryExpression* _tmp128_;
6634 	ValaCCodeUnaryExpression* _tmp129_;
6635 	ValaCCodeCastExpression* _tmp130_;
6636 	ValaCCodeCastExpression* _tmp131_;
6637 	ValaCCodeFunctionCall* _tmp132_;
6638 	ValaCCodeExpression* _tmp133_;
6639 	ValaCCodeExpression* _tmp134_;
6640 	ValaCCodeUnaryExpression* _tmp135_;
6641 	ValaCCodeUnaryExpression* _tmp136_;
6642 	ValaCCodeFunctionCall* _tmp137_;
6643 	ValaCCodeIdentifier* _tmp138_;
6644 	ValaCCodeIdentifier* _tmp139_;
6645 	ValaCCodeFunctionCall* _tmp140_;
6646 	gchar* _tmp141_;
6647 	gchar* _tmp142_;
6648 	gchar* _tmp143_;
6649 	gchar* _tmp144_;
6650 	gchar* _tmp145_;
6651 	gchar* _tmp146_;
6652 	ValaCCodeIdentifier* _tmp147_;
6653 	ValaCCodeIdentifier* _tmp148_;
6654 	ValaCCodeFunctionCall* _tmp149_;
6655 	ValaCCodeIdentifier* _tmp150_;
6656 	ValaCCodeIdentifier* _tmp151_;
6657 	ValaCCodeFunction* _tmp152_;
6658 	ValaCCodeFunction* _tmp153_;
6659 	ValaCCodeIdentifier* _tmp154_;
6660 	ValaCCodeIdentifier* _tmp155_;
6661 	ValaCCodeFunctionCall* _tmp156_;
6662 	ValaCCodeFunction* _tmp157_;
6663 	ValaCCodeFunction* _tmp158_;
6664 	ValaCCodeIdentifier* _tmp159_;
6665 	ValaCCodeIdentifier* _tmp160_;
6666 	ValaCCodeUnaryExpression* _tmp161_;
6667 	ValaCCodeUnaryExpression* _tmp162_;
6668 	ValaCCodeFunction* _tmp163_;
6669 	ValaCCodeFunction* _tmp164_;
6670 	ValaCCodeConstant* _tmp165_;
6671 	ValaCCodeConstant* _tmp166_;
6672 	ValaCCodeFunction* _tmp167_;
6673 	ValaCCodeFunction* _tmp168_;
6674 	ValaCCodeFunction* _tmp169_;
6675 	ValaCCodeFunction* _tmp170_;
6676 	ValaCCodeIdentifier* _tmp171_;
6677 	ValaCCodeIdentifier* _tmp172_;
6678 	ValaCCodeFile* _tmp173_;
6679 	ValaCCodeFunction* _tmp174_;
6680 	gchar* _tmp175_;
6681 	gchar* _tmp176_;
6682 	gchar* _tmp177_;
6683 	gchar* _tmp178_;
6684 	gchar* _tmp179_;
6685 	gchar* _tmp180_;
6686 	ValaCCodeFunction* _tmp181_;
6687 	ValaCCodeFunction* _tmp182_;
6688 	ValaCCodeParameter* _tmp183_;
6689 	ValaCCodeParameter* _tmp184_;
6690 	ValaCCodeFunction* _tmp185_;
6691 	ValaCCodeFunction* _tmp186_;
6692 	ValaCCodeModifiers _tmp187_;
6693 	ValaCCodeModifiers _tmp188_;
6694 	ValaCCodeFunction* _tmp189_;
6695 	ValaCCodeFunction* _tmp190_;
6696 	ValaCCodeFunction* _tmp191_;
6697 	ValaCCodeIdentifier* _tmp192_;
6698 	ValaCCodeIdentifier* _tmp193_;
6699 	ValaCCodeVariableDeclarator* _tmp194_;
6700 	ValaCCodeVariableDeclarator* _tmp195_;
6701 	ValaCCodeFunctionCall* unref_object = NULL;
6702 	gchar* _tmp196_;
6703 	gchar* _tmp197_;
6704 	ValaCCodeIdentifier* _tmp198_;
6705 	ValaCCodeIdentifier* _tmp199_;
6706 	ValaCCodeFunctionCall* _tmp200_;
6707 	ValaCCodeFunctionCall* _tmp201_;
6708 	ValaCCodeFunctionCall* _tmp202_;
6709 	ValaCCodeIdentifier* _tmp203_;
6710 	ValaCCodeIdentifier* _tmp204_;
6711 	ValaCCodeConstant* _tmp205_;
6712 	ValaCCodeConstant* _tmp206_;
6713 	ValaCCodeElementAccess* _tmp207_;
6714 	ValaCCodeElementAccess* _tmp208_;
6715 	ValaCCodeFunction* _tmp209_;
6716 	ValaCCodeFunction* _tmp210_;
6717 	ValaCCodeFunctionCall* _tmp211_;
6718 	ValaCCodeIdentifier* _tmp212_;
6719 	ValaCCodeIdentifier* _tmp213_;
6720 	ValaCCodeFunctionCall* _tmp214_;
6721 	ValaCCodeFunctionCall* _tmp215_;
6722 	ValaCCodeIdentifier* _tmp216_;
6723 	ValaCCodeIdentifier* _tmp217_;
6724 	ValaCCodeConstant* _tmp218_;
6725 	ValaCCodeConstant* _tmp219_;
6726 	ValaCCodeElementAccess* _tmp220_;
6727 	ValaCCodeElementAccess* _tmp221_;
6728 	ValaCCodeFunction* _tmp222_;
6729 	ValaCCodeFunction* _tmp223_;
6730 	ValaCCodeFunctionCall* _tmp224_;
6731 	ValaCCodeFunctionCall* free_path = NULL;
6732 	ValaCCodeIdentifier* _tmp225_;
6733 	ValaCCodeIdentifier* _tmp226_;
6734 	ValaCCodeFunctionCall* _tmp227_;
6735 	ValaCCodeFunctionCall* _tmp228_;
6736 	ValaCCodeFunctionCall* _tmp229_;
6737 	ValaCCodeIdentifier* _tmp230_;
6738 	ValaCCodeIdentifier* _tmp231_;
6739 	ValaCCodeConstant* _tmp232_;
6740 	ValaCCodeConstant* _tmp233_;
6741 	ValaCCodeElementAccess* _tmp234_;
6742 	ValaCCodeElementAccess* _tmp235_;
6743 	ValaCCodeFunction* _tmp236_;
6744 	ValaCCodeFunction* _tmp237_;
6745 	ValaCCodeFunctionCall* _tmp238_;
6746 	ValaCCodeFunctionCall* free_data = NULL;
6747 	ValaCCodeIdentifier* _tmp239_;
6748 	ValaCCodeIdentifier* _tmp240_;
6749 	ValaCCodeFunctionCall* _tmp241_;
6750 	ValaCCodeFunctionCall* _tmp242_;
6751 	ValaCCodeFunctionCall* _tmp243_;
6752 	ValaCCodeIdentifier* _tmp244_;
6753 	ValaCCodeIdentifier* _tmp245_;
6754 	ValaCCodeFunction* _tmp246_;
6755 	ValaCCodeFunction* _tmp247_;
6756 	ValaCCodeFunctionCall* _tmp248_;
6757 	ValaCCodeFile* _tmp249_;
6758 	ValaCCodeFunction* _tmp250_;
6759 	ValaCCodeFile* _tmp251_;
6760 	ValaCCodeFunction* _tmp252_;
6761 	g_return_if_fail (self != NULL);
6762 	g_return_if_fail (sym != NULL);
6763 	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
6764 	dbus_iface_name = _tmp0_;
6765 	_tmp1_ = dbus_iface_name;
6766 	if (_tmp1_ == NULL) {
6767 		_g_free0 (dbus_iface_name);
6768 		return;
6769 	}
6770 	_tmp2_ = ((ValaCCodeBaseModule*) self)->cfile;
6771 	vala_ccode_file_add_include (_tmp2_, "gio/gio.h", FALSE);
6772 	_tmp3_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
6773 	_tmp4_ = _tmp3_;
6774 	_tmp5_ = g_strconcat (_tmp4_, "register_object", NULL);
6775 	_tmp6_ = _tmp5_;
6776 	_tmp7_ = vala_ccode_function_new (_tmp6_, "guint");
6777 	_tmp8_ = _tmp7_;
6778 	_g_free0 (_tmp6_);
6779 	_g_free0 (_tmp4_);
6780 	cfunc = _tmp8_;
6781 	_tmp9_ = cfunc;
6782 	_tmp10_ = vala_ccode_parameter_new ("object", "gpointer");
6783 	_tmp11_ = _tmp10_;
6784 	vala_ccode_function_add_parameter (_tmp9_, _tmp11_);
6785 	_vala_ccode_node_unref0 (_tmp11_);
6786 	_tmp12_ = cfunc;
6787 	_tmp13_ = vala_ccode_parameter_new ("connection", "GDBusConnection*");
6788 	_tmp14_ = _tmp13_;
6789 	vala_ccode_function_add_parameter (_tmp12_, _tmp14_);
6790 	_vala_ccode_node_unref0 (_tmp14_);
6791 	_tmp15_ = cfunc;
6792 	_tmp16_ = vala_ccode_parameter_new ("path", "const gchar*");
6793 	_tmp17_ = _tmp16_;
6794 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
6795 	_vala_ccode_node_unref0 (_tmp17_);
6796 	_tmp18_ = cfunc;
6797 	_tmp19_ = vala_ccode_parameter_new ("error", "GError**");
6798 	_tmp20_ = _tmp19_;
6799 	vala_ccode_function_add_parameter (_tmp18_, _tmp20_);
6800 	_vala_ccode_node_unref0 (_tmp20_);
6801 	if (vala_symbol_is_private_symbol ((ValaSymbol*) sym)) {
6802 		ValaCCodeFunction* _tmp21_;
6803 		ValaCCodeFunction* _tmp22_;
6804 		ValaCCodeModifiers _tmp23_;
6805 		ValaCCodeModifiers _tmp24_;
6806 		_tmp21_ = cfunc;
6807 		_tmp22_ = cfunc;
6808 		_tmp23_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp22_);
6809 		_tmp24_ = _tmp23_;
6810 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp22_, _tmp24_ | VALA_CCODE_MODIFIERS_STATIC);
6811 	} else {
6812 		gboolean _tmp25_ = FALSE;
6813 		ValaCodeContext* _tmp26_;
6814 		ValaCodeContext* _tmp27_;
6815 		gboolean _tmp28_;
6816 		gboolean _tmp29_;
6817 		_tmp26_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6818 		_tmp27_ = _tmp26_;
6819 		_tmp28_ = vala_code_context_get_hide_internal (_tmp27_);
6820 		_tmp29_ = _tmp28_;
6821 		if (_tmp29_) {
6822 			_tmp25_ = vala_symbol_is_internal_symbol ((ValaSymbol*) sym);
6823 		} else {
6824 			_tmp25_ = FALSE;
6825 		}
6826 		if (_tmp25_) {
6827 			ValaCCodeFunction* _tmp30_;
6828 			ValaCCodeFunction* _tmp31_;
6829 			ValaCCodeModifiers _tmp32_;
6830 			ValaCCodeModifiers _tmp33_;
6831 			_tmp30_ = cfunc;
6832 			_tmp31_ = cfunc;
6833 			_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
6834 			_tmp33_ = _tmp32_;
6835 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_INTERNAL);
6836 		}
6837 	}
6838 	_tmp34_ = cfunc;
6839 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp34_);
6840 	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6841 	_tmp36_ = _tmp35_;
6842 	_tmp37_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
6843 	_tmp38_ = _tmp37_;
6844 	vala_ccode_function_add_declaration (_tmp36_, "guint", (ValaCCodeDeclarator*) _tmp38_, 0);
6845 	_vala_ccode_node_unref0 (_tmp38_);
6846 	_tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6847 	_tmp40_ = _tmp39_;
6848 	_tmp41_ = vala_ccode_variable_declarator_new ("*data", NULL, NULL);
6849 	_tmp42_ = _tmp41_;
6850 	vala_ccode_function_add_declaration (_tmp40_, "gpointer", (ValaCCodeDeclarator*) _tmp42_, 0);
6851 	_vala_ccode_node_unref0 (_tmp42_);
6852 	_tmp43_ = vala_ccode_identifier_new ("g_new");
6853 	_tmp44_ = _tmp43_;
6854 	_tmp45_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp44_);
6855 	_tmp46_ = _tmp45_;
6856 	_vala_ccode_node_unref0 (_tmp44_);
6857 	alloc_data = _tmp46_;
6858 	_tmp47_ = alloc_data;
6859 	_tmp48_ = vala_ccode_identifier_new ("gpointer");
6860 	_tmp49_ = _tmp48_;
6861 	vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp49_);
6862 	_vala_ccode_node_unref0 (_tmp49_);
6863 	_tmp50_ = alloc_data;
6864 	_tmp51_ = vala_ccode_constant_new ("3");
6865 	_tmp52_ = _tmp51_;
6866 	vala_ccode_function_call_add_argument (_tmp50_, (ValaCCodeExpression*) _tmp52_);
6867 	_vala_ccode_node_unref0 (_tmp52_);
6868 	_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6869 	_tmp54_ = _tmp53_;
6870 	_tmp55_ = vala_ccode_identifier_new ("data");
6871 	_tmp56_ = _tmp55_;
6872 	_tmp57_ = alloc_data;
6873 	vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) _tmp57_);
6874 	_vala_ccode_node_unref0 (_tmp56_);
6875 	_tmp58_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) sym);
6876 	ref_function = _tmp58_;
6877 	if (G_TYPE_CHECK_INSTANCE_TYPE (sym, VALA_TYPE_INTERFACE)) {
6878 		const gchar* _tmp60_;
6879 		_tmp60_ = ref_function;
6880 		_tmp59_ = _tmp60_ == NULL;
6881 	} else {
6882 		_tmp59_ = FALSE;
6883 	}
6884 	if (_tmp59_) {
6885 		ValaSourceReference* _tmp61_;
6886 		ValaSourceReference* _tmp62_;
6887 		gchar* _tmp63_;
6888 		gchar* _tmp64_;
6889 		gchar* _tmp65_;
6890 		gchar* _tmp66_;
6891 		_tmp61_ = vala_code_node_get_source_reference ((ValaCodeNode*) sym);
6892 		_tmp62_ = _tmp61_;
6893 		_tmp63_ = vala_symbol_get_full_name ((ValaSymbol*) sym);
6894 		_tmp64_ = _tmp63_;
6895 		_tmp65_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \
6896 "rface declaration if unsure", _tmp64_);
6897 		_tmp66_ = _tmp65_;
6898 		vala_report_error (_tmp62_, _tmp66_);
6899 		_g_free0 (_tmp66_);
6900 		_g_free0 (_tmp64_);
6901 		_g_free0 (ref_function);
6902 		_vala_ccode_node_unref0 (alloc_data);
6903 		_vala_ccode_node_unref0 (cfunc);
6904 		_g_free0 (dbus_iface_name);
6905 		return;
6906 	}
6907 	_tmp67_ = ref_function;
6908 	_tmp68_ = vala_ccode_identifier_new (_tmp67_);
6909 	_tmp69_ = _tmp68_;
6910 	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
6911 	_tmp71_ = _tmp70_;
6912 	_vala_ccode_node_unref0 (_tmp69_);
6913 	ref_object = _tmp71_;
6914 	_tmp72_ = ref_object;
6915 	_tmp73_ = vala_ccode_identifier_new ("object");
6916 	_tmp74_ = _tmp73_;
6917 	vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp74_);
6918 	_vala_ccode_node_unref0 (_tmp74_);
6919 	_tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6920 	_tmp76_ = _tmp75_;
6921 	_tmp77_ = vala_ccode_identifier_new ("data");
6922 	_tmp78_ = _tmp77_;
6923 	_tmp79_ = vala_ccode_constant_new ("0");
6924 	_tmp80_ = _tmp79_;
6925 	_tmp81_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp78_, (ValaCCodeExpression*) _tmp80_);
6926 	_tmp82_ = _tmp81_;
6927 	_tmp83_ = ref_object;
6928 	vala_ccode_function_add_assignment (_tmp76_, (ValaCCodeExpression*) _tmp82_, (ValaCCodeExpression*) _tmp83_);
6929 	_vala_ccode_node_unref0 (_tmp82_);
6930 	_vala_ccode_node_unref0 (_tmp80_);
6931 	_vala_ccode_node_unref0 (_tmp78_);
6932 	_tmp84_ = vala_ccode_identifier_new ("g_object_ref");
6933 	_tmp85_ = _tmp84_;
6934 	_tmp86_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp85_);
6935 	_vala_ccode_node_unref0 (ref_object);
6936 	ref_object = _tmp86_;
6937 	_vala_ccode_node_unref0 (_tmp85_);
6938 	_tmp87_ = ref_object;
6939 	_tmp88_ = vala_ccode_identifier_new ("connection");
6940 	_tmp89_ = _tmp88_;
6941 	vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp89_);
6942 	_vala_ccode_node_unref0 (_tmp89_);
6943 	_tmp90_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6944 	_tmp91_ = _tmp90_;
6945 	_tmp92_ = vala_ccode_identifier_new ("data");
6946 	_tmp93_ = _tmp92_;
6947 	_tmp94_ = vala_ccode_constant_new ("1");
6948 	_tmp95_ = _tmp94_;
6949 	_tmp96_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp93_, (ValaCCodeExpression*) _tmp95_);
6950 	_tmp97_ = _tmp96_;
6951 	_tmp98_ = ref_object;
6952 	vala_ccode_function_add_assignment (_tmp91_, (ValaCCodeExpression*) _tmp97_, (ValaCCodeExpression*) _tmp98_);
6953 	_vala_ccode_node_unref0 (_tmp97_);
6954 	_vala_ccode_node_unref0 (_tmp95_);
6955 	_vala_ccode_node_unref0 (_tmp93_);
6956 	_tmp99_ = vala_ccode_identifier_new ("g_strdup");
6957 	_tmp100_ = _tmp99_;
6958 	_tmp101_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp100_);
6959 	_tmp102_ = _tmp101_;
6960 	_vala_ccode_node_unref0 (_tmp100_);
6961 	dup_path = _tmp102_;
6962 	_tmp103_ = dup_path;
6963 	_tmp104_ = vala_ccode_identifier_new ("path");
6964 	_tmp105_ = _tmp104_;
6965 	vala_ccode_function_call_add_argument (_tmp103_, (ValaCCodeExpression*) _tmp105_);
6966 	_vala_ccode_node_unref0 (_tmp105_);
6967 	_tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6968 	_tmp107_ = _tmp106_;
6969 	_tmp108_ = vala_ccode_identifier_new ("data");
6970 	_tmp109_ = _tmp108_;
6971 	_tmp110_ = vala_ccode_constant_new ("2");
6972 	_tmp111_ = _tmp110_;
6973 	_tmp112_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp109_, (ValaCCodeExpression*) _tmp111_);
6974 	_tmp113_ = _tmp112_;
6975 	_tmp114_ = dup_path;
6976 	vala_ccode_function_add_assignment (_tmp107_, (ValaCCodeExpression*) _tmp113_, (ValaCCodeExpression*) _tmp114_);
6977 	_vala_ccode_node_unref0 (_tmp113_);
6978 	_vala_ccode_node_unref0 (_tmp111_);
6979 	_vala_ccode_node_unref0 (_tmp109_);
6980 	_tmp115_ = vala_ccode_identifier_new ("g_dbus_connection_register_object");
6981 	_tmp116_ = _tmp115_;
6982 	_tmp117_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp116_);
6983 	_tmp118_ = _tmp117_;
6984 	_vala_ccode_node_unref0 (_tmp116_);
6985 	cregister = _tmp118_;
6986 	_tmp119_ = cregister;
6987 	_tmp120_ = vala_ccode_identifier_new ("connection");
6988 	_tmp121_ = _tmp120_;
6989 	vala_ccode_function_call_add_argument (_tmp119_, (ValaCCodeExpression*) _tmp121_);
6990 	_vala_ccode_node_unref0 (_tmp121_);
6991 	_tmp122_ = cregister;
6992 	_tmp123_ = vala_ccode_identifier_new ("path");
6993 	_tmp124_ = _tmp123_;
6994 	vala_ccode_function_call_add_argument (_tmp122_, (ValaCCodeExpression*) _tmp124_);
6995 	_vala_ccode_node_unref0 (_tmp124_);
6996 	_tmp125_ = cregister;
6997 	_tmp126_ = vala_gd_bus_module_get_interface_info ((ValaGDBusModule*) self, sym);
6998 	_tmp127_ = _tmp126_;
6999 	_tmp128_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp127_);
7000 	_tmp129_ = _tmp128_;
7001 	_tmp130_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp129_, "GDBusInterfaceInfo *");
7002 	_tmp131_ = _tmp130_;
7003 	vala_ccode_function_call_add_argument (_tmp125_, (ValaCCodeExpression*) _tmp131_);
7004 	_vala_ccode_node_unref0 (_tmp131_);
7005 	_vala_ccode_node_unref0 (_tmp129_);
7006 	_vala_ccode_node_unref0 (_tmp127_);
7007 	_tmp132_ = cregister;
7008 	_tmp133_ = vala_gd_bus_server_module_get_interface_vtable (self, sym);
7009 	_tmp134_ = _tmp133_;
7010 	_tmp135_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp134_);
7011 	_tmp136_ = _tmp135_;
7012 	vala_ccode_function_call_add_argument (_tmp132_, (ValaCCodeExpression*) _tmp136_);
7013 	_vala_ccode_node_unref0 (_tmp136_);
7014 	_vala_ccode_node_unref0 (_tmp134_);
7015 	_tmp137_ = cregister;
7016 	_tmp138_ = vala_ccode_identifier_new ("data");
7017 	_tmp139_ = _tmp138_;
7018 	vala_ccode_function_call_add_argument (_tmp137_, (ValaCCodeExpression*) _tmp139_);
7019 	_vala_ccode_node_unref0 (_tmp139_);
7020 	_tmp140_ = cregister;
7021 	_tmp141_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
7022 	_tmp142_ = _tmp141_;
7023 	_tmp143_ = g_strconcat ("_", _tmp142_, NULL);
7024 	_tmp144_ = _tmp143_;
7025 	_tmp145_ = g_strconcat (_tmp144_, "unregister_object", NULL);
7026 	_tmp146_ = _tmp145_;
7027 	_tmp147_ = vala_ccode_identifier_new (_tmp146_);
7028 	_tmp148_ = _tmp147_;
7029 	vala_ccode_function_call_add_argument (_tmp140_, (ValaCCodeExpression*) _tmp148_);
7030 	_vala_ccode_node_unref0 (_tmp148_);
7031 	_g_free0 (_tmp146_);
7032 	_g_free0 (_tmp144_);
7033 	_g_free0 (_tmp142_);
7034 	_tmp149_ = cregister;
7035 	_tmp150_ = vala_ccode_identifier_new ("error");
7036 	_tmp151_ = _tmp150_;
7037 	vala_ccode_function_call_add_argument (_tmp149_, (ValaCCodeExpression*) _tmp151_);
7038 	_vala_ccode_node_unref0 (_tmp151_);
7039 	_tmp152_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7040 	_tmp153_ = _tmp152_;
7041 	_tmp154_ = vala_ccode_identifier_new ("result");
7042 	_tmp155_ = _tmp154_;
7043 	_tmp156_ = cregister;
7044 	vala_ccode_function_add_assignment (_tmp153_, (ValaCCodeExpression*) _tmp155_, (ValaCCodeExpression*) _tmp156_);
7045 	_vala_ccode_node_unref0 (_tmp155_);
7046 	_tmp157_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7047 	_tmp158_ = _tmp157_;
7048 	_tmp159_ = vala_ccode_identifier_new ("result");
7049 	_tmp160_ = _tmp159_;
7050 	_tmp161_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp160_);
7051 	_tmp162_ = _tmp161_;
7052 	vala_ccode_function_open_if (_tmp158_, (ValaCCodeExpression*) _tmp162_);
7053 	_vala_ccode_node_unref0 (_tmp162_);
7054 	_vala_ccode_node_unref0 (_tmp160_);
7055 	_tmp163_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7056 	_tmp164_ = _tmp163_;
7057 	_tmp165_ = vala_ccode_constant_new ("0");
7058 	_tmp166_ = _tmp165_;
7059 	vala_ccode_function_add_return (_tmp164_, (ValaCCodeExpression*) _tmp166_);
7060 	_vala_ccode_node_unref0 (_tmp166_);
7061 	_tmp167_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7062 	_tmp168_ = _tmp167_;
7063 	vala_ccode_function_close (_tmp168_);
7064 	vala_gd_bus_server_module_handle_signals (self, sym, TRUE);
7065 	_tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7066 	_tmp170_ = _tmp169_;
7067 	_tmp171_ = vala_ccode_identifier_new ("result");
7068 	_tmp172_ = _tmp171_;
7069 	vala_ccode_function_add_return (_tmp170_, (ValaCCodeExpression*) _tmp172_);
7070 	_vala_ccode_node_unref0 (_tmp172_);
7071 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
7072 	_tmp173_ = ((ValaCCodeBaseModule*) self)->cfile;
7073 	_tmp174_ = cfunc;
7074 	vala_ccode_file_add_function (_tmp173_, _tmp174_);
7075 	_tmp175_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
7076 	_tmp176_ = _tmp175_;
7077 	_tmp177_ = g_strconcat ("_", _tmp176_, NULL);
7078 	_tmp178_ = _tmp177_;
7079 	_tmp179_ = g_strconcat (_tmp178_, "unregister_object", NULL);
7080 	_tmp180_ = _tmp179_;
7081 	_tmp181_ = vala_ccode_function_new (_tmp180_, "void");
7082 	_vala_ccode_node_unref0 (cfunc);
7083 	cfunc = _tmp181_;
7084 	_g_free0 (_tmp180_);
7085 	_g_free0 (_tmp178_);
7086 	_g_free0 (_tmp176_);
7087 	_tmp182_ = cfunc;
7088 	_tmp183_ = vala_ccode_parameter_new ("user_data", "gpointer");
7089 	_tmp184_ = _tmp183_;
7090 	vala_ccode_function_add_parameter (_tmp182_, _tmp184_);
7091 	_vala_ccode_node_unref0 (_tmp184_);
7092 	_tmp185_ = cfunc;
7093 	_tmp186_ = cfunc;
7094 	_tmp187_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp186_);
7095 	_tmp188_ = _tmp187_;
7096 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp186_, _tmp188_ | VALA_CCODE_MODIFIERS_STATIC);
7097 	_tmp189_ = cfunc;
7098 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp189_);
7099 	_tmp190_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7100 	_tmp191_ = _tmp190_;
7101 	_tmp192_ = vala_ccode_identifier_new ("user_data");
7102 	_tmp193_ = _tmp192_;
7103 	_tmp194_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp193_, NULL);
7104 	_tmp195_ = _tmp194_;
7105 	vala_ccode_function_add_declaration (_tmp191_, "gpointer*", (ValaCCodeDeclarator*) _tmp195_, 0);
7106 	_vala_ccode_node_unref0 (_tmp195_);
7107 	_vala_ccode_node_unref0 (_tmp193_);
7108 	vala_gd_bus_server_module_handle_signals (self, sym, FALSE);
7109 	_tmp196_ = vala_get_ccode_unref_function (sym);
7110 	_tmp197_ = _tmp196_;
7111 	_tmp198_ = vala_ccode_identifier_new (_tmp197_);
7112 	_tmp199_ = _tmp198_;
7113 	_tmp200_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp199_);
7114 	_tmp201_ = _tmp200_;
7115 	_vala_ccode_node_unref0 (_tmp199_);
7116 	_g_free0 (_tmp197_);
7117 	unref_object = _tmp201_;
7118 	_tmp202_ = unref_object;
7119 	_tmp203_ = vala_ccode_identifier_new ("data");
7120 	_tmp204_ = _tmp203_;
7121 	_tmp205_ = vala_ccode_constant_new ("0");
7122 	_tmp206_ = _tmp205_;
7123 	_tmp207_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp204_, (ValaCCodeExpression*) _tmp206_);
7124 	_tmp208_ = _tmp207_;
7125 	vala_ccode_function_call_add_argument (_tmp202_, (ValaCCodeExpression*) _tmp208_);
7126 	_vala_ccode_node_unref0 (_tmp208_);
7127 	_vala_ccode_node_unref0 (_tmp206_);
7128 	_vala_ccode_node_unref0 (_tmp204_);
7129 	_tmp209_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7130 	_tmp210_ = _tmp209_;
7131 	_tmp211_ = unref_object;
7132 	vala_ccode_function_add_expression (_tmp210_, (ValaCCodeExpression*) _tmp211_);
7133 	_tmp212_ = vala_ccode_identifier_new ("g_object_unref");
7134 	_tmp213_ = _tmp212_;
7135 	_tmp214_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp213_);
7136 	_vala_ccode_node_unref0 (unref_object);
7137 	unref_object = _tmp214_;
7138 	_vala_ccode_node_unref0 (_tmp213_);
7139 	_tmp215_ = unref_object;
7140 	_tmp216_ = vala_ccode_identifier_new ("data");
7141 	_tmp217_ = _tmp216_;
7142 	_tmp218_ = vala_ccode_constant_new ("1");
7143 	_tmp219_ = _tmp218_;
7144 	_tmp220_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp217_, (ValaCCodeExpression*) _tmp219_);
7145 	_tmp221_ = _tmp220_;
7146 	vala_ccode_function_call_add_argument (_tmp215_, (ValaCCodeExpression*) _tmp221_);
7147 	_vala_ccode_node_unref0 (_tmp221_);
7148 	_vala_ccode_node_unref0 (_tmp219_);
7149 	_vala_ccode_node_unref0 (_tmp217_);
7150 	_tmp222_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7151 	_tmp223_ = _tmp222_;
7152 	_tmp224_ = unref_object;
7153 	vala_ccode_function_add_expression (_tmp223_, (ValaCCodeExpression*) _tmp224_);
7154 	_tmp225_ = vala_ccode_identifier_new ("g_free");
7155 	_tmp226_ = _tmp225_;
7156 	_tmp227_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp226_);
7157 	_tmp228_ = _tmp227_;
7158 	_vala_ccode_node_unref0 (_tmp226_);
7159 	free_path = _tmp228_;
7160 	_tmp229_ = free_path;
7161 	_tmp230_ = vala_ccode_identifier_new ("data");
7162 	_tmp231_ = _tmp230_;
7163 	_tmp232_ = vala_ccode_constant_new ("2");
7164 	_tmp233_ = _tmp232_;
7165 	_tmp234_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp231_, (ValaCCodeExpression*) _tmp233_);
7166 	_tmp235_ = _tmp234_;
7167 	vala_ccode_function_call_add_argument (_tmp229_, (ValaCCodeExpression*) _tmp235_);
7168 	_vala_ccode_node_unref0 (_tmp235_);
7169 	_vala_ccode_node_unref0 (_tmp233_);
7170 	_vala_ccode_node_unref0 (_tmp231_);
7171 	_tmp236_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7172 	_tmp237_ = _tmp236_;
7173 	_tmp238_ = free_path;
7174 	vala_ccode_function_add_expression (_tmp237_, (ValaCCodeExpression*) _tmp238_);
7175 	_tmp239_ = vala_ccode_identifier_new ("g_free");
7176 	_tmp240_ = _tmp239_;
7177 	_tmp241_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp240_);
7178 	_tmp242_ = _tmp241_;
7179 	_vala_ccode_node_unref0 (_tmp240_);
7180 	free_data = _tmp242_;
7181 	_tmp243_ = free_data;
7182 	_tmp244_ = vala_ccode_identifier_new ("data");
7183 	_tmp245_ = _tmp244_;
7184 	vala_ccode_function_call_add_argument (_tmp243_, (ValaCCodeExpression*) _tmp245_);
7185 	_vala_ccode_node_unref0 (_tmp245_);
7186 	_tmp246_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7187 	_tmp247_ = _tmp246_;
7188 	_tmp248_ = free_data;
7189 	vala_ccode_function_add_expression (_tmp247_, (ValaCCodeExpression*) _tmp248_);
7190 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
7191 	_tmp249_ = ((ValaCCodeBaseModule*) self)->cfile;
7192 	_tmp250_ = cfunc;
7193 	vala_ccode_file_add_function_declaration (_tmp249_, _tmp250_);
7194 	_tmp251_ = ((ValaCCodeBaseModule*) self)->cfile;
7195 	_tmp252_ = cfunc;
7196 	vala_ccode_file_add_function (_tmp251_, _tmp252_);
7197 	_vala_ccode_node_unref0 (free_data);
7198 	_vala_ccode_node_unref0 (free_path);
7199 	_vala_ccode_node_unref0 (unref_object);
7200 	_vala_ccode_node_unref0 (cregister);
7201 	_vala_ccode_node_unref0 (dup_path);
7202 	_vala_ccode_node_unref0 (ref_object);
7203 	_g_free0 (ref_function);
7204 	_vala_ccode_node_unref0 (alloc_data);
7205 	_vala_ccode_node_unref0 (cfunc);
7206 	_g_free0 (dbus_iface_name);
7207 }
7208 
7209 static void
vala_gd_bus_server_module_real_register_dbus_info(ValaCCodeBaseModule * base,ValaCCodeBlock * block,ValaObjectTypeSymbol * sym)7210 vala_gd_bus_server_module_real_register_dbus_info (ValaCCodeBaseModule* base,
7211                                                    ValaCCodeBlock* block,
7212                                                    ValaObjectTypeSymbol* sym)
7213 {
7214 	ValaGDBusServerModule * self;
7215 	gchar* dbus_iface_name = NULL;
7216 	gchar* _tmp0_;
7217 	const gchar* _tmp1_;
7218 	ValaCCodeFunctionCall* quark = NULL;
7219 	ValaCCodeIdentifier* _tmp2_;
7220 	ValaCCodeIdentifier* _tmp3_;
7221 	ValaCCodeFunctionCall* _tmp4_;
7222 	ValaCCodeFunctionCall* _tmp5_;
7223 	ValaCCodeFunctionCall* _tmp6_;
7224 	ValaCCodeConstant* _tmp7_;
7225 	ValaCCodeConstant* _tmp8_;
7226 	ValaCCodeFunctionCall* set_qdata = NULL;
7227 	ValaCCodeIdentifier* _tmp9_;
7228 	ValaCCodeIdentifier* _tmp10_;
7229 	ValaCCodeFunctionCall* _tmp11_;
7230 	ValaCCodeFunctionCall* _tmp12_;
7231 	ValaCCodeFunctionCall* _tmp13_;
7232 	gchar* _tmp14_;
7233 	gchar* _tmp15_;
7234 	gchar* _tmp16_;
7235 	gchar* _tmp17_;
7236 	ValaCCodeIdentifier* _tmp18_;
7237 	ValaCCodeIdentifier* _tmp19_;
7238 	ValaCCodeFunctionCall* _tmp20_;
7239 	ValaCCodeFunctionCall* _tmp21_;
7240 	ValaCCodeFunctionCall* _tmp22_;
7241 	gchar* _tmp23_;
7242 	gchar* _tmp24_;
7243 	gchar* _tmp25_;
7244 	gchar* _tmp26_;
7245 	ValaCCodeIdentifier* _tmp27_;
7246 	ValaCCodeIdentifier* _tmp28_;
7247 	ValaCCodeCastExpression* _tmp29_;
7248 	ValaCCodeCastExpression* _tmp30_;
7249 	ValaCCodeFunctionCall* _tmp31_;
7250 	ValaCCodeExpressionStatement* _tmp32_;
7251 	ValaCCodeExpressionStatement* _tmp33_;
7252 	self = (ValaGDBusServerModule*) base;
7253 	g_return_if_fail (block != NULL);
7254 	g_return_if_fail (sym != NULL);
7255 	_tmp0_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) sym);
7256 	dbus_iface_name = _tmp0_;
7257 	_tmp1_ = dbus_iface_name;
7258 	if (_tmp1_ == NULL) {
7259 		_g_free0 (dbus_iface_name);
7260 		return;
7261 	}
7262 	VALA_CCODE_BASE_MODULE_CLASS (vala_gd_bus_server_module_parent_class)->register_dbus_info ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GD_BUS_CLIENT_MODULE, ValaGDBusClientModule), block, sym);
7263 	_tmp2_ = vala_ccode_identifier_new ("g_quark_from_static_string");
7264 	_tmp3_ = _tmp2_;
7265 	_tmp4_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp3_);
7266 	_tmp5_ = _tmp4_;
7267 	_vala_ccode_node_unref0 (_tmp3_);
7268 	quark = _tmp5_;
7269 	_tmp6_ = quark;
7270 	_tmp7_ = vala_ccode_constant_new ("\"vala-dbus-register-object\"");
7271 	_tmp8_ = _tmp7_;
7272 	vala_ccode_function_call_add_argument (_tmp6_, (ValaCCodeExpression*) _tmp8_);
7273 	_vala_ccode_node_unref0 (_tmp8_);
7274 	_tmp9_ = vala_ccode_identifier_new ("g_type_set_qdata");
7275 	_tmp10_ = _tmp9_;
7276 	_tmp11_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp10_);
7277 	_tmp12_ = _tmp11_;
7278 	_vala_ccode_node_unref0 (_tmp10_);
7279 	set_qdata = _tmp12_;
7280 	_tmp13_ = set_qdata;
7281 	_tmp14_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) sym, NULL);
7282 	_tmp15_ = _tmp14_;
7283 	_tmp16_ = g_strdup_printf ("%s_type_id", _tmp15_);
7284 	_tmp17_ = _tmp16_;
7285 	_tmp18_ = vala_ccode_identifier_new (_tmp17_);
7286 	_tmp19_ = _tmp18_;
7287 	vala_ccode_function_call_add_argument (_tmp13_, (ValaCCodeExpression*) _tmp19_);
7288 	_vala_ccode_node_unref0 (_tmp19_);
7289 	_g_free0 (_tmp17_);
7290 	_g_free0 (_tmp15_);
7291 	_tmp20_ = set_qdata;
7292 	_tmp21_ = quark;
7293 	vala_ccode_function_call_add_argument (_tmp20_, (ValaCCodeExpression*) _tmp21_);
7294 	_tmp22_ = set_qdata;
7295 	_tmp23_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) sym);
7296 	_tmp24_ = _tmp23_;
7297 	_tmp25_ = g_strconcat (_tmp24_, "register_object", NULL);
7298 	_tmp26_ = _tmp25_;
7299 	_tmp27_ = vala_ccode_identifier_new (_tmp26_);
7300 	_tmp28_ = _tmp27_;
7301 	_tmp29_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp28_, "void*");
7302 	_tmp30_ = _tmp29_;
7303 	vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp30_);
7304 	_vala_ccode_node_unref0 (_tmp30_);
7305 	_vala_ccode_node_unref0 (_tmp28_);
7306 	_g_free0 (_tmp26_);
7307 	_g_free0 (_tmp24_);
7308 	_tmp31_ = set_qdata;
7309 	_tmp32_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp31_);
7310 	_tmp33_ = _tmp32_;
7311 	vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp33_);
7312 	_vala_ccode_node_unref0 (_tmp33_);
7313 	_vala_ccode_node_unref0 (set_qdata);
7314 	_vala_ccode_node_unref0 (quark);
7315 	_g_free0 (dbus_iface_name);
7316 }
7317 
7318 ValaGDBusServerModule*
vala_gd_bus_server_module_construct(GType object_type)7319 vala_gd_bus_server_module_construct (GType object_type)
7320 {
7321 	ValaGDBusServerModule* self = NULL;
7322 	self = (ValaGDBusServerModule*) vala_gd_bus_client_module_construct (object_type);
7323 	return self;
7324 }
7325 
7326 ValaGDBusServerModule*
vala_gd_bus_server_module_new(void)7327 vala_gd_bus_server_module_new (void)
7328 {
7329 	return vala_gd_bus_server_module_construct (VALA_TYPE_GD_BUS_SERVER_MODULE);
7330 }
7331 
7332 static void
vala_gd_bus_server_module_class_init(ValaGDBusServerModuleClass * klass,gpointer klass_data)7333 vala_gd_bus_server_module_class_init (ValaGDBusServerModuleClass * klass,
7334                                       gpointer klass_data)
7335 {
7336 	vala_gd_bus_server_module_parent_class = g_type_class_peek_parent (klass);
7337 	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gd_bus_server_module_real_visit_method_call;
7338 	((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = (void (*) (ValaCCodeBaseModule*, ValaClass*, ValaCCodeFile*)) vala_gd_bus_server_module_real_generate_class_declaration;
7339 	((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = (void (*) (ValaCCodeBaseModule*, ValaInterface*, ValaCCodeFile*)) vala_gd_bus_server_module_real_generate_interface_declaration;
7340 	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_gd_bus_server_module_real_visit_class;
7341 	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor*, ValaInterface*)) vala_gd_bus_server_module_real_visit_interface;
7342 	((ValaCCodeBaseModuleClass *) klass)->register_dbus_info = (void (*) (ValaCCodeBaseModule*, ValaCCodeBlock*, ValaObjectTypeSymbol*)) vala_gd_bus_server_module_real_register_dbus_info;
7343 }
7344 
7345 static void
vala_gd_bus_server_module_instance_init(ValaGDBusServerModule * self,gpointer klass)7346 vala_gd_bus_server_module_instance_init (ValaGDBusServerModule * self,
7347                                          gpointer klass)
7348 {
7349 }
7350 
7351 static GType
vala_gd_bus_server_module_get_type_once(void)7352 vala_gd_bus_server_module_get_type_once (void)
7353 {
7354 	static const GTypeInfo g_define_type_info = { sizeof (ValaGDBusServerModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gd_bus_server_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGDBusServerModule), 0, (GInstanceInitFunc) vala_gd_bus_server_module_instance_init, NULL };
7355 	GType vala_gd_bus_server_module_type_id;
7356 	vala_gd_bus_server_module_type_id = g_type_register_static (VALA_TYPE_GD_BUS_CLIENT_MODULE, "ValaGDBusServerModule", &g_define_type_info, 0);
7357 	return vala_gd_bus_server_module_type_id;
7358 }
7359 
7360 GType
vala_gd_bus_server_module_get_type(void)7361 vala_gd_bus_server_module_get_type (void)
7362 {
7363 	static volatile gsize vala_gd_bus_server_module_type_id__volatile = 0;
7364 	if (g_once_init_enter (&vala_gd_bus_server_module_type_id__volatile)) {
7365 		GType vala_gd_bus_server_module_type_id;
7366 		vala_gd_bus_server_module_type_id = vala_gd_bus_server_module_get_type_once ();
7367 		g_once_init_leave (&vala_gd_bus_server_module_type_id__volatile, vala_gd_bus_server_module_type_id);
7368 	}
7369 	return vala_gd_bus_server_module_type_id__volatile;
7370 }
7371 
7372