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

valadbusmodule.c

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

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

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

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

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


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

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

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

typedef struct _ValaCCodeBaseModuleEmitContext ValaCCodeBaseModuleEmitContext;
typedef struct _ValaCCodeBaseModuleEmitContextClass ValaCCodeBaseModuleEmitContextClass;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

typedef struct _ValaGObjectModule ValaGObjectModule;
typedef struct _ValaGObjectModuleClass ValaGObjectModuleClass;
typedef struct _ValaGObjectModulePrivate ValaGObjectModulePrivate;

#define VALA_TYPE_GSIGNAL_MODULE (vala_gsignal_module_get_type ())
#define VALA_GSIGNAL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GSIGNAL_MODULE, ValaGSignalModule))
#define VALA_GSIGNAL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GSIGNAL_MODULE, ValaGSignalModuleClass))
#define VALA_IS_GSIGNAL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GSIGNAL_MODULE))
#define VALA_IS_GSIGNAL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GSIGNAL_MODULE))
#define VALA_GSIGNAL_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GSIGNAL_MODULE, ValaGSignalModuleClass))

typedef struct _ValaGSignalModule ValaGSignalModule;
typedef struct _ValaGSignalModuleClass ValaGSignalModuleClass;
typedef struct _ValaGSignalModulePrivate ValaGSignalModulePrivate;

#define VALA_TYPE_GASYNC_MODULE (vala_gasync_module_get_type ())
#define VALA_GASYNC_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GASYNC_MODULE, ValaGAsyncModule))
#define VALA_GASYNC_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GASYNC_MODULE, ValaGAsyncModuleClass))
#define VALA_IS_GASYNC_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GASYNC_MODULE))
#define VALA_IS_GASYNC_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GASYNC_MODULE))
#define VALA_GASYNC_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GASYNC_MODULE, ValaGAsyncModuleClass))

typedef struct _ValaGAsyncModule ValaGAsyncModule;
typedef struct _ValaGAsyncModuleClass ValaGAsyncModuleClass;
typedef struct _ValaGAsyncModulePrivate ValaGAsyncModulePrivate;

#define VALA_TYPE_DBUS_MODULE (vala_dbus_module_get_type ())
#define VALA_DBUS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DBUS_MODULE, ValaDBusModule))
#define VALA_DBUS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DBUS_MODULE, ValaDBusModuleClass))
#define VALA_IS_DBUS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DBUS_MODULE))
#define VALA_IS_DBUS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DBUS_MODULE))
#define VALA_DBUS_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DBUS_MODULE, ValaDBusModuleClass))

typedef struct _ValaDBusModule ValaDBusModule;
typedef struct _ValaDBusModuleClass ValaDBusModuleClass;
typedef struct _ValaDBusModulePrivate ValaDBusModulePrivate;

#define VALA_DBUS_MODULE_TYPE_BASIC_TYPE_INFO (vala_dbus_module_basic_type_info_get_type ())
typedef struct _ValaDBusModuleBasicTypeInfo ValaDBusModuleBasicTypeInfo;
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))

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

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

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

struct _ValaCCodeStructModuleClass {
      ValaCCodeBaseModuleClass parent_class;
};

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

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

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

struct _ValaCCodeControlFlowModuleClass {
      ValaCCodeMethodModuleClass parent_class;
};

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

struct _ValaCCodeMemberAccessModuleClass {
      ValaCCodeControlFlowModuleClass parent_class;
};

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

struct _ValaCCodeAssignmentModuleClass {
      ValaCCodeMemberAccessModuleClass parent_class;
};

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

struct _ValaCCodeMethodCallModuleClass {
      ValaCCodeAssignmentModuleClass parent_class;
};

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

struct _ValaCCodeArrayModuleClass {
      ValaCCodeMethodCallModuleClass parent_class;
};

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

struct _ValaCCodeDelegateModuleClass {
      ValaCCodeArrayModuleClass parent_class;
};

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

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

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

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

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

struct _ValaGObjectModuleClass {
      ValaGTypeModuleClass parent_class;
};

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

struct _ValaGSignalModuleClass {
      ValaGObjectModuleClass parent_class;
      ValaCCodeExpression* (*get_dbus_g_type) (ValaGSignalModule* self, ValaDataType* data_type);
};

struct _ValaGAsyncModule {
      ValaGSignalModule parent_instance;
      ValaGAsyncModulePrivate * priv;
};

struct _ValaGAsyncModuleClass {
      ValaGSignalModuleClass parent_class;
};

struct _ValaDBusModule {
      ValaGAsyncModule parent_instance;
      ValaDBusModulePrivate * priv;
};

struct _ValaDBusModuleClass {
      ValaGAsyncModuleClass parent_class;
};

00481 struct _ValaDBusModuleBasicTypeInfo {
      const gchar* signature;
      const gchar* type_name;
      const gchar* cname;
      const gchar* gtype;
      const gchar* get_value_function;
      const gchar* set_value_function;
};


static gpointer vala_dbus_module_parent_class = NULL;

GType vala_ccode_base_module_get_type (void) G_GNUC_CONST;
gpointer vala_ccode_base_module_emit_context_ref (gpointer instance);
void vala_ccode_base_module_emit_context_unref (gpointer instance);
GParamSpec* vala_ccode_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_ccode_base_module_value_set_emit_context (GValue* value, gpointer v_object);
void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_object);
gpointer vala_ccode_base_module_value_get_emit_context (const GValue* value);
GType vala_ccode_base_module_emit_context_get_type (void) G_GNUC_CONST;
GType vala_ccode_struct_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_method_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_control_flow_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_member_access_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_assignment_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_method_call_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_array_module_get_type (void) G_GNUC_CONST;
GType vala_ccode_delegate_module_get_type (void) G_GNUC_CONST;
GType vala_gerror_module_get_type (void) G_GNUC_CONST;
GType vala_gtype_module_get_type (void) G_GNUC_CONST;
GType vala_gobject_module_get_type (void) G_GNUC_CONST;
GType vala_gsignal_module_get_type (void) G_GNUC_CONST;
GType vala_gasync_module_get_type (void) G_GNUC_CONST;
GType vala_dbus_module_get_type (void) G_GNUC_CONST;
enum  {
      VALA_DBUS_MODULE_DUMMY_PROPERTY
};
static GType vala_dbus_module_basic_type_info_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static ValaDBusModuleBasicTypeInfo* vala_dbus_module_basic_type_info_dup (const ValaDBusModuleBasicTypeInfo* self);
static void vala_dbus_module_basic_type_info_free (ValaDBusModuleBasicTypeInfo* self);
static gboolean vala_dbus_module_is_string_marshalled_enum (ValaTypeSymbol* symbol);
static gchar* vala_dbus_module_get_dbus_value (ValaDBusModule* self, ValaEnumValue* value, const gchar* default_value);
gchar* vala_dbus_module_get_dbus_name (ValaTypeSymbol* symbol);
gchar* vala_dbus_module_get_dbus_name_for_member (ValaSymbol* symbol);
static gboolean vala_dbus_module_get_basic_type_info (ValaDBusModule* self, const gchar* signature, ValaDBusModuleBasicTypeInfo* basic_type);
gchar* vala_dbus_module_get_type_signature (ValaDataType* datatype);
static void vala_dbus_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
ValaCCodeFunction* vala_dbus_module_generate_enum_from_string_function (ValaDBusModule* self, ValaEnum* en);
ValaCCodeFunction* vala_dbus_module_generate_enum_to_string_function (ValaDBusModule* self, ValaEnum* en);
static gboolean vala_dbus_module_real_generate_enum_declaration (ValaCCodeBaseModule* base, ValaEnum* en, ValaCCodeFile* decl_space);
gboolean vala_ccode_base_module_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space);
ValaCCodeFunction* vala_dbus_module_generate_enum_from_string_function_declaration (ValaDBusModule* self, ValaEnum* en);
ValaCCodeFunction* vala_dbus_module_generate_enum_to_string_function_declaration (ValaDBusModule* self, ValaEnum* en);
static ValaCCodeExpression* vala_dbus_module_get_array_length (ValaDBusModule* self, ValaCCodeExpression* expr, gint dim);
static ValaCCodeExpression* vala_dbus_module_generate_enum_value_from_string (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaEnumValueType* type, ValaCCodeExpression* expr);
static ValaCCodeExpression* vala_dbus_module_read_basic (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDBusModuleBasicTypeInfo* basic_type, ValaCCodeExpression* iter_expr, gboolean transfer);
gint vala_ccode_base_module_get_next_temp_var_id (ValaCCodeBaseModule* self);
void vala_ccode_base_module_set_next_temp_var_id (ValaCCodeBaseModule* self, gint value);
static ValaCCodeExpression* vala_dbus_module_read_array (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr);
static void vala_dbus_module_read_array_dim (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, gint dim, const gchar* temp_name, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr);
ValaCCodeExpression* vala_dbus_module_read_expression (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDataType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr);
static ValaCCodeExpression* vala_dbus_module_read_struct (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaStruct* st, ValaCCodeExpression* iter_expr);
static ValaCCodeExpression* vala_dbus_module_read_value (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaCCodeExpression* iter_expr);
static ValaCCodeExpression* vala_dbus_module_read_hash_table (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaObjectType* type, ValaCCodeExpression* iter_expr);
ValaCCodeExpression* vala_ccode_base_module_convert_to_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type);
static ValaCCodeExpression* vala_dbus_module_generate_enum_value_to_string (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaEnumValueType* type, ValaCCodeExpression* expr);
static void vala_dbus_module_write_basic (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDBusModuleBasicTypeInfo* basic_type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr);
static void vala_dbus_module_write_array (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* array_expr);
static void vala_dbus_module_write_array_dim (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, gint dim, ValaCCodeExpression* iter_expr, ValaCCodeExpression* array_expr, ValaCCodeExpression* array_iter_expr);
void vala_dbus_module_write_expression (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDataType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr);
static void vala_dbus_module_write_struct (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaStruct* st, ValaCCodeExpression* iter_expr, ValaCCodeExpression* struct_expr);
static void vala_dbus_module_write_value (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr);
static void vala_dbus_module_write_hash_table (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaObjectType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* hash_table_expr);
ValaCCodeExpression* vala_ccode_base_module_convert_from_generic_pointer (ValaCCodeBaseModule* self, ValaCCodeExpression* cexpr, ValaDataType* actual_type);
void vala_dbus_module_add_dbus_helpers (ValaDBusModule* self);
ValaDBusModule* vala_dbus_module_new (void);
ValaDBusModule* vala_dbus_module_construct (GType object_type);
ValaGAsyncModule* vala_gasync_module_new (void);
ValaGAsyncModule* vala_gasync_module_construct (GType object_type);

static const ValaDBusModuleBasicTypeInfo VALA_DBUS_MODULE_basic_types[12] = {{"y", "BYTE", "guint8", "G_TYPE_UCHAR", "g_value_get_uchar", "g_value_set_uchar"}, {"b", "BOOLEAN", "dbus_bool_t", "G_TYPE_BOOLEAN", "g_value_get_boolean", "g_value_set_boolean"}, {"n", "INT16", "dbus_int16_t", "G_TYPE_INT", NULL, "g_value_set_int"}, {"q", "UINT16", "dbus_uint16_t", "G_TYPE_UINT", NULL, "g_value_set_uint"}, {"i", "INT32", "dbus_int32_t", "G_TYPE_INT", "g_value_get_int", "g_value_set_int"}, {"u", "UINT32", "dbus_uint32_t", "G_TYPE_UINT", "g_value_get_uint", "g_value_set_uint"}, {"x", "INT64", "dbus_int64_t", "G_TYPE_INT64", "g_value_get_int64", "g_value_set_int64"}, {"t", "UINT64", "dbus_uint64_t", "G_TYPE_UINT64", "g_value_get_uint64", "g_value_set_uint64"}, {"d", "DOUBLE", "double", "G_TYPE_DOUBLE", "g_value_get_double", "g_value_set_double"}, {"s", "STRING", "const char*", "G_TYPE_STRING", "g_value_get_string", "g_value_take_string"}, {"o", "OBJECT_PATH", "const char*", "G_TYPE_STRING", NULL, "g_value_take_string"}, {"g", "SIGNATURE", "const char*", "G_TYPE_STRING", NULL, "g_value_take_string"}};

static gboolean vala_dbus_module_is_string_marshalled_enum (ValaTypeSymbol* symbol) {
      gboolean result = FALSE;
      gboolean _tmp0_ = FALSE;
      if (symbol != NULL) {
            _tmp0_ = VALA_IS_ENUM (symbol);
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            ValaAttribute* _tmp1_ = NULL;
            ValaAttribute* dbus;
            gboolean _tmp2_ = FALSE;
            _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) symbol, "DBus");
            dbus = _tmp1_;
            if (dbus != NULL) {
                  gboolean _tmp3_;
                  _tmp3_ = vala_attribute_get_bool (dbus, "use_string_marshalling");
                  _tmp2_ = _tmp3_;
            } else {
                  _tmp2_ = FALSE;
            }
            result = _tmp2_;
            _vala_code_node_unref0 (dbus);
            return result;
      }
      result = FALSE;
      return result;
}


static gchar* vala_dbus_module_get_dbus_value (ValaDBusModule* self, ValaEnumValue* value, const gchar* default_value) {
      gchar* result = NULL;
      ValaAttribute* _tmp0_ = NULL;
      ValaAttribute* dbus;
      gchar* _tmp2_ = NULL;
      gchar* dbus_value;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (value != NULL, NULL);
      g_return_val_if_fail (default_value != NULL, NULL);
      _tmp0_ = vala_code_node_get_attribute ((ValaCodeNode*) value, "DBus");
      dbus = _tmp0_;
      if (dbus == NULL) {
            gchar* _tmp1_;
            _tmp1_ = g_strdup (default_value);
            result = _tmp1_;
            _vala_code_node_unref0 (dbus);
            return result;
      }
      _tmp2_ = vala_attribute_get_string (dbus, "value");
      dbus_value = _tmp2_;
      if (dbus_value == NULL) {
            gchar* _tmp3_;
            _tmp3_ = g_strdup (default_value);
            result = _tmp3_;
            _g_free0 (dbus_value);
            _vala_code_node_unref0 (dbus);
            return result;
      }
      result = dbus_value;
      _vala_code_node_unref0 (dbus);
      return result;
}


gchar* vala_dbus_module_get_dbus_name (ValaTypeSymbol* symbol) {
      gchar* result = NULL;
      ValaAttribute* _tmp0_ = NULL;
      ValaAttribute* dbus;
      gchar* _tmp1_ = NULL;
      g_return_val_if_fail (symbol != NULL, NULL);
      _tmp0_ = vala_code_node_get_attribute ((ValaCodeNode*) symbol, "DBus");
      dbus = _tmp0_;
      if (dbus == NULL) {
            result = NULL;
            _vala_code_node_unref0 (dbus);
            return result;
      }
      _tmp1_ = vala_attribute_get_string (dbus, "name");
      result = _tmp1_;
      _vala_code_node_unref0 (dbus);
      return result;
}


gchar* vala_dbus_module_get_dbus_name_for_member (ValaSymbol* symbol) {
      gchar* result = NULL;
      ValaAttribute* _tmp0_ = NULL;
      ValaAttribute* dbus;
      gboolean _tmp1_ = FALSE;
      const gchar* _tmp4_ = NULL;
      gchar* _tmp5_ = NULL;
      g_return_val_if_fail (symbol != NULL, NULL);
      _tmp0_ = vala_code_node_get_attribute ((ValaCodeNode*) symbol, "DBus");
      dbus = _tmp0_;
      if (dbus != NULL) {
            gboolean _tmp2_;
            _tmp2_ = vala_attribute_has_argument (dbus, "name");
            _tmp1_ = _tmp2_;
      } else {
            _tmp1_ = FALSE;
      }
      if (_tmp1_) {
            gchar* _tmp3_ = NULL;
            _tmp3_ = vala_attribute_get_string (dbus, "name");
            result = _tmp3_;
            _vala_code_node_unref0 (dbus);
            return result;
      }
      _tmp4_ = vala_symbol_get_name (symbol);
      _tmp5_ = vala_symbol_lower_case_to_camel_case (_tmp4_);
      result = _tmp5_;
      _vala_code_node_unref0 (dbus);
      return result;
}


static gboolean vala_dbus_module_get_basic_type_info (ValaDBusModule* self, const gchar* signature, ValaDBusModuleBasicTypeInfo* basic_type) {
      ValaDBusModuleBasicTypeInfo _basic_type = {0};
      gboolean result = FALSE;
      g_return_val_if_fail (self != NULL, FALSE);
      g_return_val_if_fail (signature != NULL, FALSE);
      {
            ValaDBusModuleBasicTypeInfo* info_collection;
            int info_collection_length1;
            int info_it;
            info_collection = VALA_DBUS_MODULE_basic_types;
            info_collection_length1 = G_N_ELEMENTS (VALA_DBUS_MODULE_basic_types);
            for (info_it = 0; info_it < G_N_ELEMENTS (VALA_DBUS_MODULE_basic_types); info_it = info_it + 1) {
                  ValaDBusModuleBasicTypeInfo info;
                  info = info_collection[info_it];
                  {
                        if (g_strcmp0 (info.signature, signature) == 0) {
                              _basic_type = info;
                              result = TRUE;
                              if (basic_type) {
                                    *basic_type = _basic_type;
                              }
                              return result;
                        }
                  }
            }
      }
      result = FALSE;
      if (basic_type) {
            *basic_type = _basic_type;
      }
      return result;
}


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


static gboolean string_contains (const gchar* self, const gchar* needle) {
      gboolean result = FALSE;
      gchar* _tmp0_ = NULL;
      g_return_val_if_fail (self != NULL, FALSE);
      g_return_val_if_fail (needle != NULL, FALSE);
      _tmp0_ = strstr ((gchar*) self, (gchar*) needle);
      result = _tmp0_ != NULL;
      return result;
}


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


gchar* vala_dbus_module_get_type_signature (ValaDataType* datatype) {
      gchar* result = NULL;
      ValaDataType* _tmp0_;
      ValaArrayType* _tmp1_;
      ValaArrayType* array_type;
      g_return_val_if_fail (datatype != NULL, NULL);
      _tmp0_ = datatype;
      _tmp1_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp0_) ? ((ValaArrayType*) _tmp0_) : NULL);
      array_type = _tmp1_;
      if (array_type != NULL) {
            ValaDataType* _tmp2_ = NULL;
            gchar* _tmp3_ = NULL;
            gchar* element_type_signature;
            gint _tmp4_;
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            gchar* _tmp7_;
            gchar* _tmp8_;
            _tmp2_ = vala_array_type_get_element_type (array_type);
            _tmp3_ = vala_dbus_module_get_type_signature (_tmp2_);
            element_type_signature = _tmp3_;
            if (element_type_signature == NULL) {
                  result = NULL;
                  _g_free0 (element_type_signature);
                  _vala_code_node_unref0 (array_type);
                  return result;
            }
            _tmp4_ = vala_array_type_get_rank (array_type);
            _tmp5_ = g_strnfill ((gsize) _tmp4_, 'a');
            _tmp6_ = _tmp5_;
            _tmp7_ = g_strconcat (_tmp6_, element_type_signature, NULL);
            _tmp8_ = _tmp7_;
            _g_free0 (_tmp6_);
            result = _tmp8_;
            _g_free0 (element_type_signature);
            _vala_code_node_unref0 (array_type);
            return result;
      } else {
            ValaTypeSymbol* _tmp9_ = NULL;
            gboolean _tmp10_;
            _tmp9_ = vala_data_type_get_data_type (datatype);
            _tmp10_ = vala_dbus_module_is_string_marshalled_enum (_tmp9_);
            if (_tmp10_) {
                  gchar* _tmp11_;
                  _tmp11_ = g_strdup ("s");
                  result = _tmp11_;
                  _vala_code_node_unref0 (array_type);
                  return result;
            } else {
                  ValaTypeSymbol* _tmp12_ = NULL;
                  _tmp12_ = vala_data_type_get_data_type (datatype);
                  if (_tmp12_ != NULL) {
                        gchar* sig;
                        ValaTypeSymbol* _tmp13_ = NULL;
                        ValaAttribute* _tmp14_ = NULL;
                        ValaAttribute* ccode;
                        ValaTypeSymbol* _tmp16_ = NULL;
                        ValaTypeSymbol* _tmp17_;
                        ValaStruct* _tmp18_;
                        ValaStruct* st;
                        ValaTypeSymbol* _tmp19_ = NULL;
                        ValaTypeSymbol* _tmp20_;
                        ValaEnum* _tmp21_;
                        ValaEnum* en;
                        gboolean _tmp22_ = FALSE;
                        ValaList* _tmp36_ = NULL;
                        ValaList* type_args;
                        gboolean _tmp37_ = FALSE;
                        gboolean _tmp38_ = FALSE;
                        sig = NULL;
                        _tmp13_ = vala_data_type_get_data_type (datatype);
                        _tmp14_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp13_, "CCode");
                        ccode = _tmp14_;
                        if (ccode != NULL) {
                              gchar* _tmp15_ = NULL;
                              _tmp15_ = vala_attribute_get_string (ccode, "type_signature");
                              _g_free0 (sig);
                              sig = _tmp15_;
                        }
                        _tmp16_ = vala_data_type_get_data_type (datatype);
                        _tmp17_ = _tmp16_;
                        _tmp18_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp17_) ? ((ValaStruct*) _tmp17_) : NULL);
                        st = _tmp18_;
                        _tmp19_ = vala_data_type_get_data_type (datatype);
                        _tmp20_ = _tmp19_;
                        _tmp21_ = _vala_code_node_ref0 (VALA_IS_ENUM (_tmp20_) ? ((ValaEnum*) _tmp20_) : NULL);
                        en = _tmp21_;
                        if (sig == NULL) {
                              _tmp22_ = st != NULL;
                        } else {
                              _tmp22_ = FALSE;
                        }
                        if (_tmp22_) {
                              GString* _tmp23_ = NULL;
                              GString* str;
                              gchar* _tmp31_;
                              _tmp23_ = g_string_new ("");
                              str = _tmp23_;
                              g_string_append_c (str, '(');
                              {
                                    ValaList* _tmp24_ = NULL;
                                    ValaList* _f_list;
                                    gint _tmp25_;
                                    gint _f_size;
                                    gint _f_index;
                                    _tmp24_ = vala_struct_get_fields (st);
                                    _f_list = _tmp24_;
                                    _tmp25_ = vala_collection_get_size ((ValaCollection*) _f_list);
                                    _f_size = _tmp25_;
                                    _f_index = -1;
                                    while (TRUE) {
                                          gpointer _tmp26_ = NULL;
                                          ValaField* f;
                                          ValaMemberBinding _tmp27_;
                                          _f_index = _f_index + 1;
                                          if (!(_f_index < _f_size)) {
                                                break;
                                          }
                                          _tmp26_ = vala_list_get (_f_list, _f_index);
                                          f = (ValaField*) _tmp26_;
                                          _tmp27_ = vala_field_get_binding (f);
                                          if (_tmp27_ == VALA_MEMBER_BINDING_INSTANCE) {
                                                ValaDataType* _tmp28_ = NULL;
                                                gchar* _tmp29_ = NULL;
                                                gchar* _tmp30_;
                                                _tmp28_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                                _tmp29_ = vala_dbus_module_get_type_signature (_tmp28_);
                                                _tmp30_ = _tmp29_;
                                                g_string_append (str, _tmp30_);
                                                _g_free0 (_tmp30_);
                                          }
                                          _vala_code_node_unref0 (f);
                                    }
                                    _vala_iterable_unref0 (_f_list);
                              }
                              g_string_append_c (str, ')');
                              _tmp31_ = g_strdup (str->str);
                              _g_free0 (sig);
                              sig = _tmp31_;
                              _g_string_free0 (str);
                        } else {
                              gboolean _tmp32_ = FALSE;
                              if (sig == NULL) {
                                    _tmp32_ = en != NULL;
                              } else {
                                    _tmp32_ = FALSE;
                              }
                              if (_tmp32_) {
                                    gboolean _tmp33_;
                                    _tmp33_ = vala_enum_get_is_flags (en);
                                    if (_tmp33_) {
                                          gchar* _tmp34_;
                                          _tmp34_ = g_strdup ("u");
                                          result = _tmp34_;
                                          _vala_code_node_unref0 (en);
                                          _vala_code_node_unref0 (st);
                                          _vala_code_node_unref0 (ccode);
                                          _g_free0 (sig);
                                          _vala_code_node_unref0 (array_type);
                                          return result;
                                    } else {
                                          gchar* _tmp35_;
                                          _tmp35_ = g_strdup ("i");
                                          result = _tmp35_;
                                          _vala_code_node_unref0 (en);
                                          _vala_code_node_unref0 (st);
                                          _vala_code_node_unref0 (ccode);
                                          _g_free0 (sig);
                                          _vala_code_node_unref0 (array_type);
                                          return result;
                                    }
                              }
                        }
                        _tmp36_ = vala_data_type_get_type_arguments (datatype);
                        type_args = _tmp36_;
                        if (sig != NULL) {
                              gboolean _tmp39_;
                              _tmp39_ = string_contains (sig, "%s");
                              _tmp38_ = _tmp39_;
                        } else {
                              _tmp38_ = FALSE;
                        }
                        if (_tmp38_) {
                              gint _tmp40_;
                              _tmp40_ = vala_collection_get_size ((ValaCollection*) type_args);
                              _tmp37_ = _tmp40_ > 0;
                        } else {
                              _tmp37_ = FALSE;
                        }
                        if (_tmp37_) {
                              gchar* _tmp41_;
                              gchar* element_sig;
                              gchar* _tmp47_ = NULL;
                              _tmp41_ = g_strdup ("");
                              element_sig = _tmp41_;
                              {
                                    ValaList* _tmp42_;
                                    ValaList* _type_arg_list;
                                    gint _tmp43_;
                                    gint _type_arg_size;
                                    gint _type_arg_index;
                                    _tmp42_ = _vala_iterable_ref0 (type_args);
                                    _type_arg_list = _tmp42_;
                                    _tmp43_ = vala_collection_get_size ((ValaCollection*) _type_arg_list);
                                    _type_arg_size = _tmp43_;
                                    _type_arg_index = -1;
                                    while (TRUE) {
                                          gpointer _tmp44_ = NULL;
                                          ValaDataType* type_arg;
                                          gchar* _tmp45_ = NULL;
                                          gchar* s;
                                          _type_arg_index = _type_arg_index + 1;
                                          if (!(_type_arg_index < _type_arg_size)) {
                                                break;
                                          }
                                          _tmp44_ = vala_list_get (_type_arg_list, _type_arg_index);
                                          type_arg = (ValaDataType*) _tmp44_;
                                          _tmp45_ = vala_dbus_module_get_type_signature (type_arg);
                                          s = _tmp45_;
                                          if (s != NULL) {
                                                gchar* _tmp46_;
                                                _tmp46_ = g_strconcat (element_sig, s, NULL);
                                                _g_free0 (element_sig);
                                                element_sig = _tmp46_;
                                          }
                                          _g_free0 (s);
                                          _vala_code_node_unref0 (type_arg);
                                    }
                                    _vala_iterable_unref0 (_type_arg_list);
                              }
                              _tmp47_ = g_strdup_printf (sig, element_sig);
                              _g_free0 (sig);
                              sig = _tmp47_;
                              _g_free0 (element_sig);
                        }
                        result = sig;
                        _vala_iterable_unref0 (type_args);
                        _vala_code_node_unref0 (en);
                        _vala_code_node_unref0 (st);
                        _vala_code_node_unref0 (ccode);
                        _vala_code_node_unref0 (array_type);
                        return result;
                  } else {
                        result = NULL;
                        _vala_code_node_unref0 (array_type);
                        return result;
                  }
            }
      }
      _vala_code_node_unref0 (array_type);
}


static void vala_dbus_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
      ValaDBusModule * self;
      gboolean _tmp0_;
      self = (ValaDBusModule*) base;
      g_return_if_fail (en != NULL);
      VALA_CODE_VISITOR_CLASS (vala_dbus_module_parent_class)->visit_enum ((ValaCodeVisitor*) VALA_GASYNC_MODULE (self), en);
      _tmp0_ = vala_dbus_module_is_string_marshalled_enum ((ValaTypeSymbol*) en);
      if (_tmp0_) {
            ValaCCodeFunction* _tmp1_ = NULL;
            ValaCCodeFunction* _tmp2_;
            ValaCCodeFunction* _tmp3_ = NULL;
            ValaCCodeFunction* _tmp4_;
            vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "string.h", FALSE);
            vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "dbus/dbus-glib.h", FALSE);
            _tmp1_ = vala_dbus_module_generate_enum_from_string_function (self, en);
            _tmp2_ = _tmp1_;
            vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp2_);
            _vala_ccode_node_unref0 (_tmp2_);
            _tmp3_ = vala_dbus_module_generate_enum_to_string_function (self, en);
            _tmp4_ = _tmp3_;
            vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp4_);
            _vala_ccode_node_unref0 (_tmp4_);
      }
}


static gboolean vala_dbus_module_real_generate_enum_declaration (ValaCCodeBaseModule* base, ValaEnum* en, ValaCCodeFile* decl_space) {
      ValaDBusModule * self;
      gboolean result = FALSE;
      gboolean _tmp0_;
      self = (ValaDBusModule*) base;
      g_return_val_if_fail (en != NULL, FALSE);
      g_return_val_if_fail (decl_space != NULL, FALSE);
      _tmp0_ = VALA_CCODE_BASE_MODULE_CLASS (vala_dbus_module_parent_class)->generate_enum_declaration ((ValaCCodeBaseModule*) VALA_GASYNC_MODULE (self), en, decl_space);
      if (_tmp0_) {
            gboolean _tmp1_;
            _tmp1_ = vala_dbus_module_is_string_marshalled_enum ((ValaTypeSymbol*) en);
            if (_tmp1_) {
                  ValaCCodeFunction* _tmp2_ = NULL;
                  ValaCCodeFunction* _tmp3_;
                  ValaCCodeFunction* _tmp4_ = NULL;
                  ValaCCodeFunction* _tmp5_;
                  _tmp2_ = vala_dbus_module_generate_enum_from_string_function_declaration (self, en);
                  _tmp3_ = _tmp2_;
                  vala_ccode_file_add_function_declaration (decl_space, _tmp3_);
                  _vala_ccode_node_unref0 (_tmp3_);
                  _tmp4_ = vala_dbus_module_generate_enum_to_string_function_declaration (self, en);
                  _tmp5_ = _tmp4_;
                  vala_ccode_file_add_function_declaration (decl_space, _tmp5_);
                  _vala_ccode_node_unref0 (_tmp5_);
            }
            result = TRUE;
            return result;
      }
      result = FALSE;
      return result;
}


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


static ValaCCodeExpression* vala_dbus_module_get_array_length (ValaDBusModule* self, ValaCCodeExpression* expr, gint dim) {
      ValaCCodeExpression* result = NULL;
      ValaCCodeExpression* _tmp0_;
      ValaCCodeIdentifier* _tmp1_;
      ValaCCodeIdentifier* id;
      ValaCCodeExpression* _tmp2_;
      ValaCCodeMemberAccess* _tmp3_;
      ValaCCodeMemberAccess* ma;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (expr != NULL, NULL);
      _tmp0_ = expr;
      _tmp1_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_IDENTIFIER (_tmp0_) ? ((ValaCCodeIdentifier*) _tmp0_) : NULL);
      id = _tmp1_;
      _tmp2_ = expr;
      _tmp3_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_MEMBER_ACCESS (_tmp2_) ? ((ValaCCodeMemberAccess*) _tmp2_) : NULL);
      ma = _tmp3_;
      if (id != NULL) {
            const gchar* _tmp4_ = NULL;
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            ValaCCodeIdentifier* _tmp7_ = NULL;
            ValaCCodeExpression* _tmp8_;
            _tmp4_ = vala_ccode_identifier_get_name (id);
            _tmp5_ = g_strdup_printf ("%s_length%d", _tmp4_, dim);
            _tmp6_ = _tmp5_;
            _tmp7_ = vala_ccode_identifier_new (_tmp6_);
            _tmp8_ = (ValaCCodeExpression*) _tmp7_;
            _g_free0 (_tmp6_);
            result = _tmp8_;
            _vala_ccode_node_unref0 (ma);
            _vala_ccode_node_unref0 (id);
            return result;
      } else {
            if (ma != NULL) {
                  gboolean _tmp9_;
                  _tmp9_ = vala_ccode_member_access_get_is_pointer (ma);
                  if (_tmp9_) {
                        ValaCCodeExpression* _tmp10_ = NULL;
                        const gchar* _tmp11_ = NULL;
                        gchar* _tmp12_ = NULL;
                        gchar* _tmp13_;
                        ValaCCodeMemberAccess* _tmp14_ = NULL;
                        ValaCCodeExpression* _tmp15_;
                        _tmp10_ = vala_ccode_member_access_get_inner (ma);
                        _tmp11_ = vala_ccode_member_access_get_member_name (ma);
                        _tmp12_ = g_strdup_printf ("%s_length%d", _tmp11_, dim);
                        _tmp13_ = _tmp12_;
                        _tmp14_ = vala_ccode_member_access_new_pointer (_tmp10_, _tmp13_);
                        _tmp15_ = (ValaCCodeExpression*) _tmp14_;
                        _g_free0 (_tmp13_);
                        result = _tmp15_;
                        _vala_ccode_node_unref0 (ma);
                        _vala_ccode_node_unref0 (id);
                        return result;
                  } else {
                        ValaCCodeExpression* _tmp16_ = NULL;
                        const gchar* _tmp17_ = NULL;
                        gchar* _tmp18_ = NULL;
                        gchar* _tmp19_;
                        ValaCCodeMemberAccess* _tmp20_ = NULL;
                        ValaCCodeExpression* _tmp21_;
                        _tmp16_ = vala_ccode_member_access_get_inner (ma);
                        _tmp17_ = vala_ccode_member_access_get_member_name (ma);
                        _tmp18_ = g_strdup_printf ("%s_length%d", _tmp17_, dim);
                        _tmp19_ = _tmp18_;
                        _tmp20_ = vala_ccode_member_access_new (_tmp16_, _tmp19_, FALSE);
                        _tmp21_ = (ValaCCodeExpression*) _tmp20_;
                        _g_free0 (_tmp19_);
                        result = _tmp21_;
                        _vala_ccode_node_unref0 (ma);
                        _vala_ccode_node_unref0 (id);
                        return result;
                  }
            } else {
                  ValaCCodeIdentifier* _tmp22_ = NULL;
                  ValaCCodeIdentifier* _tmp23_;
                  ValaCCodeFunctionCall* _tmp24_ = NULL;
                  ValaCCodeFunctionCall* _tmp25_;
                  ValaCCodeFunctionCall* len_call;
                  _tmp22_ = vala_ccode_identifier_new ("g_strv_length");
                  _tmp23_ = _tmp22_;
                  _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
                  _tmp25_ = _tmp24_;
                  _vala_ccode_node_unref0 (_tmp23_);
                  len_call = _tmp25_;
                  vala_ccode_function_call_add_argument (len_call, expr);
                  result = (ValaCCodeExpression*) len_call;
                  _vala_ccode_node_unref0 (ma);
                  _vala_ccode_node_unref0 (id);
                  return result;
            }
      }
      _vala_ccode_node_unref0 (ma);
      _vala_ccode_node_unref0 (id);
}


static ValaCCodeExpression* vala_dbus_module_generate_enum_value_from_string (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaEnumValueType* type, ValaCCodeExpression* expr) {
      ValaCCodeExpression* result = NULL;
      ValaTypeSymbol* _tmp0_ = NULL;
      ValaTypeSymbol* _tmp1_;
      ValaEnum* _tmp2_;
      ValaEnum* en;
      gchar* _tmp3_ = NULL;
      gchar* _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* _tmp6_;
      gchar* from_string_name;
      ValaCCodeIdentifier* _tmp7_ = NULL;
      ValaCCodeIdentifier* _tmp8_;
      ValaCCodeFunctionCall* _tmp9_ = NULL;
      ValaCCodeFunctionCall* _tmp10_;
      ValaCCodeFunctionCall* from_string_call;
      ValaCCodeConstant* _tmp11_ = NULL;
      ValaCCodeConstant* _tmp12_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (type != NULL, NULL);
      _tmp0_ = vala_value_type_get_type_symbol ((ValaValueType*) type);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_ENUM (_tmp1_) ? ((ValaEnum*) _tmp1_) : NULL);
      en = _tmp2_;
      _tmp3_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) en, NULL);
      _tmp4_ = _tmp3_;
      _tmp5_ = g_strdup_printf ("%s_from_string", _tmp4_);
      _tmp6_ = _tmp5_;
      _g_free0 (_tmp4_);
      from_string_name = _tmp6_;
      _tmp7_ = vala_ccode_identifier_new (from_string_name);
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp8_);
      _tmp10_ = _tmp9_;
      _vala_ccode_node_unref0 (_tmp8_);
      from_string_call = _tmp10_;
      vala_ccode_function_call_add_argument (from_string_call, expr);
      _tmp11_ = vala_ccode_constant_new ("NULL");
      _tmp12_ = _tmp11_;
      vala_ccode_function_call_add_argument (from_string_call, (ValaCCodeExpression*) _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      result = (ValaCCodeExpression*) from_string_call;
      _g_free0 (from_string_name);
      _vala_code_node_unref0 (en);
      return result;
}


ValaCCodeFunction* vala_dbus_module_generate_enum_from_string_function_declaration (ValaDBusModule* self, ValaEnum* en) {
      ValaCCodeFunction* result = NULL;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gchar* from_string_name;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      ValaCCodeFunction* _tmp6_ = NULL;
      ValaCCodeFunction* _tmp7_;
      ValaCCodeFunction* from_string_func;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (en != NULL, NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) en, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_from_string", _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      from_string_name = _tmp3_;
      _tmp4_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) en, FALSE);
      _tmp5_ = _tmp4_;
      _tmp6_ = vala_ccode_function_new (from_string_name, _tmp5_);
      _tmp7_ = _tmp6_;
      _g_free0 (_tmp5_);
      from_string_func = _tmp7_;
      _tmp8_ = vala_ccode_parameter_new ("str", "const char*");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (from_string_func, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("error", "GError**");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (from_string_func, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      result = from_string_func;
      _g_free0 (from_string_name);
      return result;
}


ValaCCodeFunction* vala_dbus_module_generate_enum_from_string_function (ValaDBusModule* self, ValaEnum* en) {
      ValaCCodeFunction* result = NULL;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gchar* from_string_name;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      ValaCCodeFunction* _tmp6_ = NULL;
      ValaCCodeFunction* _tmp7_;
      ValaCCodeFunction* from_string_func;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeBlock* _tmp12_ = NULL;
      ValaCCodeBlock* from_string_block;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      ValaCCodeDeclaration* _tmp15_ = NULL;
      ValaCCodeDeclaration* _tmp16_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeConstant* _tmp17_ = NULL;
      ValaCCodeConstant* _tmp18_;
      ValaCCodeVariableDeclarator* _tmp19_ = NULL;
      ValaCCodeVariableDeclarator* _tmp20_;
      ValaCCodeStatement* if_else_if;
      ValaCCodeIfStatement* last_statement;
      ValaCCodeBlock* _tmp55_ = NULL;
      ValaCCodeBlock* error_block;
      ValaCCodeIdentifier* _tmp56_ = NULL;
      ValaCCodeIdentifier* _tmp57_;
      ValaCCodeFunctionCall* _tmp58_ = NULL;
      ValaCCodeFunctionCall* _tmp59_;
      ValaCCodeFunctionCall* set_error_call;
      ValaCCodeIdentifier* _tmp60_ = NULL;
      ValaCCodeIdentifier* _tmp61_;
      ValaCCodeIdentifier* _tmp62_ = NULL;
      ValaCCodeIdentifier* _tmp63_;
      ValaCCodeIdentifier* _tmp64_ = NULL;
      ValaCCodeIdentifier* _tmp65_;
      ValaCCodeConstant* _tmp66_ = NULL;
      ValaCCodeConstant* _tmp67_;
      ValaCCodeConstant* _tmp68_ = NULL;
      ValaCCodeConstant* _tmp69_;
      ValaCCodeExpressionStatement* _tmp70_ = NULL;
      ValaCCodeExpressionStatement* _tmp71_;
      ValaCCodeIdentifier* _tmp72_ = NULL;
      ValaCCodeIdentifier* _tmp73_;
      ValaCCodeReturnStatement* _tmp74_ = NULL;
      ValaCCodeReturnStatement* _tmp75_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (en != NULL, NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) en, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_from_string", _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      from_string_name = _tmp3_;
      _tmp4_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) en, FALSE);
      _tmp5_ = _tmp4_;
      _tmp6_ = vala_ccode_function_new (from_string_name, _tmp5_);
      _tmp7_ = _tmp6_;
      _g_free0 (_tmp5_);
      from_string_func = _tmp7_;
      _tmp8_ = vala_ccode_parameter_new ("str", "const char*");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (from_string_func, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("error", "GError**");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (from_string_func, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_block_new ();
      from_string_block = _tmp12_;
      vala_ccode_function_set_block (from_string_func, from_string_block);
      _tmp13_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) en, FALSE);
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_declaration_new (_tmp14_);
      _tmp16_ = _tmp15_;
      _g_free0 (_tmp14_);
      _cdecl_ = _tmp16_;
      _tmp17_ = vala_ccode_constant_new ("0");
      _tmp18_ = _tmp17_;
      _tmp19_ = vala_ccode_variable_declarator_new_zero ("value", (ValaCCodeExpression*) _tmp18_, NULL);
      _tmp20_ = _tmp19_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _vala_ccode_node_unref0 (_tmp18_);
      vala_ccode_block_add_statement (from_string_block, (ValaCCodeNode*) _cdecl_);
      if_else_if = NULL;
      last_statement = NULL;
      {
            ValaList* _tmp21_ = NULL;
            ValaList* _enum_value_list;
            gint _tmp22_;
            gint _enum_value_size;
            gint _enum_value_index;
            _tmp21_ = vala_enum_get_values (en);
            _enum_value_list = _tmp21_;
            _tmp22_ = vala_collection_get_size ((ValaCollection*) _enum_value_list);
            _enum_value_size = _tmp22_;
            _enum_value_index = -1;
            while (TRUE) {
                  gpointer _tmp23_ = NULL;
                  ValaEnumValue* enum_value;
                  ValaCCodeBlock* _tmp24_ = NULL;
                  ValaCCodeBlock* true_block;
                  ValaCCodeIdentifier* _tmp25_ = NULL;
                  ValaCCodeIdentifier* _tmp26_;
                  gchar* _tmp27_ = NULL;
                  gchar* _tmp28_;
                  ValaCCodeIdentifier* _tmp29_ = NULL;
                  ValaCCodeIdentifier* _tmp30_;
                  ValaCCodeAssignment* _tmp31_ = NULL;
                  ValaCCodeAssignment* _tmp32_;
                  ValaCCodeExpressionStatement* _tmp33_ = NULL;
                  ValaCCodeExpressionStatement* _tmp34_;
                  const gchar* _tmp35_ = NULL;
                  gchar* _tmp36_ = NULL;
                  gchar* dbus_value;
                  ValaCCodeIdentifier* _tmp37_ = NULL;
                  ValaCCodeIdentifier* _tmp38_;
                  ValaCCodeFunctionCall* _tmp39_ = NULL;
                  ValaCCodeFunctionCall* _tmp40_;
                  ValaCCodeFunctionCall* string_comparison;
                  ValaCCodeIdentifier* _tmp41_ = NULL;
                  ValaCCodeIdentifier* _tmp42_;
                  gchar* _tmp43_ = NULL;
                  gchar* _tmp44_;
                  ValaCCodeConstant* _tmp45_ = NULL;
                  ValaCCodeConstant* _tmp46_;
                  ValaCCodeConstant* _tmp47_ = NULL;
                  ValaCCodeConstant* _tmp48_;
                  ValaCCodeBinaryExpression* _tmp49_ = NULL;
                  ValaCCodeBinaryExpression* _tmp50_;
                  ValaCCodeIfStatement* _tmp51_ = NULL;
                  ValaCCodeIfStatement* _tmp52_;
                  ValaCCodeIfStatement* stmt;
                  ValaCCodeIfStatement* _tmp54_;
                  _enum_value_index = _enum_value_index + 1;
                  if (!(_enum_value_index < _enum_value_size)) {
                        break;
                  }
                  _tmp23_ = vala_list_get (_enum_value_list, _enum_value_index);
                  enum_value = (ValaEnumValue*) _tmp23_;
                  _tmp24_ = vala_ccode_block_new ();
                  true_block = _tmp24_;
                  vala_ccode_block_set_suppress_newline (true_block, TRUE);
                  _tmp25_ = vala_ccode_identifier_new ("value");
                  _tmp26_ = _tmp25_;
                  _tmp27_ = vala_constant_get_cname ((ValaConstant*) enum_value);
                  _tmp28_ = _tmp27_;
                  _tmp29_ = vala_ccode_identifier_new (_tmp28_);
                  _tmp30_ = _tmp29_;
                  _tmp31_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp26_, (ValaCCodeExpression*) _tmp30_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp32_ = _tmp31_;
                  _tmp33_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp32_);
                  _tmp34_ = _tmp33_;
                  vala_ccode_block_add_statement (true_block, (ValaCCodeNode*) _tmp34_);
                  _vala_ccode_node_unref0 (_tmp34_);
                  _vala_ccode_node_unref0 (_tmp32_);
                  _vala_ccode_node_unref0 (_tmp30_);
                  _g_free0 (_tmp28_);
                  _vala_ccode_node_unref0 (_tmp26_);
                  _tmp35_ = vala_symbol_get_name ((ValaSymbol*) enum_value);
                  _tmp36_ = vala_dbus_module_get_dbus_value (self, enum_value, _tmp35_);
                  dbus_value = _tmp36_;
                  _tmp37_ = vala_ccode_identifier_new ("strcmp");
                  _tmp38_ = _tmp37_;
                  _tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
                  _tmp40_ = _tmp39_;
                  _vala_ccode_node_unref0 (_tmp38_);
                  string_comparison = _tmp40_;
                  _tmp41_ = vala_ccode_identifier_new ("str");
                  _tmp42_ = _tmp41_;
                  vala_ccode_function_call_add_argument (string_comparison, (ValaCCodeExpression*) _tmp42_);
                  _vala_ccode_node_unref0 (_tmp42_);
                  _tmp43_ = g_strdup_printf ("\"%s\"", dbus_value);
                  _tmp44_ = _tmp43_;
                  _tmp45_ = vala_ccode_constant_new (_tmp44_);
                  _tmp46_ = _tmp45_;
                  vala_ccode_function_call_add_argument (string_comparison, (ValaCCodeExpression*) _tmp46_);
                  _vala_ccode_node_unref0 (_tmp46_);
                  _g_free0 (_tmp44_);
                  _tmp47_ = vala_ccode_constant_new ("0");
                  _tmp48_ = _tmp47_;
                  _tmp49_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) string_comparison, (ValaCCodeExpression*) _tmp48_);
                  _tmp50_ = _tmp49_;
                  _tmp51_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp50_, (ValaCCodeStatement*) true_block, NULL);
                  _tmp52_ = _tmp51_;
                  _vala_ccode_node_unref0 (_tmp50_);
                  _vala_ccode_node_unref0 (_tmp48_);
                  stmt = _tmp52_;
                  if (last_statement != NULL) {
                        vala_ccode_if_statement_set_false_statement (last_statement, (ValaCCodeStatement*) stmt);
                  } else {
                        ValaCCodeStatement* _tmp53_;
                        _tmp53_ = _vala_ccode_node_ref0 ((ValaCCodeStatement*) stmt);
                        _vala_ccode_node_unref0 (if_else_if);
                        if_else_if = _tmp53_;
                  }
                  _tmp54_ = _vala_ccode_node_ref0 (stmt);
                  _vala_ccode_node_unref0 (last_statement);
                  last_statement = _tmp54_;
                  _vala_ccode_node_unref0 (stmt);
                  _vala_ccode_node_unref0 (string_comparison);
                  _g_free0 (dbus_value);
                  _vala_ccode_node_unref0 (true_block);
                  _vala_code_node_unref0 (enum_value);
            }
            _vala_iterable_unref0 (_enum_value_list);
      }
      _tmp55_ = vala_ccode_block_new ();
      error_block = _tmp55_;
      vala_ccode_block_set_suppress_newline (error_block, TRUE);
      _tmp56_ = vala_ccode_identifier_new ("g_set_error");
      _tmp57_ = _tmp56_;
      _tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
      _tmp59_ = _tmp58_;
      _vala_ccode_node_unref0 (_tmp57_);
      set_error_call = _tmp59_;
      _tmp60_ = vala_ccode_identifier_new ("error");
      _tmp61_ = _tmp60_;
      vala_ccode_function_call_add_argument (set_error_call, (ValaCCodeExpression*) _tmp61_);
      _vala_ccode_node_unref0 (_tmp61_);
      _tmp62_ = vala_ccode_identifier_new ("DBUS_GERROR");
      _tmp63_ = _tmp62_;
      vala_ccode_function_call_add_argument (set_error_call, (ValaCCodeExpression*) _tmp63_);
      _vala_ccode_node_unref0 (_tmp63_);
      _tmp64_ = vala_ccode_identifier_new ("DBUS_GERROR_INVALID_ARGS");
      _tmp65_ = _tmp64_;
      vala_ccode_function_call_add_argument (set_error_call, (ValaCCodeExpression*) _tmp65_);
      _vala_ccode_node_unref0 (_tmp65_);
      _tmp66_ = vala_ccode_constant_new ("\"%s\"");
      _tmp67_ = _tmp66_;
      vala_ccode_function_call_add_argument (set_error_call, (ValaCCodeExpression*) _tmp67_);
      _vala_ccode_node_unref0 (_tmp67_);
      _tmp68_ = vala_ccode_constant_new ("\"Invalid enumeration value\"");
      _tmp69_ = _tmp68_;
      vala_ccode_function_call_add_argument (set_error_call, (ValaCCodeExpression*) _tmp69_);
      _vala_ccode_node_unref0 (_tmp69_);
      _tmp70_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) set_error_call);
      _tmp71_ = _tmp70_;
      vala_ccode_block_add_statement (error_block, (ValaCCodeNode*) _tmp71_);
      _vala_ccode_node_unref0 (_tmp71_);
      vala_ccode_if_statement_set_false_statement (last_statement, (ValaCCodeStatement*) error_block);
      vala_ccode_block_add_statement (from_string_block, (ValaCCodeNode*) if_else_if);
      _tmp72_ = vala_ccode_identifier_new ("value");
      _tmp73_ = _tmp72_;
      _tmp74_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp73_);
      _tmp75_ = _tmp74_;
      vala_ccode_block_add_statement (from_string_block, (ValaCCodeNode*) _tmp75_);
      _vala_ccode_node_unref0 (_tmp75_);
      _vala_ccode_node_unref0 (_tmp73_);
      result = from_string_func;
      _vala_ccode_node_unref0 (set_error_call);
      _vala_ccode_node_unref0 (error_block);
      _vala_ccode_node_unref0 (last_statement);
      _vala_ccode_node_unref0 (if_else_if);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (from_string_block);
      _g_free0 (from_string_name);
      return result;
}


static ValaCCodeExpression* vala_dbus_module_read_basic (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDBusModuleBasicTypeInfo* basic_type, ValaCCodeExpression* iter_expr, gboolean transfer) {
      ValaCCodeExpression* result = NULL;
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* temp_name;
      ValaCCodeDeclaration* _tmp3_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp4_ = NULL;
      ValaCCodeVariableDeclarator* _tmp5_;
      ValaCCodeIdentifier* _tmp6_ = NULL;
      ValaCCodeIdentifier* _tmp7_;
      ValaCCodeFunctionCall* _tmp8_ = NULL;
      ValaCCodeFunctionCall* _tmp9_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp10_ = NULL;
      ValaCCodeUnaryExpression* _tmp11_;
      ValaCCodeIdentifier* _tmp12_ = NULL;
      ValaCCodeIdentifier* _tmp13_;
      ValaCCodeUnaryExpression* _tmp14_ = NULL;
      ValaCCodeUnaryExpression* _tmp15_;
      ValaCCodeExpressionStatement* _tmp16_ = NULL;
      ValaCCodeExpressionStatement* _tmp17_;
      ValaCCodeIdentifier* _tmp18_ = NULL;
      ValaCCodeIdentifier* temp_result;
      gboolean _tmp19_ = FALSE;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (iter_expr != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      temp_name = _tmp2_;
      _tmp3_ = vala_ccode_declaration_new ((*basic_type).cname);
      _cdecl_ = _tmp3_;
      _tmp4_ = vala_ccode_variable_declarator_new (temp_name, NULL, NULL);
      _tmp5_ = _tmp4_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp6_ = vala_ccode_identifier_new ("dbus_message_iter_get_basic");
      _tmp7_ = _tmp6_;
      _tmp8_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp7_);
      _tmp9_ = _tmp8_;
      _vala_ccode_node_unref0 (_tmp7_);
      iter_call = _tmp9_;
      _tmp10_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp11_ = _tmp10_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_identifier_new (temp_name);
      _tmp13_ = _tmp12_;
      _tmp14_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp13_);
      _tmp15_ = _tmp14_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp15_);
      _vala_ccode_node_unref0 (_tmp15_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp16_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp17_ = _tmp16_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp17_);
      _vala_ccode_node_unref0 (_tmp17_);
      _tmp18_ = vala_ccode_identifier_new (temp_name);
      temp_result = _tmp18_;
      if (!transfer) {
            gboolean _tmp20_ = FALSE;
            gboolean _tmp21_ = FALSE;
            if (g_strcmp0 ((*basic_type).signature, "s") == 0) {
                  _tmp21_ = TRUE;
            } else {
                  _tmp21_ = g_strcmp0 ((*basic_type).signature, "o") == 0;
            }
            if (_tmp21_) {
                  _tmp20_ = TRUE;
            } else {
                  _tmp20_ = g_strcmp0 ((*basic_type).signature, "g") == 0;
            }
            _tmp19_ = _tmp20_;
      } else {
            _tmp19_ = FALSE;
      }
      if (_tmp19_) {
            ValaCCodeIdentifier* _tmp22_ = NULL;
            ValaCCodeIdentifier* _tmp23_;
            ValaCCodeFunctionCall* _tmp24_ = NULL;
            ValaCCodeFunctionCall* _tmp25_;
            ValaCCodeFunctionCall* dup_call;
            _tmp22_ = vala_ccode_identifier_new ("g_strdup");
            _tmp23_ = _tmp22_;
            _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
            _tmp25_ = _tmp24_;
            _vala_ccode_node_unref0 (_tmp23_);
            dup_call = _tmp25_;
            vala_ccode_function_call_add_argument (dup_call, (ValaCCodeExpression*) temp_result);
            result = (ValaCCodeExpression*) dup_call;
            _vala_ccode_node_unref0 (temp_result);
            _vala_ccode_node_unref0 (iter_call);
            _vala_ccode_node_unref0 (_cdecl_);
            _g_free0 (temp_name);
            return result;
      } else {
            result = (ValaCCodeExpression*) temp_result;
            _vala_ccode_node_unref0 (iter_call);
            _vala_ccode_node_unref0 (_cdecl_);
            _g_free0 (temp_name);
            return result;
      }
      _vala_ccode_node_unref0 (temp_result);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (temp_name);
}


static ValaCCodeExpression* vala_dbus_module_read_array (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr) {
      ValaCCodeExpression* result = NULL;
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* temp_name;
      ValaCCodeIdentifier* _tmp3_ = NULL;
      ValaCCodeIdentifier* _tmp4_;
      ValaCCodeFunctionCall* _tmp5_ = NULL;
      ValaCCodeFunctionCall* _tmp6_;
      ValaCCodeFunctionCall* new_call;
      ValaDataType* _tmp7_ = NULL;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      ValaCCodeIdentifier* _tmp10_ = NULL;
      ValaCCodeIdentifier* _tmp11_;
      ValaCCodeConstant* _tmp12_ = NULL;
      ValaCCodeConstant* _tmp13_;
      gchar* _tmp14_ = NULL;
      gchar* _tmp15_;
      ValaCCodeDeclaration* _tmp16_ = NULL;
      ValaCCodeDeclaration* _tmp17_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp18_ = NULL;
      ValaCCodeVariableDeclarator* _tmp19_;
      ValaCCodeDeclaration* _tmp20_ = NULL;
      gchar* _tmp21_;
      gchar* _tmp22_;
      ValaCCodeConstant* _tmp23_ = NULL;
      ValaCCodeConstant* _tmp24_;
      ValaCCodeVariableDeclarator* _tmp25_ = NULL;
      ValaCCodeVariableDeclarator* _tmp26_;
      ValaCCodeDeclaration* _tmp27_ = NULL;
      gchar* _tmp28_;
      gchar* _tmp29_;
      ValaCCodeConstant* _tmp30_ = NULL;
      ValaCCodeConstant* _tmp31_;
      ValaCCodeVariableDeclarator* _tmp32_ = NULL;
      ValaCCodeVariableDeclarator* _tmp33_;
      ValaDataType* _tmp34_ = NULL;
      gboolean _tmp35_;
      ValaCCodeIdentifier* _tmp50_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (array_type != NULL, NULL);
      g_return_val_if_fail (iter_expr != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      temp_name = _tmp2_;
      _tmp3_ = vala_ccode_identifier_new ("g_new");
      _tmp4_ = _tmp3_;
      _tmp5_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp4_);
      _tmp6_ = _tmp5_;
      _vala_ccode_node_unref0 (_tmp4_);
      new_call = _tmp6_;
      _tmp7_ = vala_array_type_get_element_type (array_type);
      _tmp8_ = vala_data_type_get_cname (_tmp7_);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_identifier_new (_tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_function_call_add_argument (new_call, (ValaCCodeExpression*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _g_free0 (_tmp9_);
      _tmp12_ = vala_ccode_constant_new ("5");
      _tmp13_ = _tmp12_;
      vala_ccode_function_call_add_argument (new_call, (ValaCCodeExpression*) _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp14_ = vala_data_type_get_cname ((ValaDataType*) array_type);
      _tmp15_ = _tmp14_;
      _tmp16_ = vala_ccode_declaration_new (_tmp15_);
      _tmp17_ = _tmp16_;
      _g_free0 (_tmp15_);
      _cdecl_ = _tmp17_;
      _tmp18_ = vala_ccode_variable_declarator_new (temp_name, (ValaCCodeExpression*) new_call, NULL);
      _tmp19_ = _tmp18_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp19_);
      _vala_ccode_node_unref0 (_tmp19_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp20_ = vala_ccode_declaration_new ("int");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp20_;
      _tmp21_ = g_strconcat (temp_name, "_length", NULL);
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_ccode_constant_new ("0");
      _tmp24_ = _tmp23_;
      _tmp25_ = vala_ccode_variable_declarator_new (_tmp22_, (ValaCCodeExpression*) _tmp24_, NULL);
      _tmp26_ = _tmp25_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      _vala_ccode_node_unref0 (_tmp24_);
      _g_free0 (_tmp22_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp27_ = vala_ccode_declaration_new ("int");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp27_;
      _tmp28_ = g_strconcat (temp_name, "_size", NULL);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_constant_new ("4");
      _tmp31_ = _tmp30_;
      _tmp32_ = vala_ccode_variable_declarator_new (_tmp29_, (ValaCCodeExpression*) _tmp31_, NULL);
      _tmp33_ = _tmp32_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp33_);
      _vala_ccode_node_unref0 (_tmp33_);
      _vala_ccode_node_unref0 (_tmp31_);
      _g_free0 (_tmp29_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      vala_dbus_module_read_array_dim (self, fragment, array_type, 1, temp_name, iter_expr, expr);
      _tmp34_ = vala_array_type_get_element_type (array_type);
      _tmp35_ = vala_data_type_is_reference_type_or_type_parameter (_tmp34_);
      if (_tmp35_) {
            gchar* _tmp36_;
            gchar* _tmp37_;
            ValaCCodeIdentifier* _tmp38_ = NULL;
            ValaCCodeIdentifier* _tmp39_;
            ValaCCodeIdentifier* length;
            ValaCCodeIdentifier* _tmp40_ = NULL;
            ValaCCodeIdentifier* _tmp41_;
            ValaCCodeElementAccess* _tmp42_ = NULL;
            ValaCCodeElementAccess* _tmp43_;
            ValaCCodeElementAccess* element_access;
            ValaCCodeIdentifier* _tmp44_ = NULL;
            ValaCCodeIdentifier* _tmp45_;
            ValaCCodeAssignment* _tmp46_ = NULL;
            ValaCCodeAssignment* _tmp47_;
            ValaCCodeExpressionStatement* _tmp48_ = NULL;
            ValaCCodeExpressionStatement* _tmp49_;
            _tmp36_ = g_strconcat (temp_name, "_length", NULL);
            _tmp37_ = _tmp36_;
            _tmp38_ = vala_ccode_identifier_new (_tmp37_);
            _tmp39_ = _tmp38_;
            _g_free0 (_tmp37_);
            length = _tmp39_;
            _tmp40_ = vala_ccode_identifier_new (temp_name);
            _tmp41_ = _tmp40_;
            _tmp42_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp41_, (ValaCCodeExpression*) length);
            _tmp43_ = _tmp42_;
            _vala_ccode_node_unref0 (_tmp41_);
            element_access = _tmp43_;
            _tmp44_ = vala_ccode_identifier_new ("NULL");
            _tmp45_ = _tmp44_;
            _tmp46_ = vala_ccode_assignment_new ((ValaCCodeExpression*) element_access, (ValaCCodeExpression*) _tmp45_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp47_ = _tmp46_;
            _tmp48_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp47_);
            _tmp49_ = _tmp48_;
            vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp49_);
            _vala_ccode_node_unref0 (_tmp49_);
            _vala_ccode_node_unref0 (_tmp47_);
            _vala_ccode_node_unref0 (_tmp45_);
            _vala_ccode_node_unref0 (element_access);
            _vala_ccode_node_unref0 (length);
      }
      _tmp50_ = vala_ccode_identifier_new (temp_name);
      result = (ValaCCodeExpression*) _tmp50_;
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (new_call);
      _g_free0 (temp_name);
      return result;
}


static void vala_dbus_module_read_array_dim (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, gint dim, const gchar* temp_name, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* subiter_name;
      ValaCCodeDeclaration* _tmp3_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      ValaCCodeConstant* _tmp6_ = NULL;
      ValaCCodeConstant* _tmp7_;
      ValaCCodeVariableDeclarator* _tmp8_ = NULL;
      ValaCCodeVariableDeclarator* _tmp9_;
      ValaCCodeDeclaration* _tmp10_ = NULL;
      ValaCCodeVariableDeclarator* _tmp11_ = NULL;
      ValaCCodeVariableDeclarator* _tmp12_;
      ValaCCodeIdentifier* _tmp13_ = NULL;
      ValaCCodeIdentifier* _tmp14_;
      ValaCCodeFunctionCall* _tmp15_ = NULL;
      ValaCCodeFunctionCall* _tmp16_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp17_ = NULL;
      ValaCCodeUnaryExpression* _tmp18_;
      ValaCCodeIdentifier* _tmp19_ = NULL;
      ValaCCodeIdentifier* _tmp20_;
      ValaCCodeUnaryExpression* _tmp21_ = NULL;
      ValaCCodeUnaryExpression* _tmp22_;
      ValaCCodeExpressionStatement* _tmp23_ = NULL;
      ValaCCodeExpressionStatement* _tmp24_;
      ValaCCodeIdentifier* _tmp25_ = NULL;
      ValaCCodeIdentifier* _tmp26_;
      ValaCCodeFunctionCall* _tmp27_ = NULL;
      ValaCCodeIdentifier* _tmp28_ = NULL;
      ValaCCodeIdentifier* _tmp29_;
      ValaCCodeUnaryExpression* _tmp30_ = NULL;
      ValaCCodeUnaryExpression* _tmp31_;
      ValaCCodeBlock* _tmp32_ = NULL;
      ValaCCodeBlock* cforblock;
      ValaCCodeFragment* _tmp33_ = NULL;
      ValaCCodeFragment* cforfragment;
      ValaCCodeForStatement* _tmp34_ = NULL;
      ValaCCodeForStatement* cfor;
      gchar* _tmp35_ = NULL;
      gchar* _tmp36_;
      ValaCCodeIdentifier* _tmp37_ = NULL;
      ValaCCodeIdentifier* _tmp38_;
      ValaCCodeUnaryExpression* _tmp39_ = NULL;
      ValaCCodeUnaryExpression* _tmp40_;
      gint _tmp41_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (array_type != NULL);
      g_return_if_fail (temp_name != NULL);
      g_return_if_fail (iter_expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      subiter_name = _tmp2_;
      _tmp3_ = vala_ccode_declaration_new ("int");
      _cdecl_ = _tmp3_;
      _tmp4_ = g_strdup_printf ("%s_length%d", temp_name, dim);
      _tmp5_ = _tmp4_;
      _tmp6_ = vala_ccode_constant_new ("0");
      _tmp7_ = _tmp6_;
      _tmp8_ = vala_ccode_variable_declarator_new (_tmp5_, (ValaCCodeExpression*) _tmp7_, NULL);
      _tmp9_ = _tmp8_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _vala_ccode_node_unref0 (_tmp7_);
      _g_free0 (_tmp5_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp10_ = vala_ccode_declaration_new ("DBusMessageIter");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp10_;
      _tmp11_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp12_ = _tmp11_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp13_ = vala_ccode_identifier_new ("dbus_message_iter_recurse");
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp14_);
      _tmp16_ = _tmp15_;
      _vala_ccode_node_unref0 (_tmp14_);
      iter_call = _tmp16_;
      _tmp17_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp18_ = _tmp17_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      _tmp19_ = vala_ccode_identifier_new (subiter_name);
      _tmp20_ = _tmp19_;
      _tmp21_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp20_);
      _tmp22_ = _tmp21_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp22_);
      _vala_ccode_node_unref0 (_tmp22_);
      _vala_ccode_node_unref0 (_tmp20_);
      _tmp23_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp24_ = _tmp23_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp24_);
      _vala_ccode_node_unref0 (_tmp24_);
      _tmp25_ = vala_ccode_identifier_new ("dbus_message_iter_get_arg_type");
      _tmp26_ = _tmp25_;
      _tmp27_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp26_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp27_;
      _vala_ccode_node_unref0 (_tmp26_);
      _tmp28_ = vala_ccode_identifier_new (subiter_name);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp29_);
      _tmp31_ = _tmp30_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp31_);
      _vala_ccode_node_unref0 (_tmp31_);
      _vala_ccode_node_unref0 (_tmp29_);
      _tmp32_ = vala_ccode_block_new ();
      cforblock = _tmp32_;
      _tmp33_ = vala_ccode_fragment_new ();
      cforfragment = _tmp33_;
      vala_ccode_block_add_statement (cforblock, (ValaCCodeNode*) cforfragment);
      _tmp34_ = vala_ccode_for_statement_new ((ValaCCodeExpression*) iter_call, (ValaCCodeStatement*) cforblock);
      cfor = _tmp34_;
      _tmp35_ = g_strdup_printf ("%s_length%d", temp_name, dim);
      _tmp36_ = _tmp35_;
      _tmp37_ = vala_ccode_identifier_new (_tmp36_);
      _tmp38_ = _tmp37_;
      _tmp39_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp38_);
      _tmp40_ = _tmp39_;
      vala_ccode_for_statement_add_iterator (cfor, (ValaCCodeExpression*) _tmp40_);
      _vala_ccode_node_unref0 (_tmp40_);
      _vala_ccode_node_unref0 (_tmp38_);
      _g_free0 (_tmp36_);
      _tmp41_ = vala_array_type_get_rank (array_type);
      if (dim < _tmp41_) {
            ValaCCodeIdentifier* _tmp42_ = NULL;
            ValaCCodeIdentifier* _tmp43_;
            ValaCCodeIdentifier* _tmp44_ = NULL;
            ValaCCodeIdentifier* _tmp45_;
            ValaCCodeFunctionCall* _tmp46_ = NULL;
            ValaCCodeIdentifier* _tmp47_ = NULL;
            ValaCCodeIdentifier* _tmp48_;
            ValaCCodeUnaryExpression* _tmp49_ = NULL;
            ValaCCodeUnaryExpression* _tmp50_;
            ValaCCodeExpressionStatement* _tmp51_ = NULL;
            ValaCCodeExpressionStatement* _tmp52_;
            _tmp42_ = vala_ccode_identifier_new (subiter_name);
            _tmp43_ = _tmp42_;
            vala_dbus_module_read_array_dim (self, cforfragment, array_type, dim + 1, temp_name, (ValaCCodeExpression*) _tmp43_, expr);
            _vala_ccode_node_unref0 (_tmp43_);
            _tmp44_ = vala_ccode_identifier_new ("dbus_message_iter_next");
            _tmp45_ = _tmp44_;
            _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
            _vala_ccode_node_unref0 (iter_call);
            iter_call = _tmp46_;
            _vala_ccode_node_unref0 (_tmp45_);
            _tmp47_ = vala_ccode_identifier_new (subiter_name);
            _tmp48_ = _tmp47_;
            _tmp49_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp48_);
            _tmp50_ = _tmp49_;
            vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp50_);
            _vala_ccode_node_unref0 (_tmp50_);
            _vala_ccode_node_unref0 (_tmp48_);
            _tmp51_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
            _tmp52_ = _tmp51_;
            vala_ccode_fragment_append (cforfragment, (ValaCCodeNode*) _tmp52_);
            _vala_ccode_node_unref0 (_tmp52_);
      } else {
            gchar* _tmp53_;
            gchar* _tmp54_;
            ValaCCodeIdentifier* _tmp55_ = NULL;
            ValaCCodeIdentifier* _tmp56_;
            gchar* _tmp57_;
            gchar* _tmp58_;
            ValaCCodeIdentifier* _tmp59_ = NULL;
            ValaCCodeIdentifier* _tmp60_;
            ValaCCodeBinaryExpression* _tmp61_ = NULL;
            ValaCCodeBinaryExpression* _tmp62_;
            ValaCCodeBinaryExpression* size_check;
            ValaCCodeBlock* _tmp63_ = NULL;
            ValaCCodeBlock* renew_block;
            ValaCCodeConstant* _tmp64_ = NULL;
            ValaCCodeConstant* _tmp65_;
            gchar* _tmp66_;
            gchar* _tmp67_;
            ValaCCodeIdentifier* _tmp68_ = NULL;
            ValaCCodeIdentifier* _tmp69_;
            ValaCCodeBinaryExpression* _tmp70_ = NULL;
            ValaCCodeBinaryExpression* _tmp71_;
            ValaCCodeBinaryExpression* new_size;
            gchar* _tmp72_;
            gchar* _tmp73_;
            ValaCCodeIdentifier* _tmp74_ = NULL;
            ValaCCodeIdentifier* _tmp75_;
            ValaCCodeAssignment* _tmp76_ = NULL;
            ValaCCodeAssignment* _tmp77_;
            ValaCCodeExpressionStatement* _tmp78_ = NULL;
            ValaCCodeExpressionStatement* _tmp79_;
            ValaCCodeIdentifier* _tmp80_ = NULL;
            ValaCCodeIdentifier* _tmp81_;
            ValaCCodeFunctionCall* _tmp82_ = NULL;
            ValaCCodeFunctionCall* _tmp83_;
            ValaCCodeFunctionCall* renew_call;
            ValaDataType* _tmp84_ = NULL;
            gchar* _tmp85_ = NULL;
            gchar* _tmp86_;
            ValaCCodeIdentifier* _tmp87_ = NULL;
            ValaCCodeIdentifier* _tmp88_;
            ValaCCodeIdentifier* _tmp89_ = NULL;
            ValaCCodeIdentifier* _tmp90_;
            gchar* _tmp91_;
            gchar* _tmp92_;
            ValaCCodeIdentifier* _tmp93_ = NULL;
            ValaCCodeIdentifier* _tmp94_;
            ValaCCodeConstant* _tmp95_ = NULL;
            ValaCCodeConstant* _tmp96_;
            ValaCCodeBinaryExpression* _tmp97_ = NULL;
            ValaCCodeBinaryExpression* _tmp98_;
            ValaCCodeIdentifier* _tmp99_ = NULL;
            ValaCCodeIdentifier* _tmp100_;
            ValaCCodeAssignment* _tmp101_ = NULL;
            ValaCCodeAssignment* _tmp102_;
            ValaCCodeExpressionStatement* _tmp103_ = NULL;
            ValaCCodeExpressionStatement* _tmp104_;
            ValaCCodeExpressionStatement* renew_stmt;
            ValaCCodeIfStatement* _tmp105_ = NULL;
            ValaCCodeIfStatement* cif;
            ValaCCodeIdentifier* _tmp106_ = NULL;
            ValaCCodeIdentifier* _tmp107_;
            gchar* _tmp108_;
            gchar* _tmp109_;
            ValaCCodeIdentifier* _tmp110_ = NULL;
            ValaCCodeIdentifier* _tmp111_;
            ValaCCodeUnaryExpression* _tmp112_ = NULL;
            ValaCCodeUnaryExpression* _tmp113_;
            ValaCCodeElementAccess* _tmp114_ = NULL;
            ValaCCodeElementAccess* _tmp115_;
            ValaCCodeElementAccess* element_access;
            ValaDataType* _tmp116_ = NULL;
            ValaCCodeIdentifier* _tmp117_ = NULL;
            ValaCCodeIdentifier* _tmp118_;
            ValaCCodeExpression* _tmp119_ = NULL;
            ValaCCodeExpression* _tmp120_;
            ValaCCodeExpression* element_expr;
            ValaCCodeAssignment* _tmp121_ = NULL;
            ValaCCodeAssignment* _tmp122_;
            ValaCCodeExpressionStatement* _tmp123_ = NULL;
            ValaCCodeExpressionStatement* _tmp124_;
            _tmp53_ = g_strconcat (temp_name, "_size", NULL);
            _tmp54_ = _tmp53_;
            _tmp55_ = vala_ccode_identifier_new (_tmp54_);
            _tmp56_ = _tmp55_;
            _tmp57_ = g_strconcat (temp_name, "_length", NULL);
            _tmp58_ = _tmp57_;
            _tmp59_ = vala_ccode_identifier_new (_tmp58_);
            _tmp60_ = _tmp59_;
            _tmp61_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) _tmp60_);
            _tmp62_ = _tmp61_;
            _vala_ccode_node_unref0 (_tmp60_);
            _g_free0 (_tmp58_);
            _vala_ccode_node_unref0 (_tmp56_);
            _g_free0 (_tmp54_);
            size_check = _tmp62_;
            _tmp63_ = vala_ccode_block_new ();
            renew_block = _tmp63_;
            _tmp64_ = vala_ccode_constant_new ("2");
            _tmp65_ = _tmp64_;
            _tmp66_ = g_strconcat (temp_name, "_size", NULL);
            _tmp67_ = _tmp66_;
            _tmp68_ = vala_ccode_identifier_new (_tmp67_);
            _tmp69_ = _tmp68_;
            _tmp70_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) _tmp69_);
            _tmp71_ = _tmp70_;
            _vala_ccode_node_unref0 (_tmp69_);
            _g_free0 (_tmp67_);
            _vala_ccode_node_unref0 (_tmp65_);
            new_size = _tmp71_;
            _tmp72_ = g_strconcat (temp_name, "_size", NULL);
            _tmp73_ = _tmp72_;
            _tmp74_ = vala_ccode_identifier_new (_tmp73_);
            _tmp75_ = _tmp74_;
            _tmp76_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp75_, (ValaCCodeExpression*) new_size, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp77_ = _tmp76_;
            _tmp78_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp77_);
            _tmp79_ = _tmp78_;
            vala_ccode_block_add_statement (renew_block, (ValaCCodeNode*) _tmp79_);
            _vala_ccode_node_unref0 (_tmp79_);
            _vala_ccode_node_unref0 (_tmp77_);
            _vala_ccode_node_unref0 (_tmp75_);
            _g_free0 (_tmp73_);
            _tmp80_ = vala_ccode_identifier_new ("g_renew");
            _tmp81_ = _tmp80_;
            _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
            _tmp83_ = _tmp82_;
            _vala_ccode_node_unref0 (_tmp81_);
            renew_call = _tmp83_;
            _tmp84_ = vala_array_type_get_element_type (array_type);
            _tmp85_ = vala_data_type_get_cname (_tmp84_);
            _tmp86_ = _tmp85_;
            _tmp87_ = vala_ccode_identifier_new (_tmp86_);
            _tmp88_ = _tmp87_;
            vala_ccode_function_call_add_argument (renew_call, (ValaCCodeExpression*) _tmp88_);
            _vala_ccode_node_unref0 (_tmp88_);
            _g_free0 (_tmp86_);
            _tmp89_ = vala_ccode_identifier_new (temp_name);
            _tmp90_ = _tmp89_;
            vala_ccode_function_call_add_argument (renew_call, (ValaCCodeExpression*) _tmp90_);
            _vala_ccode_node_unref0 (_tmp90_);
            _tmp91_ = g_strconcat (temp_name, "_size", NULL);
            _tmp92_ = _tmp91_;
            _tmp93_ = vala_ccode_identifier_new (_tmp92_);
            _tmp94_ = _tmp93_;
            _tmp95_ = vala_ccode_constant_new ("1");
            _tmp96_ = _tmp95_;
            _tmp97_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp94_, (ValaCCodeExpression*) _tmp96_);
            _tmp98_ = _tmp97_;
            vala_ccode_function_call_add_argument (renew_call, (ValaCCodeExpression*) _tmp98_);
            _vala_ccode_node_unref0 (_tmp98_);
            _vala_ccode_node_unref0 (_tmp96_);
            _vala_ccode_node_unref0 (_tmp94_);
            _g_free0 (_tmp92_);
            _tmp99_ = vala_ccode_identifier_new (temp_name);
            _tmp100_ = _tmp99_;
            _tmp101_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp100_, (ValaCCodeExpression*) renew_call, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp102_ = _tmp101_;
            _tmp103_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp102_);
            _tmp104_ = _tmp103_;
            _vala_ccode_node_unref0 (_tmp102_);
            _vala_ccode_node_unref0 (_tmp100_);
            renew_stmt = _tmp104_;
            vala_ccode_block_add_statement (renew_block, (ValaCCodeNode*) renew_stmt);
            _tmp105_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) size_check, (ValaCCodeStatement*) renew_block, NULL);
            cif = _tmp105_;
            vala_ccode_fragment_append (cforfragment, (ValaCCodeNode*) cif);
            _tmp106_ = vala_ccode_identifier_new (temp_name);
            _tmp107_ = _tmp106_;
            _tmp108_ = g_strconcat (temp_name, "_length", NULL);
            _tmp109_ = _tmp108_;
            _tmp110_ = vala_ccode_identifier_new (_tmp109_);
            _tmp111_ = _tmp110_;
            _tmp112_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp111_);
            _tmp113_ = _tmp112_;
            _tmp114_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp107_, (ValaCCodeExpression*) _tmp113_);
            _tmp115_ = _tmp114_;
            _vala_ccode_node_unref0 (_tmp113_);
            _vala_ccode_node_unref0 (_tmp111_);
            _g_free0 (_tmp109_);
            _vala_ccode_node_unref0 (_tmp107_);
            element_access = _tmp115_;
            _tmp116_ = vala_array_type_get_element_type (array_type);
            _tmp117_ = vala_ccode_identifier_new (subiter_name);
            _tmp118_ = _tmp117_;
            _tmp119_ = vala_dbus_module_read_expression (self, cforfragment, _tmp116_, (ValaCCodeExpression*) _tmp118_, NULL);
            _tmp120_ = _tmp119_;
            _vala_ccode_node_unref0 (_tmp118_);
            element_expr = _tmp120_;
            _tmp121_ = vala_ccode_assignment_new ((ValaCCodeExpression*) element_access, element_expr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp122_ = _tmp121_;
            _tmp123_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp122_);
            _tmp124_ = _tmp123_;
            vala_ccode_fragment_append (cforfragment, (ValaCCodeNode*) _tmp124_);
            _vala_ccode_node_unref0 (_tmp124_);
            _vala_ccode_node_unref0 (_tmp122_);
            _vala_ccode_node_unref0 (element_expr);
            _vala_ccode_node_unref0 (element_access);
            _vala_ccode_node_unref0 (cif);
            _vala_ccode_node_unref0 (renew_stmt);
            _vala_ccode_node_unref0 (renew_call);
            _vala_ccode_node_unref0 (new_size);
            _vala_ccode_node_unref0 (renew_block);
            _vala_ccode_node_unref0 (size_check);
      }
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cfor);
      if (expr != NULL) {
            ValaCCodeExpression* _tmp125_ = NULL;
            ValaCCodeExpression* _tmp126_;
            gchar* _tmp127_ = NULL;
            gchar* _tmp128_;
            ValaCCodeIdentifier* _tmp129_ = NULL;
            ValaCCodeIdentifier* _tmp130_;
            ValaCCodeAssignment* _tmp131_ = NULL;
            ValaCCodeAssignment* _tmp132_;
            ValaCCodeExpressionStatement* _tmp133_ = NULL;
            ValaCCodeExpressionStatement* _tmp134_;
            _tmp125_ = vala_dbus_module_get_array_length (self, expr, dim);
            _tmp126_ = _tmp125_;
            _tmp127_ = g_strdup_printf ("%s_length%d", temp_name, dim);
            _tmp128_ = _tmp127_;
            _tmp129_ = vala_ccode_identifier_new (_tmp128_);
            _tmp130_ = _tmp129_;
            _tmp131_ = vala_ccode_assignment_new (_tmp126_, (ValaCCodeExpression*) _tmp130_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp132_ = _tmp131_;
            _tmp133_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp132_);
            _tmp134_ = _tmp133_;
            vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp134_);
            _vala_ccode_node_unref0 (_tmp134_);
            _vala_ccode_node_unref0 (_tmp132_);
            _vala_ccode_node_unref0 (_tmp130_);
            _g_free0 (_tmp128_);
            _vala_ccode_node_unref0 (_tmp126_);
      }
      _vala_ccode_node_unref0 (cfor);
      _vala_ccode_node_unref0 (cforfragment);
      _vala_ccode_node_unref0 (cforblock);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (subiter_name);
}


static ValaCCodeExpression* vala_dbus_module_read_struct (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaStruct* st, ValaCCodeExpression* iter_expr) {
      ValaCCodeExpression* result = NULL;
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* temp_name;
      gint _tmp3_;
      gint _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* subiter_name;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      ValaCCodeDeclaration* _tmp8_ = NULL;
      ValaCCodeDeclaration* _tmp9_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp10_ = NULL;
      ValaCCodeVariableDeclarator* _tmp11_;
      ValaCCodeDeclaration* _tmp12_ = NULL;
      ValaCCodeVariableDeclarator* _tmp13_ = NULL;
      ValaCCodeVariableDeclarator* _tmp14_;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      ValaCCodeFunctionCall* _tmp17_ = NULL;
      ValaCCodeFunctionCall* _tmp18_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp19_ = NULL;
      ValaCCodeUnaryExpression* _tmp20_;
      ValaCCodeIdentifier* _tmp21_ = NULL;
      ValaCCodeIdentifier* _tmp22_;
      ValaCCodeUnaryExpression* _tmp23_ = NULL;
      ValaCCodeUnaryExpression* _tmp24_;
      ValaCCodeExpressionStatement* _tmp25_ = NULL;
      ValaCCodeExpressionStatement* _tmp26_;
      ValaCCodeIdentifier* _tmp52_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (st != NULL, NULL);
      g_return_val_if_fail (iter_expr != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      temp_name = _tmp2_;
      _tmp3_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp4_ = _tmp3_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp4_ + 1);
      _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_);
      subiter_name = _tmp5_;
      _tmp6_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
      _tmp7_ = _tmp6_;
      _tmp8_ = vala_ccode_declaration_new (_tmp7_);
      _tmp9_ = _tmp8_;
      _g_free0 (_tmp7_);
      _cdecl_ = _tmp9_;
      _tmp10_ = vala_ccode_variable_declarator_new (temp_name, NULL, NULL);
      _tmp11_ = _tmp10_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp12_ = vala_ccode_declaration_new ("DBusMessageIter");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp12_;
      _tmp13_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp14_ = _tmp13_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp14_);
      _vala_ccode_node_unref0 (_tmp14_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp15_ = vala_ccode_identifier_new ("dbus_message_iter_recurse");
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
      _tmp18_ = _tmp17_;
      _vala_ccode_node_unref0 (_tmp16_);
      iter_call = _tmp18_;
      _tmp19_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp20_ = _tmp19_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _tmp21_ = vala_ccode_identifier_new (subiter_name);
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp22_);
      _tmp24_ = _tmp23_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp24_);
      _vala_ccode_node_unref0 (_tmp24_);
      _vala_ccode_node_unref0 (_tmp22_);
      _tmp25_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp26_ = _tmp25_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      {
            ValaList* _tmp27_ = NULL;
            ValaList* _f_list;
            gint _tmp28_;
            gint _f_size;
            gint _f_index;
            _tmp27_ = vala_struct_get_fields (st);
            _f_list = _tmp27_;
            _tmp28_ = vala_collection_get_size ((ValaCollection*) _f_list);
            _f_size = _tmp28_;
            _f_index = -1;
            while (TRUE) {
                  gpointer _tmp29_ = NULL;
                  ValaField* f;
                  ValaMemberBinding _tmp30_;
                  ValaDataType* _tmp31_ = NULL;
                  ValaCCodeIdentifier* _tmp32_ = NULL;
                  ValaCCodeIdentifier* _tmp33_;
                  ValaCCodeIdentifier* _tmp34_ = NULL;
                  ValaCCodeIdentifier* _tmp35_;
                  gchar* _tmp36_ = NULL;
                  gchar* _tmp37_;
                  ValaCCodeMemberAccess* _tmp38_ = NULL;
                  ValaCCodeMemberAccess* _tmp39_;
                  ValaCCodeExpression* _tmp40_ = NULL;
                  ValaCCodeExpression* _tmp41_;
                  ValaCCodeExpression* field_expr;
                  ValaCCodeIdentifier* _tmp42_ = NULL;
                  ValaCCodeIdentifier* _tmp43_;
                  gchar* _tmp44_ = NULL;
                  gchar* _tmp45_;
                  ValaCCodeMemberAccess* _tmp46_ = NULL;
                  ValaCCodeMemberAccess* _tmp47_;
                  ValaCCodeAssignment* _tmp48_ = NULL;
                  ValaCCodeAssignment* _tmp49_;
                  ValaCCodeExpressionStatement* _tmp50_ = NULL;
                  ValaCCodeExpressionStatement* _tmp51_;
                  _f_index = _f_index + 1;
                  if (!(_f_index < _f_size)) {
                        break;
                  }
                  _tmp29_ = vala_list_get (_f_list, _f_index);
                  f = (ValaField*) _tmp29_;
                  _tmp30_ = vala_field_get_binding (f);
                  if (_tmp30_ != VALA_MEMBER_BINDING_INSTANCE) {
                        _vala_code_node_unref0 (f);
                        continue;
                  }
                  _tmp31_ = vala_variable_get_variable_type ((ValaVariable*) f);
                  _tmp32_ = vala_ccode_identifier_new (subiter_name);
                  _tmp33_ = _tmp32_;
                  _tmp34_ = vala_ccode_identifier_new (temp_name);
                  _tmp35_ = _tmp34_;
                  _tmp36_ = vala_field_get_cname (f);
                  _tmp37_ = _tmp36_;
                  _tmp38_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp35_, _tmp37_, FALSE);
                  _tmp39_ = _tmp38_;
                  _tmp40_ = vala_dbus_module_read_expression (self, fragment, _tmp31_, (ValaCCodeExpression*) _tmp33_, (ValaCCodeExpression*) _tmp39_);
                  _tmp41_ = _tmp40_;
                  _vala_ccode_node_unref0 (_tmp39_);
                  _g_free0 (_tmp37_);
                  _vala_ccode_node_unref0 (_tmp35_);
                  _vala_ccode_node_unref0 (_tmp33_);
                  field_expr = _tmp41_;
                  _tmp42_ = vala_ccode_identifier_new (temp_name);
                  _tmp43_ = _tmp42_;
                  _tmp44_ = vala_field_get_cname (f);
                  _tmp45_ = _tmp44_;
                  _tmp46_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp43_, _tmp45_, FALSE);
                  _tmp47_ = _tmp46_;
                  _tmp48_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp47_, field_expr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp49_ = _tmp48_;
                  _tmp50_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp49_);
                  _tmp51_ = _tmp50_;
                  vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp51_);
                  _vala_ccode_node_unref0 (_tmp51_);
                  _vala_ccode_node_unref0 (_tmp49_);
                  _vala_ccode_node_unref0 (_tmp47_);
                  _g_free0 (_tmp45_);
                  _vala_ccode_node_unref0 (_tmp43_);
                  _vala_ccode_node_unref0 (field_expr);
                  _vala_code_node_unref0 (f);
            }
            _vala_iterable_unref0 (_f_list);
      }
      _tmp52_ = vala_ccode_identifier_new (temp_name);
      result = (ValaCCodeExpression*) _tmp52_;
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (subiter_name);
      _g_free0 (temp_name);
      return result;
}


static ValaCCodeExpression* vala_dbus_module_read_value (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaCCodeExpression* iter_expr) {
      ValaCCodeExpression* result = NULL;
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* temp_name;
      gint _tmp3_;
      gint _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* subiter_name;
      ValaCCodeInitializerList* _tmp6_ = NULL;
      ValaCCodeInitializerList* cvalinit;
      ValaCCodeConstant* _tmp7_ = NULL;
      ValaCCodeConstant* _tmp8_;
      ValaCCodeDeclaration* _tmp9_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp10_ = NULL;
      ValaCCodeVariableDeclarator* _tmp11_;
      ValaCCodeDeclaration* _tmp12_ = NULL;
      ValaCCodeVariableDeclarator* _tmp13_ = NULL;
      ValaCCodeVariableDeclarator* _tmp14_;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      ValaCCodeFunctionCall* _tmp17_ = NULL;
      ValaCCodeFunctionCall* _tmp18_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp19_ = NULL;
      ValaCCodeUnaryExpression* _tmp20_;
      ValaCCodeIdentifier* _tmp21_ = NULL;
      ValaCCodeIdentifier* _tmp22_;
      ValaCCodeUnaryExpression* _tmp23_ = NULL;
      ValaCCodeUnaryExpression* _tmp24_;
      ValaCCodeExpressionStatement* _tmp25_ = NULL;
      ValaCCodeExpressionStatement* _tmp26_;
      ValaCCodeIfStatement* clastif;
      ValaCCodeIdentifier* _tmp71_ = NULL;
      ValaCCodeIdentifier* _tmp72_;
      ValaCCodeFunctionCall* _tmp73_ = NULL;
      ValaCCodeFunctionCall* _tmp74_;
      ValaCCodeFunctionCall* type_call;
      ValaCCodeIdentifier* _tmp75_ = NULL;
      ValaCCodeIdentifier* _tmp76_;
      ValaCCodeUnaryExpression* _tmp77_ = NULL;
      ValaCCodeUnaryExpression* _tmp78_;
      ValaCCodeIdentifier* _tmp79_ = NULL;
      ValaCCodeIdentifier* _tmp80_;
      ValaCCodeBinaryExpression* _tmp81_ = NULL;
      ValaCCodeBinaryExpression* _tmp82_;
      ValaCCodeBinaryExpression* type_check;
      ValaCCodeIdentifier* _tmp83_ = NULL;
      ValaCCodeIdentifier* _tmp84_;
      ValaCCodeFunctionCall* _tmp85_ = NULL;
      ValaCCodeIdentifier* _tmp86_ = NULL;
      ValaCCodeIdentifier* _tmp87_;
      ValaCCodeUnaryExpression* _tmp88_ = NULL;
      ValaCCodeUnaryExpression* _tmp89_;
      ValaCCodeIdentifier* _tmp90_ = NULL;
      ValaCCodeIdentifier* _tmp91_;
      ValaCCodeBinaryExpression* _tmp92_ = NULL;
      ValaCCodeBinaryExpression* _tmp93_;
      ValaCCodeBinaryExpression* element_type_check;
      ValaCCodeBinaryExpression* _tmp94_ = NULL;
      ValaCCodeBlock* _tmp95_ = NULL;
      ValaCCodeBlock* type_block;
      ValaCCodeFragment* _tmp96_ = NULL;
      ValaCCodeFragment* type_fragment;
      ValaArrayType* _tmp97_ = NULL;
      ValaArrayType* _tmp98_;
      ValaCCodeIdentifier* _tmp99_ = NULL;
      ValaCCodeIdentifier* _tmp100_;
      ValaCCodeExpression* _tmp101_ = NULL;
      ValaCCodeExpression* _tmp102_;
      ValaCCodeExpression* _result_;
      ValaCCodeIdentifier* _tmp103_ = NULL;
      ValaCCodeIdentifier* _tmp104_;
      ValaCCodeFunctionCall* _tmp105_ = NULL;
      ValaCCodeFunctionCall* _tmp106_;
      ValaCCodeFunctionCall* value_init;
      ValaCCodeIdentifier* _tmp107_ = NULL;
      ValaCCodeIdentifier* _tmp108_;
      ValaCCodeUnaryExpression* _tmp109_ = NULL;
      ValaCCodeUnaryExpression* _tmp110_;
      ValaCCodeIdentifier* _tmp111_ = NULL;
      ValaCCodeIdentifier* _tmp112_;
      ValaCCodeExpressionStatement* _tmp113_ = NULL;
      ValaCCodeExpressionStatement* _tmp114_;
      ValaCCodeIdentifier* _tmp115_ = NULL;
      ValaCCodeIdentifier* _tmp116_;
      ValaCCodeFunctionCall* _tmp117_ = NULL;
      ValaCCodeFunctionCall* _tmp118_;
      ValaCCodeFunctionCall* value_set;
      ValaCCodeIdentifier* _tmp119_ = NULL;
      ValaCCodeIdentifier* _tmp120_;
      ValaCCodeUnaryExpression* _tmp121_ = NULL;
      ValaCCodeUnaryExpression* _tmp122_;
      ValaCCodeExpressionStatement* _tmp123_ = NULL;
      ValaCCodeExpressionStatement* _tmp124_;
      ValaCCodeIfStatement* _tmp125_ = NULL;
      ValaCCodeIfStatement* cif;
      ValaCCodeIfStatement* _tmp126_;
      ValaCCodeIdentifier* _tmp127_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (iter_expr != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      temp_name = _tmp2_;
      _tmp3_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp4_ = _tmp3_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp4_ + 1);
      _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_);
      subiter_name = _tmp5_;
      _tmp6_ = vala_ccode_initializer_list_new ();
      cvalinit = _tmp6_;
      _tmp7_ = vala_ccode_constant_new ("0");
      _tmp8_ = _tmp7_;
      vala_ccode_initializer_list_append (cvalinit, (ValaCCodeExpression*) _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      _tmp9_ = vala_ccode_declaration_new ("GValue");
      _cdecl_ = _tmp9_;
      _tmp10_ = vala_ccode_variable_declarator_new_zero (temp_name, (ValaCCodeExpression*) cvalinit, NULL);
      _tmp11_ = _tmp10_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp12_ = vala_ccode_declaration_new ("DBusMessageIter");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp12_;
      _tmp13_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp14_ = _tmp13_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp14_);
      _vala_ccode_node_unref0 (_tmp14_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp15_ = vala_ccode_identifier_new ("dbus_message_iter_recurse");
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
      _tmp18_ = _tmp17_;
      _vala_ccode_node_unref0 (_tmp16_);
      iter_call = _tmp18_;
      _tmp19_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp20_ = _tmp19_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _tmp21_ = vala_ccode_identifier_new (subiter_name);
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp22_);
      _tmp24_ = _tmp23_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp24_);
      _vala_ccode_node_unref0 (_tmp24_);
      _vala_ccode_node_unref0 (_tmp22_);
      _tmp25_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp26_ = _tmp25_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      clastif = NULL;
      {
            ValaDBusModuleBasicTypeInfo* basic_type_collection;
            int basic_type_collection_length1;
            int basic_type_it;
            basic_type_collection = VALA_DBUS_MODULE_basic_types;
            basic_type_collection_length1 = G_N_ELEMENTS (VALA_DBUS_MODULE_basic_types);
            for (basic_type_it = 0; basic_type_it < G_N_ELEMENTS (VALA_DBUS_MODULE_basic_types); basic_type_it = basic_type_it + 1) {
                  ValaDBusModuleBasicTypeInfo basic_type;
                  basic_type = basic_type_collection[basic_type_it];
                  {
                        ValaCCodeIdentifier* _tmp27_ = NULL;
                        ValaCCodeIdentifier* _tmp28_;
                        ValaCCodeFunctionCall* _tmp29_ = NULL;
                        ValaCCodeFunctionCall* _tmp30_;
                        ValaCCodeFunctionCall* type_call;
                        ValaCCodeIdentifier* _tmp31_ = NULL;
                        ValaCCodeIdentifier* _tmp32_;
                        ValaCCodeUnaryExpression* _tmp33_ = NULL;
                        ValaCCodeUnaryExpression* _tmp34_;
                        gchar* _tmp35_;
                        gchar* _tmp36_;
                        ValaCCodeIdentifier* _tmp37_ = NULL;
                        ValaCCodeIdentifier* _tmp38_;
                        ValaCCodeBinaryExpression* _tmp39_ = NULL;
                        ValaCCodeBinaryExpression* _tmp40_;
                        ValaCCodeBinaryExpression* type_check;
                        ValaCCodeBlock* _tmp41_ = NULL;
                        ValaCCodeBlock* type_block;
                        ValaCCodeFragment* _tmp42_ = NULL;
                        ValaCCodeFragment* type_fragment;
                        ValaCCodeIdentifier* _tmp43_ = NULL;
                        ValaCCodeIdentifier* _tmp44_;
                        ValaCCodeExpression* _tmp45_ = NULL;
                        ValaCCodeExpression* _tmp46_;
                        ValaCCodeExpression* _result_;
                        ValaCCodeIdentifier* _tmp47_ = NULL;
                        ValaCCodeIdentifier* _tmp48_;
                        ValaCCodeFunctionCall* _tmp49_ = NULL;
                        ValaCCodeFunctionCall* _tmp50_;
                        ValaCCodeFunctionCall* value_init;
                        ValaCCodeIdentifier* _tmp51_ = NULL;
                        ValaCCodeIdentifier* _tmp52_;
                        ValaCCodeUnaryExpression* _tmp53_ = NULL;
                        ValaCCodeUnaryExpression* _tmp54_;
                        ValaCCodeIdentifier* _tmp55_ = NULL;
                        ValaCCodeIdentifier* _tmp56_;
                        ValaCCodeExpressionStatement* _tmp57_ = NULL;
                        ValaCCodeExpressionStatement* _tmp58_;
                        ValaCCodeIdentifier* _tmp59_ = NULL;
                        ValaCCodeIdentifier* _tmp60_;
                        ValaCCodeFunctionCall* _tmp61_ = NULL;
                        ValaCCodeFunctionCall* _tmp62_;
                        ValaCCodeFunctionCall* value_set;
                        ValaCCodeIdentifier* _tmp63_ = NULL;
                        ValaCCodeIdentifier* _tmp64_;
                        ValaCCodeUnaryExpression* _tmp65_ = NULL;
                        ValaCCodeUnaryExpression* _tmp66_;
                        ValaCCodeExpressionStatement* _tmp67_ = NULL;
                        ValaCCodeExpressionStatement* _tmp68_;
                        ValaCCodeIfStatement* _tmp69_ = NULL;
                        ValaCCodeIfStatement* cif;
                        ValaCCodeIfStatement* _tmp70_;
                        _tmp27_ = vala_ccode_identifier_new ("dbus_message_iter_get_arg_type");
                        _tmp28_ = _tmp27_;
                        _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_);
                        _tmp30_ = _tmp29_;
                        _vala_ccode_node_unref0 (_tmp28_);
                        type_call = _tmp30_;
                        _tmp31_ = vala_ccode_identifier_new (subiter_name);
                        _tmp32_ = _tmp31_;
                        _tmp33_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp32_);
                        _tmp34_ = _tmp33_;
                        vala_ccode_function_call_add_argument (type_call, (ValaCCodeExpression*) _tmp34_);
                        _vala_ccode_node_unref0 (_tmp34_);
                        _vala_ccode_node_unref0 (_tmp32_);
                        _tmp35_ = g_strconcat ("DBUS_TYPE_", basic_type.type_name, NULL);
                        _tmp36_ = _tmp35_;
                        _tmp37_ = vala_ccode_identifier_new (_tmp36_);
                        _tmp38_ = _tmp37_;
                        _tmp39_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) type_call, (ValaCCodeExpression*) _tmp38_);
                        _tmp40_ = _tmp39_;
                        _vala_ccode_node_unref0 (_tmp38_);
                        _g_free0 (_tmp36_);
                        type_check = _tmp40_;
                        _tmp41_ = vala_ccode_block_new ();
                        type_block = _tmp41_;
                        _tmp42_ = vala_ccode_fragment_new ();
                        type_fragment = _tmp42_;
                        vala_ccode_block_add_statement (type_block, (ValaCCodeNode*) type_fragment);
                        _tmp43_ = vala_ccode_identifier_new (subiter_name);
                        _tmp44_ = _tmp43_;
                        _tmp45_ = vala_dbus_module_read_basic (self, type_fragment, &basic_type, (ValaCCodeExpression*) _tmp44_, FALSE);
                        _tmp46_ = _tmp45_;
                        _vala_ccode_node_unref0 (_tmp44_);
                        _result_ = _tmp46_;
                        _tmp47_ = vala_ccode_identifier_new ("g_value_init");
                        _tmp48_ = _tmp47_;
                        _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
                        _tmp50_ = _tmp49_;
                        _vala_ccode_node_unref0 (_tmp48_);
                        value_init = _tmp50_;
                        _tmp51_ = vala_ccode_identifier_new (temp_name);
                        _tmp52_ = _tmp51_;
                        _tmp53_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp52_);
                        _tmp54_ = _tmp53_;
                        vala_ccode_function_call_add_argument (value_init, (ValaCCodeExpression*) _tmp54_);
                        _vala_ccode_node_unref0 (_tmp54_);
                        _vala_ccode_node_unref0 (_tmp52_);
                        _tmp55_ = vala_ccode_identifier_new (basic_type.gtype);
                        _tmp56_ = _tmp55_;
                        vala_ccode_function_call_add_argument (value_init, (ValaCCodeExpression*) _tmp56_);
                        _vala_ccode_node_unref0 (_tmp56_);
                        _tmp57_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_init);
                        _tmp58_ = _tmp57_;
                        vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp58_);
                        _vala_ccode_node_unref0 (_tmp58_);
                        _tmp59_ = vala_ccode_identifier_new (basic_type.set_value_function);
                        _tmp60_ = _tmp59_;
                        _tmp61_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp60_);
                        _tmp62_ = _tmp61_;
                        _vala_ccode_node_unref0 (_tmp60_);
                        value_set = _tmp62_;
                        _tmp63_ = vala_ccode_identifier_new (temp_name);
                        _tmp64_ = _tmp63_;
                        _tmp65_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp64_);
                        _tmp66_ = _tmp65_;
                        vala_ccode_function_call_add_argument (value_set, (ValaCCodeExpression*) _tmp66_);
                        _vala_ccode_node_unref0 (_tmp66_);
                        _vala_ccode_node_unref0 (_tmp64_);
                        vala_ccode_function_call_add_argument (value_set, _result_);
                        _tmp67_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_set);
                        _tmp68_ = _tmp67_;
                        vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp68_);
                        _vala_ccode_node_unref0 (_tmp68_);
                        _tmp69_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) type_check, (ValaCCodeStatement*) type_block, NULL);
                        cif = _tmp69_;
                        if (clastif == NULL) {
                              vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cif);
                        } else {
                              vala_ccode_if_statement_set_false_statement (clastif, (ValaCCodeStatement*) cif);
                        }
                        _tmp70_ = _vala_ccode_node_ref0 (cif);
                        _vala_ccode_node_unref0 (clastif);
                        clastif = _tmp70_;
                        _vala_ccode_node_unref0 (cif);
                        _vala_ccode_node_unref0 (value_set);
                        _vala_ccode_node_unref0 (value_init);
                        _vala_ccode_node_unref0 (_result_);
                        _vala_ccode_node_unref0 (type_fragment);
                        _vala_ccode_node_unref0 (type_block);
                        _vala_ccode_node_unref0 (type_check);
                        _vala_ccode_node_unref0 (type_call);
                  }
            }
      }
      _tmp71_ = vala_ccode_identifier_new ("dbus_message_iter_get_arg_type");
      _tmp72_ = _tmp71_;
      _tmp73_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp72_);
      _tmp74_ = _tmp73_;
      _vala_ccode_node_unref0 (_tmp72_);
      type_call = _tmp74_;
      _tmp75_ = vala_ccode_identifier_new (subiter_name);
      _tmp76_ = _tmp75_;
      _tmp77_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp76_);
      _tmp78_ = _tmp77_;
      vala_ccode_function_call_add_argument (type_call, (ValaCCodeExpression*) _tmp78_);
      _vala_ccode_node_unref0 (_tmp78_);
      _vala_ccode_node_unref0 (_tmp76_);
      _tmp79_ = vala_ccode_identifier_new ("DBUS_TYPE_ARRAY");
      _tmp80_ = _tmp79_;
      _tmp81_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) type_call, (ValaCCodeExpression*) _tmp80_);
      _tmp82_ = _tmp81_;
      _vala_ccode_node_unref0 (_tmp80_);
      type_check = _tmp82_;
      _tmp83_ = vala_ccode_identifier_new ("dbus_message_iter_get_element_type");
      _tmp84_ = _tmp83_;
      _tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
      _vala_ccode_node_unref0 (type_call);
      type_call = _tmp85_;
      _vala_ccode_node_unref0 (_tmp84_);
      _tmp86_ = vala_ccode_identifier_new (subiter_name);
      _tmp87_ = _tmp86_;
      _tmp88_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp87_);
      _tmp89_ = _tmp88_;
      vala_ccode_function_call_add_argument (type_call, (ValaCCodeExpression*) _tmp89_);
      _vala_ccode_node_unref0 (_tmp89_);
      _vala_ccode_node_unref0 (_tmp87_);
      _tmp90_ = vala_ccode_identifier_new ("DBUS_TYPE_STRING");
      _tmp91_ = _tmp90_;
      _tmp92_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) type_call, (ValaCCodeExpression*) _tmp91_);
      _tmp93_ = _tmp92_;
      _vala_ccode_node_unref0 (_tmp91_);
      element_type_check = _tmp93_;
      _tmp94_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_AND, (ValaCCodeExpression*) type_check, (ValaCCodeExpression*) element_type_check);
      _vala_ccode_node_unref0 (type_check);
      type_check = _tmp94_;
      _tmp95_ = vala_ccode_block_new ();
      type_block = _tmp95_;
      _tmp96_ = vala_ccode_fragment_new ();
      type_fragment = _tmp96_;
      vala_ccode_block_add_statement (type_block, (ValaCCodeNode*) type_fragment);
      _tmp97_ = vala_array_type_new (((ValaCCodeBaseModule*) self)->string_type, 1, NULL);
      _tmp98_ = _tmp97_;
      _tmp99_ = vala_ccode_identifier_new (subiter_name);
      _tmp100_ = _tmp99_;
      _tmp101_ = vala_dbus_module_read_array (self, type_fragment, _tmp98_, (ValaCCodeExpression*) _tmp100_, NULL);
      _tmp102_ = _tmp101_;
      _vala_ccode_node_unref0 (_tmp100_);
      _vala_code_node_unref0 (_tmp98_);
      _result_ = _tmp102_;
      _tmp103_ = vala_ccode_identifier_new ("g_value_init");
      _tmp104_ = _tmp103_;
      _tmp105_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp104_);
      _tmp106_ = _tmp105_;
      _vala_ccode_node_unref0 (_tmp104_);
      value_init = _tmp106_;
      _tmp107_ = vala_ccode_identifier_new (temp_name);
      _tmp108_ = _tmp107_;
      _tmp109_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp108_);
      _tmp110_ = _tmp109_;
      vala_ccode_function_call_add_argument (value_init, (ValaCCodeExpression*) _tmp110_);
      _vala_ccode_node_unref0 (_tmp110_);
      _vala_ccode_node_unref0 (_tmp108_);
      _tmp111_ = vala_ccode_identifier_new ("G_TYPE_STRV");
      _tmp112_ = _tmp111_;
      vala_ccode_function_call_add_argument (value_init, (ValaCCodeExpression*) _tmp112_);
      _vala_ccode_node_unref0 (_tmp112_);
      _tmp113_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_init);
      _tmp114_ = _tmp113_;
      vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp114_);
      _vala_ccode_node_unref0 (_tmp114_);
      _tmp115_ = vala_ccode_identifier_new ("g_value_take_boxed");
      _tmp116_ = _tmp115_;
      _tmp117_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp116_);
      _tmp118_ = _tmp117_;
      _vala_ccode_node_unref0 (_tmp116_);
      value_set = _tmp118_;
      _tmp119_ = vala_ccode_identifier_new (temp_name);
      _tmp120_ = _tmp119_;
      _tmp121_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp120_);
      _tmp122_ = _tmp121_;
      vala_ccode_function_call_add_argument (value_set, (ValaCCodeExpression*) _tmp122_);
      _vala_ccode_node_unref0 (_tmp122_);
      _vala_ccode_node_unref0 (_tmp120_);
      vala_ccode_function_call_add_argument (value_set, _result_);
      _tmp123_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) value_set);
      _tmp124_ = _tmp123_;
      vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp124_);
      _vala_ccode_node_unref0 (_tmp124_);
      _tmp125_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) type_check, (ValaCCodeStatement*) type_block, NULL);
      cif = _tmp125_;
      if (clastif == NULL) {
            vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cif);
      } else {
            vala_ccode_if_statement_set_false_statement (clastif, (ValaCCodeStatement*) cif);
      }
      _tmp126_ = _vala_ccode_node_ref0 (cif);
      _vala_ccode_node_unref0 (clastif);
      clastif = _tmp126_;
      _tmp127_ = vala_ccode_identifier_new (temp_name);
      result = (ValaCCodeExpression*) _tmp127_;
      _vala_ccode_node_unref0 (cif);
      _vala_ccode_node_unref0 (value_set);
      _vala_ccode_node_unref0 (value_init);
      _vala_ccode_node_unref0 (_result_);
      _vala_ccode_node_unref0 (type_fragment);
      _vala_ccode_node_unref0 (type_block);
      _vala_ccode_node_unref0 (element_type_check);
      _vala_ccode_node_unref0 (type_check);
      _vala_ccode_node_unref0 (type_call);
      _vala_ccode_node_unref0 (clastif);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (cvalinit);
      _g_free0 (subiter_name);
      _g_free0 (temp_name);
      return result;
}


static ValaCCodeExpression* vala_dbus_module_read_hash_table (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaObjectType* type, ValaCCodeExpression* iter_expr) {
      ValaCCodeExpression* result = NULL;
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* temp_name;
      gint _tmp3_;
      gint _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* subiter_name;
      gint _tmp6_;
      gint _tmp7_;
      gchar* _tmp8_ = NULL;
      gchar* entryiter_name;
      ValaList* _tmp9_ = NULL;
      ValaList* type_args;
      gint _tmp10_;
      gpointer _tmp11_ = NULL;
      ValaDataType* key_type;
      gpointer _tmp12_ = NULL;
      ValaDataType* value_type;
      ValaCCodeDeclaration* _tmp13_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp14_ = NULL;
      ValaCCodeVariableDeclarator* _tmp15_;
      ValaCCodeDeclaration* _tmp16_ = NULL;
      ValaCCodeVariableDeclarator* _tmp17_ = NULL;
      ValaCCodeVariableDeclarator* _tmp18_;
      ValaCCodeDeclaration* _tmp19_ = NULL;
      ValaCCodeVariableDeclarator* _tmp20_ = NULL;
      ValaCCodeVariableDeclarator* _tmp21_;
      ValaCCodeIdentifier* _tmp22_ = NULL;
      ValaCCodeIdentifier* _tmp23_;
      ValaCCodeFunctionCall* _tmp24_ = NULL;
      ValaCCodeFunctionCall* _tmp25_;
      ValaCCodeFunctionCall* hash_table_new;
      ValaTypeSymbol* _tmp26_ = NULL;
      ValaTypeSymbol* _tmp27_ = NULL;
      ValaTypeSymbol* _tmp36_ = NULL;
      ValaTypeSymbol* _tmp37_ = NULL;
      ValaTypeSymbol* _tmp42_ = NULL;
      ValaTypeSymbol* _tmp43_ = NULL;
      ValaCCodeIdentifier* _tmp48_ = NULL;
      ValaCCodeIdentifier* _tmp49_;
      ValaCCodeAssignment* _tmp50_ = NULL;
      ValaCCodeAssignment* _tmp51_;
      ValaCCodeExpressionStatement* _tmp52_ = NULL;
      ValaCCodeExpressionStatement* _tmp53_;
      ValaCCodeIdentifier* _tmp54_ = NULL;
      ValaCCodeIdentifier* _tmp55_;
      ValaCCodeFunctionCall* _tmp56_ = NULL;
      ValaCCodeFunctionCall* _tmp57_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp58_ = NULL;
      ValaCCodeUnaryExpression* _tmp59_;
      ValaCCodeIdentifier* _tmp60_ = NULL;
      ValaCCodeIdentifier* _tmp61_;
      ValaCCodeUnaryExpression* _tmp62_ = NULL;
      ValaCCodeUnaryExpression* _tmp63_;
      ValaCCodeExpressionStatement* _tmp64_ = NULL;
      ValaCCodeExpressionStatement* _tmp65_;
      ValaCCodeIdentifier* _tmp66_ = NULL;
      ValaCCodeIdentifier* _tmp67_;
      ValaCCodeFunctionCall* _tmp68_ = NULL;
      ValaCCodeIdentifier* _tmp69_ = NULL;
      ValaCCodeIdentifier* _tmp70_;
      ValaCCodeUnaryExpression* _tmp71_ = NULL;
      ValaCCodeUnaryExpression* _tmp72_;
      ValaCCodeBlock* _tmp73_ = NULL;
      ValaCCodeBlock* cwhileblock;
      ValaCCodeFragment* _tmp74_ = NULL;
      ValaCCodeFragment* cwhilefragment;
      ValaCCodeWhileStatement* _tmp75_ = NULL;
      ValaCCodeWhileStatement* cwhile;
      ValaCCodeIdentifier* _tmp76_ = NULL;
      ValaCCodeIdentifier* _tmp77_;
      ValaCCodeFunctionCall* _tmp78_ = NULL;
      ValaCCodeIdentifier* _tmp79_ = NULL;
      ValaCCodeIdentifier* _tmp80_;
      ValaCCodeUnaryExpression* _tmp81_ = NULL;
      ValaCCodeUnaryExpression* _tmp82_;
      ValaCCodeIdentifier* _tmp83_ = NULL;
      ValaCCodeIdentifier* _tmp84_;
      ValaCCodeUnaryExpression* _tmp85_ = NULL;
      ValaCCodeUnaryExpression* _tmp86_;
      ValaCCodeExpressionStatement* _tmp87_ = NULL;
      ValaCCodeExpressionStatement* _tmp88_;
      gchar* _tmp89_ = NULL;
      gchar* _tmp90_;
      ValaCCodeDeclaration* _tmp91_ = NULL;
      ValaCCodeVariableDeclarator* _tmp92_ = NULL;
      ValaCCodeVariableDeclarator* _tmp93_;
      gchar* _tmp94_ = NULL;
      gchar* _tmp95_;
      ValaCCodeDeclaration* _tmp96_ = NULL;
      ValaCCodeVariableDeclarator* _tmp97_ = NULL;
      ValaCCodeVariableDeclarator* _tmp98_;
      ValaCCodeIdentifier* _tmp99_ = NULL;
      ValaCCodeIdentifier* _tmp100_;
      ValaCCodeExpression* _tmp101_ = NULL;
      ValaCCodeExpression* _tmp102_;
      ValaCCodeExpression* key_expr;
      ValaCCodeIdentifier* _tmp103_ = NULL;
      ValaCCodeIdentifier* _tmp104_;
      ValaCCodeAssignment* _tmp105_ = NULL;
      ValaCCodeAssignment* _tmp106_;
      ValaCCodeExpressionStatement* _tmp107_ = NULL;
      ValaCCodeExpressionStatement* _tmp108_;
      ValaCCodeIdentifier* _tmp109_ = NULL;
      ValaCCodeIdentifier* _tmp110_;
      ValaCCodeExpression* _tmp111_ = NULL;
      ValaCCodeExpression* _tmp112_;
      ValaCCodeExpression* value_expr;
      ValaCCodeIdentifier* _tmp113_ = NULL;
      ValaCCodeIdentifier* _tmp114_;
      ValaCCodeAssignment* _tmp115_ = NULL;
      ValaCCodeAssignment* _tmp116_;
      ValaCCodeExpressionStatement* _tmp117_ = NULL;
      ValaCCodeExpressionStatement* _tmp118_;
      ValaCCodeIdentifier* _tmp119_ = NULL;
      ValaCCodeIdentifier* _tmp120_;
      ValaCCodeFunctionCall* _tmp121_ = NULL;
      ValaCCodeFunctionCall* _tmp122_;
      ValaCCodeFunctionCall* hash_table_insert;
      ValaCCodeIdentifier* _tmp123_ = NULL;
      ValaCCodeIdentifier* _tmp124_;
      ValaCCodeIdentifier* _tmp125_ = NULL;
      ValaCCodeIdentifier* _tmp126_;
      ValaCCodeExpression* _tmp127_ = NULL;
      ValaCCodeExpression* _tmp128_;
      ValaCCodeIdentifier* _tmp129_ = NULL;
      ValaCCodeIdentifier* _tmp130_;
      ValaCCodeExpression* _tmp131_ = NULL;
      ValaCCodeExpression* _tmp132_;
      ValaCCodeExpressionStatement* _tmp133_ = NULL;
      ValaCCodeExpressionStatement* _tmp134_;
      ValaCCodeIdentifier* _tmp135_ = NULL;
      ValaCCodeIdentifier* _tmp136_;
      ValaCCodeFunctionCall* _tmp137_ = NULL;
      ValaCCodeIdentifier* _tmp138_ = NULL;
      ValaCCodeIdentifier* _tmp139_;
      ValaCCodeUnaryExpression* _tmp140_ = NULL;
      ValaCCodeUnaryExpression* _tmp141_;
      ValaCCodeExpressionStatement* _tmp142_ = NULL;
      ValaCCodeExpressionStatement* _tmp143_;
      ValaCCodeIdentifier* _tmp144_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (type != NULL, NULL);
      g_return_val_if_fail (iter_expr != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      temp_name = _tmp2_;
      _tmp3_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp4_ = _tmp3_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp4_ + 1);
      _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_);
      subiter_name = _tmp5_;
      _tmp6_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp7_ = _tmp6_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp7_ + 1);
      _tmp8_ = g_strdup_printf ("_tmp%d_", _tmp7_);
      entryiter_name = _tmp8_;
      _tmp9_ = vala_data_type_get_type_arguments ((ValaDataType*) type);
      type_args = _tmp9_;
      _tmp10_ = vala_collection_get_size ((ValaCollection*) type_args);
      g_assert (_tmp10_ == 2);
      _tmp11_ = vala_list_get (type_args, 0);
      key_type = (ValaDataType*) _tmp11_;
      _tmp12_ = vala_list_get (type_args, 1);
      value_type = (ValaDataType*) _tmp12_;
      _tmp13_ = vala_ccode_declaration_new ("GHashTable*");
      _cdecl_ = _tmp13_;
      _tmp14_ = vala_ccode_variable_declarator_new (temp_name, NULL, NULL);
      _tmp15_ = _tmp14_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp15_);
      _vala_ccode_node_unref0 (_tmp15_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp16_ = vala_ccode_declaration_new ("DBusMessageIter");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp16_;
      _tmp17_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp18_ = _tmp17_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp19_ = vala_ccode_declaration_new ("DBusMessageIter");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp19_;
      _tmp20_ = vala_ccode_variable_declarator_new (entryiter_name, NULL, NULL);
      _tmp21_ = _tmp20_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp21_);
      _vala_ccode_node_unref0 (_tmp21_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp22_ = vala_ccode_identifier_new ("g_hash_table_new_full");
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
      _tmp25_ = _tmp24_;
      _vala_ccode_node_unref0 (_tmp23_);
      hash_table_new = _tmp25_;
      _tmp26_ = vala_data_type_get_data_type (key_type);
      _tmp27_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
      if (_tmp26_ == _tmp27_) {
            ValaCCodeIdentifier* _tmp28_ = NULL;
            ValaCCodeIdentifier* _tmp29_;
            ValaCCodeIdentifier* _tmp30_ = NULL;
            ValaCCodeIdentifier* _tmp31_;
            _tmp28_ = vala_ccode_identifier_new ("g_str_hash");
            _tmp29_ = _tmp28_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp29_);
            _vala_ccode_node_unref0 (_tmp29_);
            _tmp30_ = vala_ccode_identifier_new ("g_str_equal");
            _tmp31_ = _tmp30_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp31_);
            _vala_ccode_node_unref0 (_tmp31_);
      } else {
            ValaCCodeIdentifier* _tmp32_ = NULL;
            ValaCCodeIdentifier* _tmp33_;
            ValaCCodeIdentifier* _tmp34_ = NULL;
            ValaCCodeIdentifier* _tmp35_;
            _tmp32_ = vala_ccode_identifier_new ("g_direct_hash");
            _tmp33_ = _tmp32_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp33_);
            _vala_ccode_node_unref0 (_tmp33_);
            _tmp34_ = vala_ccode_identifier_new ("g_direct_equal");
            _tmp35_ = _tmp34_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp35_);
            _vala_ccode_node_unref0 (_tmp35_);
      }
      _tmp36_ = vala_data_type_get_data_type (key_type);
      _tmp37_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
      if (_tmp36_ == _tmp37_) {
            ValaCCodeIdentifier* _tmp38_ = NULL;
            ValaCCodeIdentifier* _tmp39_;
            _tmp38_ = vala_ccode_identifier_new ("g_free");
            _tmp39_ = _tmp38_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp39_);
            _vala_ccode_node_unref0 (_tmp39_);
      } else {
            ValaCCodeIdentifier* _tmp40_ = NULL;
            ValaCCodeIdentifier* _tmp41_;
            _tmp40_ = vala_ccode_identifier_new ("NULL");
            _tmp41_ = _tmp40_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp41_);
            _vala_ccode_node_unref0 (_tmp41_);
      }
      _tmp42_ = vala_data_type_get_data_type (value_type);
      _tmp43_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
      if (_tmp42_ == _tmp43_) {
            ValaCCodeIdentifier* _tmp44_ = NULL;
            ValaCCodeIdentifier* _tmp45_;
            _tmp44_ = vala_ccode_identifier_new ("g_free");
            _tmp45_ = _tmp44_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp45_);
            _vala_ccode_node_unref0 (_tmp45_);
      } else {
            ValaCCodeIdentifier* _tmp46_ = NULL;
            ValaCCodeIdentifier* _tmp47_;
            _tmp46_ = vala_ccode_identifier_new ("NULL");
            _tmp47_ = _tmp46_;
            vala_ccode_function_call_add_argument (hash_table_new, (ValaCCodeExpression*) _tmp47_);
            _vala_ccode_node_unref0 (_tmp47_);
      }
      _tmp48_ = vala_ccode_identifier_new (temp_name);
      _tmp49_ = _tmp48_;
      _tmp50_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp49_, (ValaCCodeExpression*) hash_table_new, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp51_ = _tmp50_;
      _tmp52_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp51_);
      _tmp53_ = _tmp52_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp53_);
      _vala_ccode_node_unref0 (_tmp53_);
      _vala_ccode_node_unref0 (_tmp51_);
      _vala_ccode_node_unref0 (_tmp49_);
      _tmp54_ = vala_ccode_identifier_new ("dbus_message_iter_recurse");
      _tmp55_ = _tmp54_;
      _tmp56_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp55_);
      _tmp57_ = _tmp56_;
      _vala_ccode_node_unref0 (_tmp55_);
      iter_call = _tmp57_;
      _tmp58_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp59_ = _tmp58_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp59_);
      _vala_ccode_node_unref0 (_tmp59_);
      _tmp60_ = vala_ccode_identifier_new (subiter_name);
      _tmp61_ = _tmp60_;
      _tmp62_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp61_);
      _tmp63_ = _tmp62_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp63_);
      _vala_ccode_node_unref0 (_tmp63_);
      _vala_ccode_node_unref0 (_tmp61_);
      _tmp64_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp65_ = _tmp64_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp65_);
      _vala_ccode_node_unref0 (_tmp65_);
      _tmp66_ = vala_ccode_identifier_new ("dbus_message_iter_get_arg_type");
      _tmp67_ = _tmp66_;
      _tmp68_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp67_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp68_;
      _vala_ccode_node_unref0 (_tmp67_);
      _tmp69_ = vala_ccode_identifier_new (subiter_name);
      _tmp70_ = _tmp69_;
      _tmp71_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp70_);
      _tmp72_ = _tmp71_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp72_);
      _vala_ccode_node_unref0 (_tmp72_);
      _vala_ccode_node_unref0 (_tmp70_);
      _tmp73_ = vala_ccode_block_new ();
      cwhileblock = _tmp73_;
      _tmp74_ = vala_ccode_fragment_new ();
      cwhilefragment = _tmp74_;
      vala_ccode_block_add_statement (cwhileblock, (ValaCCodeNode*) cwhilefragment);
      _tmp75_ = vala_ccode_while_statement_new ((ValaCCodeExpression*) iter_call, (ValaCCodeStatement*) cwhileblock);
      cwhile = _tmp75_;
      _tmp76_ = vala_ccode_identifier_new ("dbus_message_iter_recurse");
      _tmp77_ = _tmp76_;
      _tmp78_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp77_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp78_;
      _vala_ccode_node_unref0 (_tmp77_);
      _tmp79_ = vala_ccode_identifier_new (subiter_name);
      _tmp80_ = _tmp79_;
      _tmp81_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp80_);
      _tmp82_ = _tmp81_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp82_);
      _vala_ccode_node_unref0 (_tmp82_);
      _vala_ccode_node_unref0 (_tmp80_);
      _tmp83_ = vala_ccode_identifier_new (entryiter_name);
      _tmp84_ = _tmp83_;
      _tmp85_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp84_);
      _tmp86_ = _tmp85_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp86_);
      _vala_ccode_node_unref0 (_tmp86_);
      _vala_ccode_node_unref0 (_tmp84_);
      _tmp87_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp88_ = _tmp87_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp88_);
      _vala_ccode_node_unref0 (_tmp88_);
      _tmp89_ = vala_data_type_get_cname (key_type);
      _tmp90_ = _tmp89_;
      _tmp91_ = vala_ccode_declaration_new (_tmp90_);
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp91_;
      _g_free0 (_tmp90_);
      _tmp92_ = vala_ccode_variable_declarator_new ("_key", NULL, NULL);
      _tmp93_ = _tmp92_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp93_);
      _vala_ccode_node_unref0 (_tmp93_);
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _cdecl_);
      _tmp94_ = vala_data_type_get_cname (value_type);
      _tmp95_ = _tmp94_;
      _tmp96_ = vala_ccode_declaration_new (_tmp95_);
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp96_;
      _g_free0 (_tmp95_);
      _tmp97_ = vala_ccode_variable_declarator_new ("_value", NULL, NULL);
      _tmp98_ = _tmp97_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp98_);
      _vala_ccode_node_unref0 (_tmp98_);
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _cdecl_);
      _tmp99_ = vala_ccode_identifier_new (entryiter_name);
      _tmp100_ = _tmp99_;
      _tmp101_ = vala_dbus_module_read_expression (self, cwhilefragment, key_type, (ValaCCodeExpression*) _tmp100_, NULL);
      _tmp102_ = _tmp101_;
      _vala_ccode_node_unref0 (_tmp100_);
      key_expr = _tmp102_;
      _tmp103_ = vala_ccode_identifier_new ("_key");
      _tmp104_ = _tmp103_;
      _tmp105_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp104_, key_expr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp106_ = _tmp105_;
      _tmp107_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp106_);
      _tmp108_ = _tmp107_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp108_);
      _vala_ccode_node_unref0 (_tmp108_);
      _vala_ccode_node_unref0 (_tmp106_);
      _vala_ccode_node_unref0 (_tmp104_);
      _tmp109_ = vala_ccode_identifier_new (entryiter_name);
      _tmp110_ = _tmp109_;
      _tmp111_ = vala_dbus_module_read_expression (self, cwhilefragment, value_type, (ValaCCodeExpression*) _tmp110_, NULL);
      _tmp112_ = _tmp111_;
      _vala_ccode_node_unref0 (_tmp110_);
      value_expr = _tmp112_;
      _tmp113_ = vala_ccode_identifier_new ("_value");
      _tmp114_ = _tmp113_;
      _tmp115_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp114_, value_expr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp116_ = _tmp115_;
      _tmp117_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp116_);
      _tmp118_ = _tmp117_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp118_);
      _vala_ccode_node_unref0 (_tmp118_);
      _vala_ccode_node_unref0 (_tmp116_);
      _vala_ccode_node_unref0 (_tmp114_);
      _tmp119_ = vala_ccode_identifier_new ("g_hash_table_insert");
      _tmp120_ = _tmp119_;
      _tmp121_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp120_);
      _tmp122_ = _tmp121_;
      _vala_ccode_node_unref0 (_tmp120_);
      hash_table_insert = _tmp122_;
      _tmp123_ = vala_ccode_identifier_new (temp_name);
      _tmp124_ = _tmp123_;
      vala_ccode_function_call_add_argument (hash_table_insert, (ValaCCodeExpression*) _tmp124_);
      _vala_ccode_node_unref0 (_tmp124_);
      _tmp125_ = vala_ccode_identifier_new ("_key");
      _tmp126_ = _tmp125_;
      _tmp127_ = vala_ccode_base_module_convert_to_generic_pointer ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp126_, key_type);
      _tmp128_ = _tmp127_;
      vala_ccode_function_call_add_argument (hash_table_insert, _tmp128_);
      _vala_ccode_node_unref0 (_tmp128_);
      _vala_ccode_node_unref0 (_tmp126_);
      _tmp129_ = vala_ccode_identifier_new ("_value");
      _tmp130_ = _tmp129_;
      _tmp131_ = vala_ccode_base_module_convert_to_generic_pointer ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp130_, value_type);
      _tmp132_ = _tmp131_;
      vala_ccode_function_call_add_argument (hash_table_insert, _tmp132_);
      _vala_ccode_node_unref0 (_tmp132_);
      _vala_ccode_node_unref0 (_tmp130_);
      _tmp133_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) hash_table_insert);
      _tmp134_ = _tmp133_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp134_);
      _vala_ccode_node_unref0 (_tmp134_);
      _tmp135_ = vala_ccode_identifier_new ("dbus_message_iter_next");
      _tmp136_ = _tmp135_;
      _tmp137_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp136_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp137_;
      _vala_ccode_node_unref0 (_tmp136_);
      _tmp138_ = vala_ccode_identifier_new (subiter_name);
      _tmp139_ = _tmp138_;
      _tmp140_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp139_);
      _tmp141_ = _tmp140_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp141_);
      _vala_ccode_node_unref0 (_tmp141_);
      _vala_ccode_node_unref0 (_tmp139_);
      _tmp142_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp143_ = _tmp142_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp143_);
      _vala_ccode_node_unref0 (_tmp143_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cwhile);
      _tmp144_ = vala_ccode_identifier_new (temp_name);
      result = (ValaCCodeExpression*) _tmp144_;
      _vala_ccode_node_unref0 (hash_table_insert);
      _vala_ccode_node_unref0 (value_expr);
      _vala_ccode_node_unref0 (key_expr);
      _vala_ccode_node_unref0 (cwhile);
      _vala_ccode_node_unref0 (cwhilefragment);
      _vala_ccode_node_unref0 (cwhileblock);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (hash_table_new);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_code_node_unref0 (value_type);
      _vala_code_node_unref0 (key_type);
      _vala_iterable_unref0 (type_args);
      _g_free0 (entryiter_name);
      _g_free0 (subiter_name);
      _g_free0 (temp_name);
      return result;
}


ValaCCodeExpression* vala_dbus_module_read_expression (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDataType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr) {
      ValaCCodeExpression* result = NULL;
      ValaDBusModuleBasicTypeInfo basic_type = {0};
      ValaCCodeExpression* _result_;
      ValaTypeSymbol* _tmp0_ = NULL;
      gboolean _tmp1_;
      ValaCCodeIdentifier* _tmp48_ = NULL;
      ValaCCodeIdentifier* _tmp49_;
      ValaCCodeFunctionCall* _tmp50_ = NULL;
      ValaCCodeFunctionCall* _tmp51_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp52_ = NULL;
      ValaCCodeUnaryExpression* _tmp53_;
      ValaCCodeExpressionStatement* _tmp54_ = NULL;
      ValaCCodeExpressionStatement* _tmp55_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (type != NULL, NULL);
      g_return_val_if_fail (iter_expr != NULL, NULL);
      _result_ = NULL;
      _tmp0_ = vala_data_type_get_data_type (type);
      _tmp1_ = vala_dbus_module_is_string_marshalled_enum (_tmp0_);
      if (_tmp1_) {
            ValaDBusModuleBasicTypeInfo _tmp2_ = {0};
            ValaCCodeExpression* _tmp3_ = NULL;
            ValaDataType* _tmp4_;
            ValaCCodeExpression* _tmp5_ = NULL;
            vala_dbus_module_get_basic_type_info (self, "s", &_tmp2_);
            basic_type = _tmp2_;
            _tmp3_ = vala_dbus_module_read_basic (self, fragment, &basic_type, iter_expr, TRUE);
            _vala_ccode_node_unref0 (_result_);
            _result_ = _tmp3_;
            _tmp4_ = type;
            _tmp5_ = vala_dbus_module_generate_enum_value_from_string (self, fragment, VALA_IS_ENUM_VALUE_TYPE (_tmp4_) ? ((ValaEnumValueType*) _tmp4_) : NULL, _result_);
            _vala_ccode_node_unref0 (_result_);
            _result_ = _tmp5_;
      } else {
            gchar* _tmp6_ = NULL;
            gchar* _tmp7_;
            ValaDBusModuleBasicTypeInfo _tmp8_ = {0};
            gboolean _tmp9_;
            gboolean _tmp10_;
            _tmp6_ = vala_dbus_module_get_type_signature (type);
            _tmp7_ = _tmp6_;
            _tmp9_ = vala_dbus_module_get_basic_type_info (self, _tmp7_, &_tmp8_);
            basic_type = _tmp8_;
            _tmp10_ = _tmp9_;
            _g_free0 (_tmp7_);
            if (_tmp10_) {
                  ValaCCodeExpression* _tmp11_ = NULL;
                  _tmp11_ = vala_dbus_module_read_basic (self, fragment, &basic_type, iter_expr, FALSE);
                  _vala_ccode_node_unref0 (_result_);
                  _result_ = _tmp11_;
            } else {
                  if (VALA_IS_ARRAY_TYPE (type)) {
                        ValaCCodeExpression* _tmp12_ = NULL;
                        _tmp12_ = vala_dbus_module_read_array (self, fragment, VALA_ARRAY_TYPE (type), iter_expr, expr);
                        _vala_ccode_node_unref0 (_result_);
                        _result_ = _tmp12_;
                  } else {
                        ValaTypeSymbol* _tmp13_ = NULL;
                        _tmp13_ = vala_data_type_get_data_type (type);
                        if (VALA_IS_STRUCT (_tmp13_)) {
                              ValaTypeSymbol* _tmp14_ = NULL;
                              ValaStruct* _tmp15_;
                              ValaStruct* st;
                              ValaTypeSymbol* _tmp16_ = NULL;
                              gchar* _tmp17_ = NULL;
                              gchar* _tmp18_;
                              gboolean _tmp19_;
                              gboolean _tmp22_;
                              _tmp14_ = vala_data_type_get_data_type (type);
                              _tmp15_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp14_));
                              st = _tmp15_;
                              _tmp16_ = vala_data_type_get_data_type (type);
                              _tmp17_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp16_);
                              _tmp18_ = _tmp17_;
                              _tmp19_ = g_strcmp0 (_tmp18_, "GLib.Value") == 0;
                              _g_free0 (_tmp18_);
                              if (_tmp19_) {
                                    ValaCCodeExpression* _tmp20_ = NULL;
                                    _tmp20_ = vala_dbus_module_read_value (self, fragment, iter_expr);
                                    _vala_ccode_node_unref0 (_result_);
                                    _result_ = _tmp20_;
                              } else {
                                    ValaCCodeExpression* _tmp21_ = NULL;
                                    _tmp21_ = vala_dbus_module_read_struct (self, fragment, st, iter_expr);
                                    _vala_ccode_node_unref0 (_result_);
                                    _result_ = _tmp21_;
                              }
                              _tmp22_ = vala_data_type_get_nullable (type);
                              if (_tmp22_) {
                                    ValaCCodeIdentifier* _tmp23_ = NULL;
                                    ValaCCodeIdentifier* _tmp24_;
                                    ValaCCodeFunctionCall* _tmp25_ = NULL;
                                    ValaCCodeFunctionCall* _tmp26_;
                                    ValaCCodeFunctionCall* csizeof;
                                    gchar* _tmp27_ = NULL;
                                    gchar* _tmp28_;
                                    ValaCCodeIdentifier* _tmp29_ = NULL;
                                    ValaCCodeIdentifier* _tmp30_;
                                    ValaCCodeIdentifier* _tmp31_ = NULL;
                                    ValaCCodeIdentifier* _tmp32_;
                                    ValaCCodeFunctionCall* _tmp33_ = NULL;
                                    ValaCCodeFunctionCall* _tmp34_;
                                    ValaCCodeFunctionCall* cdup;
                                    ValaCCodeUnaryExpression* _tmp35_ = NULL;
                                    ValaCCodeUnaryExpression* _tmp36_;
                                    ValaCCodeExpression* _tmp37_;
                                    _tmp23_ = vala_ccode_identifier_new ("sizeof");
                                    _tmp24_ = _tmp23_;
                                    _tmp25_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp24_);
                                    _tmp26_ = _tmp25_;
                                    _vala_ccode_node_unref0 (_tmp24_);
                                    csizeof = _tmp26_;
                                    _tmp27_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
                                    _tmp28_ = _tmp27_;
                                    _tmp29_ = vala_ccode_identifier_new (_tmp28_);
                                    _tmp30_ = _tmp29_;
                                    vala_ccode_function_call_add_argument (csizeof, (ValaCCodeExpression*) _tmp30_);
                                    _vala_ccode_node_unref0 (_tmp30_);
                                    _g_free0 (_tmp28_);
                                    _tmp31_ = vala_ccode_identifier_new ("g_memdup");
                                    _tmp32_ = _tmp31_;
                                    _tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
                                    _tmp34_ = _tmp33_;
                                    _vala_ccode_node_unref0 (_tmp32_);
                                    cdup = _tmp34_;
                                    _tmp35_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _result_);
                                    _tmp36_ = _tmp35_;
                                    vala_ccode_function_call_add_argument (cdup, (ValaCCodeExpression*) _tmp36_);
                                    _vala_ccode_node_unref0 (_tmp36_);
                                    vala_ccode_function_call_add_argument (cdup, (ValaCCodeExpression*) csizeof);
                                    _tmp37_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) cdup);
                                    _vala_ccode_node_unref0 (_result_);
                                    _result_ = _tmp37_;
                                    _vala_ccode_node_unref0 (cdup);
                                    _vala_ccode_node_unref0 (csizeof);
                              }
                              _vala_code_node_unref0 (st);
                        } else {
                              if (VALA_IS_OBJECT_TYPE (type)) {
                                    ValaTypeSymbol* _tmp38_ = NULL;
                                    gchar* _tmp39_ = NULL;
                                    gchar* _tmp40_;
                                    gboolean _tmp41_;
                                    _tmp38_ = vala_data_type_get_data_type (type);
                                    _tmp39_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp38_);
                                    _tmp40_ = _tmp39_;
                                    _tmp41_ = g_strcmp0 (_tmp40_, "GLib.HashTable") == 0;
                                    _g_free0 (_tmp40_);
                                    if (_tmp41_) {
                                          ValaCCodeExpression* _tmp42_ = NULL;
                                          _tmp42_ = vala_dbus_module_read_hash_table (self, fragment, VALA_OBJECT_TYPE (type), iter_expr);
                                          _vala_ccode_node_unref0 (_result_);
                                          _result_ = _tmp42_;
                                    }
                              } else {
                                    ValaSourceReference* _tmp43_ = NULL;
                                    gchar* _tmp44_ = NULL;
                                    gchar* _tmp45_;
                                    gchar* _tmp46_ = NULL;
                                    gchar* _tmp47_;
                                    _tmp43_ = vala_code_node_get_source_reference ((ValaCodeNode*) type);
                                    _tmp44_ = vala_code_node_to_string ((ValaCodeNode*) type);
                                    _tmp45_ = _tmp44_;
                                    _tmp46_ = g_strdup_printf ("D-Bus deserialization of type `%s' is not supported", _tmp45_);
                                    _tmp47_ = _tmp46_;
                                    vala_report_error (_tmp43_, _tmp47_);
                                    _g_free0 (_tmp47_);
                                    _g_free0 (_tmp45_);
                                    result = NULL;
                                    _vala_ccode_node_unref0 (_result_);
                                    return result;
                              }
                        }
                  }
            }
      }
      _tmp48_ = vala_ccode_identifier_new ("dbus_message_iter_next");
      _tmp49_ = _tmp48_;
      _tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_);
      _tmp51_ = _tmp50_;
      _vala_ccode_node_unref0 (_tmp49_);
      iter_call = _tmp51_;
      _tmp52_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp53_ = _tmp52_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp53_);
      _vala_ccode_node_unref0 (_tmp53_);
      _tmp54_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp55_ = _tmp54_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp55_);
      _vala_ccode_node_unref0 (_tmp55_);
      result = _result_;
      _vala_ccode_node_unref0 (iter_call);
      return result;
}


static ValaCCodeExpression* vala_dbus_module_generate_enum_value_to_string (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaEnumValueType* type, ValaCCodeExpression* expr) {
      ValaCCodeExpression* result = NULL;
      ValaTypeSymbol* _tmp0_ = NULL;
      ValaTypeSymbol* _tmp1_;
      ValaEnum* _tmp2_;
      ValaEnum* en;
      gchar* _tmp3_ = NULL;
      gchar* _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* _tmp6_;
      gchar* to_string_name;
      ValaCCodeIdentifier* _tmp7_ = NULL;
      ValaCCodeIdentifier* _tmp8_;
      ValaCCodeFunctionCall* _tmp9_ = NULL;
      ValaCCodeFunctionCall* _tmp10_;
      ValaCCodeFunctionCall* to_string_call;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (fragment != NULL, NULL);
      g_return_val_if_fail (type != NULL, NULL);
      _tmp0_ = vala_value_type_get_type_symbol ((ValaValueType*) type);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_ENUM (_tmp1_) ? ((ValaEnum*) _tmp1_) : NULL);
      en = _tmp2_;
      _tmp3_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) en, NULL);
      _tmp4_ = _tmp3_;
      _tmp5_ = g_strdup_printf ("%s_to_string", _tmp4_);
      _tmp6_ = _tmp5_;
      _g_free0 (_tmp4_);
      to_string_name = _tmp6_;
      _tmp7_ = vala_ccode_identifier_new (to_string_name);
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp8_);
      _tmp10_ = _tmp9_;
      _vala_ccode_node_unref0 (_tmp8_);
      to_string_call = _tmp10_;
      vala_ccode_function_call_add_argument (to_string_call, expr);
      result = (ValaCCodeExpression*) to_string_call;
      _g_free0 (to_string_name);
      _vala_code_node_unref0 (en);
      return result;
}


ValaCCodeFunction* vala_dbus_module_generate_enum_to_string_function_declaration (ValaDBusModule* self, ValaEnum* en) {
      ValaCCodeFunction* result = NULL;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gchar* to_string_name;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* to_string_func;
      gchar* _tmp5_ = NULL;
      gchar* _tmp6_;
      ValaCCodeParameter* _tmp7_ = NULL;
      ValaCCodeParameter* _tmp8_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (en != NULL, NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) en, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_to_string", _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      to_string_name = _tmp3_;
      _tmp4_ = vala_ccode_function_new (to_string_name, "const char*");
      to_string_func = _tmp4_;
      _tmp5_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) en, FALSE);
      _tmp6_ = _tmp5_;
      _tmp7_ = vala_ccode_parameter_new ("value", _tmp6_);
      _tmp8_ = _tmp7_;
      vala_ccode_function_add_parameter (to_string_func, _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      _g_free0 (_tmp6_);
      result = to_string_func;
      _g_free0 (to_string_name);
      return result;
}


ValaCCodeFunction* vala_dbus_module_generate_enum_to_string_function (ValaDBusModule* self, ValaEnum* en) {
      ValaCCodeFunction* result = NULL;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gchar* to_string_name;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* to_string_func;
      gchar* _tmp5_ = NULL;
      gchar* _tmp6_;
      ValaCCodeParameter* _tmp7_ = NULL;
      ValaCCodeParameter* _tmp8_;
      ValaCCodeBlock* _tmp9_ = NULL;
      ValaCCodeBlock* to_string_block;
      ValaCCodeDeclaration* _tmp10_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp11_ = NULL;
      ValaCCodeVariableDeclarator* _tmp12_;
      ValaCCodeIdentifier* _tmp13_ = NULL;
      ValaCCodeIdentifier* _tmp14_;
      ValaCCodeSwitchStatement* _tmp15_ = NULL;
      ValaCCodeSwitchStatement* _tmp16_;
      ValaCCodeSwitchStatement* cswitch;
      ValaCCodeIdentifier* _tmp40_ = NULL;
      ValaCCodeIdentifier* _tmp41_;
      ValaCCodeReturnStatement* _tmp42_ = NULL;
      ValaCCodeReturnStatement* _tmp43_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (en != NULL, NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) en, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_to_string", _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      to_string_name = _tmp3_;
      _tmp4_ = vala_ccode_function_new (to_string_name, "const char*");
      to_string_func = _tmp4_;
      _tmp5_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) en, FALSE);
      _tmp6_ = _tmp5_;
      _tmp7_ = vala_ccode_parameter_new ("value", _tmp6_);
      _tmp8_ = _tmp7_;
      vala_ccode_function_add_parameter (to_string_func, _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      _g_free0 (_tmp6_);
      _tmp9_ = vala_ccode_block_new ();
      to_string_block = _tmp9_;
      vala_ccode_function_set_block (to_string_func, to_string_block);
      _tmp10_ = vala_ccode_declaration_new ("const char *");
      _cdecl_ = _tmp10_;
      _tmp11_ = vala_ccode_variable_declarator_new ("str", NULL, NULL);
      _tmp12_ = _tmp11_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      vala_ccode_block_add_statement (to_string_block, (ValaCCodeNode*) _cdecl_);
      _tmp13_ = vala_ccode_identifier_new ("value");
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_switch_statement_new ((ValaCCodeExpression*) _tmp14_);
      _tmp16_ = _tmp15_;
      _vala_ccode_node_unref0 (_tmp14_);
      cswitch = _tmp16_;
      {
            ValaList* _tmp17_ = NULL;
            ValaList* _enum_value_list;
            gint _tmp18_;
            gint _enum_value_size;
            gint _enum_value_index;
            _tmp17_ = vala_enum_get_values (en);
            _enum_value_list = _tmp17_;
            _tmp18_ = vala_collection_get_size ((ValaCollection*) _enum_value_list);
            _enum_value_size = _tmp18_;
            _enum_value_index = -1;
            while (TRUE) {
                  gpointer _tmp19_ = NULL;
                  ValaEnumValue* enum_value;
                  const gchar* _tmp20_ = NULL;
                  gchar* _tmp21_ = NULL;
                  gchar* dbus_value;
                  gchar* _tmp22_ = NULL;
                  gchar* _tmp23_;
                  ValaCCodeIdentifier* _tmp24_ = NULL;
                  ValaCCodeIdentifier* _tmp25_;
                  ValaCCodeCaseStatement* _tmp26_ = NULL;
                  ValaCCodeCaseStatement* _tmp27_;
                  ValaCCodeIdentifier* _tmp28_ = NULL;
                  ValaCCodeIdentifier* _tmp29_;
                  gchar* _tmp30_ = NULL;
                  gchar* _tmp31_;
                  ValaCCodeConstant* _tmp32_ = NULL;
                  ValaCCodeConstant* _tmp33_;
                  ValaCCodeAssignment* _tmp34_ = NULL;
                  ValaCCodeAssignment* _tmp35_;
                  ValaCCodeExpressionStatement* _tmp36_ = NULL;
                  ValaCCodeExpressionStatement* _tmp37_;
                  ValaCCodeBreakStatement* _tmp38_ = NULL;
                  ValaCCodeBreakStatement* _tmp39_;
                  _enum_value_index = _enum_value_index + 1;
                  if (!(_enum_value_index < _enum_value_size)) {
                        break;
                  }
                  _tmp19_ = vala_list_get (_enum_value_list, _enum_value_index);
                  enum_value = (ValaEnumValue*) _tmp19_;
                  _tmp20_ = vala_symbol_get_name ((ValaSymbol*) enum_value);
                  _tmp21_ = vala_dbus_module_get_dbus_value (self, enum_value, _tmp20_);
                  dbus_value = _tmp21_;
                  _tmp22_ = vala_constant_get_cname ((ValaConstant*) enum_value);
                  _tmp23_ = _tmp22_;
                  _tmp24_ = vala_ccode_identifier_new (_tmp23_);
                  _tmp25_ = _tmp24_;
                  _tmp26_ = vala_ccode_case_statement_new ((ValaCCodeExpression*) _tmp25_);
                  _tmp27_ = _tmp26_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp27_);
                  _vala_ccode_node_unref0 (_tmp27_);
                  _vala_ccode_node_unref0 (_tmp25_);
                  _g_free0 (_tmp23_);
                  _tmp28_ = vala_ccode_identifier_new ("str");
                  _tmp29_ = _tmp28_;
                  _tmp30_ = g_strdup_printf ("\"%s\"", dbus_value);
                  _tmp31_ = _tmp30_;
                  _tmp32_ = vala_ccode_constant_new (_tmp31_);
                  _tmp33_ = _tmp32_;
                  _tmp34_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp29_, (ValaCCodeExpression*) _tmp33_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp35_ = _tmp34_;
                  _tmp36_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp35_);
                  _tmp37_ = _tmp36_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp37_);
                  _vala_ccode_node_unref0 (_tmp37_);
                  _vala_ccode_node_unref0 (_tmp35_);
                  _vala_ccode_node_unref0 (_tmp33_);
                  _g_free0 (_tmp31_);
                  _vala_ccode_node_unref0 (_tmp29_);
                  _tmp38_ = vala_ccode_break_statement_new ();
                  _tmp39_ = _tmp38_;
                  vala_ccode_block_add_statement ((ValaCCodeBlock*) cswitch, (ValaCCodeNode*) _tmp39_);
                  _vala_ccode_node_unref0 (_tmp39_);
                  _g_free0 (dbus_value);
                  _vala_code_node_unref0 (enum_value);
            }
            _vala_iterable_unref0 (_enum_value_list);
      }
      vala_ccode_block_add_statement (to_string_block, (ValaCCodeNode*) cswitch);
      _tmp40_ = vala_ccode_identifier_new ("str");
      _tmp41_ = _tmp40_;
      _tmp42_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp41_);
      _tmp43_ = _tmp42_;
      vala_ccode_block_add_statement (to_string_block, (ValaCCodeNode*) _tmp43_);
      _vala_ccode_node_unref0 (_tmp43_);
      _vala_ccode_node_unref0 (_tmp41_);
      result = to_string_func;
      _vala_ccode_node_unref0 (cswitch);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (to_string_block);
      _g_free0 (to_string_name);
      return result;
}


static void vala_dbus_module_write_basic (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDBusModuleBasicTypeInfo* basic_type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* temp_name;
      ValaCCodeDeclaration* _tmp3_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp4_ = NULL;
      ValaCCodeVariableDeclarator* _tmp5_;
      ValaCCodeIdentifier* _tmp6_ = NULL;
      ValaCCodeIdentifier* _tmp7_;
      ValaCCodeAssignment* _tmp8_ = NULL;
      ValaCCodeAssignment* _tmp9_;
      ValaCCodeExpressionStatement* _tmp10_ = NULL;
      ValaCCodeExpressionStatement* _tmp11_;
      ValaCCodeIdentifier* _tmp12_ = NULL;
      ValaCCodeIdentifier* _tmp13_;
      ValaCCodeFunctionCall* _tmp14_ = NULL;
      ValaCCodeFunctionCall* _tmp15_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp16_ = NULL;
      ValaCCodeUnaryExpression* _tmp17_;
      gchar* _tmp18_;
      gchar* _tmp19_;
      ValaCCodeIdentifier* _tmp20_ = NULL;
      ValaCCodeIdentifier* _tmp21_;
      ValaCCodeIdentifier* _tmp22_ = NULL;
      ValaCCodeIdentifier* _tmp23_;
      ValaCCodeUnaryExpression* _tmp24_ = NULL;
      ValaCCodeUnaryExpression* _tmp25_;
      ValaCCodeExpressionStatement* _tmp26_ = NULL;
      ValaCCodeExpressionStatement* _tmp27_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      temp_name = _tmp2_;
      _tmp3_ = vala_ccode_declaration_new ((*basic_type).cname);
      _cdecl_ = _tmp3_;
      _tmp4_ = vala_ccode_variable_declarator_new (temp_name, NULL, NULL);
      _tmp5_ = _tmp4_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp6_ = vala_ccode_identifier_new (temp_name);
      _tmp7_ = _tmp6_;
      _tmp8_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp7_, expr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _vala_ccode_node_unref0 (_tmp9_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp12_ = vala_ccode_identifier_new ("dbus_message_iter_append_basic");
      _tmp13_ = _tmp12_;
      _tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_);
      _tmp15_ = _tmp14_;
      _vala_ccode_node_unref0 (_tmp13_);
      iter_call = _tmp15_;
      _tmp16_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp17_ = _tmp16_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp17_);
      _vala_ccode_node_unref0 (_tmp17_);
      _tmp18_ = g_strconcat ("DBUS_TYPE_", (*basic_type).type_name, NULL);
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_identifier_new (_tmp19_);
      _tmp21_ = _tmp20_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp21_);
      _vala_ccode_node_unref0 (_tmp21_);
      _g_free0 (_tmp19_);
      _tmp22_ = vala_ccode_identifier_new (temp_name);
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp23_);
      _tmp25_ = _tmp24_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp25_);
      _vala_ccode_node_unref0 (_tmp25_);
      _vala_ccode_node_unref0 (_tmp23_);
      _tmp26_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp27_ = _tmp26_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp27_);
      _vala_ccode_node_unref0 (_tmp27_);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (temp_name);
}


static void vala_dbus_module_write_array (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* array_expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* array_iter_name;
      gchar* _tmp3_ = NULL;
      gchar* _tmp4_;
      ValaCCodeDeclaration* _tmp5_ = NULL;
      ValaCCodeDeclaration* _tmp6_;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp7_ = NULL;
      ValaCCodeVariableDeclarator* _tmp8_;
      ValaCCodeIdentifier* _tmp9_ = NULL;
      ValaCCodeIdentifier* _tmp10_;
      ValaCCodeAssignment* _tmp11_ = NULL;
      ValaCCodeAssignment* _tmp12_;
      ValaCCodeExpressionStatement* _tmp13_ = NULL;
      ValaCCodeExpressionStatement* _tmp14_;
      ValaCCodeIdentifier* _tmp15_ = NULL;
      ValaCCodeIdentifier* _tmp16_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (array_type != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (array_expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      array_iter_name = _tmp2_;
      _tmp3_ = vala_data_type_get_cname ((ValaDataType*) array_type);
      _tmp4_ = _tmp3_;
      _tmp5_ = vala_ccode_declaration_new (_tmp4_);
      _tmp6_ = _tmp5_;
      _g_free0 (_tmp4_);
      _cdecl_ = _tmp6_;
      _tmp7_ = vala_ccode_variable_declarator_new (array_iter_name, NULL, NULL);
      _tmp8_ = _tmp7_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp9_ = vala_ccode_identifier_new (array_iter_name);
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp10_, array_expr, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp12_ = _tmp11_;
      _tmp13_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp12_);
      _tmp14_ = _tmp13_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp14_);
      _vala_ccode_node_unref0 (_tmp14_);
      _vala_ccode_node_unref0 (_tmp12_);
      _vala_ccode_node_unref0 (_tmp10_);
      _tmp15_ = vala_ccode_identifier_new (array_iter_name);
      _tmp16_ = _tmp15_;
      vala_dbus_module_write_array_dim (self, fragment, array_type, 1, iter_expr, array_expr, (ValaCCodeExpression*) _tmp16_);
      _vala_ccode_node_unref0 (_tmp16_);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (array_iter_name);
}


static void vala_dbus_module_write_array_dim (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaArrayType* array_type, gint dim, ValaCCodeExpression* iter_expr, ValaCCodeExpression* array_expr, ValaCCodeExpression* array_iter_expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* subiter_name;
      gint _tmp3_;
      gint _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* index_name;
      ValaCCodeDeclaration* _tmp6_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp7_ = NULL;
      ValaCCodeVariableDeclarator* _tmp8_;
      ValaCCodeDeclaration* _tmp9_ = NULL;
      ValaCCodeVariableDeclarator* _tmp10_ = NULL;
      ValaCCodeVariableDeclarator* _tmp11_;
      ValaCCodeIdentifier* _tmp12_ = NULL;
      ValaCCodeIdentifier* _tmp13_;
      ValaCCodeFunctionCall* _tmp14_ = NULL;
      ValaCCodeFunctionCall* _tmp15_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp16_ = NULL;
      ValaCCodeUnaryExpression* _tmp17_;
      ValaCCodeIdentifier* _tmp18_ = NULL;
      ValaCCodeIdentifier* _tmp19_;
      gint _tmp20_;
      gchar* _tmp21_ = NULL;
      gchar* _tmp22_;
      ValaDataType* _tmp23_ = NULL;
      gchar* _tmp24_ = NULL;
      gchar* _tmp25_;
      gchar* _tmp26_ = NULL;
      gchar* _tmp27_;
      ValaCCodeConstant* _tmp28_ = NULL;
      ValaCCodeConstant* _tmp29_;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeUnaryExpression* _tmp32_ = NULL;
      ValaCCodeUnaryExpression* _tmp33_;
      ValaCCodeExpressionStatement* _tmp34_ = NULL;
      ValaCCodeExpressionStatement* _tmp35_;
      ValaCCodeBlock* _tmp36_ = NULL;
      ValaCCodeBlock* cforblock;
      ValaCCodeFragment* _tmp37_ = NULL;
      ValaCCodeFragment* cforfragment;
      ValaCCodeIdentifier* _tmp38_ = NULL;
      ValaCCodeIdentifier* _tmp39_;
      ValaCCodeExpression* _tmp40_ = NULL;
      ValaCCodeExpression* _tmp41_;
      ValaCCodeBinaryExpression* _tmp42_ = NULL;
      ValaCCodeBinaryExpression* _tmp43_;
      ValaCCodeForStatement* _tmp44_ = NULL;
      ValaCCodeForStatement* _tmp45_;
      ValaCCodeForStatement* cfor;
      ValaCCodeIdentifier* _tmp46_ = NULL;
      ValaCCodeIdentifier* _tmp47_;
      ValaCCodeConstant* _tmp48_ = NULL;
      ValaCCodeConstant* _tmp49_;
      ValaCCodeAssignment* _tmp50_ = NULL;
      ValaCCodeAssignment* _tmp51_;
      ValaCCodeIdentifier* _tmp52_ = NULL;
      ValaCCodeIdentifier* _tmp53_;
      ValaCCodeUnaryExpression* _tmp54_ = NULL;
      ValaCCodeUnaryExpression* _tmp55_;
      gint _tmp56_;
      ValaCCodeIdentifier* _tmp66_ = NULL;
      ValaCCodeIdentifier* _tmp67_;
      ValaCCodeFunctionCall* _tmp68_ = NULL;
      ValaCCodeUnaryExpression* _tmp69_ = NULL;
      ValaCCodeUnaryExpression* _tmp70_;
      ValaCCodeIdentifier* _tmp71_ = NULL;
      ValaCCodeIdentifier* _tmp72_;
      ValaCCodeUnaryExpression* _tmp73_ = NULL;
      ValaCCodeUnaryExpression* _tmp74_;
      ValaCCodeExpressionStatement* _tmp75_ = NULL;
      ValaCCodeExpressionStatement* _tmp76_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (array_type != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (array_expr != NULL);
      g_return_if_fail (array_iter_expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      subiter_name = _tmp2_;
      _tmp3_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp4_ = _tmp3_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp4_ + 1);
      _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_);
      index_name = _tmp5_;
      _tmp6_ = vala_ccode_declaration_new ("DBusMessageIter");
      _cdecl_ = _tmp6_;
      _tmp7_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp8_ = _tmp7_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp9_ = vala_ccode_declaration_new ("int");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp9_;
      _tmp10_ = vala_ccode_variable_declarator_new (index_name, NULL, NULL);
      _tmp11_ = _tmp10_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp12_ = vala_ccode_identifier_new ("dbus_message_iter_open_container");
      _tmp13_ = _tmp12_;
      _tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_);
      _tmp15_ = _tmp14_;
      _vala_ccode_node_unref0 (_tmp13_);
      iter_call = _tmp15_;
      _tmp16_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp17_ = _tmp16_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp17_);
      _vala_ccode_node_unref0 (_tmp17_);
      _tmp18_ = vala_ccode_identifier_new ("DBUS_TYPE_ARRAY");
      _tmp19_ = _tmp18_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp19_);
      _vala_ccode_node_unref0 (_tmp19_);
      _tmp20_ = vala_array_type_get_rank (array_type);
      _tmp21_ = g_strnfill ((gsize) (_tmp20_ - dim), 'a');
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_array_type_get_element_type (array_type);
      _tmp24_ = vala_dbus_module_get_type_signature (_tmp23_);
      _tmp25_ = _tmp24_;
      _tmp26_ = g_strdup_printf ("\"%s%s\"", _tmp22_, _tmp25_);
      _tmp27_ = _tmp26_;
      _tmp28_ = vala_ccode_constant_new (_tmp27_);
      _tmp29_ = _tmp28_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp29_);
      _vala_ccode_node_unref0 (_tmp29_);
      _g_free0 (_tmp27_);
      _g_free0 (_tmp25_);
      _g_free0 (_tmp22_);
      _tmp30_ = vala_ccode_identifier_new (subiter_name);
      _tmp31_ = _tmp30_;
      _tmp32_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp31_);
      _tmp33_ = _tmp32_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp33_);
      _vala_ccode_node_unref0 (_tmp33_);
      _vala_ccode_node_unref0 (_tmp31_);
      _tmp34_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp35_ = _tmp34_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp35_);
      _vala_ccode_node_unref0 (_tmp35_);
      _tmp36_ = vala_ccode_block_new ();
      cforblock = _tmp36_;
      _tmp37_ = vala_ccode_fragment_new ();
      cforfragment = _tmp37_;
      vala_ccode_block_add_statement (cforblock, (ValaCCodeNode*) cforfragment);
      _tmp38_ = vala_ccode_identifier_new (index_name);
      _tmp39_ = _tmp38_;
      _tmp40_ = vala_dbus_module_get_array_length (self, array_expr, dim);
      _tmp41_ = _tmp40_;
      _tmp42_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_LESS_THAN, (ValaCCodeExpression*) _tmp39_, _tmp41_);
      _tmp43_ = _tmp42_;
      _tmp44_ = vala_ccode_for_statement_new ((ValaCCodeExpression*) _tmp43_, (ValaCCodeStatement*) cforblock);
      _tmp45_ = _tmp44_;
      _vala_ccode_node_unref0 (_tmp43_);
      _vala_ccode_node_unref0 (_tmp41_);
      _vala_ccode_node_unref0 (_tmp39_);
      cfor = _tmp45_;
      _tmp46_ = vala_ccode_identifier_new (index_name);
      _tmp47_ = _tmp46_;
      _tmp48_ = vala_ccode_constant_new ("0");
      _tmp49_ = _tmp48_;
      _tmp50_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp47_, (ValaCCodeExpression*) _tmp49_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp51_ = _tmp50_;
      vala_ccode_for_statement_add_initializer (cfor, (ValaCCodeExpression*) _tmp51_);
      _vala_ccode_node_unref0 (_tmp51_);
      _vala_ccode_node_unref0 (_tmp49_);
      _vala_ccode_node_unref0 (_tmp47_);
      _tmp52_ = vala_ccode_identifier_new (index_name);
      _tmp53_ = _tmp52_;
      _tmp54_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp53_);
      _tmp55_ = _tmp54_;
      vala_ccode_for_statement_add_iterator (cfor, (ValaCCodeExpression*) _tmp55_);
      _vala_ccode_node_unref0 (_tmp55_);
      _vala_ccode_node_unref0 (_tmp53_);
      _tmp56_ = vala_array_type_get_rank (array_type);
      if (dim < _tmp56_) {
            ValaCCodeIdentifier* _tmp57_ = NULL;
            ValaCCodeIdentifier* _tmp58_;
            _tmp57_ = vala_ccode_identifier_new (subiter_name);
            _tmp58_ = _tmp57_;
            vala_dbus_module_write_array_dim (self, cforfragment, array_type, dim + 1, (ValaCCodeExpression*) _tmp58_, array_expr, array_iter_expr);
            _vala_ccode_node_unref0 (_tmp58_);
      } else {
            ValaCCodeUnaryExpression* _tmp59_ = NULL;
            ValaCCodeUnaryExpression* element_expr;
            ValaDataType* _tmp60_ = NULL;
            ValaCCodeIdentifier* _tmp61_ = NULL;
            ValaCCodeIdentifier* _tmp62_;
            ValaCCodeUnaryExpression* _tmp63_ = NULL;
            ValaCCodeUnaryExpression* array_iter_incr;
            ValaCCodeExpressionStatement* _tmp64_ = NULL;
            ValaCCodeExpressionStatement* _tmp65_;
            _tmp59_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, array_iter_expr);
            element_expr = _tmp59_;
            _tmp60_ = vala_array_type_get_element_type (array_type);
            _tmp61_ = vala_ccode_identifier_new (subiter_name);
            _tmp62_ = _tmp61_;
            vala_dbus_module_write_expression (self, cforfragment, _tmp60_, (ValaCCodeExpression*) _tmp62_, (ValaCCodeExpression*) element_expr);
            _vala_ccode_node_unref0 (_tmp62_);
            _tmp63_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, array_iter_expr);
            array_iter_incr = _tmp63_;
            _tmp64_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) array_iter_incr);
            _tmp65_ = _tmp64_;
            vala_ccode_fragment_append (cforfragment, (ValaCCodeNode*) _tmp65_);
            _vala_ccode_node_unref0 (_tmp65_);
            _vala_ccode_node_unref0 (array_iter_incr);
            _vala_ccode_node_unref0 (element_expr);
      }
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cfor);
      _tmp66_ = vala_ccode_identifier_new ("dbus_message_iter_close_container");
      _tmp67_ = _tmp66_;
      _tmp68_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp67_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp68_;
      _vala_ccode_node_unref0 (_tmp67_);
      _tmp69_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp70_ = _tmp69_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp70_);
      _vala_ccode_node_unref0 (_tmp70_);
      _tmp71_ = vala_ccode_identifier_new (subiter_name);
      _tmp72_ = _tmp71_;
      _tmp73_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp72_);
      _tmp74_ = _tmp73_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp74_);
      _vala_ccode_node_unref0 (_tmp74_);
      _vala_ccode_node_unref0 (_tmp72_);
      _tmp75_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp76_ = _tmp75_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp76_);
      _vala_ccode_node_unref0 (_tmp76_);
      _vala_ccode_node_unref0 (cfor);
      _vala_ccode_node_unref0 (cforfragment);
      _vala_ccode_node_unref0 (cforblock);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (index_name);
      _g_free0 (subiter_name);
}


static void vala_dbus_module_write_struct (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaStruct* st, ValaCCodeExpression* iter_expr, ValaCCodeExpression* struct_expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* subiter_name;
      ValaCCodeDeclaration* _tmp3_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp4_ = NULL;
      ValaCCodeVariableDeclarator* _tmp5_;
      ValaCCodeIdentifier* _tmp6_ = NULL;
      ValaCCodeIdentifier* _tmp7_;
      ValaCCodeFunctionCall* _tmp8_ = NULL;
      ValaCCodeFunctionCall* _tmp9_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp10_ = NULL;
      ValaCCodeUnaryExpression* _tmp11_;
      ValaCCodeIdentifier* _tmp12_ = NULL;
      ValaCCodeIdentifier* _tmp13_;
      ValaCCodeConstant* _tmp14_ = NULL;
      ValaCCodeConstant* _tmp15_;
      ValaCCodeIdentifier* _tmp16_ = NULL;
      ValaCCodeIdentifier* _tmp17_;
      ValaCCodeUnaryExpression* _tmp18_ = NULL;
      ValaCCodeUnaryExpression* _tmp19_;
      ValaCCodeExpressionStatement* _tmp20_ = NULL;
      ValaCCodeExpressionStatement* _tmp21_;
      ValaCCodeIdentifier* _tmp33_ = NULL;
      ValaCCodeIdentifier* _tmp34_;
      ValaCCodeFunctionCall* _tmp35_ = NULL;
      ValaCCodeUnaryExpression* _tmp36_ = NULL;
      ValaCCodeUnaryExpression* _tmp37_;
      ValaCCodeIdentifier* _tmp38_ = NULL;
      ValaCCodeIdentifier* _tmp39_;
      ValaCCodeUnaryExpression* _tmp40_ = NULL;
      ValaCCodeUnaryExpression* _tmp41_;
      ValaCCodeExpressionStatement* _tmp42_ = NULL;
      ValaCCodeExpressionStatement* _tmp43_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (st != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (struct_expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      subiter_name = _tmp2_;
      _tmp3_ = vala_ccode_declaration_new ("DBusMessageIter");
      _cdecl_ = _tmp3_;
      _tmp4_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp5_ = _tmp4_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp6_ = vala_ccode_identifier_new ("dbus_message_iter_open_container");
      _tmp7_ = _tmp6_;
      _tmp8_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp7_);
      _tmp9_ = _tmp8_;
      _vala_ccode_node_unref0 (_tmp7_);
      iter_call = _tmp9_;
      _tmp10_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp11_ = _tmp10_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_identifier_new ("DBUS_TYPE_STRUCT");
      _tmp13_ = _tmp12_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _tmp14_ = vala_ccode_constant_new ("NULL");
      _tmp15_ = _tmp14_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp15_);
      _vala_ccode_node_unref0 (_tmp15_);
      _tmp16_ = vala_ccode_identifier_new (subiter_name);
      _tmp17_ = _tmp16_;
      _tmp18_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp17_);
      _tmp19_ = _tmp18_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp19_);
      _vala_ccode_node_unref0 (_tmp19_);
      _vala_ccode_node_unref0 (_tmp17_);
      _tmp20_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp21_ = _tmp20_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp21_);
      _vala_ccode_node_unref0 (_tmp21_);
      {
            ValaList* _tmp22_ = NULL;
            ValaList* _f_list;
            gint _tmp23_;
            gint _f_size;
            gint _f_index;
            _tmp22_ = vala_struct_get_fields (st);
            _f_list = _tmp22_;
            _tmp23_ = vala_collection_get_size ((ValaCollection*) _f_list);
            _f_size = _tmp23_;
            _f_index = -1;
            while (TRUE) {
                  gpointer _tmp24_ = NULL;
                  ValaField* f;
                  ValaMemberBinding _tmp25_;
                  ValaDataType* _tmp26_ = NULL;
                  ValaCCodeIdentifier* _tmp27_ = NULL;
                  ValaCCodeIdentifier* _tmp28_;
                  gchar* _tmp29_ = NULL;
                  gchar* _tmp30_;
                  ValaCCodeMemberAccess* _tmp31_ = NULL;
                  ValaCCodeMemberAccess* _tmp32_;
                  _f_index = _f_index + 1;
                  if (!(_f_index < _f_size)) {
                        break;
                  }
                  _tmp24_ = vala_list_get (_f_list, _f_index);
                  f = (ValaField*) _tmp24_;
                  _tmp25_ = vala_field_get_binding (f);
                  if (_tmp25_ != VALA_MEMBER_BINDING_INSTANCE) {
                        _vala_code_node_unref0 (f);
                        continue;
                  }
                  _tmp26_ = vala_variable_get_variable_type ((ValaVariable*) f);
                  _tmp27_ = vala_ccode_identifier_new (subiter_name);
                  _tmp28_ = _tmp27_;
                  _tmp29_ = vala_field_get_cname (f);
                  _tmp30_ = _tmp29_;
                  _tmp31_ = vala_ccode_member_access_new (struct_expr, _tmp30_, FALSE);
                  _tmp32_ = _tmp31_;
                  vala_dbus_module_write_expression (self, fragment, _tmp26_, (ValaCCodeExpression*) _tmp28_, (ValaCCodeExpression*) _tmp32_);
                  _vala_ccode_node_unref0 (_tmp32_);
                  _g_free0 (_tmp30_);
                  _vala_ccode_node_unref0 (_tmp28_);
                  _vala_code_node_unref0 (f);
            }
            _vala_iterable_unref0 (_f_list);
      }
      _tmp33_ = vala_ccode_identifier_new ("dbus_message_iter_close_container");
      _tmp34_ = _tmp33_;
      _tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp35_;
      _vala_ccode_node_unref0 (_tmp34_);
      _tmp36_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp37_ = _tmp36_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp37_);
      _vala_ccode_node_unref0 (_tmp37_);
      _tmp38_ = vala_ccode_identifier_new (subiter_name);
      _tmp39_ = _tmp38_;
      _tmp40_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp39_);
      _tmp41_ = _tmp40_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp41_);
      _vala_ccode_node_unref0 (_tmp41_);
      _vala_ccode_node_unref0 (_tmp39_);
      _tmp42_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp43_ = _tmp42_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp43_);
      _vala_ccode_node_unref0 (_tmp43_);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (subiter_name);
}


static void vala_dbus_module_write_value (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* subiter_name;
      ValaCCodeDeclaration* _tmp3_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp4_ = NULL;
      ValaCCodeVariableDeclarator* _tmp5_;
      ValaCCodeIfStatement* clastif;
      ValaCCodeIdentifier* _tmp57_ = NULL;
      ValaCCodeIdentifier* _tmp58_;
      ValaCCodeFunctionCall* _tmp59_ = NULL;
      ValaCCodeFunctionCall* _tmp60_;
      ValaCCodeFunctionCall* type_call;
      ValaCCodeUnaryExpression* _tmp61_ = NULL;
      ValaCCodeUnaryExpression* _tmp62_;
      ValaCCodeIdentifier* _tmp63_ = NULL;
      ValaCCodeIdentifier* _tmp64_;
      ValaCCodeBinaryExpression* _tmp65_ = NULL;
      ValaCCodeBinaryExpression* _tmp66_;
      ValaCCodeBinaryExpression* type_check;
      ValaCCodeBlock* _tmp67_ = NULL;
      ValaCCodeBlock* type_block;
      ValaCCodeFragment* _tmp68_ = NULL;
      ValaCCodeFragment* type_fragment;
      ValaCCodeIdentifier* _tmp69_ = NULL;
      ValaCCodeIdentifier* _tmp70_;
      ValaCCodeFunctionCall* _tmp71_ = NULL;
      ValaCCodeFunctionCall* _tmp72_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp73_ = NULL;
      ValaCCodeUnaryExpression* _tmp74_;
      ValaCCodeIdentifier* _tmp75_ = NULL;
      ValaCCodeIdentifier* _tmp76_;
      ValaCCodeConstant* _tmp77_ = NULL;
      ValaCCodeConstant* _tmp78_;
      ValaCCodeIdentifier* _tmp79_ = NULL;
      ValaCCodeIdentifier* _tmp80_;
      ValaCCodeUnaryExpression* _tmp81_ = NULL;
      ValaCCodeUnaryExpression* _tmp82_;
      ValaCCodeExpressionStatement* _tmp83_ = NULL;
      ValaCCodeExpressionStatement* _tmp84_;
      ValaCCodeIdentifier* _tmp85_ = NULL;
      ValaCCodeIdentifier* _tmp86_;
      ValaCCodeFunctionCall* _tmp87_ = NULL;
      ValaCCodeFunctionCall* _tmp88_;
      ValaCCodeFunctionCall* value_get;
      ValaCCodeUnaryExpression* _tmp89_ = NULL;
      ValaCCodeUnaryExpression* _tmp90_;
      ValaArrayType* _tmp91_ = NULL;
      ValaArrayType* _tmp92_;
      ValaCCodeIdentifier* _tmp93_ = NULL;
      ValaCCodeIdentifier* _tmp94_;
      ValaCCodeIdentifier* _tmp95_ = NULL;
      ValaCCodeIdentifier* _tmp96_;
      ValaCCodeFunctionCall* _tmp97_ = NULL;
      ValaCCodeUnaryExpression* _tmp98_ = NULL;
      ValaCCodeUnaryExpression* _tmp99_;
      ValaCCodeIdentifier* _tmp100_ = NULL;
      ValaCCodeIdentifier* _tmp101_;
      ValaCCodeUnaryExpression* _tmp102_ = NULL;
      ValaCCodeUnaryExpression* _tmp103_;
      ValaCCodeExpressionStatement* _tmp104_ = NULL;
      ValaCCodeExpressionStatement* _tmp105_;
      ValaCCodeIfStatement* _tmp106_ = NULL;
      ValaCCodeIfStatement* cif;
      ValaCCodeIfStatement* _tmp107_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      subiter_name = _tmp2_;
      _tmp3_ = vala_ccode_declaration_new ("DBusMessageIter");
      _cdecl_ = _tmp3_;
      _tmp4_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp5_ = _tmp4_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      clastif = NULL;
      {
            ValaDBusModuleBasicTypeInfo* basic_type_collection;
            int basic_type_collection_length1;
            int basic_type_it;
            basic_type_collection = VALA_DBUS_MODULE_basic_types;
            basic_type_collection_length1 = G_N_ELEMENTS (VALA_DBUS_MODULE_basic_types);
            for (basic_type_it = 0; basic_type_it < G_N_ELEMENTS (VALA_DBUS_MODULE_basic_types); basic_type_it = basic_type_it + 1) {
                  ValaDBusModuleBasicTypeInfo basic_type;
                  basic_type = basic_type_collection[basic_type_it];
                  {
                        ValaCCodeIdentifier* _tmp6_ = NULL;
                        ValaCCodeIdentifier* _tmp7_;
                        ValaCCodeFunctionCall* _tmp8_ = NULL;
                        ValaCCodeFunctionCall* _tmp9_;
                        ValaCCodeFunctionCall* type_call;
                        ValaCCodeUnaryExpression* _tmp10_ = NULL;
                        ValaCCodeUnaryExpression* _tmp11_;
                        ValaCCodeIdentifier* _tmp12_ = NULL;
                        ValaCCodeIdentifier* _tmp13_;
                        ValaCCodeBinaryExpression* _tmp14_ = NULL;
                        ValaCCodeBinaryExpression* _tmp15_;
                        ValaCCodeBinaryExpression* type_check;
                        ValaCCodeBlock* _tmp16_ = NULL;
                        ValaCCodeBlock* type_block;
                        ValaCCodeFragment* _tmp17_ = NULL;
                        ValaCCodeFragment* type_fragment;
                        ValaCCodeIdentifier* _tmp18_ = NULL;
                        ValaCCodeIdentifier* _tmp19_;
                        ValaCCodeFunctionCall* _tmp20_ = NULL;
                        ValaCCodeFunctionCall* _tmp21_;
                        ValaCCodeFunctionCall* iter_call;
                        ValaCCodeUnaryExpression* _tmp22_ = NULL;
                        ValaCCodeUnaryExpression* _tmp23_;
                        ValaCCodeIdentifier* _tmp24_ = NULL;
                        ValaCCodeIdentifier* _tmp25_;
                        gchar* _tmp26_ = NULL;
                        gchar* _tmp27_;
                        ValaCCodeConstant* _tmp28_ = NULL;
                        ValaCCodeConstant* _tmp29_;
                        ValaCCodeIdentifier* _tmp30_ = NULL;
                        ValaCCodeIdentifier* _tmp31_;
                        ValaCCodeUnaryExpression* _tmp32_ = NULL;
                        ValaCCodeUnaryExpression* _tmp33_;
                        ValaCCodeExpressionStatement* _tmp34_ = NULL;
                        ValaCCodeExpressionStatement* _tmp35_;
                        ValaCCodeIdentifier* _tmp36_ = NULL;
                        ValaCCodeIdentifier* _tmp37_;
                        ValaCCodeFunctionCall* _tmp38_ = NULL;
                        ValaCCodeFunctionCall* _tmp39_;
                        ValaCCodeFunctionCall* value_get;
                        ValaCCodeUnaryExpression* _tmp40_ = NULL;
                        ValaCCodeUnaryExpression* _tmp41_;
                        ValaCCodeIdentifier* _tmp42_ = NULL;
                        ValaCCodeIdentifier* _tmp43_;
                        ValaCCodeIdentifier* _tmp44_ = NULL;
                        ValaCCodeIdentifier* _tmp45_;
                        ValaCCodeFunctionCall* _tmp46_ = NULL;
                        ValaCCodeUnaryExpression* _tmp47_ = NULL;
                        ValaCCodeUnaryExpression* _tmp48_;
                        ValaCCodeIdentifier* _tmp49_ = NULL;
                        ValaCCodeIdentifier* _tmp50_;
                        ValaCCodeUnaryExpression* _tmp51_ = NULL;
                        ValaCCodeUnaryExpression* _tmp52_;
                        ValaCCodeExpressionStatement* _tmp53_ = NULL;
                        ValaCCodeExpressionStatement* _tmp54_;
                        ValaCCodeIfStatement* _tmp55_ = NULL;
                        ValaCCodeIfStatement* cif;
                        ValaCCodeIfStatement* _tmp56_;
                        if (basic_type.get_value_function == NULL) {
                              continue;
                        }
                        _tmp6_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
                        _tmp7_ = _tmp6_;
                        _tmp8_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp7_);
                        _tmp9_ = _tmp8_;
                        _vala_ccode_node_unref0 (_tmp7_);
                        type_call = _tmp9_;
                        _tmp10_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, expr);
                        _tmp11_ = _tmp10_;
                        vala_ccode_function_call_add_argument (type_call, (ValaCCodeExpression*) _tmp11_);
                        _vala_ccode_node_unref0 (_tmp11_);
                        _tmp12_ = vala_ccode_identifier_new (basic_type.gtype);
                        _tmp13_ = _tmp12_;
                        _tmp14_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) type_call, (ValaCCodeExpression*) _tmp13_);
                        _tmp15_ = _tmp14_;
                        _vala_ccode_node_unref0 (_tmp13_);
                        type_check = _tmp15_;
                        _tmp16_ = vala_ccode_block_new ();
                        type_block = _tmp16_;
                        _tmp17_ = vala_ccode_fragment_new ();
                        type_fragment = _tmp17_;
                        vala_ccode_block_add_statement (type_block, (ValaCCodeNode*) type_fragment);
                        _tmp18_ = vala_ccode_identifier_new ("dbus_message_iter_open_container");
                        _tmp19_ = _tmp18_;
                        _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_);
                        _tmp21_ = _tmp20_;
                        _vala_ccode_node_unref0 (_tmp19_);
                        iter_call = _tmp21_;
                        _tmp22_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
                        _tmp23_ = _tmp22_;
                        vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp23_);
                        _vala_ccode_node_unref0 (_tmp23_);
                        _tmp24_ = vala_ccode_identifier_new ("DBUS_TYPE_VARIANT");
                        _tmp25_ = _tmp24_;
                        vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp25_);
                        _vala_ccode_node_unref0 (_tmp25_);
                        _tmp26_ = g_strdup_printf ("\"%s\"", basic_type.signature);
                        _tmp27_ = _tmp26_;
                        _tmp28_ = vala_ccode_constant_new (_tmp27_);
                        _tmp29_ = _tmp28_;
                        vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp29_);
                        _vala_ccode_node_unref0 (_tmp29_);
                        _g_free0 (_tmp27_);
                        _tmp30_ = vala_ccode_identifier_new (subiter_name);
                        _tmp31_ = _tmp30_;
                        _tmp32_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp31_);
                        _tmp33_ = _tmp32_;
                        vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp33_);
                        _vala_ccode_node_unref0 (_tmp33_);
                        _vala_ccode_node_unref0 (_tmp31_);
                        _tmp34_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
                        _tmp35_ = _tmp34_;
                        vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp35_);
                        _vala_ccode_node_unref0 (_tmp35_);
                        _tmp36_ = vala_ccode_identifier_new (basic_type.get_value_function);
                        _tmp37_ = _tmp36_;
                        _tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
                        _tmp39_ = _tmp38_;
                        _vala_ccode_node_unref0 (_tmp37_);
                        value_get = _tmp39_;
                        _tmp40_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, expr);
                        _tmp41_ = _tmp40_;
                        vala_ccode_function_call_add_argument (value_get, (ValaCCodeExpression*) _tmp41_);
                        _vala_ccode_node_unref0 (_tmp41_);
                        _tmp42_ = vala_ccode_identifier_new (subiter_name);
                        _tmp43_ = _tmp42_;
                        vala_dbus_module_write_basic (self, type_fragment, &basic_type, (ValaCCodeExpression*) _tmp43_, (ValaCCodeExpression*) value_get);
                        _vala_ccode_node_unref0 (_tmp43_);
                        _tmp44_ = vala_ccode_identifier_new ("dbus_message_iter_close_container");
                        _tmp45_ = _tmp44_;
                        _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
                        _vala_ccode_node_unref0 (iter_call);
                        iter_call = _tmp46_;
                        _vala_ccode_node_unref0 (_tmp45_);
                        _tmp47_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
                        _tmp48_ = _tmp47_;
                        vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp48_);
                        _vala_ccode_node_unref0 (_tmp48_);
                        _tmp49_ = vala_ccode_identifier_new (subiter_name);
                        _tmp50_ = _tmp49_;
                        _tmp51_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp50_);
                        _tmp52_ = _tmp51_;
                        vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp52_);
                        _vala_ccode_node_unref0 (_tmp52_);
                        _vala_ccode_node_unref0 (_tmp50_);
                        _tmp53_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
                        _tmp54_ = _tmp53_;
                        vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp54_);
                        _vala_ccode_node_unref0 (_tmp54_);
                        _tmp55_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) type_check, (ValaCCodeStatement*) type_block, NULL);
                        cif = _tmp55_;
                        if (clastif == NULL) {
                              vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cif);
                        } else {
                              vala_ccode_if_statement_set_false_statement (clastif, (ValaCCodeStatement*) cif);
                        }
                        _tmp56_ = _vala_ccode_node_ref0 (cif);
                        _vala_ccode_node_unref0 (clastif);
                        clastif = _tmp56_;
                        _vala_ccode_node_unref0 (cif);
                        _vala_ccode_node_unref0 (value_get);
                        _vala_ccode_node_unref0 (iter_call);
                        _vala_ccode_node_unref0 (type_fragment);
                        _vala_ccode_node_unref0 (type_block);
                        _vala_ccode_node_unref0 (type_check);
                        _vala_ccode_node_unref0 (type_call);
                  }
            }
      }
      _tmp57_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
      _tmp58_ = _tmp57_;
      _tmp59_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp58_);
      _tmp60_ = _tmp59_;
      _vala_ccode_node_unref0 (_tmp58_);
      type_call = _tmp60_;
      _tmp61_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, expr);
      _tmp62_ = _tmp61_;
      vala_ccode_function_call_add_argument (type_call, (ValaCCodeExpression*) _tmp62_);
      _vala_ccode_node_unref0 (_tmp62_);
      _tmp63_ = vala_ccode_identifier_new ("G_TYPE_STRV");
      _tmp64_ = _tmp63_;
      _tmp65_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) type_call, (ValaCCodeExpression*) _tmp64_);
      _tmp66_ = _tmp65_;
      _vala_ccode_node_unref0 (_tmp64_);
      type_check = _tmp66_;
      _tmp67_ = vala_ccode_block_new ();
      type_block = _tmp67_;
      _tmp68_ = vala_ccode_fragment_new ();
      type_fragment = _tmp68_;
      vala_ccode_block_add_statement (type_block, (ValaCCodeNode*) type_fragment);
      _tmp69_ = vala_ccode_identifier_new ("dbus_message_iter_open_container");
      _tmp70_ = _tmp69_;
      _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
      _tmp72_ = _tmp71_;
      _vala_ccode_node_unref0 (_tmp70_);
      iter_call = _tmp72_;
      _tmp73_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp74_ = _tmp73_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp74_);
      _vala_ccode_node_unref0 (_tmp74_);
      _tmp75_ = vala_ccode_identifier_new ("DBUS_TYPE_VARIANT");
      _tmp76_ = _tmp75_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp76_);
      _vala_ccode_node_unref0 (_tmp76_);
      _tmp77_ = vala_ccode_constant_new ("\"as\"");
      _tmp78_ = _tmp77_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp78_);
      _vala_ccode_node_unref0 (_tmp78_);
      _tmp79_ = vala_ccode_identifier_new (subiter_name);
      _tmp80_ = _tmp79_;
      _tmp81_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp80_);
      _tmp82_ = _tmp81_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp82_);
      _vala_ccode_node_unref0 (_tmp82_);
      _vala_ccode_node_unref0 (_tmp80_);
      _tmp83_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp84_ = _tmp83_;
      vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp84_);
      _vala_ccode_node_unref0 (_tmp84_);
      _tmp85_ = vala_ccode_identifier_new ("g_value_get_boxed");
      _tmp86_ = _tmp85_;
      _tmp87_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp86_);
      _tmp88_ = _tmp87_;
      _vala_ccode_node_unref0 (_tmp86_);
      value_get = _tmp88_;
      _tmp89_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, expr);
      _tmp90_ = _tmp89_;
      vala_ccode_function_call_add_argument (value_get, (ValaCCodeExpression*) _tmp90_);
      _vala_ccode_node_unref0 (_tmp90_);
      _tmp91_ = vala_array_type_new (((ValaCCodeBaseModule*) self)->string_type, 1, NULL);
      _tmp92_ = _tmp91_;
      _tmp93_ = vala_ccode_identifier_new (subiter_name);
      _tmp94_ = _tmp93_;
      vala_dbus_module_write_array (self, type_fragment, _tmp92_, (ValaCCodeExpression*) _tmp94_, (ValaCCodeExpression*) value_get);
      _vala_ccode_node_unref0 (_tmp94_);
      _vala_code_node_unref0 (_tmp92_);
      _tmp95_ = vala_ccode_identifier_new ("dbus_message_iter_close_container");
      _tmp96_ = _tmp95_;
      _tmp97_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp96_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp97_;
      _vala_ccode_node_unref0 (_tmp96_);
      _tmp98_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp99_ = _tmp98_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp99_);
      _vala_ccode_node_unref0 (_tmp99_);
      _tmp100_ = vala_ccode_identifier_new (subiter_name);
      _tmp101_ = _tmp100_;
      _tmp102_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp101_);
      _tmp103_ = _tmp102_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp103_);
      _vala_ccode_node_unref0 (_tmp103_);
      _vala_ccode_node_unref0 (_tmp101_);
      _tmp104_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp105_ = _tmp104_;
      vala_ccode_fragment_append (type_fragment, (ValaCCodeNode*) _tmp105_);
      _vala_ccode_node_unref0 (_tmp105_);
      _tmp106_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) type_check, (ValaCCodeStatement*) type_block, NULL);
      cif = _tmp106_;
      if (clastif == NULL) {
            vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cif);
      } else {
            vala_ccode_if_statement_set_false_statement (clastif, (ValaCCodeStatement*) cif);
      }
      _tmp107_ = _vala_ccode_node_ref0 (cif);
      _vala_ccode_node_unref0 (clastif);
      clastif = _tmp107_;
      _vala_ccode_node_unref0 (cif);
      _vala_ccode_node_unref0 (value_get);
      _vala_ccode_node_unref0 (iter_call);
      _vala_ccode_node_unref0 (type_fragment);
      _vala_ccode_node_unref0 (type_block);
      _vala_ccode_node_unref0 (type_check);
      _vala_ccode_node_unref0 (type_call);
      _vala_ccode_node_unref0 (clastif);
      _vala_ccode_node_unref0 (_cdecl_);
      _g_free0 (subiter_name);
}


static void vala_dbus_module_write_hash_table (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaObjectType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* hash_table_expr) {
      gint _tmp0_;
      gint _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* subiter_name;
      gint _tmp3_;
      gint _tmp4_;
      gchar* _tmp5_ = NULL;
      gchar* entryiter_name;
      gint _tmp6_;
      gint _tmp7_;
      gchar* _tmp8_ = NULL;
      gchar* tableiter_name;
      gint _tmp9_;
      gint _tmp10_;
      gchar* _tmp11_ = NULL;
      gchar* key_name;
      gint _tmp12_;
      gint _tmp13_;
      gchar* _tmp14_ = NULL;
      gchar* value_name;
      ValaList* _tmp15_ = NULL;
      ValaList* type_args;
      gint _tmp16_;
      gpointer _tmp17_ = NULL;
      ValaDataType* key_type;
      gpointer _tmp18_ = NULL;
      ValaDataType* value_type;
      ValaCCodeIdentifier* _tmp19_ = NULL;
      ValaCCodeIdentifier* _tmp20_;
      ValaCCodeFunctionCall* _tmp21_ = NULL;
      ValaCCodeFunctionCall* _tmp22_;
      ValaCCodeFunctionCall* iter_call;
      ValaCCodeUnaryExpression* _tmp23_ = NULL;
      ValaCCodeUnaryExpression* _tmp24_;
      ValaCCodeIdentifier* _tmp25_ = NULL;
      ValaCCodeIdentifier* _tmp26_;
      gchar* _tmp27_ = NULL;
      gchar* _tmp28_;
      gchar* _tmp29_ = NULL;
      gchar* _tmp30_;
      gchar* _tmp31_ = NULL;
      gchar* _tmp32_;
      ValaCCodeConstant* _tmp33_ = NULL;
      ValaCCodeConstant* _tmp34_;
      ValaCCodeIdentifier* _tmp35_ = NULL;
      ValaCCodeIdentifier* _tmp36_;
      ValaCCodeUnaryExpression* _tmp37_ = NULL;
      ValaCCodeUnaryExpression* _tmp38_;
      ValaCCodeExpressionStatement* _tmp39_ = NULL;
      ValaCCodeExpressionStatement* _tmp40_;
      ValaCCodeDeclaration* _tmp41_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp42_ = NULL;
      ValaCCodeVariableDeclarator* _tmp43_;
      ValaCCodeVariableDeclarator* _tmp44_ = NULL;
      ValaCCodeVariableDeclarator* _tmp45_;
      ValaCCodeDeclaration* _tmp46_ = NULL;
      ValaCCodeVariableDeclarator* _tmp47_ = NULL;
      ValaCCodeVariableDeclarator* _tmp48_;
      ValaCCodeDeclaration* _tmp49_ = NULL;
      ValaCCodeVariableDeclarator* _tmp50_ = NULL;
      ValaCCodeVariableDeclarator* _tmp51_;
      ValaCCodeVariableDeclarator* _tmp52_ = NULL;
      ValaCCodeVariableDeclarator* _tmp53_;
      ValaCCodeIdentifier* _tmp54_ = NULL;
      ValaCCodeIdentifier* _tmp55_;
      ValaCCodeFunctionCall* _tmp56_ = NULL;
      ValaCCodeFunctionCall* _tmp57_;
      ValaCCodeFunctionCall* iter_init_call;
      ValaCCodeIdentifier* _tmp58_ = NULL;
      ValaCCodeIdentifier* _tmp59_;
      ValaCCodeUnaryExpression* _tmp60_ = NULL;
      ValaCCodeUnaryExpression* _tmp61_;
      ValaCCodeExpressionStatement* _tmp62_ = NULL;
      ValaCCodeExpressionStatement* _tmp63_;
      ValaCCodeIdentifier* _tmp64_ = NULL;
      ValaCCodeIdentifier* _tmp65_;
      ValaCCodeFunctionCall* _tmp66_ = NULL;
      ValaCCodeFunctionCall* _tmp67_;
      ValaCCodeFunctionCall* iter_next_call;
      ValaCCodeIdentifier* _tmp68_ = NULL;
      ValaCCodeIdentifier* _tmp69_;
      ValaCCodeUnaryExpression* _tmp70_ = NULL;
      ValaCCodeUnaryExpression* _tmp71_;
      ValaCCodeIdentifier* _tmp72_ = NULL;
      ValaCCodeIdentifier* _tmp73_;
      ValaCCodeUnaryExpression* _tmp74_ = NULL;
      ValaCCodeUnaryExpression* _tmp75_;
      ValaCCodeIdentifier* _tmp76_ = NULL;
      ValaCCodeIdentifier* _tmp77_;
      ValaCCodeUnaryExpression* _tmp78_ = NULL;
      ValaCCodeUnaryExpression* _tmp79_;
      ValaCCodeBlock* _tmp80_ = NULL;
      ValaCCodeBlock* cwhileblock;
      ValaCCodeFragment* _tmp81_ = NULL;
      ValaCCodeFragment* cwhilefragment;
      ValaCCodeWhileStatement* _tmp82_ = NULL;
      ValaCCodeWhileStatement* cwhile;
      gchar* _tmp83_ = NULL;
      gchar* _tmp84_;
      ValaCCodeDeclaration* _tmp85_ = NULL;
      ValaCCodeVariableDeclarator* _tmp86_ = NULL;
      ValaCCodeVariableDeclarator* _tmp87_;
      gchar* _tmp88_ = NULL;
      gchar* _tmp89_;
      ValaCCodeDeclaration* _tmp90_ = NULL;
      ValaCCodeVariableDeclarator* _tmp91_ = NULL;
      ValaCCodeVariableDeclarator* _tmp92_;
      ValaCCodeIdentifier* _tmp93_ = NULL;
      ValaCCodeIdentifier* _tmp94_;
      ValaCCodeFunctionCall* _tmp95_ = NULL;
      ValaCCodeIdentifier* _tmp96_ = NULL;
      ValaCCodeIdentifier* _tmp97_;
      ValaCCodeUnaryExpression* _tmp98_ = NULL;
      ValaCCodeUnaryExpression* _tmp99_;
      ValaCCodeIdentifier* _tmp100_ = NULL;
      ValaCCodeIdentifier* _tmp101_;
      ValaCCodeConstant* _tmp102_ = NULL;
      ValaCCodeConstant* _tmp103_;
      ValaCCodeIdentifier* _tmp104_ = NULL;
      ValaCCodeIdentifier* _tmp105_;
      ValaCCodeUnaryExpression* _tmp106_ = NULL;
      ValaCCodeUnaryExpression* _tmp107_;
      ValaCCodeExpressionStatement* _tmp108_ = NULL;
      ValaCCodeExpressionStatement* _tmp109_;
      ValaCCodeIdentifier* _tmp110_ = NULL;
      ValaCCodeIdentifier* _tmp111_;
      ValaCCodeIdentifier* _tmp112_ = NULL;
      ValaCCodeIdentifier* _tmp113_;
      ValaCCodeExpression* _tmp114_ = NULL;
      ValaCCodeExpression* _tmp115_;
      ValaCCodeAssignment* _tmp116_ = NULL;
      ValaCCodeAssignment* _tmp117_;
      ValaCCodeExpressionStatement* _tmp118_ = NULL;
      ValaCCodeExpressionStatement* _tmp119_;
      ValaCCodeIdentifier* _tmp120_ = NULL;
      ValaCCodeIdentifier* _tmp121_;
      ValaCCodeIdentifier* _tmp122_ = NULL;
      ValaCCodeIdentifier* _tmp123_;
      ValaCCodeExpression* _tmp124_ = NULL;
      ValaCCodeExpression* _tmp125_;
      ValaCCodeAssignment* _tmp126_ = NULL;
      ValaCCodeAssignment* _tmp127_;
      ValaCCodeExpressionStatement* _tmp128_ = NULL;
      ValaCCodeExpressionStatement* _tmp129_;
      ValaCCodeIdentifier* _tmp130_ = NULL;
      ValaCCodeIdentifier* _tmp131_;
      ValaCCodeIdentifier* _tmp132_ = NULL;
      ValaCCodeIdentifier* _tmp133_;
      ValaCCodeIdentifier* _tmp134_ = NULL;
      ValaCCodeIdentifier* _tmp135_;
      ValaCCodeIdentifier* _tmp136_ = NULL;
      ValaCCodeIdentifier* _tmp137_;
      ValaCCodeIdentifier* _tmp138_ = NULL;
      ValaCCodeIdentifier* _tmp139_;
      ValaCCodeFunctionCall* _tmp140_ = NULL;
      ValaCCodeIdentifier* _tmp141_ = NULL;
      ValaCCodeIdentifier* _tmp142_;
      ValaCCodeUnaryExpression* _tmp143_ = NULL;
      ValaCCodeUnaryExpression* _tmp144_;
      ValaCCodeIdentifier* _tmp145_ = NULL;
      ValaCCodeIdentifier* _tmp146_;
      ValaCCodeUnaryExpression* _tmp147_ = NULL;
      ValaCCodeUnaryExpression* _tmp148_;
      ValaCCodeExpressionStatement* _tmp149_ = NULL;
      ValaCCodeExpressionStatement* _tmp150_;
      ValaCCodeIdentifier* _tmp151_ = NULL;
      ValaCCodeIdentifier* _tmp152_;
      ValaCCodeFunctionCall* _tmp153_ = NULL;
      ValaCCodeUnaryExpression* _tmp154_ = NULL;
      ValaCCodeUnaryExpression* _tmp155_;
      ValaCCodeIdentifier* _tmp156_ = NULL;
      ValaCCodeIdentifier* _tmp157_;
      ValaCCodeUnaryExpression* _tmp158_ = NULL;
      ValaCCodeUnaryExpression* _tmp159_;
      ValaCCodeExpressionStatement* _tmp160_ = NULL;
      ValaCCodeExpressionStatement* _tmp161_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (type != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (hash_table_expr != NULL);
      _tmp0_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp1_ + 1);
      _tmp2_ = g_strdup_printf ("_tmp%d_", _tmp1_);
      subiter_name = _tmp2_;
      _tmp3_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp4_ = _tmp3_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp4_ + 1);
      _tmp5_ = g_strdup_printf ("_tmp%d_", _tmp4_);
      entryiter_name = _tmp5_;
      _tmp6_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp7_ = _tmp6_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp7_ + 1);
      _tmp8_ = g_strdup_printf ("_tmp%d_", _tmp7_);
      tableiter_name = _tmp8_;
      _tmp9_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp10_ = _tmp9_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp10_ + 1);
      _tmp11_ = g_strdup_printf ("_tmp%d_", _tmp10_);
      key_name = _tmp11_;
      _tmp12_ = vala_ccode_base_module_get_next_temp_var_id ((ValaCCodeBaseModule*) self);
      _tmp13_ = _tmp12_;
      vala_ccode_base_module_set_next_temp_var_id ((ValaCCodeBaseModule*) self, _tmp13_ + 1);
      _tmp14_ = g_strdup_printf ("_tmp%d_", _tmp13_);
      value_name = _tmp14_;
      _tmp15_ = vala_data_type_get_type_arguments ((ValaDataType*) type);
      type_args = _tmp15_;
      _tmp16_ = vala_collection_get_size ((ValaCollection*) type_args);
      g_assert (_tmp16_ == 2);
      _tmp17_ = vala_list_get (type_args, 0);
      key_type = (ValaDataType*) _tmp17_;
      _tmp18_ = vala_list_get (type_args, 1);
      value_type = (ValaDataType*) _tmp18_;
      _tmp19_ = vala_ccode_identifier_new ("dbus_message_iter_open_container");
      _tmp20_ = _tmp19_;
      _tmp21_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp20_);
      _tmp22_ = _tmp21_;
      _vala_ccode_node_unref0 (_tmp20_);
      iter_call = _tmp22_;
      _tmp23_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp24_ = _tmp23_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp24_);
      _vala_ccode_node_unref0 (_tmp24_);
      _tmp25_ = vala_ccode_identifier_new ("DBUS_TYPE_ARRAY");
      _tmp26_ = _tmp25_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp26_);
      _vala_ccode_node_unref0 (_tmp26_);
      _tmp27_ = vala_dbus_module_get_type_signature (key_type);
      _tmp28_ = _tmp27_;
      _tmp29_ = vala_dbus_module_get_type_signature (value_type);
      _tmp30_ = _tmp29_;
      _tmp31_ = g_strdup_printf ("\"{%s%s}\"", _tmp28_, _tmp30_);
      _tmp32_ = _tmp31_;
      _tmp33_ = vala_ccode_constant_new (_tmp32_);
      _tmp34_ = _tmp33_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp34_);
      _vala_ccode_node_unref0 (_tmp34_);
      _g_free0 (_tmp32_);
      _g_free0 (_tmp30_);
      _g_free0 (_tmp28_);
      _tmp35_ = vala_ccode_identifier_new (subiter_name);
      _tmp36_ = _tmp35_;
      _tmp37_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp36_);
      _tmp38_ = _tmp37_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp38_);
      _vala_ccode_node_unref0 (_tmp38_);
      _vala_ccode_node_unref0 (_tmp36_);
      _tmp39_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp40_ = _tmp39_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp40_);
      _vala_ccode_node_unref0 (_tmp40_);
      _tmp41_ = vala_ccode_declaration_new ("DBusMessageIter");
      _cdecl_ = _tmp41_;
      _tmp42_ = vala_ccode_variable_declarator_new (subiter_name, NULL, NULL);
      _tmp43_ = _tmp42_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp43_);
      _vala_ccode_node_unref0 (_tmp43_);
      _tmp44_ = vala_ccode_variable_declarator_new (entryiter_name, NULL, NULL);
      _tmp45_ = _tmp44_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp45_);
      _vala_ccode_node_unref0 (_tmp45_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp46_ = vala_ccode_declaration_new ("GHashTableIter");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp46_;
      _tmp47_ = vala_ccode_variable_declarator_new (tableiter_name, NULL, NULL);
      _tmp48_ = _tmp47_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp48_);
      _vala_ccode_node_unref0 (_tmp48_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp49_ = vala_ccode_declaration_new ("gpointer");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp49_;
      _tmp50_ = vala_ccode_variable_declarator_new (key_name, NULL, NULL);
      _tmp51_ = _tmp50_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp51_);
      _vala_ccode_node_unref0 (_tmp51_);
      _tmp52_ = vala_ccode_variable_declarator_new (value_name, NULL, NULL);
      _tmp53_ = _tmp52_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp53_);
      _vala_ccode_node_unref0 (_tmp53_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _cdecl_);
      _tmp54_ = vala_ccode_identifier_new ("g_hash_table_iter_init");
      _tmp55_ = _tmp54_;
      _tmp56_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp55_);
      _tmp57_ = _tmp56_;
      _vala_ccode_node_unref0 (_tmp55_);
      iter_init_call = _tmp57_;
      _tmp58_ = vala_ccode_identifier_new (tableiter_name);
      _tmp59_ = _tmp58_;
      _tmp60_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp59_);
      _tmp61_ = _tmp60_;
      vala_ccode_function_call_add_argument (iter_init_call, (ValaCCodeExpression*) _tmp61_);
      _vala_ccode_node_unref0 (_tmp61_);
      _vala_ccode_node_unref0 (_tmp59_);
      vala_ccode_function_call_add_argument (iter_init_call, hash_table_expr);
      _tmp62_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_init_call);
      _tmp63_ = _tmp62_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp63_);
      _vala_ccode_node_unref0 (_tmp63_);
      _tmp64_ = vala_ccode_identifier_new ("g_hash_table_iter_next");
      _tmp65_ = _tmp64_;
      _tmp66_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp65_);
      _tmp67_ = _tmp66_;
      _vala_ccode_node_unref0 (_tmp65_);
      iter_next_call = _tmp67_;
      _tmp68_ = vala_ccode_identifier_new (tableiter_name);
      _tmp69_ = _tmp68_;
      _tmp70_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp69_);
      _tmp71_ = _tmp70_;
      vala_ccode_function_call_add_argument (iter_next_call, (ValaCCodeExpression*) _tmp71_);
      _vala_ccode_node_unref0 (_tmp71_);
      _vala_ccode_node_unref0 (_tmp69_);
      _tmp72_ = vala_ccode_identifier_new (key_name);
      _tmp73_ = _tmp72_;
      _tmp74_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp73_);
      _tmp75_ = _tmp74_;
      vala_ccode_function_call_add_argument (iter_next_call, (ValaCCodeExpression*) _tmp75_);
      _vala_ccode_node_unref0 (_tmp75_);
      _vala_ccode_node_unref0 (_tmp73_);
      _tmp76_ = vala_ccode_identifier_new (value_name);
      _tmp77_ = _tmp76_;
      _tmp78_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp77_);
      _tmp79_ = _tmp78_;
      vala_ccode_function_call_add_argument (iter_next_call, (ValaCCodeExpression*) _tmp79_);
      _vala_ccode_node_unref0 (_tmp79_);
      _vala_ccode_node_unref0 (_tmp77_);
      _tmp80_ = vala_ccode_block_new ();
      cwhileblock = _tmp80_;
      _tmp81_ = vala_ccode_fragment_new ();
      cwhilefragment = _tmp81_;
      vala_ccode_block_add_statement (cwhileblock, (ValaCCodeNode*) cwhilefragment);
      _tmp82_ = vala_ccode_while_statement_new ((ValaCCodeExpression*) iter_next_call, (ValaCCodeStatement*) cwhileblock);
      cwhile = _tmp82_;
      _tmp83_ = vala_data_type_get_cname (key_type);
      _tmp84_ = _tmp83_;
      _tmp85_ = vala_ccode_declaration_new (_tmp84_);
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp85_;
      _g_free0 (_tmp84_);
      _tmp86_ = vala_ccode_variable_declarator_new ("_key", NULL, NULL);
      _tmp87_ = _tmp86_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp87_);
      _vala_ccode_node_unref0 (_tmp87_);
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _cdecl_);
      _tmp88_ = vala_data_type_get_cname (value_type);
      _tmp89_ = _tmp88_;
      _tmp90_ = vala_ccode_declaration_new (_tmp89_);
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp90_;
      _g_free0 (_tmp89_);
      _tmp91_ = vala_ccode_variable_declarator_new ("_value", NULL, NULL);
      _tmp92_ = _tmp91_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp92_);
      _vala_ccode_node_unref0 (_tmp92_);
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _cdecl_);
      _tmp93_ = vala_ccode_identifier_new ("dbus_message_iter_open_container");
      _tmp94_ = _tmp93_;
      _tmp95_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp94_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp95_;
      _vala_ccode_node_unref0 (_tmp94_);
      _tmp96_ = vala_ccode_identifier_new (subiter_name);
      _tmp97_ = _tmp96_;
      _tmp98_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp97_);
      _tmp99_ = _tmp98_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp99_);
      _vala_ccode_node_unref0 (_tmp99_);
      _vala_ccode_node_unref0 (_tmp97_);
      _tmp100_ = vala_ccode_identifier_new ("DBUS_TYPE_DICT_ENTRY");
      _tmp101_ = _tmp100_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp101_);
      _vala_ccode_node_unref0 (_tmp101_);
      _tmp102_ = vala_ccode_constant_new ("NULL");
      _tmp103_ = _tmp102_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp103_);
      _vala_ccode_node_unref0 (_tmp103_);
      _tmp104_ = vala_ccode_identifier_new (entryiter_name);
      _tmp105_ = _tmp104_;
      _tmp106_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp105_);
      _tmp107_ = _tmp106_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp107_);
      _vala_ccode_node_unref0 (_tmp107_);
      _vala_ccode_node_unref0 (_tmp105_);
      _tmp108_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp109_ = _tmp108_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp109_);
      _vala_ccode_node_unref0 (_tmp109_);
      _tmp110_ = vala_ccode_identifier_new ("_key");
      _tmp111_ = _tmp110_;
      _tmp112_ = vala_ccode_identifier_new (key_name);
      _tmp113_ = _tmp112_;
      _tmp114_ = vala_ccode_base_module_convert_from_generic_pointer ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp113_, key_type);
      _tmp115_ = _tmp114_;
      _tmp116_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp111_, _tmp115_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp117_ = _tmp116_;
      _tmp118_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp117_);
      _tmp119_ = _tmp118_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp119_);
      _vala_ccode_node_unref0 (_tmp119_);
      _vala_ccode_node_unref0 (_tmp117_);
      _vala_ccode_node_unref0 (_tmp115_);
      _vala_ccode_node_unref0 (_tmp113_);
      _vala_ccode_node_unref0 (_tmp111_);
      _tmp120_ = vala_ccode_identifier_new ("_value");
      _tmp121_ = _tmp120_;
      _tmp122_ = vala_ccode_identifier_new (value_name);
      _tmp123_ = _tmp122_;
      _tmp124_ = vala_ccode_base_module_convert_from_generic_pointer ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp123_, value_type);
      _tmp125_ = _tmp124_;
      _tmp126_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp121_, _tmp125_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp127_ = _tmp126_;
      _tmp128_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp127_);
      _tmp129_ = _tmp128_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp129_);
      _vala_ccode_node_unref0 (_tmp129_);
      _vala_ccode_node_unref0 (_tmp127_);
      _vala_ccode_node_unref0 (_tmp125_);
      _vala_ccode_node_unref0 (_tmp123_);
      _vala_ccode_node_unref0 (_tmp121_);
      _tmp130_ = vala_ccode_identifier_new (entryiter_name);
      _tmp131_ = _tmp130_;
      _tmp132_ = vala_ccode_identifier_new ("_key");
      _tmp133_ = _tmp132_;
      vala_dbus_module_write_expression (self, cwhilefragment, key_type, (ValaCCodeExpression*) _tmp131_, (ValaCCodeExpression*) _tmp133_);
      _vala_ccode_node_unref0 (_tmp133_);
      _vala_ccode_node_unref0 (_tmp131_);
      _tmp134_ = vala_ccode_identifier_new (entryiter_name);
      _tmp135_ = _tmp134_;
      _tmp136_ = vala_ccode_identifier_new ("_value");
      _tmp137_ = _tmp136_;
      vala_dbus_module_write_expression (self, cwhilefragment, value_type, (ValaCCodeExpression*) _tmp135_, (ValaCCodeExpression*) _tmp137_);
      _vala_ccode_node_unref0 (_tmp137_);
      _vala_ccode_node_unref0 (_tmp135_);
      _tmp138_ = vala_ccode_identifier_new ("dbus_message_iter_close_container");
      _tmp139_ = _tmp138_;
      _tmp140_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp139_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp140_;
      _vala_ccode_node_unref0 (_tmp139_);
      _tmp141_ = vala_ccode_identifier_new (subiter_name);
      _tmp142_ = _tmp141_;
      _tmp143_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp142_);
      _tmp144_ = _tmp143_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp144_);
      _vala_ccode_node_unref0 (_tmp144_);
      _vala_ccode_node_unref0 (_tmp142_);
      _tmp145_ = vala_ccode_identifier_new (entryiter_name);
      _tmp146_ = _tmp145_;
      _tmp147_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp146_);
      _tmp148_ = _tmp147_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp148_);
      _vala_ccode_node_unref0 (_tmp148_);
      _vala_ccode_node_unref0 (_tmp146_);
      _tmp149_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp150_ = _tmp149_;
      vala_ccode_fragment_append (cwhilefragment, (ValaCCodeNode*) _tmp150_);
      _vala_ccode_node_unref0 (_tmp150_);
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) cwhile);
      _tmp151_ = vala_ccode_identifier_new ("dbus_message_iter_close_container");
      _tmp152_ = _tmp151_;
      _tmp153_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp152_);
      _vala_ccode_node_unref0 (iter_call);
      iter_call = _tmp153_;
      _vala_ccode_node_unref0 (_tmp152_);
      _tmp154_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, iter_expr);
      _tmp155_ = _tmp154_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp155_);
      _vala_ccode_node_unref0 (_tmp155_);
      _tmp156_ = vala_ccode_identifier_new (subiter_name);
      _tmp157_ = _tmp156_;
      _tmp158_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp157_);
      _tmp159_ = _tmp158_;
      vala_ccode_function_call_add_argument (iter_call, (ValaCCodeExpression*) _tmp159_);
      _vala_ccode_node_unref0 (_tmp159_);
      _vala_ccode_node_unref0 (_tmp157_);
      _tmp160_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) iter_call);
      _tmp161_ = _tmp160_;
      vala_ccode_fragment_append (fragment, (ValaCCodeNode*) _tmp161_);
      _vala_ccode_node_unref0 (_tmp161_);
      _vala_ccode_node_unref0 (cwhile);
      _vala_ccode_node_unref0 (cwhilefragment);
      _vala_ccode_node_unref0 (cwhileblock);
      _vala_ccode_node_unref0 (iter_next_call);
      _vala_ccode_node_unref0 (iter_init_call);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (iter_call);
      _vala_code_node_unref0 (value_type);
      _vala_code_node_unref0 (key_type);
      _vala_iterable_unref0 (type_args);
      _g_free0 (value_name);
      _g_free0 (key_name);
      _g_free0 (tableiter_name);
      _g_free0 (entryiter_name);
      _g_free0 (subiter_name);
}


void vala_dbus_module_write_expression (ValaDBusModule* self, ValaCCodeFragment* fragment, ValaDataType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* expr) {
      ValaDBusModuleBasicTypeInfo basic_type = {0};
      ValaTypeSymbol* _tmp0_ = NULL;
      gboolean _tmp1_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (fragment != NULL);
      g_return_if_fail (type != NULL);
      g_return_if_fail (iter_expr != NULL);
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_data_type_get_data_type (type);
      _tmp1_ = vala_dbus_module_is_string_marshalled_enum (_tmp0_);
      if (_tmp1_) {
            ValaDBusModuleBasicTypeInfo _tmp2_ = {0};
            ValaDataType* _tmp3_;
            ValaCCodeExpression* _tmp4_ = NULL;
            ValaCCodeExpression* _result_;
            vala_dbus_module_get_basic_type_info (self, "s", &_tmp2_);
            basic_type = _tmp2_;
            _tmp3_ = type;
            _tmp4_ = vala_dbus_module_generate_enum_value_to_string (self, fragment, VALA_IS_ENUM_VALUE_TYPE (_tmp3_) ? ((ValaEnumValueType*) _tmp3_) : NULL, expr);
            _result_ = _tmp4_;
            vala_dbus_module_write_basic (self, fragment, &basic_type, iter_expr, _result_);
            _vala_ccode_node_unref0 (_result_);
      } else {
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            ValaDBusModuleBasicTypeInfo _tmp7_ = {0};
            gboolean _tmp8_;
            gboolean _tmp9_;
            _tmp5_ = vala_dbus_module_get_type_signature (type);
            _tmp6_ = _tmp5_;
            _tmp8_ = vala_dbus_module_get_basic_type_info (self, _tmp6_, &_tmp7_);
            basic_type = _tmp7_;
            _tmp9_ = _tmp8_;
            _g_free0 (_tmp6_);
            if (_tmp9_) {
                  vala_dbus_module_write_basic (self, fragment, &basic_type, iter_expr, expr);
            } else {
                  if (VALA_IS_ARRAY_TYPE (type)) {
                        vala_dbus_module_write_array (self, fragment, VALA_ARRAY_TYPE (type), iter_expr, expr);
                  } else {
                        ValaTypeSymbol* _tmp10_ = NULL;
                        _tmp10_ = vala_data_type_get_data_type (type);
                        if (VALA_IS_STRUCT (_tmp10_)) {
                              ValaCCodeExpression* _tmp11_;
                              ValaCCodeExpression* st_expr;
                              gboolean _tmp12_;
                              ValaTypeSymbol* _tmp14_ = NULL;
                              gchar* _tmp15_ = NULL;
                              gchar* _tmp16_;
                              gboolean _tmp17_;
                              _tmp11_ = _vala_ccode_node_ref0 (expr);
                              st_expr = _tmp11_;
                              _tmp12_ = vala_data_type_get_nullable (type);
                              if (_tmp12_) {
                                    ValaCCodeUnaryExpression* _tmp13_ = NULL;
                                    _tmp13_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, st_expr);
                                    _vala_ccode_node_unref0 (st_expr);
                                    st_expr = (ValaCCodeExpression*) _tmp13_;
                              }
                              _tmp14_ = vala_data_type_get_data_type (type);
                              _tmp15_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp14_);
                              _tmp16_ = _tmp15_;
                              _tmp17_ = g_strcmp0 (_tmp16_, "GLib.Value") == 0;
                              _g_free0 (_tmp16_);
                              if (_tmp17_) {
                                    vala_dbus_module_write_value (self, fragment, iter_expr, st_expr);
                              } else {
                                    ValaTypeSymbol* _tmp18_ = NULL;
                                    _tmp18_ = vala_data_type_get_data_type (type);
                                    vala_dbus_module_write_struct (self, fragment, VALA_STRUCT (_tmp18_), iter_expr, st_expr);
                              }
                              _vala_ccode_node_unref0 (st_expr);
                        } else {
                              if (VALA_IS_OBJECT_TYPE (type)) {
                                    ValaTypeSymbol* _tmp19_ = NULL;
                                    gchar* _tmp20_ = NULL;
                                    gchar* _tmp21_;
                                    gboolean _tmp22_;
                                    _tmp19_ = vala_data_type_get_data_type (type);
                                    _tmp20_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp19_);
                                    _tmp21_ = _tmp20_;
                                    _tmp22_ = g_strcmp0 (_tmp21_, "GLib.HashTable") == 0;
                                    _g_free0 (_tmp21_);
                                    if (_tmp22_) {
                                          vala_dbus_module_write_hash_table (self, fragment, VALA_OBJECT_TYPE (type), iter_expr, expr);
                                    }
                              } else {
                                    ValaSourceReference* _tmp23_ = NULL;
                                    gchar* _tmp24_ = NULL;
                                    gchar* _tmp25_;
                                    gchar* _tmp26_ = NULL;
                                    gchar* _tmp27_;
                                    _tmp23_ = vala_code_node_get_source_reference ((ValaCodeNode*) type);
                                    _tmp24_ = vala_code_node_to_string ((ValaCodeNode*) type);
                                    _tmp25_ = _tmp24_;
                                    _tmp26_ = g_strdup_printf ("D-Bus serialization of type `%s' is not supported", _tmp25_);
                                    _tmp27_ = _tmp26_;
                                    vala_report_error (_tmp23_, _tmp27_);
                                    _g_free0 (_tmp27_);
                                    _g_free0 (_tmp25_);
                              }
                        }
                  }
            }
      }
}


void vala_dbus_module_add_dbus_helpers (ValaDBusModule* self) {
      gboolean _tmp0_;
      ValaCCodeStruct* _tmp1_ = NULL;
      ValaCCodeStruct* dbusvtable;
      ValaCCodeVariableDeclarator* _tmp2_ = NULL;
      ValaCCodeVariableDeclarator* _tmp3_;
      ValaCCodeTypeDefinition* _tmp4_ = NULL;
      ValaCCodeTypeDefinition* _tmp5_;
      ValaCCodeFunction* _tmp6_ = NULL;
      ValaCCodeFunction* cfunc;
      ValaCCodeParameter* _tmp7_ = NULL;
      ValaCCodeParameter* _tmp8_;
      ValaCCodeParameter* _tmp9_ = NULL;
      ValaCCodeParameter* _tmp10_;
      ValaCCodeParameter* _tmp11_ = NULL;
      ValaCCodeParameter* _tmp12_;
      ValaCCodeModifiers _tmp13_;
      ValaCCodeBlock* _tmp14_ = NULL;
      ValaCCodeBlock* block;
      ValaCCodeDeclaration* _tmp15_ = NULL;
      ValaCCodeDeclaration* _cdecl_;
      ValaCCodeVariableDeclarator* _tmp16_ = NULL;
      ValaCCodeVariableDeclarator* _tmp17_;
      ValaCCodeIdentifier* _tmp18_ = NULL;
      ValaCCodeIdentifier* _tmp19_;
      ValaCCodeFunctionCall* _tmp20_ = NULL;
      ValaCCodeFunctionCall* _tmp21_;
      ValaCCodeFunctionCall* quark;
      ValaCCodeConstant* _tmp22_ = NULL;
      ValaCCodeConstant* _tmp23_;
      ValaCCodeIdentifier* _tmp24_ = NULL;
      ValaCCodeIdentifier* _tmp25_;
      ValaCCodeFunctionCall* _tmp26_ = NULL;
      ValaCCodeFunctionCall* _tmp27_;
      ValaCCodeFunctionCall* get_qdata;
      ValaCCodeIdentifier* _tmp28_ = NULL;
      ValaCCodeIdentifier* _tmp29_;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeAssignment* _tmp32_ = NULL;
      ValaCCodeAssignment* _tmp33_;
      ValaCCodeExpressionStatement* _tmp34_ = NULL;
      ValaCCodeExpressionStatement* _tmp35_;
      ValaCCodeIdentifier* _tmp36_ = NULL;
      ValaCCodeIdentifier* _tmp37_;
      ValaCCodeMemberAccess* _tmp38_ = NULL;
      ValaCCodeMemberAccess* _tmp39_;
      ValaCCodeFunctionCall* _tmp40_ = NULL;
      ValaCCodeFunctionCall* _tmp41_;
      ValaCCodeFunctionCall* cregister;
      ValaCCodeIdentifier* _tmp42_ = NULL;
      ValaCCodeIdentifier* _tmp43_;
      ValaCCodeIdentifier* _tmp44_ = NULL;
      ValaCCodeIdentifier* _tmp45_;
      ValaCCodeIdentifier* _tmp46_ = NULL;
      ValaCCodeIdentifier* _tmp47_;
      ValaCCodeBlock* _tmp48_ = NULL;
      ValaCCodeBlock* ifblock;
      ValaCCodeExpressionStatement* _tmp49_ = NULL;
      ValaCCodeExpressionStatement* _tmp50_;
      ValaCCodeBlock* _tmp51_ = NULL;
      ValaCCodeBlock* elseblock;
      ValaCCodeIdentifier* _tmp52_ = NULL;
      ValaCCodeIdentifier* _tmp53_;
      ValaCCodeFunctionCall* _tmp54_ = NULL;
      ValaCCodeFunctionCall* _tmp55_;
      ValaCCodeFunctionCall* warn;
      ValaCCodeConstant* _tmp56_ = NULL;
      ValaCCodeConstant* _tmp57_;
      ValaCCodeExpressionStatement* _tmp58_ = NULL;
      ValaCCodeExpressionStatement* _tmp59_;
      ValaCCodeIdentifier* _tmp60_ = NULL;
      ValaCCodeIdentifier* _tmp61_;
      ValaCCodeIfStatement* _tmp62_ = NULL;
      ValaCCodeIfStatement* _tmp63_;
      ValaCCodeFunction* _tmp64_ = NULL;
      ValaCCodeParameter* _tmp65_ = NULL;
      ValaCCodeParameter* _tmp66_;
      ValaCCodeParameter* _tmp67_ = NULL;
      ValaCCodeParameter* _tmp68_;
      ValaCCodeModifiers _tmp69_;
      ValaCCodeBlock* _tmp70_ = NULL;
      ValaCCodeDeclaration* _tmp71_ = NULL;
      ValaCCodeVariableDeclarator* _tmp72_ = NULL;
      ValaCCodeVariableDeclarator* _tmp73_;
      ValaCCodeIdentifier* _tmp74_ = NULL;
      ValaCCodeIdentifier* _tmp75_;
      ValaCCodeFunctionCall* _tmp76_ = NULL;
      ValaCCodeFunctionCall* _tmp77_;
      ValaCCodeFunctionCall* path;
      ValaCCodeIdentifier* _tmp78_ = NULL;
      ValaCCodeIdentifier* _tmp79_;
      ValaCCodeCastExpression* _tmp80_ = NULL;
      ValaCCodeCastExpression* _tmp81_;
      ValaCCodeConstant* _tmp82_ = NULL;
      ValaCCodeConstant* _tmp83_;
      ValaCCodeIdentifier* _tmp84_ = NULL;
      ValaCCodeIdentifier* _tmp85_;
      ValaCCodeAssignment* _tmp86_ = NULL;
      ValaCCodeAssignment* _tmp87_;
      ValaCCodeExpressionStatement* _tmp88_ = NULL;
      ValaCCodeExpressionStatement* _tmp89_;
      ValaCCodeIdentifier* _tmp90_ = NULL;
      ValaCCodeIdentifier* _tmp91_;
      ValaCCodeFunctionCall* _tmp92_ = NULL;
      ValaCCodeFunctionCall* _tmp93_;
      ValaCCodeFunctionCall* unregister_call;
      ValaCCodeIdentifier* _tmp94_ = NULL;
      ValaCCodeIdentifier* _tmp95_;
      ValaCCodeIdentifier* _tmp96_ = NULL;
      ValaCCodeIdentifier* _tmp97_;
      ValaCCodeExpressionStatement* _tmp98_ = NULL;
      ValaCCodeExpressionStatement* _tmp99_;
      ValaCCodeIdentifier* _tmp100_ = NULL;
      ValaCCodeIdentifier* _tmp101_;
      ValaCCodeFunctionCall* _tmp102_ = NULL;
      ValaCCodeFunctionCall* _tmp103_;
      ValaCCodeFunctionCall* path_free;
      ValaCCodeIdentifier* _tmp104_ = NULL;
      ValaCCodeIdentifier* _tmp105_;
      ValaCCodeExpressionStatement* _tmp106_ = NULL;
      ValaCCodeExpressionStatement* _tmp107_;
      g_return_if_fail (self != NULL);
      _tmp0_ = vala_ccode_file_add_declaration (((ValaCCodeBaseModule*) self)->cfile, "_vala_dbus_register_object");
      if (_tmp0_) {
            return;
      }
      vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "dbus/dbus.h", FALSE);
      vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "dbus/dbus-glib.h", FALSE);
      vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "dbus/dbus-glib-lowlevel.h", FALSE);
      _tmp1_ = vala_ccode_struct_new ("_DBusObjectVTable");
      dbusvtable = _tmp1_;
      vala_ccode_struct_add_field (dbusvtable, "void", "(*register_object) (DBusConnection*, const char*, void*)", NULL);
      vala_ccode_file_add_type_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) dbusvtable);
      _tmp2_ = vala_ccode_variable_declarator_new ("_DBusObjectVTable", NULL, NULL);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_type_definition_new ("struct _DBusObjectVTable", (ValaCCodeDeclarator*) _tmp3_);
      _tmp5_ = _tmp4_;
      vala_ccode_file_add_type_declaration (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _vala_ccode_node_unref0 (_tmp3_);
      _tmp6_ = vala_ccode_function_new ("_vala_dbus_register_object", "void");
      cfunc = _tmp6_;
      _tmp7_ = vala_ccode_parameter_new ("connection", "DBusConnection*");
      _tmp8_ = _tmp7_;
      vala_ccode_function_add_parameter (cfunc, _tmp8_);
      _vala_ccode_node_unref0 (_tmp8_);
      _tmp9_ = vala_ccode_parameter_new ("path", "const char*");
      _tmp10_ = _tmp9_;
      vala_ccode_function_add_parameter (cfunc, _tmp10_);
      _vala_ccode_node_unref0 (_tmp10_);
      _tmp11_ = vala_ccode_parameter_new ("object", "void*");
      _tmp12_ = _tmp11_;
      vala_ccode_function_add_parameter (cfunc, _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      _tmp13_ = vala_ccode_function_get_modifiers (cfunc);
      vala_ccode_function_set_modifiers (cfunc, _tmp13_ | VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, cfunc);
      _tmp14_ = vala_ccode_block_new ();
      block = _tmp14_;
      vala_ccode_function_set_block (cfunc, block);
      _tmp15_ = vala_ccode_declaration_new ("const _DBusObjectVTable *");
      _cdecl_ = _tmp15_;
      _tmp16_ = vala_ccode_variable_declarator_new ("vtable", NULL, NULL);
      _tmp17_ = _tmp16_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp17_);
      _vala_ccode_node_unref0 (_tmp17_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
      _tmp18_ = vala_ccode_identifier_new ("g_quark_from_static_string");
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_);
      _tmp21_ = _tmp20_;
      _vala_ccode_node_unref0 (_tmp19_);
      quark = _tmp21_;
      _tmp22_ = vala_ccode_constant_new ("\"DBusObjectVTable\"");
      _tmp23_ = _tmp22_;
      vala_ccode_function_call_add_argument (quark, (ValaCCodeExpression*) _tmp23_);
      _vala_ccode_node_unref0 (_tmp23_);
      _tmp24_ = vala_ccode_identifier_new ("g_type_get_qdata");
      _tmp25_ = _tmp24_;
      _tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
      _tmp27_ = _tmp26_;
      _vala_ccode_node_unref0 (_tmp25_);
      get_qdata = _tmp27_;
      _tmp28_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE (object)");
      _tmp29_ = _tmp28_;
      vala_ccode_function_call_add_argument (get_qdata, (ValaCCodeExpression*) _tmp29_);
      _vala_ccode_node_unref0 (_tmp29_);
      vala_ccode_function_call_add_argument (get_qdata, (ValaCCodeExpression*) quark);
      _tmp30_ = vala_ccode_identifier_new ("vtable");
      _tmp31_ = _tmp30_;
      _tmp32_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp31_, (ValaCCodeExpression*) get_qdata, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp33_ = _tmp32_;
      _tmp34_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp33_);
      _tmp35_ = _tmp34_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp35_);
      _vala_ccode_node_unref0 (_tmp35_);
      _vala_ccode_node_unref0 (_tmp33_);
      _vala_ccode_node_unref0 (_tmp31_);
      _tmp36_ = vala_ccode_identifier_new ("vtable");
      _tmp37_ = _tmp36_;
      _tmp38_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp37_, "register_object");
      _tmp39_ = _tmp38_;
      _tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
      _tmp41_ = _tmp40_;
      _vala_ccode_node_unref0 (_tmp39_);
      _vala_ccode_node_unref0 (_tmp37_);
      cregister = _tmp41_;
      _tmp42_ = vala_ccode_identifier_new ("connection");
      _tmp43_ = _tmp42_;
      vala_ccode_function_call_add_argument (cregister, (ValaCCodeExpression*) _tmp43_);
      _vala_ccode_node_unref0 (_tmp43_);
      _tmp44_ = vala_ccode_identifier_new ("path");
      _tmp45_ = _tmp44_;
      vala_ccode_function_call_add_argument (cregister, (ValaCCodeExpression*) _tmp45_);
      _vala_ccode_node_unref0 (_tmp45_);
      _tmp46_ = vala_ccode_identifier_new ("object");
      _tmp47_ = _tmp46_;
      vala_ccode_function_call_add_argument (cregister, (ValaCCodeExpression*) _tmp47_);
      _vala_ccode_node_unref0 (_tmp47_);
      _tmp48_ = vala_ccode_block_new ();
      ifblock = _tmp48_;
      _tmp49_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) cregister);
      _tmp50_ = _tmp49_;
      vala_ccode_block_add_statement (ifblock, (ValaCCodeNode*) _tmp50_);
      _vala_ccode_node_unref0 (_tmp50_);
      _tmp51_ = vala_ccode_block_new ();
      elseblock = _tmp51_;
      _tmp52_ = vala_ccode_identifier_new ("g_warning");
      _tmp53_ = _tmp52_;
      _tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
      _tmp55_ = _tmp54_;
      _vala_ccode_node_unref0 (_tmp53_);
      warn = _tmp55_;
      _tmp56_ = vala_ccode_constant_new ("\"Object does not implement any D-Bus interface\"");
      _tmp57_ = _tmp56_;
      vala_ccode_function_call_add_argument (warn, (ValaCCodeExpression*) _tmp57_);
      _vala_ccode_node_unref0 (_tmp57_);
      _tmp58_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) warn);
      _tmp59_ = _tmp58_;
      vala_ccode_block_add_statement (elseblock, (ValaCCodeNode*) _tmp59_);
      _vala_ccode_node_unref0 (_tmp59_);
      _tmp60_ = vala_ccode_identifier_new ("vtable");
      _tmp61_ = _tmp60_;
      _tmp62_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp61_, (ValaCCodeStatement*) ifblock, (ValaCCodeStatement*) elseblock);
      _tmp63_ = _tmp62_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp63_);
      _vala_ccode_node_unref0 (_tmp63_);
      _vala_ccode_node_unref0 (_tmp61_);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, cfunc);
      _tmp64_ = vala_ccode_function_new ("_vala_dbus_unregister_object", "void");
      _vala_ccode_node_unref0 (cfunc);
      cfunc = _tmp64_;
      _tmp65_ = vala_ccode_parameter_new ("connection", "gpointer");
      _tmp66_ = _tmp65_;
      vala_ccode_function_add_parameter (cfunc, _tmp66_);
      _vala_ccode_node_unref0 (_tmp66_);
      _tmp67_ = vala_ccode_parameter_new ("object", "GObject*");
      _tmp68_ = _tmp67_;
      vala_ccode_function_add_parameter (cfunc, _tmp68_);
      _vala_ccode_node_unref0 (_tmp68_);
      _tmp69_ = vala_ccode_function_get_modifiers (cfunc);
      vala_ccode_function_set_modifiers (cfunc, _tmp69_ | VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, cfunc);
      _tmp70_ = vala_ccode_block_new ();
      _vala_ccode_node_unref0 (block);
      block = _tmp70_;
      vala_ccode_function_set_block (cfunc, block);
      _tmp71_ = vala_ccode_declaration_new ("char*");
      _vala_ccode_node_unref0 (_cdecl_);
      _cdecl_ = _tmp71_;
      _tmp72_ = vala_ccode_variable_declarator_new ("path", NULL, NULL);
      _tmp73_ = _tmp72_;
      vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp73_);
      _vala_ccode_node_unref0 (_tmp73_);
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _cdecl_);
      _tmp74_ = vala_ccode_identifier_new ("g_object_steal_data");
      _tmp75_ = _tmp74_;
      _tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
      _tmp77_ = _tmp76_;
      _vala_ccode_node_unref0 (_tmp75_);
      path = _tmp77_;
      _tmp78_ = vala_ccode_identifier_new ("object");
      _tmp79_ = _tmp78_;
      _tmp80_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp79_, "GObject*");
      _tmp81_ = _tmp80_;
      vala_ccode_function_call_add_argument (path, (ValaCCodeExpression*) _tmp81_);
      _vala_ccode_node_unref0 (_tmp81_);
      _vala_ccode_node_unref0 (_tmp79_);
      _tmp82_ = vala_ccode_constant_new ("\"dbus_object_path\"");
      _tmp83_ = _tmp82_;
      vala_ccode_function_call_add_argument (path, (ValaCCodeExpression*) _tmp83_);
      _vala_ccode_node_unref0 (_tmp83_);
      _tmp84_ = vala_ccode_identifier_new ("path");
      _tmp85_ = _tmp84_;
      _tmp86_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp85_, (ValaCCodeExpression*) path, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp87_ = _tmp86_;
      _tmp88_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp87_);
      _tmp89_ = _tmp88_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp89_);
      _vala_ccode_node_unref0 (_tmp89_);
      _vala_ccode_node_unref0 (_tmp87_);
      _vala_ccode_node_unref0 (_tmp85_);
      _tmp90_ = vala_ccode_identifier_new ("dbus_connection_unregister_object_path");
      _tmp91_ = _tmp90_;
      _tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
      _tmp93_ = _tmp92_;
      _vala_ccode_node_unref0 (_tmp91_);
      unregister_call = _tmp93_;
      _tmp94_ = vala_ccode_identifier_new ("connection");
      _tmp95_ = _tmp94_;
      vala_ccode_function_call_add_argument (unregister_call, (ValaCCodeExpression*) _tmp95_);
      _vala_ccode_node_unref0 (_tmp95_);
      _tmp96_ = vala_ccode_identifier_new ("path");
      _tmp97_ = _tmp96_;
      vala_ccode_function_call_add_argument (unregister_call, (ValaCCodeExpression*) _tmp97_);
      _vala_ccode_node_unref0 (_tmp97_);
      _tmp98_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) unregister_call);
      _tmp99_ = _tmp98_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp99_);
      _vala_ccode_node_unref0 (_tmp99_);
      _tmp100_ = vala_ccode_identifier_new ("g_free");
      _tmp101_ = _tmp100_;
      _tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
      _tmp103_ = _tmp102_;
      _vala_ccode_node_unref0 (_tmp101_);
      path_free = _tmp103_;
      _tmp104_ = vala_ccode_identifier_new ("path");
      _tmp105_ = _tmp104_;
      vala_ccode_function_call_add_argument (path_free, (ValaCCodeExpression*) _tmp105_);
      _vala_ccode_node_unref0 (_tmp105_);
      _tmp106_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) path_free);
      _tmp107_ = _tmp106_;
      vala_ccode_block_add_statement (block, (ValaCCodeNode*) _tmp107_);
      _vala_ccode_node_unref0 (_tmp107_);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, cfunc);
      _vala_ccode_node_unref0 (path_free);
      _vala_ccode_node_unref0 (unregister_call);
      _vala_ccode_node_unref0 (path);
      _vala_ccode_node_unref0 (warn);
      _vala_ccode_node_unref0 (elseblock);
      _vala_ccode_node_unref0 (ifblock);
      _vala_ccode_node_unref0 (cregister);
      _vala_ccode_node_unref0 (get_qdata);
      _vala_ccode_node_unref0 (quark);
      _vala_ccode_node_unref0 (_cdecl_);
      _vala_ccode_node_unref0 (block);
      _vala_ccode_node_unref0 (cfunc);
      _vala_ccode_node_unref0 (dbusvtable);
}


ValaDBusModule* vala_dbus_module_construct (GType object_type) {
      ValaDBusModule* self = NULL;
      self = (ValaDBusModule*) vala_gasync_module_construct (object_type);
      return self;
}


ValaDBusModule* vala_dbus_module_new (void) {
      return vala_dbus_module_construct (VALA_TYPE_DBUS_MODULE);
}


static ValaDBusModuleBasicTypeInfo* vala_dbus_module_basic_type_info_dup (const ValaDBusModuleBasicTypeInfo* self) {
      ValaDBusModuleBasicTypeInfo* dup;
      dup = g_new0 (ValaDBusModuleBasicTypeInfo, 1);
      memcpy (dup, self, sizeof (ValaDBusModuleBasicTypeInfo));
      return dup;
}


static void vala_dbus_module_basic_type_info_free (ValaDBusModuleBasicTypeInfo* self) {
      g_free (self);
}


static GType vala_dbus_module_basic_type_info_get_type (void) {
      static volatile gsize vala_dbus_module_basic_type_info_type_id__volatile = 0;
      if (g_once_init_enter (&vala_dbus_module_basic_type_info_type_id__volatile)) {
            GType vala_dbus_module_basic_type_info_type_id;
            vala_dbus_module_basic_type_info_type_id = g_boxed_type_register_static ("ValaDBusModuleBasicTypeInfo", (GBoxedCopyFunc) vala_dbus_module_basic_type_info_dup, (GBoxedFreeFunc) vala_dbus_module_basic_type_info_free);
            g_once_init_leave (&vala_dbus_module_basic_type_info_type_id__volatile, vala_dbus_module_basic_type_info_type_id);
      }
      return vala_dbus_module_basic_type_info_type_id__volatile;
}


static void vala_dbus_module_class_init (ValaDBusModuleClass * klass) {
      vala_dbus_module_parent_class = g_type_class_peek_parent (klass);
      VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_dbus_module_real_visit_enum;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_enum_declaration = vala_dbus_module_real_generate_enum_declaration;
}


static void vala_dbus_module_instance_init (ValaDBusModule * self) {
}


GType vala_dbus_module_get_type (void) {
      static volatile gsize vala_dbus_module_type_id__volatile = 0;
      if (g_once_init_enter (&vala_dbus_module_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaDBusModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_dbus_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaDBusModule), 0, (GInstanceInitFunc) vala_dbus_module_instance_init, NULL };
            GType vala_dbus_module_type_id;
            vala_dbus_module_type_id = g_type_register_static (VALA_TYPE_GASYNC_MODULE, "ValaDBusModule", &g_define_type_info, 0);
            g_once_init_leave (&vala_dbus_module_type_id__volatile, vala_dbus_module_type_id);
      }
      return vala_dbus_module_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index