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

valagtypemodule.c

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

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

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

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

#include <glib.h>
#include <glib-object.h>
#include <vala.h>
#include <valaccode.h>
#include <valagee.h>
#include <stdlib.h>
#include <string.h>
#include <float.h>
#include <math.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 _g_free0(var) (var = (g_free (var), NULL))
#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))

#define VALA_TYPE_TYPEREGISTER_FUNCTION (vala_typeregister_function_get_type ())
#define VALA_TYPEREGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunction))
#define VALA_TYPEREGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunctionClass))
#define VALA_IS_TYPEREGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPEREGISTER_FUNCTION))
#define VALA_IS_TYPEREGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPEREGISTER_FUNCTION))
#define VALA_TYPEREGISTER_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunctionClass))

typedef struct _ValaTypeRegisterFunction ValaTypeRegisterFunction;
typedef struct _ValaTypeRegisterFunctionClass ValaTypeRegisterFunctionClass;

#define VALA_TYPE_CLASS_REGISTER_FUNCTION (vala_class_register_function_get_type ())
#define VALA_CLASS_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CLASS_REGISTER_FUNCTION, ValaClassRegisterFunction))
#define VALA_CLASS_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CLASS_REGISTER_FUNCTION, ValaClassRegisterFunctionClass))
#define VALA_IS_CLASS_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CLASS_REGISTER_FUNCTION))
#define VALA_IS_CLASS_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CLASS_REGISTER_FUNCTION))
#define VALA_CLASS_REGISTER_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CLASS_REGISTER_FUNCTION, ValaClassRegisterFunctionClass))

typedef struct _ValaClassRegisterFunction ValaClassRegisterFunction;
typedef struct _ValaClassRegisterFunctionClass ValaClassRegisterFunctionClass;
#define _vala_typeregister_function_unref0(var) ((var == NULL) ? NULL : (var = (vala_typeregister_function_unref (var), NULL)))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
#define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
typedef struct _ValaCCodeBaseModuleEmitContextPrivate ValaCCodeBaseModuleEmitContextPrivate;
#define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))

#define VALA_TYPE_INTERFACE_REGISTER_FUNCTION (vala_interface_register_function_get_type ())
#define VALA_INTERFACE_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INTERFACE_REGISTER_FUNCTION, ValaInterfaceRegisterFunction))
#define VALA_INTERFACE_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INTERFACE_REGISTER_FUNCTION, ValaInterfaceRegisterFunctionClass))
#define VALA_IS_INTERFACE_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INTERFACE_REGISTER_FUNCTION))
#define VALA_IS_INTERFACE_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INTERFACE_REGISTER_FUNCTION))
#define VALA_INTERFACE_REGISTER_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INTERFACE_REGISTER_FUNCTION, ValaInterfaceRegisterFunctionClass))

typedef struct _ValaInterfaceRegisterFunction ValaInterfaceRegisterFunction;
typedef struct _ValaInterfaceRegisterFunctionClass ValaInterfaceRegisterFunctionClass;

#define VALA_TYPE_STRUCT_REGISTER_FUNCTION (vala_struct_register_function_get_type ())
#define VALA_STRUCT_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRUCT_REGISTER_FUNCTION, ValaStructRegisterFunction))
#define VALA_STRUCT_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRUCT_REGISTER_FUNCTION, ValaStructRegisterFunctionClass))
#define VALA_IS_STRUCT_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRUCT_REGISTER_FUNCTION))
#define VALA_IS_STRUCT_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRUCT_REGISTER_FUNCTION))
#define VALA_STRUCT_REGISTER_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRUCT_REGISTER_FUNCTION, ValaStructRegisterFunctionClass))

typedef struct _ValaStructRegisterFunction ValaStructRegisterFunction;
typedef struct _ValaStructRegisterFunctionClass ValaStructRegisterFunctionClass;

#define VALA_TYPE_ENUM_REGISTER_FUNCTION (vala_enum_register_function_get_type ())
#define VALA_ENUM_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM_REGISTER_FUNCTION, ValaEnumRegisterFunction))
#define VALA_ENUM_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM_REGISTER_FUNCTION, ValaEnumRegisterFunctionClass))
#define VALA_IS_ENUM_REGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ENUM_REGISTER_FUNCTION))
#define VALA_IS_ENUM_REGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ENUM_REGISTER_FUNCTION))
#define VALA_ENUM_REGISTER_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ENUM_REGISTER_FUNCTION, ValaEnumRegisterFunctionClass))

typedef struct _ValaEnumRegisterFunction ValaEnumRegisterFunction;
typedef struct _ValaEnumRegisterFunctionClass ValaEnumRegisterFunctionClass;

#define VALA_TYPE_CTYPE (vala_ctype_get_type ())
#define VALA_CTYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CTYPE, ValaCType))
#define VALA_CTYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CTYPE, ValaCTypeClass))
#define VALA_IS_CTYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CTYPE))
#define VALA_IS_CTYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CTYPE))
#define VALA_CTYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CTYPE, ValaCTypeClass))

typedef struct _ValaCType ValaCType;
typedef struct _ValaCTypeClass ValaCTypeClass;

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;
      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_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
      void (*append_scope_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, ValaCodeNode* stop_at);
      ValaTargetValue* (*get_local_cvalue) (ValaCCodeBaseModule* self, ValaLocalVariable* local);
      ValaTargetValue* (*get_parameter_cvalue) (ValaCCodeBaseModule* self, ValaParameter* param);
      ValaTargetValue* (*get_field_cvalue) (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
      ValaTargetValue* (*load_this_parameter) (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
      void (*store_value) (ValaCCodeBaseModule* self, ValaTargetValue* lvalue, ValaTargetValue* value);
      gchar* (*get_delegate_target_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
      ValaCCodeExpression* (*get_delegate_target_cexpression) (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
      ValaCCodeExpression* (*get_delegate_target_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
      ValaCCodeExpression* (*get_delegate_target_destroy_notify_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
      gchar* (*get_delegate_target_destroy_notify_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
      ValaTargetValue* (*copy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCodeNode* node);
      void (*generate_class_declaration) (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
      void (*generate_interface_declaration) (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
      void (*generate_method_declaration) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
      void (*generate_error_domain_declaration) (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
      ValaCCodeExpression* (*deserialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
      ValaCCodeExpression* (*serialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr);
      ValaCCodeExpression* (*get_implicit_cast_expression) (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaCodeNode* node);
      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);
      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 _ValaCCodeBaseModuleEmitContext {
      GTypeInstance parent_instance;
      volatile int ref_count;
      ValaCCodeBaseModuleEmitContextPrivate * priv;
      ValaSymbol* current_symbol;
      ValaArrayList* symbol_stack;
      ValaTryStatement* current_try;
      ValaCatchClause* current_catch;
      ValaCCodeFunction* ccode;
      ValaArrayList* ccode_stack;
      ValaArrayList* temp_ref_vars;
      gint next_temp_var_id;
      gboolean current_method_inner_error;
      gboolean current_method_return;
      ValaMap* variable_name_map;
};

struct _ValaCCodeBaseModuleEmitContextClass {
      GTypeClass parent_class;
      void (*finalize) (ValaCCodeBaseModuleEmitContext *self);
};


static gpointer vala_gtype_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;
enum  {
      VALA_GTYPE_MODULE_DUMMY_PROPERTY
};
static ValaCCodeParameter* vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map);
ValaCCodeParameter* vala_ccode_method_module_generate_parameter (ValaCCodeMethodModule* self, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map);
void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space);
gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name);
gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis);
ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name);
static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space);
gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name);
void vala_ccode_base_module_generate_class_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
gchar* vala_ccode_base_module_get_type_check_function (ValaCCodeBaseModule* self, ValaTypeSymbol* type);
ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
ValaClassRegisterFunction* vala_class_register_function_new (ValaClass* cl, ValaCodeContext* context);
ValaClassRegisterFunction* vala_class_register_function_construct (GType object_type, ValaClass* cl, ValaCodeContext* context);
gpointer vala_typeregister_function_ref (gpointer instance);
void vala_typeregister_function_unref (gpointer instance);
GParamSpec* vala_param_spec_typeregister_function (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_typeregister_function (GValue* value, gpointer v_object);
void vala_value_take_typeregister_function (GValue* value, gpointer v_object);
gpointer vala_value_get_typeregister_function (const GValue* value);
GType vala_typeregister_function_get_type (void) G_GNUC_CONST;
GType vala_class_register_function_get_type (void) G_GNUC_CONST;
void vala_typeregister_function_init_from_type (ValaTypeRegisterFunction* self, gboolean plugin, gboolean declaration_only);
ValaCCodeFragment* vala_typeregister_function_get_declaration (ValaTypeRegisterFunction* self);
static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space);
void vala_ccode_base_module_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
void vala_ccode_base_module_generate_interface_declaration (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
void vala_gtype_module_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct);
gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname);
gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
static void vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct);
void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
gchar* vala_ccode_base_module_get_symbol_lock_name (ValaCCodeBaseModule* self, const gchar* symname);
static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
void vala_ccode_base_module_push_context (ValaCCodeBaseModule* self, ValaCCodeBaseModuleEmitContext* emit_context);
ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_new (ValaSymbol* symbol);
ValaCCodeBaseModuleEmitContext* vala_ccode_base_module_emit_context_construct (GType object_type, ValaSymbol* symbol);
static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_base_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_class_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self, ValaClass* cl, ValaInterface* iface);
static void vala_gtype_module_add_instance_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self, ValaClass* cl);
ValaCCodeFragment* vala_typeregister_function_get_source_declaration (ValaTypeRegisterFunction* self);
ValaCCodeFragment* vala_typeregister_function_get_definition (ValaTypeRegisterFunction* self);
void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self);
void vala_gtype_module_generate_class_init (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self, ValaClass* cl);
ValaCCodeFunctionCall* vala_ccode_base_module_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self, ValaMethod* m, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type);
void vala_ccode_base_module_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
static ValaCCodeExpression* vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self, ValaPropertyAccessor* acc, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type);
void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space);
ValaCCodeFunctionCall* vala_ccode_base_module_generate_instance_cast (ValaCCodeBaseModule* self, ValaCCodeExpression* expr, ValaTypeSymbol* type);
gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_get_current_method_return (ValaCCodeBaseModule* self);
static ValaCCodeFunctionCall* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base, ValaProperty* prop);
ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space);
ValaInterfaceRegisterFunction* vala_interface_register_function_new (ValaInterface* iface, ValaCodeContext* context);
ValaInterfaceRegisterFunction* vala_interface_register_function_construct (GType object_type, ValaInterface* iface, ValaCodeContext* context);
GType vala_interface_register_function_get_type (void) G_GNUC_CONST;
static void vala_gtype_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface);
static void vala_gtype_module_add_interface_base_init_function (ValaGTypeModule* self, ValaInterface* iface);
gboolean vala_ccode_base_module_is_gobject_property (ValaCCodeBaseModule* self, ValaProperty* prop);
ValaCCodeFunctionCall* vala_ccode_base_module_get_param_spec (ValaCCodeBaseModule* self, ValaProperty* prop);
static void vala_gtype_module_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st);
ValaStructRegisterFunction* vala_struct_register_function_new (ValaStruct* st, ValaCodeContext* context);
ValaStructRegisterFunction* vala_struct_register_function_construct (GType object_type, ValaStruct* st, ValaCodeContext* context);
GType vala_struct_register_function_get_type (void) G_GNUC_CONST;
static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
ValaEnumRegisterFunction* vala_enum_register_function_new (ValaEnum* en, ValaCodeContext* context);
ValaEnumRegisterFunction* vala_enum_register_function_construct (GType object_type, ValaEnum* en, ValaCodeContext* context);
GType vala_enum_register_function_get_type (void) G_GNUC_CONST;
static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr);
ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init);
ValaCType* vala_ctype_new (const gchar* ctype_name);
ValaCType* vala_ctype_construct (GType object_type, const gchar* ctype_name);
GType vala_ctype_get_type (void) G_GNUC_CONST;
void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local, gboolean always_init);
void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue);
static void vala_gtype_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
ValaTypeSymbol* vala_ccode_base_module_get_current_type_symbol (ValaCCodeBaseModule* self);
ValaGTypeModule* vala_gtype_module_new (void);
ValaGTypeModule* vala_gtype_module_construct (GType object_type);
ValaGErrorModule* vala_gerror_module_new (void);
ValaGErrorModule* vala_gerror_module_construct (GType object_type);


static ValaCCodeParameter* vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map) {
      ValaGTypeModule * self;
      ValaCCodeParameter* result = NULL;
      ValaDataType* _tmp0_ = NULL;
      ValaDataType* _tmp2_ = NULL;
      ValaDataType* _tmp3_ = NULL;
      gchar* _tmp4_ = NULL;
      gchar* ctypename;
      ValaParameterDirection _tmp5_;
      const gchar* _tmp7_ = NULL;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeParameter* cparam;
      gdouble _tmp12_;
      gint _tmp13_;
      self = (ValaGTypeModule*) base;
      g_return_val_if_fail (param != NULL, NULL);
      g_return_val_if_fail (decl_space != NULL, NULL);
      g_return_val_if_fail (cparam_map != NULL, NULL);
      _tmp0_ = vala_variable_get_variable_type ((ValaVariable*) param);
      if (!VALA_IS_OBJECT_TYPE (_tmp0_)) {
            ValaCCodeParameter* _tmp1_ = NULL;
            _tmp1_ = VALA_CCODE_METHOD_MODULE_CLASS (vala_gtype_module_parent_class)->generate_parameter ((ValaCCodeMethodModule*) VALA_GERROR_MODULE (self), param, decl_space, cparam_map, carg_map);
            result = _tmp1_;
            return result;
      }
      _tmp2_ = vala_variable_get_variable_type ((ValaVariable*) param);
      vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp2_, decl_space);
      _tmp3_ = vala_variable_get_variable_type ((ValaVariable*) param);
      _tmp4_ = vala_data_type_get_cname (_tmp3_);
      ctypename = _tmp4_;
      _tmp5_ = vala_parameter_get_direction (param);
      if (_tmp5_ != VALA_PARAMETER_DIRECTION_IN) {
            gchar* _tmp6_;
            _tmp6_ = g_strconcat (ctypename, "*", NULL);
            _g_free0 (ctypename);
            ctypename = _tmp6_;
      }
      _tmp7_ = vala_symbol_get_name ((ValaSymbol*) param);
      _tmp8_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp7_);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_parameter_new (_tmp9_, ctypename);
      _tmp11_ = _tmp10_;
      _g_free0 (_tmp9_);
      cparam = _tmp11_;
      _tmp12_ = vala_parameter_get_cparameter_position (param);
      _tmp13_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp12_, FALSE);
      vala_map_set (cparam_map, GINT_TO_POINTER (_tmp13_), cparam);
      if (carg_map != NULL) {
            gdouble _tmp14_;
            gint _tmp15_;
            const gchar* _tmp16_ = NULL;
            ValaCCodeExpression* _tmp17_ = NULL;
            ValaCCodeExpression* _tmp18_;
            _tmp14_ = vala_parameter_get_cparameter_position (param);
            _tmp15_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp14_, FALSE);
            _tmp16_ = vala_symbol_get_name ((ValaSymbol*) param);
            _tmp17_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp16_);
            _tmp18_ = _tmp17_;
            vala_map_set (carg_map, GINT_TO_POINTER (_tmp15_), _tmp18_);
            _vala_ccode_node_unref0 (_tmp18_);
      }
      result = cparam;
      _g_free0 (ctypename);
      return result;
}


static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space) {
      ValaGTypeModule * self;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gboolean _tmp2_;
      gboolean _tmp3_;
      ValaClass* _tmp4_ = NULL;
      gboolean _tmp6_;
      gboolean is_gtypeinstance;
      gboolean _tmp7_ = FALSE;
      gboolean is_fundamental;
      gboolean _tmp72_ = FALSE;
      gboolean _tmp73_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (cl != NULL);
      g_return_if_fail (decl_space != NULL);
      _tmp0_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) cl, _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      if (_tmp3_) {
            return;
      }
      _tmp4_ = vala_class_get_base_class (cl);
      if (_tmp4_ != NULL) {
            ValaClass* _tmp5_ = NULL;
            _tmp5_ = vala_class_get_base_class (cl);
            vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp5_, decl_space);
      }
      _tmp6_ = vala_class_get_is_compact (cl);
      is_gtypeinstance = !_tmp6_;
      if (is_gtypeinstance) {
            ValaClass* _tmp8_ = NULL;
            _tmp8_ = vala_class_get_base_class (cl);
            _tmp7_ = _tmp8_ == NULL;
      } else {
            _tmp7_ = FALSE;
      }
      is_fundamental = _tmp7_;
      if (is_gtypeinstance) {
            ValaCCodeNewline* _tmp9_ = NULL;
            ValaCCodeNewline* _tmp10_;
            gchar* _tmp11_ = NULL;
            gchar* _tmp12_;
            gchar* _tmp13_ = NULL;
            gchar* _tmp14_;
            gchar* macro;
            gchar* _tmp15_ = NULL;
            gchar* _tmp16_;
            ValaCCodeMacroReplacement* _tmp17_ = NULL;
            ValaCCodeMacroReplacement* _tmp18_;
            gchar* _tmp19_ = NULL;
            gchar* _tmp20_;
            gchar* _tmp21_ = NULL;
            gchar* _tmp22_;
            gchar* _tmp23_ = NULL;
            gchar* _tmp24_ = NULL;
            gchar* _tmp25_;
            gchar* _tmp26_ = NULL;
            gchar* _tmp27_;
            ValaCCodeMacroReplacement* _tmp28_ = NULL;
            ValaCCodeMacroReplacement* _tmp29_;
            gchar* _tmp30_ = NULL;
            gchar* _tmp31_;
            gchar* _tmp32_ = NULL;
            gchar* _tmp33_;
            gchar* _tmp34_ = NULL;
            gchar* _tmp35_ = NULL;
            gchar* _tmp36_;
            gchar* _tmp37_ = NULL;
            gchar* _tmp38_;
            ValaCCodeMacroReplacement* _tmp39_ = NULL;
            ValaCCodeMacroReplacement* _tmp40_;
            gchar* _tmp41_ = NULL;
            gchar* _tmp42_;
            gchar* _tmp43_ = NULL;
            gchar* _tmp44_ = NULL;
            gchar* _tmp45_;
            gchar* _tmp46_ = NULL;
            gchar* _tmp47_;
            ValaCCodeMacroReplacement* _tmp48_ = NULL;
            ValaCCodeMacroReplacement* _tmp49_;
            gchar* _tmp50_ = NULL;
            gchar* _tmp51_;
            gchar* _tmp52_ = NULL;
            gchar* _tmp53_ = NULL;
            gchar* _tmp54_;
            gchar* _tmp55_ = NULL;
            gchar* _tmp56_;
            ValaCCodeMacroReplacement* _tmp57_ = NULL;
            ValaCCodeMacroReplacement* _tmp58_;
            gchar* _tmp59_ = NULL;
            gchar* _tmp60_;
            gchar* _tmp61_ = NULL;
            gchar* _tmp62_;
            gchar* _tmp63_ = NULL;
            gchar* _tmp64_ = NULL;
            gchar* _tmp65_;
            gchar* _tmp66_ = NULL;
            gchar* _tmp67_;
            ValaCCodeMacroReplacement* _tmp68_ = NULL;
            ValaCCodeMacroReplacement* _tmp69_;
            ValaCCodeNewline* _tmp70_ = NULL;
            ValaCCodeNewline* _tmp71_;
            _tmp9_ = vala_ccode_newline_new ();
            _tmp10_ = _tmp9_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp10_);
            _vala_ccode_node_unref0 (_tmp10_);
            _tmp11_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp12_ = _tmp11_;
            _tmp13_ = g_strdup_printf ("(%s_get_type ())", _tmp12_);
            _tmp14_ = _tmp13_;
            _g_free0 (_tmp12_);
            macro = _tmp14_;
            _tmp15_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
            _tmp16_ = _tmp15_;
            _tmp17_ = vala_ccode_macro_replacement_new (_tmp16_, macro);
            _tmp18_ = _tmp17_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp18_);
            _vala_ccode_node_unref0 (_tmp18_);
            _g_free0 (_tmp16_);
            _tmp19_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
            _tmp20_ = _tmp19_;
            _tmp21_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp22_ = _tmp21_;
            _tmp23_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp20_, _tmp22_);
            _g_free0 (macro);
            macro = _tmp23_;
            _g_free0 (_tmp22_);
            _g_free0 (_tmp20_);
            _tmp24_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
            _tmp25_ = _tmp24_;
            _tmp26_ = g_strdup_printf ("%s(obj)", _tmp25_);
            _tmp27_ = _tmp26_;
            _tmp28_ = vala_ccode_macro_replacement_new (_tmp27_, macro);
            _tmp29_ = _tmp28_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp29_);
            _vala_ccode_node_unref0 (_tmp29_);
            _g_free0 (_tmp27_);
            _g_free0 (_tmp25_);
            _tmp30_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
            _tmp31_ = _tmp30_;
            _tmp32_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp33_ = _tmp32_;
            _tmp34_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_CAST ((klass), %s, %sClass))", _tmp31_, _tmp33_);
            _g_free0 (macro);
            macro = _tmp34_;
            _g_free0 (_tmp33_);
            _g_free0 (_tmp31_);
            _tmp35_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
            _tmp36_ = _tmp35_;
            _tmp37_ = g_strdup_printf ("%s_CLASS(klass)", _tmp36_);
            _tmp38_ = _tmp37_;
            _tmp39_ = vala_ccode_macro_replacement_new (_tmp38_, macro);
            _tmp40_ = _tmp39_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp40_);
            _vala_ccode_node_unref0 (_tmp40_);
            _g_free0 (_tmp38_);
            _g_free0 (_tmp36_);
            _tmp41_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
            _tmp42_ = _tmp41_;
            _tmp43_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp42_);
            _g_free0 (macro);
            macro = _tmp43_;
            _g_free0 (_tmp42_);
            _tmp44_ = vala_ccode_base_module_get_type_check_function ((ValaCCodeBaseModule*) self, (ValaTypeSymbol*) cl);
            _tmp45_ = _tmp44_;
            _tmp46_ = g_strdup_printf ("%s(obj)", _tmp45_);
            _tmp47_ = _tmp46_;
            _tmp48_ = vala_ccode_macro_replacement_new (_tmp47_, macro);
            _tmp49_ = _tmp48_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp49_);
            _vala_ccode_node_unref0 (_tmp49_);
            _g_free0 (_tmp47_);
            _g_free0 (_tmp45_);
            _tmp50_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
            _tmp51_ = _tmp50_;
            _tmp52_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_TYPE ((klass), %s))", _tmp51_);
            _g_free0 (macro);
            macro = _tmp52_;
            _g_free0 (_tmp51_);
            _tmp53_ = vala_ccode_base_module_get_type_check_function ((ValaCCodeBaseModule*) self, (ValaTypeSymbol*) cl);
            _tmp54_ = _tmp53_;
            _tmp55_ = g_strdup_printf ("%s_CLASS(klass)", _tmp54_);
            _tmp56_ = _tmp55_;
            _tmp57_ = vala_ccode_macro_replacement_new (_tmp56_, macro);
            _tmp58_ = _tmp57_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp58_);
            _vala_ccode_node_unref0 (_tmp58_);
            _g_free0 (_tmp56_);
            _g_free0 (_tmp54_);
            _tmp59_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
            _tmp60_ = _tmp59_;
            _tmp61_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp62_ = _tmp61_;
            _tmp63_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %sClass))", _tmp60_, _tmp62_);
            _g_free0 (macro);
            macro = _tmp63_;
            _g_free0 (_tmp62_);
            _g_free0 (_tmp60_);
            _tmp64_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
            _tmp65_ = _tmp64_;
            _tmp66_ = g_strdup_printf ("%s_GET_CLASS(obj)", _tmp65_);
            _tmp67_ = _tmp66_;
            _tmp68_ = vala_ccode_macro_replacement_new (_tmp67_, macro);
            _tmp69_ = _tmp68_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp69_);
            _vala_ccode_node_unref0 (_tmp69_);
            _g_free0 (_tmp67_);
            _g_free0 (_tmp65_);
            _tmp70_ = vala_ccode_newline_new ();
            _tmp71_ = _tmp70_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp71_);
            _vala_ccode_node_unref0 (_tmp71_);
            _g_free0 (macro);
      }
      _tmp73_ = vala_class_get_is_compact (cl);
      if (_tmp73_) {
            ValaClass* _tmp74_ = NULL;
            _tmp74_ = vala_class_get_base_class (cl);
            _tmp72_ = _tmp74_ != NULL;
      } else {
            _tmp72_ = FALSE;
      }
      if (_tmp72_) {
            ValaClass* _tmp75_ = NULL;
            gchar* _tmp76_ = NULL;
            gchar* _tmp77_;
            gchar* _tmp78_ = NULL;
            gchar* _tmp79_;
            ValaCCodeVariableDeclarator* _tmp80_ = NULL;
            ValaCCodeVariableDeclarator* _tmp81_;
            ValaCCodeTypeDefinition* _tmp82_ = NULL;
            ValaCCodeTypeDefinition* _tmp83_;
            _tmp75_ = vala_class_get_base_class (cl);
            _tmp76_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) _tmp75_, FALSE);
            _tmp77_ = _tmp76_;
            _tmp78_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp79_ = _tmp78_;
            _tmp80_ = vala_ccode_variable_declarator_new (_tmp79_, NULL, NULL);
            _tmp81_ = _tmp80_;
            _tmp82_ = vala_ccode_type_definition_new (_tmp77_, (ValaCCodeDeclarator*) _tmp81_);
            _tmp83_ = _tmp82_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp83_);
            _vala_ccode_node_unref0 (_tmp83_);
            _vala_ccode_node_unref0 (_tmp81_);
            _g_free0 (_tmp79_);
            _g_free0 (_tmp77_);
      } else {
            gchar* _tmp84_ = NULL;
            gchar* _tmp85_;
            gchar* _tmp86_ = NULL;
            gchar* _tmp87_;
            gchar* _tmp88_ = NULL;
            gchar* _tmp89_;
            ValaCCodeVariableDeclarator* _tmp90_ = NULL;
            ValaCCodeVariableDeclarator* _tmp91_;
            ValaCCodeTypeDefinition* _tmp92_ = NULL;
            ValaCCodeTypeDefinition* _tmp93_;
            _tmp84_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp85_ = _tmp84_;
            _tmp86_ = g_strdup_printf ("struct _%s", _tmp85_);
            _tmp87_ = _tmp86_;
            _tmp88_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp89_ = _tmp88_;
            _tmp90_ = vala_ccode_variable_declarator_new (_tmp89_, NULL, NULL);
            _tmp91_ = _tmp90_;
            _tmp92_ = vala_ccode_type_definition_new (_tmp87_, (ValaCCodeDeclarator*) _tmp91_);
            _tmp93_ = _tmp92_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp93_);
            _vala_ccode_node_unref0 (_tmp93_);
            _vala_ccode_node_unref0 (_tmp91_);
            _g_free0 (_tmp89_);
            _g_free0 (_tmp87_);
            _g_free0 (_tmp85_);
      }
      if (is_fundamental) {
            gchar* _tmp94_ = NULL;
            gchar* _tmp95_;
            gchar* _tmp96_;
            gchar* _tmp97_;
            ValaCCodeFunction* _tmp98_ = NULL;
            ValaCCodeFunction* _tmp99_;
            ValaCCodeFunction* ref_fun;
            gchar* _tmp100_ = NULL;
            gchar* _tmp101_;
            gchar* _tmp102_;
            gchar* _tmp103_;
            ValaCCodeFunction* _tmp104_ = NULL;
            ValaCCodeFunction* _tmp105_;
            ValaCCodeFunction* unref_fun;
            ValaSymbolAccessibility _tmp106_;
            ValaCCodeParameter* _tmp107_ = NULL;
            ValaCCodeParameter* _tmp108_;
            ValaCCodeParameter* _tmp109_ = NULL;
            ValaCCodeParameter* _tmp110_;
            gchar* _tmp111_ = NULL;
            gchar* function_name;
            ValaCCodeFunction* _tmp112_ = NULL;
            ValaCCodeFunction* function;
            ValaCCodeParameter* _tmp113_ = NULL;
            ValaCCodeParameter* _tmp114_;
            ValaCCodeParameter* _tmp115_ = NULL;
            ValaCCodeParameter* _tmp116_;
            ValaCCodeParameter* _tmp117_ = NULL;
            ValaCCodeParameter* _tmp118_;
            ValaCCodeParameter* _tmp119_ = NULL;
            ValaCCodeParameter* _tmp120_;
            ValaCCodeParameter* _tmp121_ = NULL;
            ValaCCodeParameter* _tmp122_;
            ValaSymbolAccessibility _tmp123_;
            gchar* _tmp124_ = NULL;
            gchar* _tmp125_;
            ValaCCodeFunction* _tmp126_ = NULL;
            ValaCCodeParameter* _tmp127_ = NULL;
            ValaCCodeParameter* _tmp128_;
            ValaCCodeParameter* _tmp129_ = NULL;
            ValaCCodeParameter* _tmp130_;
            ValaSymbolAccessibility _tmp131_;
            gchar* _tmp132_ = NULL;
            gchar* _tmp133_;
            ValaCCodeFunction* _tmp134_ = NULL;
            ValaCCodeParameter* _tmp135_ = NULL;
            ValaCCodeParameter* _tmp136_;
            ValaCCodeParameter* _tmp137_ = NULL;
            ValaCCodeParameter* _tmp138_;
            ValaSymbolAccessibility _tmp139_;
            gchar* _tmp140_ = NULL;
            gchar* _tmp141_;
            ValaCCodeFunction* _tmp142_ = NULL;
            ValaCCodeParameter* _tmp143_ = NULL;
            ValaCCodeParameter* _tmp144_;
            ValaSymbolAccessibility _tmp145_;
            _tmp94_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
            _tmp95_ = _tmp94_;
            _tmp96_ = g_strconcat (_tmp95_, "ref", NULL);
            _tmp97_ = _tmp96_;
            _tmp98_ = vala_ccode_function_new (_tmp97_, "gpointer");
            _tmp99_ = _tmp98_;
            _g_free0 (_tmp97_);
            _g_free0 (_tmp95_);
            ref_fun = _tmp99_;
            _tmp100_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
            _tmp101_ = _tmp100_;
            _tmp102_ = g_strconcat (_tmp101_, "unref", NULL);
            _tmp103_ = _tmp102_;
            _tmp104_ = vala_ccode_function_new (_tmp103_, "void");
            _tmp105_ = _tmp104_;
            _g_free0 (_tmp103_);
            _g_free0 (_tmp101_);
            unref_fun = _tmp105_;
            _tmp106_ = vala_symbol_get_access ((ValaSymbol*) cl);
            if (_tmp106_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  vala_ccode_function_set_modifiers (ref_fun, VALA_CCODE_MODIFIERS_STATIC);
                  vala_ccode_function_set_modifiers (unref_fun, VALA_CCODE_MODIFIERS_STATIC);
            }
            _tmp107_ = vala_ccode_parameter_new ("instance", "gpointer");
            _tmp108_ = _tmp107_;
            vala_ccode_function_add_parameter (ref_fun, _tmp108_);
            _vala_ccode_node_unref0 (_tmp108_);
            _tmp109_ = vala_ccode_parameter_new ("instance", "gpointer");
            _tmp110_ = _tmp109_;
            vala_ccode_function_add_parameter (unref_fun, _tmp110_);
            _vala_ccode_node_unref0 (_tmp110_);
            vala_ccode_file_add_function_declaration (decl_space, ref_fun);
            vala_ccode_file_add_function_declaration (decl_space, unref_fun);
            _tmp111_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "param_spec_");
            function_name = _tmp111_;
            _tmp112_ = vala_ccode_function_new (function_name, "GParamSpec*");
            function = _tmp112_;
            _tmp113_ = vala_ccode_parameter_new ("name", "const gchar*");
            _tmp114_ = _tmp113_;
            vala_ccode_function_add_parameter (function, _tmp114_);
            _vala_ccode_node_unref0 (_tmp114_);
            _tmp115_ = vala_ccode_parameter_new ("nick", "const gchar*");
            _tmp116_ = _tmp115_;
            vala_ccode_function_add_parameter (function, _tmp116_);
            _vala_ccode_node_unref0 (_tmp116_);
            _tmp117_ = vala_ccode_parameter_new ("blurb", "const gchar*");
            _tmp118_ = _tmp117_;
            vala_ccode_function_add_parameter (function, _tmp118_);
            _vala_ccode_node_unref0 (_tmp118_);
            _tmp119_ = vala_ccode_parameter_new ("object_type", "GType");
            _tmp120_ = _tmp119_;
            vala_ccode_function_add_parameter (function, _tmp120_);
            _vala_ccode_node_unref0 (_tmp120_);
            _tmp121_ = vala_ccode_parameter_new ("flags", "GParamFlags");
            _tmp122_ = _tmp121_;
            vala_ccode_function_add_parameter (function, _tmp122_);
            _vala_ccode_node_unref0 (_tmp122_);
            _tmp123_ = vala_symbol_get_access ((ValaSymbol*) cl);
            if (_tmp123_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
                  vala_ccode_function_set_attributes (function, "G_GNUC_UNUSED");
            }
            vala_ccode_file_add_function_declaration (decl_space, function);
            _tmp124_ = vala_typesymbol_get_set_value_function ((ValaTypeSymbol*) cl);
            _tmp125_ = _tmp124_;
            _tmp126_ = vala_ccode_function_new (_tmp125_, "void");
            _vala_ccode_node_unref0 (function);
            function = _tmp126_;
            _g_free0 (_tmp125_);
            _tmp127_ = vala_ccode_parameter_new ("value", "GValue*");
            _tmp128_ = _tmp127_;
            vala_ccode_function_add_parameter (function, _tmp128_);
            _vala_ccode_node_unref0 (_tmp128_);
            _tmp129_ = vala_ccode_parameter_new ("v_object", "gpointer");
            _tmp130_ = _tmp129_;
            vala_ccode_function_add_parameter (function, _tmp130_);
            _vala_ccode_node_unref0 (_tmp130_);
            _tmp131_ = vala_symbol_get_access ((ValaSymbol*) cl);
            if (_tmp131_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
                  vala_ccode_function_set_attributes (function, "G_GNUC_UNUSED");
            }
            vala_ccode_file_add_function_declaration (decl_space, function);
            _tmp132_ = vala_typesymbol_get_take_value_function ((ValaTypeSymbol*) cl);
            _tmp133_ = _tmp132_;
            _tmp134_ = vala_ccode_function_new (_tmp133_, "void");
            _vala_ccode_node_unref0 (function);
            function = _tmp134_;
            _g_free0 (_tmp133_);
            _tmp135_ = vala_ccode_parameter_new ("value", "GValue*");
            _tmp136_ = _tmp135_;
            vala_ccode_function_add_parameter (function, _tmp136_);
            _vala_ccode_node_unref0 (_tmp136_);
            _tmp137_ = vala_ccode_parameter_new ("v_object", "gpointer");
            _tmp138_ = _tmp137_;
            vala_ccode_function_add_parameter (function, _tmp138_);
            _vala_ccode_node_unref0 (_tmp138_);
            _tmp139_ = vala_symbol_get_access ((ValaSymbol*) cl);
            if (_tmp139_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
                  vala_ccode_function_set_attributes (function, "G_GNUC_UNUSED");
            }
            vala_ccode_file_add_function_declaration (decl_space, function);
            _tmp140_ = vala_typesymbol_get_get_value_function ((ValaTypeSymbol*) cl);
            _tmp141_ = _tmp140_;
            _tmp142_ = vala_ccode_function_new (_tmp141_, "gpointer");
            _vala_ccode_node_unref0 (function);
            function = _tmp142_;
            _g_free0 (_tmp141_);
            _tmp143_ = vala_ccode_parameter_new ("value", "const GValue*");
            _tmp144_ = _tmp143_;
            vala_ccode_function_add_parameter (function, _tmp144_);
            _vala_ccode_node_unref0 (_tmp144_);
            _tmp145_ = vala_symbol_get_access ((ValaSymbol*) cl);
            if (_tmp145_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
                  vala_ccode_function_set_attributes (function, "G_GNUC_UNUSED");
            }
            vala_ccode_file_add_function_declaration (decl_space, function);
            _vala_ccode_node_unref0 (function);
            _g_free0 (function_name);
            _vala_ccode_node_unref0 (unref_fun);
            _vala_ccode_node_unref0 (ref_fun);
      } else {
            if (!is_gtypeinstance) {
                  ValaClass* _tmp146_ = NULL;
                  _tmp146_ = vala_class_get_base_class (cl);
                  if (_tmp146_ == NULL) {
                        gchar* _tmp147_ = NULL;
                        gchar* _tmp148_;
                        gchar* _tmp149_;
                        gchar* _tmp150_;
                        ValaCCodeFunction* _tmp151_ = NULL;
                        ValaCCodeFunction* _tmp152_;
                        ValaCCodeFunction* function;
                        ValaSymbolAccessibility _tmp153_;
                        gchar* _tmp154_ = NULL;
                        gchar* _tmp155_;
                        gchar* _tmp156_;
                        gchar* _tmp157_;
                        ValaCCodeParameter* _tmp158_ = NULL;
                        ValaCCodeParameter* _tmp159_;
                        _tmp147_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
                        _tmp148_ = _tmp147_;
                        _tmp149_ = g_strconcat (_tmp148_, "free", NULL);
                        _tmp150_ = _tmp149_;
                        _tmp151_ = vala_ccode_function_new (_tmp150_, "void");
                        _tmp152_ = _tmp151_;
                        _g_free0 (_tmp150_);
                        _g_free0 (_tmp148_);
                        function = _tmp152_;
                        _tmp153_ = vala_symbol_get_access ((ValaSymbol*) cl);
                        if (_tmp153_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                              vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
                        }
                        _tmp154_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                        _tmp155_ = _tmp154_;
                        _tmp156_ = g_strconcat (_tmp155_, "*", NULL);
                        _tmp157_ = _tmp156_;
                        _tmp158_ = vala_ccode_parameter_new ("self", _tmp157_);
                        _tmp159_ = _tmp158_;
                        vala_ccode_function_add_parameter (function, _tmp159_);
                        _vala_ccode_node_unref0 (_tmp159_);
                        _g_free0 (_tmp157_);
                        _g_free0 (_tmp155_);
                        vala_ccode_file_add_function_declaration (decl_space, function);
                        _vala_ccode_node_unref0 (function);
                  }
            }
      }
      if (is_gtypeinstance) {
            gchar* _tmp160_ = NULL;
            gchar* _tmp161_;
            gchar* _tmp162_ = NULL;
            gchar* _tmp163_;
            gchar* _tmp164_ = NULL;
            gchar* _tmp165_;
            gchar* _tmp166_ = NULL;
            gchar* _tmp167_;
            ValaCCodeVariableDeclarator* _tmp168_ = NULL;
            ValaCCodeVariableDeclarator* _tmp169_;
            ValaCCodeTypeDefinition* _tmp170_ = NULL;
            ValaCCodeTypeDefinition* _tmp171_;
            ValaCodeContext* _tmp172_ = NULL;
            ValaClassRegisterFunction* _tmp173_ = NULL;
            ValaClassRegisterFunction* type_fun;
            ValaCCodeFragment* _tmp174_ = NULL;
            ValaCCodeFragment* _tmp175_;
            _tmp160_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp161_ = _tmp160_;
            _tmp162_ = g_strdup_printf ("struct _%sClass", _tmp161_);
            _tmp163_ = _tmp162_;
            _tmp164_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp165_ = _tmp164_;
            _tmp166_ = g_strdup_printf ("%sClass", _tmp165_);
            _tmp167_ = _tmp166_;
            _tmp168_ = vala_ccode_variable_declarator_new (_tmp167_, NULL, NULL);
            _tmp169_ = _tmp168_;
            _tmp170_ = vala_ccode_type_definition_new (_tmp163_, (ValaCCodeDeclarator*) _tmp169_);
            _tmp171_ = _tmp170_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp171_);
            _vala_ccode_node_unref0 (_tmp171_);
            _vala_ccode_node_unref0 (_tmp169_);
            _g_free0 (_tmp167_);
            _g_free0 (_tmp165_);
            _g_free0 (_tmp163_);
            _g_free0 (_tmp161_);
            _tmp172_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
            _tmp173_ = vala_class_register_function_new (cl, _tmp172_);
            type_fun = _tmp173_;
            vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) type_fun, ((ValaCCodeBaseModule*) self)->in_plugin, TRUE);
            _tmp174_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) type_fun);
            _tmp175_ = _tmp174_;
            vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp175_);
            _vala_ccode_node_unref0 (_tmp175_);
            _vala_typeregister_function_unref0 (type_fun);
      }
}


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


static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space) {
      ValaGTypeModule * self;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_;
      gchar* _tmp3_;
      gboolean _tmp4_;
      gboolean _tmp5_;
      ValaClass* _tmp6_ = NULL;
      gboolean _tmp14_;
      gboolean is_gtypeinstance;
      gboolean _tmp15_ = FALSE;
      gboolean is_fundamental;
      gchar* _tmp17_ = NULL;
      gchar* _tmp18_;
      gchar* _tmp19_ = NULL;
      gchar* _tmp20_;
      ValaCCodeStruct* _tmp21_ = NULL;
      ValaCCodeStruct* _tmp22_;
      ValaCCodeStruct* instance_struct;
      gchar* _tmp23_ = NULL;
      gchar* _tmp24_;
      gchar* _tmp25_ = NULL;
      gchar* _tmp26_;
      ValaCCodeStruct* _tmp27_ = NULL;
      ValaCCodeStruct* _tmp28_;
      ValaCCodeStruct* type_struct;
      ValaClass* _tmp29_ = NULL;
      gboolean _tmp33_ = FALSE;
      gboolean _tmp34_ = FALSE;
      gboolean _tmp35_;
      gboolean _tmp217_ = FALSE;
      gboolean _tmp218_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (cl != NULL);
      g_return_if_fail (decl_space != NULL);
      _tmp0_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strconcat ("struct _", _tmp1_, NULL);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) cl, _tmp3_);
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      if (_tmp5_) {
            return;
      }
      _tmp6_ = vala_class_get_base_class (cl);
      if (_tmp6_ != NULL) {
            ValaClass* _tmp7_ = NULL;
            _tmp7_ = vala_class_get_base_class (cl);
            vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp7_, decl_space);
      }
      {
            ValaList* _tmp8_ = NULL;
            ValaList* _base_type_list;
            gint _tmp9_;
            gint _base_type_size;
            gint _base_type_index;
            _tmp8_ = vala_class_get_base_types (cl);
            _base_type_list = _tmp8_;
            _tmp9_ = vala_collection_get_size ((ValaCollection*) _base_type_list);
            _base_type_size = _tmp9_;
            _base_type_index = -1;
            while (TRUE) {
                  gpointer _tmp10_ = NULL;
                  ValaDataType* base_type;
                  ValaTypeSymbol* _tmp11_ = NULL;
                  ValaTypeSymbol* _tmp12_;
                  ValaInterface* _tmp13_;
                  ValaInterface* iface;
                  _base_type_index = _base_type_index + 1;
                  if (!(_base_type_index < _base_type_size)) {
                        break;
                  }
                  _tmp10_ = vala_list_get (_base_type_list, _base_type_index);
                  base_type = (ValaDataType*) _tmp10_;
                  _tmp11_ = vala_data_type_get_data_type (base_type);
                  _tmp12_ = _tmp11_;
                  _tmp13_ = _vala_code_node_ref0 (VALA_IS_INTERFACE (_tmp12_) ? ((ValaInterface*) _tmp12_) : NULL);
                  iface = _tmp13_;
                  if (iface != NULL) {
                        vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, decl_space);
                  }
                  _vala_code_node_unref0 (iface);
                  _vala_code_node_unref0 (base_type);
            }
            _vala_iterable_unref0 (_base_type_list);
      }
      vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, cl, decl_space);
      _tmp14_ = vala_class_get_is_compact (cl);
      is_gtypeinstance = !_tmp14_;
      if (is_gtypeinstance) {
            ValaClass* _tmp16_ = NULL;
            _tmp16_ = vala_class_get_base_class (cl);
            _tmp15_ = _tmp16_ == NULL;
      } else {
            _tmp15_ = FALSE;
      }
      is_fundamental = _tmp15_;
      _tmp17_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp18_ = _tmp17_;
      _tmp19_ = g_strdup_printf ("_%s", _tmp18_);
      _tmp20_ = _tmp19_;
      _tmp21_ = vala_ccode_struct_new (_tmp20_);
      _tmp22_ = _tmp21_;
      _g_free0 (_tmp20_);
      _g_free0 (_tmp18_);
      instance_struct = _tmp22_;
      _tmp23_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp24_ = _tmp23_;
      _tmp25_ = g_strdup_printf ("_%sClass", _tmp24_);
      _tmp26_ = _tmp25_;
      _tmp27_ = vala_ccode_struct_new (_tmp26_);
      _tmp28_ = _tmp27_;
      _g_free0 (_tmp26_);
      _g_free0 (_tmp24_);
      type_struct = _tmp28_;
      _tmp29_ = vala_class_get_base_class (cl);
      if (_tmp29_ != NULL) {
            ValaClass* _tmp30_ = NULL;
            gchar* _tmp31_ = NULL;
            gchar* _tmp32_;
            _tmp30_ = vala_class_get_base_class (cl);
            _tmp31_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) _tmp30_, FALSE);
            _tmp32_ = _tmp31_;
            vala_ccode_struct_add_field (instance_struct, _tmp32_, "parent_instance", NULL);
            _g_free0 (_tmp32_);
      } else {
            if (is_fundamental) {
                  vala_ccode_file_add_include (decl_space, "glib-object.h", FALSE);
                  vala_ccode_struct_add_field (instance_struct, "GTypeInstance", "parent_instance", NULL);
                  vala_ccode_struct_add_field (instance_struct, "volatile int", "ref_count", NULL);
            }
      }
      _tmp35_ = vala_class_get_is_compact (cl);
      if (_tmp35_) {
            ValaClass* _tmp36_ = NULL;
            _tmp36_ = vala_class_get_base_class (cl);
            _tmp34_ = _tmp36_ == NULL;
      } else {
            _tmp34_ = FALSE;
      }
      if (_tmp34_) {
            ValaList* _tmp37_ = NULL;
            ValaList* _tmp38_;
            gint _tmp39_;
            _tmp37_ = vala_class_get_fields (cl);
            _tmp38_ = _tmp37_;
            _tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_);
            _tmp33_ = _tmp39_ == 0;
            _vala_iterable_unref0 (_tmp38_);
      } else {
            _tmp33_ = FALSE;
      }
      if (_tmp33_) {
            vala_ccode_struct_add_field (instance_struct, "int", "dummy", NULL);
      }
      if (is_gtypeinstance) {
            const gchar* _tmp40_ = NULL;
            gchar* _tmp41_ = NULL;
            gchar* _tmp42_;
            gchar* _tmp43_ = NULL;
            gchar* _tmp44_;
            gchar* _tmp45_ = NULL;
            gchar* _tmp46_;
            ValaCCodeVariableDeclarator* _tmp47_ = NULL;
            ValaCCodeVariableDeclarator* _tmp48_;
            ValaCCodeTypeDefinition* _tmp49_ = NULL;
            ValaCCodeTypeDefinition* _tmp50_;
            gchar* _tmp51_ = NULL;
            gchar* _tmp52_;
            gchar* _tmp53_ = NULL;
            gchar* _tmp54_;
            _tmp40_ = vala_ccode_struct_get_name (instance_struct);
            _tmp41_ = g_strdup_printf ("struct %sPrivate", _tmp40_);
            _tmp42_ = _tmp41_;
            _tmp43_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp44_ = _tmp43_;
            _tmp45_ = g_strdup_printf ("%sPrivate", _tmp44_);
            _tmp46_ = _tmp45_;
            _tmp47_ = vala_ccode_variable_declarator_new (_tmp46_, NULL, NULL);
            _tmp48_ = _tmp47_;
            _tmp49_ = vala_ccode_type_definition_new (_tmp42_, (ValaCCodeDeclarator*) _tmp48_);
            _tmp50_ = _tmp49_;
            vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp50_);
            _vala_ccode_node_unref0 (_tmp50_);
            _vala_ccode_node_unref0 (_tmp48_);
            _g_free0 (_tmp46_);
            _g_free0 (_tmp44_);
            _g_free0 (_tmp42_);
            _tmp51_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp52_ = _tmp51_;
            _tmp53_ = g_strdup_printf ("%sPrivate *", _tmp52_);
            _tmp54_ = _tmp53_;
            vala_ccode_struct_add_field (instance_struct, _tmp54_, "priv", NULL);
            _g_free0 (_tmp54_);
            _g_free0 (_tmp52_);
            if (is_fundamental) {
                  vala_ccode_struct_add_field (type_struct, "GTypeClass", "parent_class", NULL);
            } else {
                  ValaClass* _tmp55_ = NULL;
                  gchar* _tmp56_ = NULL;
                  gchar* _tmp57_;
                  gchar* _tmp58_ = NULL;
                  gchar* _tmp59_;
                  _tmp55_ = vala_class_get_base_class (cl);
                  _tmp56_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) _tmp55_, FALSE);
                  _tmp57_ = _tmp56_;
                  _tmp58_ = g_strdup_printf ("%sClass", _tmp57_);
                  _tmp59_ = _tmp58_;
                  vala_ccode_struct_add_field (type_struct, _tmp59_, "parent_class", NULL);
                  _g_free0 (_tmp59_);
                  _g_free0 (_tmp57_);
            }
            if (is_fundamental) {
                  gchar* _tmp60_ = NULL;
                  gchar* _tmp61_;
                  gchar* _tmp62_ = NULL;
                  gchar* _tmp63_;
                  _tmp60_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                  _tmp61_ = _tmp60_;
                  _tmp62_ = g_strdup_printf ("(*finalize) (%s *self)", _tmp61_);
                  _tmp63_ = _tmp62_;
                  vala_ccode_struct_add_field (type_struct, "void", _tmp63_, NULL);
                  _g_free0 (_tmp63_);
                  _g_free0 (_tmp61_);
            }
      }
      {
            ValaList* _tmp64_ = NULL;
            ValaList* _m_list;
            gint _tmp65_;
            gint _m_size;
            gint _m_index;
            _tmp64_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
            _m_list = _tmp64_;
            _tmp65_ = vala_collection_get_size ((ValaCollection*) _m_list);
            _m_size = _tmp65_;
            _m_index = -1;
            while (TRUE) {
                  gpointer _tmp66_ = NULL;
                  ValaMethod* m;
                  _m_index = _m_index + 1;
                  if (!(_m_index < _m_size)) {
                        break;
                  }
                  _tmp66_ = vala_list_get (_m_list, _m_index);
                  m = (ValaMethod*) _tmp66_;
                  vala_gtype_module_generate_virtual_method_declaration (self, m, decl_space, type_struct);
                  _vala_code_node_unref0 (m);
            }
            _vala_iterable_unref0 (_m_list);
      }
      {
            ValaList* _tmp67_ = NULL;
            ValaList* _sig_list;
            gint _tmp68_;
            gint _sig_size;
            gint _sig_index;
            _tmp67_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
            _sig_list = _tmp67_;
            _tmp68_ = vala_collection_get_size ((ValaCollection*) _sig_list);
            _sig_size = _tmp68_;
            _sig_index = -1;
            while (TRUE) {
                  gpointer _tmp69_ = NULL;
                  ValaSignal* sig;
                  ValaMethod* _tmp70_ = NULL;
                  _sig_index = _sig_index + 1;
                  if (!(_sig_index < _sig_size)) {
                        break;
                  }
                  _tmp69_ = vala_list_get (_sig_list, _sig_index);
                  sig = (ValaSignal*) _tmp69_;
                  _tmp70_ = vala_signal_get_default_handler (sig);
                  if (_tmp70_ != NULL) {
                        ValaMethod* _tmp71_ = NULL;
                        _tmp71_ = vala_signal_get_default_handler (sig);
                        vala_gtype_module_generate_virtual_method_declaration (self, _tmp71_, decl_space, type_struct);
                  }
                  _vala_code_node_unref0 (sig);
            }
            _vala_iterable_unref0 (_sig_list);
      }
      {
            ValaList* _tmp72_ = NULL;
            ValaList* _prop_list;
            gint _tmp73_;
            gint _prop_size;
            gint _prop_index;
            _tmp72_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
            _prop_list = _tmp72_;
            _tmp73_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp73_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp74_ = NULL;
                  ValaProperty* prop;
                  gboolean _tmp75_ = FALSE;
                  gboolean _tmp76_;
                  ValaDataType* _tmp78_ = NULL;
                  ValaSymbol* _tmp79_ = NULL;
                  ValaObjectTypeSymbol* _tmp80_;
                  ValaObjectTypeSymbol* t;
                  ValaObjectType* _tmp81_ = NULL;
                  ValaObjectType* this_type;
                  gchar* _tmp82_ = NULL;
                  gchar* _tmp83_;
                  ValaCCodeParameter* _tmp84_ = NULL;
                  ValaCCodeParameter* _tmp85_;
                  ValaCCodeParameter* cselfparam;
                  ValaPropertyAccessor* _tmp86_ = NULL;
                  ValaPropertyAccessor* _tmp125_ = NULL;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp74_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp74_;
                  _tmp76_ = vala_property_get_is_abstract (prop);
                  if (!_tmp76_) {
                        gboolean _tmp77_;
                        _tmp77_ = vala_property_get_is_virtual (prop);
                        _tmp75_ = !_tmp77_;
                  } else {
                        _tmp75_ = FALSE;
                  }
                  if (_tmp75_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp78_ = vala_property_get_property_type (prop);
                  vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp78_, decl_space);
                  _tmp79_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
                  _tmp80_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE_SYMBOL (_tmp79_));
                  t = _tmp80_;
                  _tmp81_ = vala_object_type_new (t);
                  this_type = _tmp81_;
                  _tmp82_ = vala_data_type_get_cname ((ValaDataType*) this_type);
                  _tmp83_ = _tmp82_;
                  _tmp84_ = vala_ccode_parameter_new ("self", _tmp83_);
                  _tmp85_ = _tmp84_;
                  _g_free0 (_tmp83_);
                  cselfparam = _tmp85_;
                  _tmp86_ = vala_property_get_get_accessor (prop);
                  if (_tmp86_ != NULL) {
                        const gchar* _tmp87_ = NULL;
                        gchar* _tmp88_ = NULL;
                        gchar* _tmp89_;
                        ValaCCodeFunctionDeclarator* _tmp90_ = NULL;
                        ValaCCodeFunctionDeclarator* _tmp91_;
                        ValaCCodeFunctionDeclarator* vdeclarator;
                        gchar* creturn_type = NULL;
                        ValaDataType* _tmp92_ = NULL;
                        gboolean _tmp93_;
                        ValaDataType* _tmp106_ = NULL;
                        ValaDataType* _tmp107_;
                        ValaArrayType* _tmp108_;
                        ValaArrayType* array_type;
                        ValaCCodeDeclaration* _tmp124_ = NULL;
                        ValaCCodeDeclaration* vdecl;
                        _tmp87_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp88_ = g_strdup_printf ("get_%s", _tmp87_);
                        _tmp89_ = _tmp88_;
                        _tmp90_ = vala_ccode_function_declarator_new (_tmp89_);
                        _tmp91_ = _tmp90_;
                        _g_free0 (_tmp89_);
                        vdeclarator = _tmp91_;
                        vala_ccode_function_declarator_add_parameter (vdeclarator, cselfparam);
                        _tmp92_ = vala_property_get_property_type (prop);
                        _tmp93_ = vala_data_type_is_real_non_null_struct_type (_tmp92_);
                        if (_tmp93_) {
                              ValaPropertyAccessor* _tmp94_ = NULL;
                              ValaDataType* _tmp95_ = NULL;
                              gchar* _tmp96_ = NULL;
                              gchar* _tmp97_;
                              gchar* _tmp98_;
                              gchar* _tmp99_;
                              ValaCCodeParameter* _tmp100_ = NULL;
                              ValaCCodeParameter* _tmp101_;
                              ValaCCodeParameter* cvalueparam;
                              gchar* _tmp102_;
                              _tmp94_ = vala_property_get_get_accessor (prop);
                              _tmp95_ = vala_property_accessor_get_value_type (_tmp94_);
                              _tmp96_ = vala_data_type_get_cname (_tmp95_);
                              _tmp97_ = _tmp96_;
                              _tmp98_ = g_strconcat (_tmp97_, "*", NULL);
                              _tmp99_ = _tmp98_;
                              _tmp100_ = vala_ccode_parameter_new ("result", _tmp99_);
                              _tmp101_ = _tmp100_;
                              _g_free0 (_tmp99_);
                              _g_free0 (_tmp97_);
                              cvalueparam = _tmp101_;
                              vala_ccode_function_declarator_add_parameter (vdeclarator, cvalueparam);
                              _tmp102_ = g_strdup ("void");
                              _g_free0 (creturn_type);
                              creturn_type = _tmp102_;
                              _vala_ccode_node_unref0 (cvalueparam);
                        } else {
                              ValaPropertyAccessor* _tmp103_ = NULL;
                              ValaDataType* _tmp104_ = NULL;
                              gchar* _tmp105_ = NULL;
                              _tmp103_ = vala_property_get_get_accessor (prop);
                              _tmp104_ = vala_property_accessor_get_value_type (_tmp103_);
                              _tmp105_ = vala_data_type_get_cname (_tmp104_);
                              _g_free0 (creturn_type);
                              creturn_type = _tmp105_;
                        }
                        _tmp106_ = vala_property_get_property_type (prop);
                        _tmp107_ = _tmp106_;
                        _tmp108_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp107_) ? ((ValaArrayType*) _tmp107_) : NULL);
                        array_type = _tmp108_;
                        if (array_type != NULL) {
                              {
                                    gint dim;
                                    dim = 1;
                                    {
                                          gboolean _tmp109_;
                                          _tmp109_ = TRUE;
                                          while (TRUE) {
                                                gint _tmp110_;
                                                gchar* _tmp111_ = NULL;
                                                gchar* _tmp112_;
                                                ValaCCodeParameter* _tmp113_ = NULL;
                                                ValaCCodeParameter* _tmp114_;
                                                if (!_tmp109_) {
                                                      dim++;
                                                }
                                                _tmp109_ = FALSE;
                                                _tmp110_ = vala_array_type_get_rank (array_type);
                                                if (!(dim <= _tmp110_)) {
                                                      break;
                                                }
                                                _tmp111_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
                                                _tmp112_ = _tmp111_;
                                                _tmp113_ = vala_ccode_parameter_new (_tmp112_, "int*");
                                                _tmp114_ = _tmp113_;
                                                vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp114_);
                                                _vala_ccode_node_unref0 (_tmp114_);
                                                _g_free0 (_tmp112_);
                                          }
                                    }
                              }
                        } else {
                              gboolean _tmp115_ = FALSE;
                              ValaDataType* _tmp116_ = NULL;
                              _tmp116_ = vala_property_get_property_type (prop);
                              if (VALA_IS_DELEGATE_TYPE (_tmp116_)) {
                                    ValaDataType* _tmp117_ = NULL;
                                    ValaDelegate* _tmp118_ = NULL;
                                    gboolean _tmp119_;
                                    _tmp117_ = vala_property_get_property_type (prop);
                                    _tmp118_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp117_));
                                    _tmp119_ = vala_delegate_get_has_target (_tmp118_);
                                    _tmp115_ = _tmp119_;
                              } else {
                                    _tmp115_ = FALSE;
                              }
                              if (_tmp115_) {
                                    gchar* _tmp120_ = NULL;
                                    gchar* _tmp121_;
                                    ValaCCodeParameter* _tmp122_ = NULL;
                                    ValaCCodeParameter* _tmp123_;
                                    _tmp120_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
                                    _tmp121_ = _tmp120_;
                                    _tmp122_ = vala_ccode_parameter_new (_tmp121_, "gpointer*");
                                    _tmp123_ = _tmp122_;
                                    vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp123_);
                                    _vala_ccode_node_unref0 (_tmp123_);
                                    _g_free0 (_tmp121_);
                              }
                        }
                        _tmp124_ = vala_ccode_declaration_new (creturn_type);
                        vdecl = _tmp124_;
                        vala_ccode_declaration_add_declarator (vdecl, (ValaCCodeDeclarator*) vdeclarator);
                        vala_ccode_struct_add_declaration (type_struct, vdecl);
                        _vala_ccode_node_unref0 (vdecl);
                        _vala_code_node_unref0 (array_type);
                        _g_free0 (creturn_type);
                        _vala_ccode_node_unref0 (vdeclarator);
                  }
                  _tmp125_ = vala_property_get_set_accessor (prop);
                  if (_tmp125_ != NULL) {
                        ValaCCodeParameter* cvalueparam = NULL;
                        ValaDataType* _tmp126_ = NULL;
                        gboolean _tmp127_;
                        const gchar* _tmp140_ = NULL;
                        gchar* _tmp141_ = NULL;
                        gchar* _tmp142_;
                        ValaCCodeFunctionDeclarator* _tmp143_ = NULL;
                        ValaCCodeFunctionDeclarator* _tmp144_;
                        ValaCCodeFunctionDeclarator* vdeclarator;
                        ValaDataType* _tmp145_ = NULL;
                        ValaDataType* _tmp146_;
                        ValaArrayType* _tmp147_;
                        ValaArrayType* array_type;
                        ValaCCodeDeclaration* _tmp163_ = NULL;
                        ValaCCodeDeclaration* vdecl;
                        _tmp126_ = vala_property_get_property_type (prop);
                        _tmp127_ = vala_data_type_is_real_non_null_struct_type (_tmp126_);
                        if (_tmp127_) {
                              ValaPropertyAccessor* _tmp128_ = NULL;
                              ValaDataType* _tmp129_ = NULL;
                              gchar* _tmp130_ = NULL;
                              gchar* _tmp131_;
                              gchar* _tmp132_;
                              gchar* _tmp133_;
                              ValaCCodeParameter* _tmp134_ = NULL;
                              _tmp128_ = vala_property_get_set_accessor (prop);
                              _tmp129_ = vala_property_accessor_get_value_type (_tmp128_);
                              _tmp130_ = vala_data_type_get_cname (_tmp129_);
                              _tmp131_ = _tmp130_;
                              _tmp132_ = g_strconcat (_tmp131_, "*", NULL);
                              _tmp133_ = _tmp132_;
                              _tmp134_ = vala_ccode_parameter_new ("value", _tmp133_);
                              _vala_ccode_node_unref0 (cvalueparam);
                              cvalueparam = _tmp134_;
                              _g_free0 (_tmp133_);
                              _g_free0 (_tmp131_);
                        } else {
                              ValaPropertyAccessor* _tmp135_ = NULL;
                              ValaDataType* _tmp136_ = NULL;
                              gchar* _tmp137_ = NULL;
                              gchar* _tmp138_;
                              ValaCCodeParameter* _tmp139_ = NULL;
                              _tmp135_ = vala_property_get_set_accessor (prop);
                              _tmp136_ = vala_property_accessor_get_value_type (_tmp135_);
                              _tmp137_ = vala_data_type_get_cname (_tmp136_);
                              _tmp138_ = _tmp137_;
                              _tmp139_ = vala_ccode_parameter_new ("value", _tmp138_);
                              _vala_ccode_node_unref0 (cvalueparam);
                              cvalueparam = _tmp139_;
                              _g_free0 (_tmp138_);
                        }
                        _tmp140_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp141_ = g_strdup_printf ("set_%s", _tmp140_);
                        _tmp142_ = _tmp141_;
                        _tmp143_ = vala_ccode_function_declarator_new (_tmp142_);
                        _tmp144_ = _tmp143_;
                        _g_free0 (_tmp142_);
                        vdeclarator = _tmp144_;
                        vala_ccode_function_declarator_add_parameter (vdeclarator, cselfparam);
                        vala_ccode_function_declarator_add_parameter (vdeclarator, cvalueparam);
                        _tmp145_ = vala_property_get_property_type (prop);
                        _tmp146_ = _tmp145_;
                        _tmp147_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp146_) ? ((ValaArrayType*) _tmp146_) : NULL);
                        array_type = _tmp147_;
                        if (array_type != NULL) {
                              {
                                    gint dim;
                                    dim = 1;
                                    {
                                          gboolean _tmp148_;
                                          _tmp148_ = TRUE;
                                          while (TRUE) {
                                                gint _tmp149_;
                                                gchar* _tmp150_ = NULL;
                                                gchar* _tmp151_;
                                                ValaCCodeParameter* _tmp152_ = NULL;
                                                ValaCCodeParameter* _tmp153_;
                                                if (!_tmp148_) {
                                                      dim++;
                                                }
                                                _tmp148_ = FALSE;
                                                _tmp149_ = vala_array_type_get_rank (array_type);
                                                if (!(dim <= _tmp149_)) {
                                                      break;
                                                }
                                                _tmp150_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
                                                _tmp151_ = _tmp150_;
                                                _tmp152_ = vala_ccode_parameter_new (_tmp151_, "int");
                                                _tmp153_ = _tmp152_;
                                                vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp153_);
                                                _vala_ccode_node_unref0 (_tmp153_);
                                                _g_free0 (_tmp151_);
                                          }
                                    }
                              }
                        } else {
                              gboolean _tmp154_ = FALSE;
                              ValaDataType* _tmp155_ = NULL;
                              _tmp155_ = vala_property_get_property_type (prop);
                              if (VALA_IS_DELEGATE_TYPE (_tmp155_)) {
                                    ValaDataType* _tmp156_ = NULL;
                                    ValaDelegate* _tmp157_ = NULL;
                                    gboolean _tmp158_;
                                    _tmp156_ = vala_property_get_property_type (prop);
                                    _tmp157_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (_tmp156_));
                                    _tmp158_ = vala_delegate_get_has_target (_tmp157_);
                                    _tmp154_ = _tmp158_;
                              } else {
                                    _tmp154_ = FALSE;
                              }
                              if (_tmp154_) {
                                    gchar* _tmp159_ = NULL;
                                    gchar* _tmp160_;
                                    ValaCCodeParameter* _tmp161_ = NULL;
                                    ValaCCodeParameter* _tmp162_;
                                    _tmp159_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "value");
                                    _tmp160_ = _tmp159_;
                                    _tmp161_ = vala_ccode_parameter_new (_tmp160_, "gpointer");
                                    _tmp162_ = _tmp161_;
                                    vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp162_);
                                    _vala_ccode_node_unref0 (_tmp162_);
                                    _g_free0 (_tmp160_);
                              }
                        }
                        _tmp163_ = vala_ccode_declaration_new ("void");
                        vdecl = _tmp163_;
                        vala_ccode_declaration_add_declarator (vdecl, (ValaCCodeDeclarator*) vdeclarator);
                        vala_ccode_struct_add_declaration (type_struct, vdecl);
                        _vala_ccode_node_unref0 (vdecl);
                        _vala_code_node_unref0 (array_type);
                        _vala_ccode_node_unref0 (vdeclarator);
                        _vala_ccode_node_unref0 (cvalueparam);
                  }
                  _vala_ccode_node_unref0 (cselfparam);
                  _vala_code_node_unref0 (this_type);
                  _vala_code_node_unref0 (t);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      {
            ValaList* _tmp164_ = NULL;
            ValaList* _f_list;
            gint _tmp165_;
            gint _f_size;
            gint _f_index;
            _tmp164_ = vala_class_get_fields (cl);
            _f_list = _tmp164_;
            _tmp165_ = vala_collection_get_size ((ValaCollection*) _f_list);
            _f_size = _tmp165_;
            _f_index = -1;
            while (TRUE) {
                  gpointer _tmp166_ = NULL;
                  ValaField* f;
                  ValaDataType* _tmp167_ = NULL;
                  gchar* _tmp168_ = NULL;
                  gchar* field_ctype;
                  gboolean _tmp169_;
                  ValaSymbolAccessibility _tmp171_;
                  _f_index = _f_index + 1;
                  if (!(_f_index < _f_size)) {
                        break;
                  }
                  _tmp166_ = vala_list_get (_f_list, _f_index);
                  f = (ValaField*) _tmp166_;
                  _tmp167_ = vala_variable_get_variable_type ((ValaVariable*) f);
                  _tmp168_ = vala_data_type_get_cname (_tmp167_);
                  field_ctype = _tmp168_;
                  _tmp169_ = vala_field_get_is_volatile (f);
                  if (_tmp169_) {
                        gchar* _tmp170_;
                        _tmp170_ = g_strconcat ("volatile ", field_ctype, NULL);
                        _g_free0 (field_ctype);
                        field_ctype = _tmp170_;
                  }
                  _tmp171_ = vala_symbol_get_access ((ValaSymbol*) f);
                  if (_tmp171_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                        ValaMemberBinding _tmp172_;
                        _tmp172_ = vala_field_get_binding (f);
                        if (_tmp172_ == VALA_MEMBER_BINDING_INSTANCE) {
                              ValaDataType* _tmp173_ = NULL;
                              gchar* _tmp174_ = NULL;
                              gchar* _tmp175_;
                              ValaDataType* _tmp176_ = NULL;
                              gchar* _tmp177_ = NULL;
                              gchar* _tmp178_;
                              gboolean _tmp179_ = FALSE;
                              ValaDataType* _tmp180_ = NULL;
                              _tmp173_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp173_, decl_space);
                              _tmp174_ = vala_field_get_cname (f);
                              _tmp175_ = _tmp174_;
                              _tmp176_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              _tmp177_ = vala_data_type_get_cdeclarator_suffix (_tmp176_);
                              _tmp178_ = _tmp177_;
                              vala_ccode_struct_add_field (instance_struct, field_ctype, _tmp175_, _tmp178_);
                              _g_free0 (_tmp178_);
                              _g_free0 (_tmp175_);
                              _tmp180_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              if (VALA_IS_ARRAY_TYPE (_tmp180_)) {
                                    gboolean _tmp181_;
                                    _tmp181_ = vala_variable_get_no_array_length ((ValaVariable*) f);
                                    _tmp179_ = !_tmp181_;
                              } else {
                                    _tmp179_ = FALSE;
                              }
                              if (_tmp179_) {
                                    ValaDataType* _tmp182_ = NULL;
                                    ValaArrayType* _tmp183_;
                                    ValaArrayType* array_type;
                                    gboolean _tmp184_;
                                    _tmp182_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                    _tmp183_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp182_));
                                    array_type = _tmp183_;
                                    _tmp184_ = vala_array_type_get_fixed_length (array_type);
                                    if (!_tmp184_) {
                                          ValaDataType* _tmp185_ = NULL;
                                          ValaDataType* len_type;
                                          gboolean _tmp194_ = FALSE;
                                          gint _tmp195_;
                                          _tmp185_ = vala_data_type_copy (((ValaCCodeBaseModule*) self)->int_type);
                                          len_type = _tmp185_;
                                          {
                                                gint dim;
                                                dim = 1;
                                                {
                                                      gboolean _tmp186_;
                                                      _tmp186_ = TRUE;
                                                      while (TRUE) {
                                                            gint _tmp187_;
                                                            gchar* length_cname = NULL;
                                                            gboolean _tmp188_;
                                                            gchar* _tmp192_ = NULL;
                                                            gchar* _tmp193_;
                                                            if (!_tmp186_) {
                                                                  dim++;
                                                            }
                                                            _tmp186_ = FALSE;
                                                            _tmp187_ = vala_array_type_get_rank (array_type);
                                                            if (!(dim <= _tmp187_)) {
                                                                  break;
                                                            }
                                                            _tmp188_ = vala_variable_get_has_array_length_cname ((ValaVariable*) f);
                                                            if (_tmp188_) {
                                                                  gchar* _tmp189_ = NULL;
                                                                  _tmp189_ = vala_variable_get_array_length_cname ((ValaVariable*) f);
                                                                  _g_free0 (length_cname);
                                                                  length_cname = _tmp189_;
                                                            } else {
                                                                  const gchar* _tmp190_ = NULL;
                                                                  gchar* _tmp191_ = NULL;
                                                                  _tmp190_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                                  _tmp191_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp190_, dim);
                                                                  _g_free0 (length_cname);
                                                                  length_cname = _tmp191_;
                                                            }
                                                            _tmp192_ = vala_data_type_get_cname (len_type);
                                                            _tmp193_ = _tmp192_;
                                                            vala_ccode_struct_add_field (instance_struct, _tmp193_, length_cname, NULL);
                                                            _g_free0 (_tmp193_);
                                                            _g_free0 (length_cname);
                                                      }
                                                }
                                          }
                                          _tmp195_ = vala_array_type_get_rank (array_type);
                                          if (_tmp195_ == 1) {
                                                gboolean _tmp196_;
                                                _tmp196_ = vala_symbol_is_internal_symbol ((ValaSymbol*) f);
                                                _tmp194_ = _tmp196_;
                                          } else {
                                                _tmp194_ = FALSE;
                                          }
                                          if (_tmp194_) {
                                                gchar* _tmp197_ = NULL;
                                                gchar* _tmp198_;
                                                const gchar* _tmp199_ = NULL;
                                                gchar* _tmp200_ = NULL;
                                                gchar* _tmp201_;
                                                _tmp197_ = vala_data_type_get_cname (len_type);
                                                _tmp198_ = _tmp197_;
                                                _tmp199_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                _tmp200_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp199_);
                                                _tmp201_ = _tmp200_;
                                                vala_ccode_struct_add_field (instance_struct, _tmp198_, _tmp201_, NULL);
                                                _g_free0 (_tmp201_);
                                                _g_free0 (_tmp198_);
                                          }
                                          _vala_code_node_unref0 (len_type);
                                    }
                                    _vala_code_node_unref0 (array_type);
                              } else {
                                    ValaDataType* _tmp202_ = NULL;
                                    _tmp202_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                    if (VALA_IS_DELEGATE_TYPE (_tmp202_)) {
                                          ValaDataType* _tmp203_ = NULL;
                                          ValaDelegateType* _tmp204_;
                                          ValaDelegateType* delegate_type;
                                          ValaDelegate* _tmp205_ = NULL;
                                          gboolean _tmp206_;
                                          _tmp203_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                          _tmp204_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp203_));
                                          delegate_type = _tmp204_;
                                          _tmp205_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                                          _tmp206_ = vala_delegate_get_has_target (_tmp205_);
                                          if (_tmp206_) {
                                                const gchar* _tmp207_ = NULL;
                                                gchar* _tmp208_ = NULL;
                                                gchar* _tmp209_;
                                                gboolean _tmp210_;
                                                _tmp207_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                _tmp208_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp207_);
                                                _tmp209_ = _tmp208_;
                                                vala_ccode_struct_add_field (instance_struct, "gpointer", _tmp209_, NULL);
                                                _g_free0 (_tmp209_);
                                                _tmp210_ = vala_data_type_get_value_owned ((ValaDataType*) delegate_type);
                                                if (_tmp210_) {
                                                      const gchar* _tmp211_ = NULL;
                                                      gchar* _tmp212_ = NULL;
                                                      gchar* _tmp213_;
                                                      _tmp211_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                      _tmp212_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp211_);
                                                      _tmp213_ = _tmp212_;
                                                      vala_ccode_struct_add_field (instance_struct, "GDestroyNotify", _tmp213_, NULL);
                                                      _g_free0 (_tmp213_);
                                                }
                                          }
                                          _vala_code_node_unref0 (delegate_type);
                                    }
                              }
                        } else {
                              ValaMemberBinding _tmp214_;
                              _tmp214_ = vala_field_get_binding (f);
                              if (_tmp214_ == VALA_MEMBER_BINDING_CLASS) {
                                    gchar* _tmp215_ = NULL;
                                    gchar* _tmp216_;
                                    _tmp215_ = vala_field_get_cname (f);
                                    _tmp216_ = _tmp215_;
                                    vala_ccode_struct_add_field (type_struct, field_ctype, _tmp216_, NULL);
                                    _g_free0 (_tmp216_);
                              }
                        }
                  }
                  _g_free0 (field_ctype);
                  _vala_code_node_unref0 (f);
            }
            _vala_iterable_unref0 (_f_list);
      }
      _tmp218_ = vala_class_get_is_compact (cl);
      if (!_tmp218_) {
            _tmp217_ = TRUE;
      } else {
            ValaClass* _tmp219_ = NULL;
            _tmp219_ = vala_class_get_base_class (cl);
            _tmp217_ = _tmp219_ == NULL;
      }
      if (_tmp217_) {
            vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) instance_struct);
      }
      if (is_gtypeinstance) {
            vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) type_struct);
      }
      _vala_ccode_node_unref0 (type_struct);
      _vala_ccode_node_unref0 (instance_struct);
}


static void vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct) {
      gboolean _tmp0_ = FALSE;
      gboolean _tmp1_;
      ValaDataType* _tmp3_ = NULL;
      ValaDataType* _tmp4_;
      ValaDataType* creturn_type;
      ValaDataType* _tmp5_ = NULL;
      gboolean _tmp6_;
      const gchar* _tmp8_ = NULL;
      ValaCCodeFunctionDeclarator* _tmp9_ = NULL;
      ValaCCodeFunctionDeclarator* vdeclarator;
      ValaHashMap* _tmp10_ = NULL;
      ValaHashMap* cparam_map;
      ValaCCodeFunction* _tmp11_ = NULL;
      ValaCCodeFunction* _tmp12_;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      ValaCCodeDeclaration* _tmp15_ = NULL;
      ValaCCodeDeclaration* _tmp16_;
      ValaCCodeDeclaration* vdecl;
      g_return_if_fail (self != NULL);
      g_return_if_fail (m != NULL);
      g_return_if_fail (decl_space != NULL);
      g_return_if_fail (type_struct != NULL);
      _tmp1_ = vala_method_get_is_abstract (m);
      if (!_tmp1_) {
            gboolean _tmp2_;
            _tmp2_ = vala_method_get_is_virtual (m);
            _tmp0_ = !_tmp2_;
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            return;
      }
      _tmp3_ = vala_method_get_return_type (m);
      _tmp4_ = _vala_code_node_ref0 (_tmp3_);
      creturn_type = _tmp4_;
      _tmp5_ = vala_method_get_return_type (m);
      _tmp6_ = vala_data_type_is_real_non_null_struct_type (_tmp5_);
      if (_tmp6_) {
            ValaVoidType* _tmp7_ = NULL;
            _tmp7_ = vala_void_type_new (NULL);
            _vala_code_node_unref0 (creturn_type);
            creturn_type = (ValaDataType*) _tmp7_;
      }
      _tmp8_ = vala_method_get_vfunc_name (m);
      _tmp9_ = vala_ccode_function_declarator_new (_tmp8_);
      vdeclarator = _tmp9_;
      _tmp10_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
      cparam_map = _tmp10_;
      _tmp11_ = vala_ccode_function_new ("fake", "void");
      _tmp12_ = _tmp11_;
      vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, decl_space, (ValaMap*) cparam_map, _tmp12_, vdeclarator, NULL, NULL, 3);
      _vala_ccode_node_unref0 (_tmp12_);
      _tmp13_ = vala_data_type_get_cname (creturn_type);
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_declaration_new (_tmp14_);
      _tmp16_ = _tmp15_;
      _g_free0 (_tmp14_);
      vdecl = _tmp16_;
      vala_ccode_declaration_add_declarator (vdecl, (ValaCCodeDeclarator*) vdeclarator);
      vala_ccode_struct_add_declaration (type_struct, vdecl);
      _vala_ccode_node_unref0 (vdecl);
      _vala_map_unref0 (cparam_map);
      _vala_ccode_node_unref0 (vdeclarator);
      _vala_code_node_unref0 (creturn_type);
}


void vala_gtype_module_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct) {
      VALA_GTYPE_MODULE_GET_CLASS (self)->generate_virtual_method_declaration (self, m, decl_space, type_struct);
}


static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self, ValaClass* cl, ValaCCodeFile* decl_space) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_;
      gchar* _tmp3_;
      gboolean _tmp4_;
      gboolean _tmp5_;
      gboolean _tmp6_;
      gboolean is_gtypeinstance;
      gboolean has_class_locks;
      gchar* _tmp7_ = NULL;
      gchar* _tmp8_;
      gchar* _tmp9_ = NULL;
      gchar* _tmp10_;
      ValaCCodeStruct* _tmp11_ = NULL;
      ValaCCodeStruct* _tmp12_;
      ValaCCodeStruct* instance_priv_struct;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      gchar* _tmp15_ = NULL;
      gchar* _tmp16_;
      ValaCCodeStruct* _tmp17_ = NULL;
      ValaCCodeStruct* _tmp18_;
      ValaCCodeStruct* type_priv_struct;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      g_return_if_fail (decl_space != NULL);
      _tmp0_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strconcat (_tmp1_, "Private", NULL);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_file_add_declaration (decl_space, _tmp3_);
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      if (_tmp5_) {
            return;
      }
      _tmp6_ = vala_class_get_is_compact (cl);
      is_gtypeinstance = !_tmp6_;
      has_class_locks = FALSE;
      _tmp7_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp8_ = _tmp7_;
      _tmp9_ = g_strdup_printf ("_%sPrivate", _tmp8_);
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_struct_new (_tmp10_);
      _tmp12_ = _tmp11_;
      _g_free0 (_tmp10_);
      _g_free0 (_tmp8_);
      instance_priv_struct = _tmp12_;
      _tmp13_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp14_ = _tmp13_;
      _tmp15_ = g_strdup_printf ("_%sClassPrivate", _tmp14_);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_struct_new (_tmp16_);
      _tmp18_ = _tmp17_;
      _g_free0 (_tmp16_);
      _g_free0 (_tmp14_);
      type_priv_struct = _tmp18_;
      if (is_gtypeinstance) {
            {
                  ValaList* _tmp19_ = NULL;
                  ValaList* _type_param_list;
                  gint _tmp20_;
                  gint _type_param_size;
                  gint _type_param_index;
                  _tmp19_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
                  _type_param_list = _tmp19_;
                  _tmp20_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
                  _type_param_size = _tmp20_;
                  _type_param_index = -1;
                  while (TRUE) {
                        gpointer _tmp21_ = NULL;
                        ValaTypeParameter* type_param;
                        gchar* func_name = NULL;
                        const gchar* _tmp22_ = NULL;
                        gchar* _tmp23_ = NULL;
                        gchar* _tmp24_;
                        gchar* _tmp25_ = NULL;
                        const gchar* _tmp26_ = NULL;
                        gchar* _tmp27_ = NULL;
                        gchar* _tmp28_;
                        gchar* _tmp29_ = NULL;
                        const gchar* _tmp30_ = NULL;
                        gchar* _tmp31_ = NULL;
                        gchar* _tmp32_;
                        gchar* _tmp33_ = NULL;
                        _type_param_index = _type_param_index + 1;
                        if (!(_type_param_index < _type_param_size)) {
                              break;
                        }
                        _tmp21_ = vala_list_get (_type_param_list, _type_param_index);
                        type_param = (ValaTypeParameter*) _tmp21_;
                        _tmp22_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                        _tmp23_ = g_utf8_strdown (_tmp22_, (gssize) (-1));
                        _tmp24_ = _tmp23_;
                        _tmp25_ = g_strdup_printf ("%s_type", _tmp24_);
                        _g_free0 (func_name);
                        func_name = _tmp25_;
                        _g_free0 (_tmp24_);
                        vala_ccode_struct_add_field (instance_priv_struct, "GType", func_name, NULL);
                        _tmp26_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                        _tmp27_ = g_utf8_strdown (_tmp26_, (gssize) (-1));
                        _tmp28_ = _tmp27_;
                        _tmp29_ = g_strdup_printf ("%s_dup_func", _tmp28_);
                        _g_free0 (func_name);
                        func_name = _tmp29_;
                        _g_free0 (_tmp28_);
                        vala_ccode_struct_add_field (instance_priv_struct, "GBoxedCopyFunc", func_name, NULL);
                        _tmp30_ = vala_symbol_get_name ((ValaSymbol*) type_param);
                        _tmp31_ = g_utf8_strdown (_tmp30_, (gssize) (-1));
                        _tmp32_ = _tmp31_;
                        _tmp33_ = g_strdup_printf ("%s_destroy_func", _tmp32_);
                        _g_free0 (func_name);
                        func_name = _tmp33_;
                        _g_free0 (_tmp32_);
                        vala_ccode_struct_add_field (instance_priv_struct, "GDestroyNotify", func_name, NULL);
                        _g_free0 (func_name);
                        _vala_code_node_unref0 (type_param);
                  }
                  _vala_iterable_unref0 (_type_param_list);
            }
      }
      {
            ValaList* _tmp34_ = NULL;
            ValaList* _f_list;
            gint _tmp35_;
            gint _f_size;
            gint _f_index;
            _tmp34_ = vala_class_get_fields (cl);
            _f_list = _tmp34_;
            _tmp35_ = vala_collection_get_size ((ValaCollection*) _f_list);
            _f_size = _tmp35_;
            _f_index = -1;
            while (TRUE) {
                  gpointer _tmp36_ = NULL;
                  ValaField* f;
                  ValaDataType* _tmp37_ = NULL;
                  gchar* _tmp38_ = NULL;
                  gchar* field_ctype;
                  gboolean _tmp39_;
                  ValaMemberBinding _tmp41_;
                  _f_index = _f_index + 1;
                  if (!(_f_index < _f_size)) {
                        break;
                  }
                  _tmp36_ = vala_list_get (_f_list, _f_index);
                  f = (ValaField*) _tmp36_;
                  _tmp37_ = vala_variable_get_variable_type ((ValaVariable*) f);
                  _tmp38_ = vala_data_type_get_cname (_tmp37_);
                  field_ctype = _tmp38_;
                  _tmp39_ = vala_field_get_is_volatile (f);
                  if (_tmp39_) {
                        gchar* _tmp40_;
                        _tmp40_ = g_strconcat ("volatile ", field_ctype, NULL);
                        _g_free0 (field_ctype);
                        field_ctype = _tmp40_;
                  }
                  _tmp41_ = vala_field_get_binding (f);
                  if (_tmp41_ == VALA_MEMBER_BINDING_INSTANCE) {
                        ValaSymbolAccessibility _tmp42_;
                        gboolean _tmp84_;
                        _tmp42_ = vala_symbol_get_access ((ValaSymbol*) f);
                        if (_tmp42_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                              ValaDataType* _tmp43_ = NULL;
                              gchar* _tmp44_ = NULL;
                              gchar* _tmp45_;
                              ValaDataType* _tmp46_ = NULL;
                              gchar* _tmp47_ = NULL;
                              gchar* _tmp48_;
                              gboolean _tmp49_ = FALSE;
                              ValaDataType* _tmp50_ = NULL;
                              _tmp43_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp43_, decl_space);
                              _tmp44_ = vala_field_get_cname (f);
                              _tmp45_ = _tmp44_;
                              _tmp46_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              _tmp47_ = vala_data_type_get_cdeclarator_suffix (_tmp46_);
                              _tmp48_ = _tmp47_;
                              vala_ccode_struct_add_field (instance_priv_struct, field_ctype, _tmp45_, _tmp48_);
                              _g_free0 (_tmp48_);
                              _g_free0 (_tmp45_);
                              _tmp50_ = vala_variable_get_variable_type ((ValaVariable*) f);
                              if (VALA_IS_ARRAY_TYPE (_tmp50_)) {
                                    gboolean _tmp51_;
                                    _tmp51_ = vala_variable_get_no_array_length ((ValaVariable*) f);
                                    _tmp49_ = !_tmp51_;
                              } else {
                                    _tmp49_ = FALSE;
                              }
                              if (_tmp49_) {
                                    ValaDataType* _tmp52_ = NULL;
                                    ValaArrayType* _tmp53_;
                                    ValaArrayType* array_type;
                                    ValaDataType* _tmp54_ = NULL;
                                    ValaDataType* len_type;
                                    gboolean _tmp55_;
                                    _tmp52_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                    _tmp53_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp52_));
                                    array_type = _tmp53_;
                                    _tmp54_ = vala_data_type_copy (((ValaCCodeBaseModule*) self)->int_type);
                                    len_type = _tmp54_;
                                    _tmp55_ = vala_array_type_get_fixed_length (array_type);
                                    if (!_tmp55_) {
                                          gboolean _tmp64_ = FALSE;
                                          gint _tmp65_;
                                          {
                                                gint dim;
                                                dim = 1;
                                                {
                                                      gboolean _tmp56_;
                                                      _tmp56_ = TRUE;
                                                      while (TRUE) {
                                                            gint _tmp57_;
                                                            gchar* length_cname = NULL;
                                                            gboolean _tmp58_;
                                                            gchar* _tmp62_ = NULL;
                                                            gchar* _tmp63_;
                                                            if (!_tmp56_) {
                                                                  dim++;
                                                            }
                                                            _tmp56_ = FALSE;
                                                            _tmp57_ = vala_array_type_get_rank (array_type);
                                                            if (!(dim <= _tmp57_)) {
                                                                  break;
                                                            }
                                                            _tmp58_ = vala_variable_get_has_array_length_cname ((ValaVariable*) f);
                                                            if (_tmp58_) {
                                                                  gchar* _tmp59_ = NULL;
                                                                  _tmp59_ = vala_variable_get_array_length_cname ((ValaVariable*) f);
                                                                  _g_free0 (length_cname);
                                                                  length_cname = _tmp59_;
                                                            } else {
                                                                  const gchar* _tmp60_ = NULL;
                                                                  gchar* _tmp61_ = NULL;
                                                                  _tmp60_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                                  _tmp61_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp60_, dim);
                                                                  _g_free0 (length_cname);
                                                                  length_cname = _tmp61_;
                                                            }
                                                            _tmp62_ = vala_data_type_get_cname (len_type);
                                                            _tmp63_ = _tmp62_;
                                                            vala_ccode_struct_add_field (instance_priv_struct, _tmp63_, length_cname, NULL);
                                                            _g_free0 (_tmp63_);
                                                            _g_free0 (length_cname);
                                                      }
                                                }
                                          }
                                          _tmp65_ = vala_array_type_get_rank (array_type);
                                          if (_tmp65_ == 1) {
                                                gboolean _tmp66_;
                                                _tmp66_ = vala_symbol_is_internal_symbol ((ValaSymbol*) f);
                                                _tmp64_ = _tmp66_;
                                          } else {
                                                _tmp64_ = FALSE;
                                          }
                                          if (_tmp64_) {
                                                gchar* _tmp67_ = NULL;
                                                gchar* _tmp68_;
                                                const gchar* _tmp69_ = NULL;
                                                gchar* _tmp70_ = NULL;
                                                gchar* _tmp71_;
                                                _tmp67_ = vala_data_type_get_cname (len_type);
                                                _tmp68_ = _tmp67_;
                                                _tmp69_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                _tmp70_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp69_);
                                                _tmp71_ = _tmp70_;
                                                vala_ccode_struct_add_field (instance_priv_struct, _tmp68_, _tmp71_, NULL);
                                                _g_free0 (_tmp71_);
                                                _g_free0 (_tmp68_);
                                          }
                                    }
                                    _vala_code_node_unref0 (len_type);
                                    _vala_code_node_unref0 (array_type);
                              } else {
                                    ValaDataType* _tmp72_ = NULL;
                                    _tmp72_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                    if (VALA_IS_DELEGATE_TYPE (_tmp72_)) {
                                          ValaDataType* _tmp73_ = NULL;
                                          ValaDelegateType* _tmp74_;
                                          ValaDelegateType* delegate_type;
                                          ValaDelegate* _tmp75_ = NULL;
                                          gboolean _tmp76_;
                                          _tmp73_ = vala_variable_get_variable_type ((ValaVariable*) f);
                                          _tmp74_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp73_));
                                          delegate_type = _tmp74_;
                                          _tmp75_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                                          _tmp76_ = vala_delegate_get_has_target (_tmp75_);
                                          if (_tmp76_) {
                                                const gchar* _tmp77_ = NULL;
                                                gchar* _tmp78_ = NULL;
                                                gchar* _tmp79_;
                                                gboolean _tmp80_;
                                                _tmp77_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                _tmp78_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp77_);
                                                _tmp79_ = _tmp78_;
                                                vala_ccode_struct_add_field (instance_priv_struct, "gpointer", _tmp79_, NULL);
                                                _g_free0 (_tmp79_);
                                                _tmp80_ = vala_data_type_get_value_owned ((ValaDataType*) delegate_type);
                                                if (_tmp80_) {
                                                      const gchar* _tmp81_ = NULL;
                                                      gchar* _tmp82_ = NULL;
                                                      gchar* _tmp83_;
                                                      _tmp81_ = vala_symbol_get_name ((ValaSymbol*) f);
                                                      _tmp82_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp81_);
                                                      _tmp83_ = _tmp82_;
                                                      vala_ccode_struct_add_field (instance_priv_struct, "GDestroyNotify", _tmp83_, NULL);
                                                      _g_free0 (_tmp83_);
                                                }
                                          }
                                          _vala_code_node_unref0 (delegate_type);
                                    }
                              }
                        }
                        _tmp84_ = vala_lockable_get_lock_used ((ValaLockable*) f);
                        if (_tmp84_) {
                              gchar* _tmp85_ = NULL;
                              gchar* _tmp86_;
                              const gchar* _tmp87_ = NULL;
                              gchar* _tmp88_ = NULL;
                              gchar* _tmp89_;
                              vala_class_set_has_private_fields (cl, TRUE);
                              _tmp85_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) ((ValaCCodeBaseModule*) self)->mutex_type, FALSE);
                              _tmp86_ = _tmp85_;
                              _tmp87_ = vala_symbol_get_name ((ValaSymbol*) f);
                              _tmp88_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp87_);
                              _tmp89_ = _tmp88_;
                              vala_ccode_struct_add_field (instance_priv_struct, _tmp86_, _tmp89_, NULL);
                              _g_free0 (_tmp89_);
                              _g_free0 (_tmp86_);
                        }
                  } else {
                        ValaMemberBinding _tmp90_;
                        _tmp90_ = vala_field_get_binding (f);
                        if (_tmp90_ == VALA_MEMBER_BINDING_CLASS) {
                              ValaSymbolAccessibility _tmp91_;
                              gboolean _tmp94_;
                              _tmp91_ = vala_symbol_get_access ((ValaSymbol*) f);
                              if (_tmp91_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                                    gchar* _tmp92_ = NULL;
                                    gchar* _tmp93_;
                                    _tmp92_ = vala_field_get_cname (f);
                                    _tmp93_ = _tmp92_;
                                    vala_ccode_struct_add_field (type_priv_struct, field_ctype, _tmp93_, NULL);
                                    _g_free0 (_tmp93_);
                              }
                              _tmp94_ = vala_lockable_get_lock_used ((ValaLockable*) f);
                              if (_tmp94_) {
                                    gchar* _tmp95_ = NULL;
                                    gchar* _tmp96_;
                                    gchar* _tmp97_ = NULL;
                                    gchar* _tmp98_;
                                    gchar* _tmp99_ = NULL;
                                    gchar* _tmp100_;
                                    has_class_locks = TRUE;
                                    _tmp95_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) ((ValaCCodeBaseModule*) self)->mutex_type, FALSE);
                                    _tmp96_ = _tmp95_;
                                    _tmp97_ = vala_field_get_cname (f);
                                    _tmp98_ = _tmp97_;
                                    _tmp99_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp98_);
                                    _tmp100_ = _tmp99_;
                                    vala_ccode_struct_add_field (type_priv_struct, _tmp96_, _tmp100_, NULL);
                                    _g_free0 (_tmp100_);
                                    _g_free0 (_tmp98_);
                                    _g_free0 (_tmp96_);
                              }
                        }
                  }
                  _g_free0 (field_ctype);
                  _vala_code_node_unref0 (f);
            }
            _vala_iterable_unref0 (_f_list);
      }
      {
            ValaList* _tmp101_ = NULL;
            ValaList* _prop_list;
            gint _tmp102_;
            gint _prop_size;
            gint _prop_index;
            _tmp101_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
            _prop_list = _tmp101_;
            _tmp102_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp102_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp103_ = NULL;
                  ValaProperty* prop;
                  ValaMemberBinding _tmp104_;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp103_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp103_;
                  _tmp104_ = vala_property_get_binding (prop);
                  if (_tmp104_ == VALA_MEMBER_BINDING_INSTANCE) {
                        gboolean _tmp105_;
                        _tmp105_ = vala_lockable_get_lock_used ((ValaLockable*) prop);
                        if (_tmp105_) {
                              gchar* _tmp106_ = NULL;
                              gchar* _tmp107_;
                              const gchar* _tmp108_ = NULL;
                              gchar* _tmp109_ = NULL;
                              gchar* _tmp110_;
                              vala_class_set_has_private_fields (cl, TRUE);
                              _tmp106_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) ((ValaCCodeBaseModule*) self)->mutex_type, FALSE);
                              _tmp107_ = _tmp106_;
                              _tmp108_ = vala_symbol_get_name ((ValaSymbol*) prop);
                              _tmp109_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp108_);
                              _tmp110_ = _tmp109_;
                              vala_ccode_struct_add_field (instance_priv_struct, _tmp107_, _tmp110_, NULL);
                              _g_free0 (_tmp110_);
                              _g_free0 (_tmp107_);
                        }
                  } else {
                        ValaMemberBinding _tmp111_;
                        _tmp111_ = vala_property_get_binding (prop);
                        if (_tmp111_ == VALA_MEMBER_BINDING_CLASS) {
                              gboolean _tmp112_;
                              _tmp112_ = vala_lockable_get_lock_used ((ValaLockable*) prop);
                              if (_tmp112_) {
                                    gchar* _tmp113_ = NULL;
                                    gchar* _tmp114_;
                                    const gchar* _tmp115_ = NULL;
                                    gchar* _tmp116_ = NULL;
                                    gchar* _tmp117_;
                                    has_class_locks = TRUE;
                                    _tmp113_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) ((ValaCCodeBaseModule*) self)->mutex_type, FALSE);
                                    _tmp114_ = _tmp113_;
                                    _tmp115_ = vala_symbol_get_name ((ValaSymbol*) prop);
                                    _tmp116_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp115_);
                                    _tmp117_ = _tmp116_;
                                    vala_ccode_struct_add_field (type_priv_struct, _tmp114_, _tmp117_, NULL);
                                    _g_free0 (_tmp117_);
                                    _g_free0 (_tmp114_);
                              }
                        }
                  }
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      if (is_gtypeinstance) {
            gboolean _tmp118_ = FALSE;
            gboolean _tmp119_;
            gboolean _tmp142_ = FALSE;
            gboolean _tmp143_;
            gboolean _tmp159_ = FALSE;
            gboolean _tmp160_;
            _tmp119_ = vala_class_get_has_class_private_fields (cl);
            if (_tmp119_) {
                  _tmp118_ = TRUE;
            } else {
                  _tmp118_ = has_class_locks;
            }
            if (_tmp118_) {
                  const gchar* _tmp120_ = NULL;
                  gchar* _tmp121_ = NULL;
                  gchar* _tmp122_;
                  gchar* _tmp123_ = NULL;
                  gchar* _tmp124_;
                  gchar* _tmp125_ = NULL;
                  gchar* _tmp126_;
                  ValaCCodeVariableDeclarator* _tmp127_ = NULL;
                  ValaCCodeVariableDeclarator* _tmp128_;
                  ValaCCodeTypeDefinition* _tmp129_ = NULL;
                  ValaCCodeTypeDefinition* _tmp130_;
                  ValaCodeContext* _tmp131_ = NULL;
                  gboolean _tmp132_;
                  _tmp120_ = vala_ccode_struct_get_name (type_priv_struct);
                  _tmp121_ = g_strdup_printf ("struct %s", _tmp120_);
                  _tmp122_ = _tmp121_;
                  _tmp123_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                  _tmp124_ = _tmp123_;
                  _tmp125_ = g_strdup_printf ("%sClassPrivate", _tmp124_);
                  _tmp126_ = _tmp125_;
                  _tmp127_ = vala_ccode_variable_declarator_new (_tmp126_, NULL, NULL);
                  _tmp128_ = _tmp127_;
                  _tmp129_ = vala_ccode_type_definition_new (_tmp122_, (ValaCCodeDeclarator*) _tmp128_);
                  _tmp130_ = _tmp129_;
                  vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp130_);
                  _vala_ccode_node_unref0 (_tmp130_);
                  _vala_ccode_node_unref0 (_tmp128_);
                  _g_free0 (_tmp126_);
                  _g_free0 (_tmp124_);
                  _g_free0 (_tmp122_);
                  _tmp131_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
                  _tmp132_ = vala_code_context_require_glib_version (_tmp131_, 2, 24);
                  if (!_tmp132_) {
                        ValaCCodeDeclaration* _tmp133_ = NULL;
                        ValaCCodeDeclaration* _cdecl_;
                        gchar* _tmp134_ = NULL;
                        gchar* _tmp135_;
                        gchar* _tmp136_ = NULL;
                        gchar* _tmp137_;
                        ValaCCodeConstant* _tmp138_ = NULL;
                        ValaCCodeConstant* _tmp139_;
                        ValaCCodeVariableDeclarator* _tmp140_ = NULL;
                        ValaCCodeVariableDeclarator* _tmp141_;
                        _tmp133_ = vala_ccode_declaration_new ("GQuark");
                        _cdecl_ = _tmp133_;
                        _tmp134_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                        _tmp135_ = _tmp134_;
                        _tmp136_ = g_strdup_printf ("_vala_%s_class_private_quark", _tmp135_);
                        _tmp137_ = _tmp136_;
                        _tmp138_ = vala_ccode_constant_new ("0");
                        _tmp139_ = _tmp138_;
                        _tmp140_ = vala_ccode_variable_declarator_new (_tmp137_, (ValaCCodeExpression*) _tmp139_, NULL);
                        _tmp141_ = _tmp140_;
                        vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp141_);
                        _vala_ccode_node_unref0 (_tmp141_);
                        _vala_ccode_node_unref0 (_tmp139_);
                        _g_free0 (_tmp137_);
                        _g_free0 (_tmp135_);
                        vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
                        vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _cdecl_);
                        _vala_ccode_node_unref0 (_cdecl_);
                  }
            }
            _tmp143_ = vala_class_get_has_private_fields (cl);
            if (_tmp143_) {
                  _tmp142_ = TRUE;
            } else {
                  ValaList* _tmp144_ = NULL;
                  ValaList* _tmp145_;
                  gint _tmp146_;
                  _tmp144_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
                  _tmp145_ = _tmp144_;
                  _tmp146_ = vala_collection_get_size ((ValaCollection*) _tmp145_);
                  _tmp142_ = _tmp146_ > 0;
                  _vala_iterable_unref0 (_tmp145_);
            }
            if (_tmp142_) {
                  gchar* _tmp147_ = NULL;
                  gchar* _tmp148_;
                  gchar* _tmp149_ = NULL;
                  gchar* _tmp150_;
                  gchar* _tmp151_ = NULL;
                  gchar* _tmp152_;
                  gchar* macro;
                  gchar* _tmp153_ = NULL;
                  gchar* _tmp154_;
                  gchar* _tmp155_ = NULL;
                  gchar* _tmp156_;
                  ValaCCodeMacroReplacement* _tmp157_ = NULL;
                  ValaCCodeMacroReplacement* _tmp158_;
                  vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) instance_priv_struct);
                  _tmp147_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
                  _tmp148_ = _tmp147_;
                  _tmp149_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                  _tmp150_ = _tmp149_;
                  _tmp151_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_PRIVATE ((o), %s, %sPrivate))", _tmp148_, _tmp150_);
                  _tmp152_ = _tmp151_;
                  _g_free0 (_tmp150_);
                  _g_free0 (_tmp148_);
                  macro = _tmp152_;
                  _tmp153_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                  _tmp154_ = _tmp153_;
                  _tmp155_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp154_);
                  _tmp156_ = _tmp155_;
                  _tmp157_ = vala_ccode_macro_replacement_new (_tmp156_, macro);
                  _tmp158_ = _tmp157_;
                  vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp158_);
                  _vala_ccode_node_unref0 (_tmp158_);
                  _g_free0 (_tmp156_);
                  _g_free0 (_tmp154_);
                  _g_free0 (macro);
            }
            _tmp160_ = vala_class_get_has_class_private_fields (cl);
            if (_tmp160_) {
                  _tmp159_ = TRUE;
            } else {
                  _tmp159_ = has_class_locks;
            }
            if (_tmp159_) {
                  gchar* macro = NULL;
                  ValaCodeContext* _tmp161_ = NULL;
                  gboolean _tmp162_;
                  gchar* _tmp173_ = NULL;
                  gchar* _tmp174_;
                  gchar* _tmp175_ = NULL;
                  gchar* _tmp176_;
                  ValaCCodeMacroReplacement* _tmp177_ = NULL;
                  ValaCCodeMacroReplacement* _tmp178_;
                  vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) type_priv_struct);
                  _tmp161_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
                  _tmp162_ = vala_code_context_require_glib_version (_tmp161_, 2, 24);
                  if (_tmp162_) {
                        gchar* _tmp163_ = NULL;
                        gchar* _tmp164_;
                        gchar* _tmp165_ = NULL;
                        gchar* _tmp166_;
                        gchar* _tmp167_ = NULL;
                        _tmp163_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
                        _tmp164_ = _tmp163_;
                        _tmp165_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                        _tmp166_ = _tmp165_;
                        _tmp167_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))", _tmp164_, _tmp166_);
                        _g_free0 (macro);
                        macro = _tmp167_;
                        _g_free0 (_tmp166_);
                        _g_free0 (_tmp164_);
                  } else {
                        gchar* _tmp168_ = NULL;
                        gchar* _tmp169_;
                        gchar* _tmp170_ = NULL;
                        gchar* _tmp171_;
                        gchar* _tmp172_ = NULL;
                        _tmp168_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                        _tmp169_ = _tmp168_;
                        _tmp170_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                        _tmp171_ = _tmp170_;
                        _tmp172_ = g_strdup_printf ("((%sClassPrivate *) g_type_get_qdata (G_TYPE_FROM_CLASS (klass), _vala" \
"_%s_class_private_quark))", _tmp169_, _tmp171_);
                        _g_free0 (macro);
                        macro = _tmp172_;
                        _g_free0 (_tmp171_);
                        _g_free0 (_tmp169_);
                  }
                  _tmp173_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                  _tmp174_ = _tmp173_;
                  _tmp175_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE(klass)", _tmp174_);
                  _tmp176_ = _tmp175_;
                  _tmp177_ = vala_ccode_macro_replacement_new (_tmp176_, macro);
                  _tmp178_ = _tmp177_;
                  vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp178_);
                  _vala_ccode_node_unref0 (_tmp178_);
                  _g_free0 (_tmp176_);
                  _g_free0 (_tmp174_);
                  _g_free0 (macro);
            }
            vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) ((ValaCCodeBaseModule*) self)->prop_enum);
      } else {
            gboolean _tmp179_;
            _tmp179_ = vala_class_get_has_private_fields (cl);
            if (_tmp179_) {
                  ValaSourceReference* _tmp180_ = NULL;
                  _tmp180_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
                  vala_report_error (_tmp180_, "Private fields not supported in compact classes");
            }
      }
      _vala_ccode_node_unref0 (type_priv_struct);
      _vala_ccode_node_unref0 (instance_priv_struct);
}


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


static gpointer _vala_ccode_base_module_emit_context_ref0 (gpointer self) {
      return self ? vala_ccode_base_module_emit_context_ref (self) : NULL;
}


static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
      ValaGTypeModule * self;
      ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp1_;
      ValaCCodeStruct* _tmp2_;
      ValaCCodeStruct* old_param_spec_struct;
      ValaCCodeEnum* _tmp3_;
      ValaCCodeEnum* old_prop_enum;
      ValaCCodeBaseModuleEmitContext* _tmp4_;
      ValaCCodeBaseModuleEmitContext* old_class_init_context;
      ValaCCodeBaseModuleEmitContext* _tmp5_;
      ValaCCodeBaseModuleEmitContext* old_base_init_context;
      ValaCCodeBaseModuleEmitContext* _tmp6_;
      ValaCCodeBaseModuleEmitContext* old_class_finalize_context;
      ValaCCodeBaseModuleEmitContext* _tmp7_;
      ValaCCodeBaseModuleEmitContext* old_base_finalize_context;
      ValaCCodeBaseModuleEmitContext* _tmp8_;
      ValaCCodeBaseModuleEmitContext* old_instance_init_context;
      ValaCCodeBaseModuleEmitContext* _tmp9_;
      ValaCCodeBaseModuleEmitContext* old_instance_finalize_context;
      gboolean _tmp10_;
      gboolean is_gtypeinstance;
      gboolean _tmp11_ = FALSE;
      gboolean is_fundamental;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      gint _tmp15_;
      gboolean _tmp16_;
      ValaCCodeEnum* _tmp22_ = NULL;
      gchar* _tmp23_ = NULL;
      gchar* _tmp24_;
      gchar* _tmp25_ = NULL;
      gchar* _tmp26_;
      ValaCCodeEnumValue* _tmp27_ = NULL;
      ValaCCodeEnumValue* _tmp28_;
      ValaCCodeBaseModuleEmitContext* _tmp29_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp30_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp31_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp32_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp33_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp34_ = NULL;
      gboolean _tmp35_;
      gboolean _tmp36_;
      ValaCCodeStruct* _tmp198_;
      ValaCCodeEnum* _tmp199_;
      ValaCCodeBaseModuleEmitContext* _tmp200_;
      ValaCCodeBaseModuleEmitContext* _tmp201_;
      ValaCCodeBaseModuleEmitContext* _tmp202_;
      ValaCCodeBaseModuleEmitContext* _tmp203_;
      ValaCCodeBaseModuleEmitContext* _tmp204_;
      ValaCCodeBaseModuleEmitContext* _tmp205_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
      _vala_ccode_base_module_emit_context_unref0 (_tmp1_);
      _tmp2_ = _vala_ccode_node_ref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
      old_param_spec_struct = _tmp2_;
      _tmp3_ = _vala_ccode_node_ref0 (((ValaCCodeBaseModule*) self)->prop_enum);
      old_prop_enum = _tmp3_;
      _tmp4_ = _vala_ccode_base_module_emit_context_ref0 (((ValaCCodeBaseModule*) self)->class_init_context);
      old_class_init_context = _tmp4_;
      _tmp5_ = _vala_ccode_base_module_emit_context_ref0 (((ValaCCodeBaseModule*) self)->base_init_context);
      old_base_init_context = _tmp5_;
      _tmp6_ = _vala_ccode_base_module_emit_context_ref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
      old_class_finalize_context = _tmp6_;
      _tmp7_ = _vala_ccode_base_module_emit_context_ref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
      old_base_finalize_context = _tmp7_;
      _tmp8_ = _vala_ccode_base_module_emit_context_ref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
      old_instance_init_context = _tmp8_;
      _tmp9_ = _vala_ccode_base_module_emit_context_ref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
      old_instance_finalize_context = _tmp9_;
      _tmp10_ = vala_class_get_is_compact (cl);
      is_gtypeinstance = !_tmp10_;
      if (is_gtypeinstance) {
            ValaClass* _tmp12_ = NULL;
            _tmp12_ = vala_class_get_base_class (cl);
            _tmp11_ = _tmp12_ == NULL;
      } else {
            _tmp11_ = FALSE;
      }
      is_fundamental = _tmp11_;
      _tmp13_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp14_ = _tmp13_;
      _tmp15_ = strlen (_tmp14_);
      _tmp16_ = _tmp15_ < 3;
      _g_free0 (_tmp14_);
      if (_tmp16_) {
            ValaSourceReference* _tmp17_ = NULL;
            gchar* _tmp18_ = NULL;
            gchar* _tmp19_;
            gchar* _tmp20_ = NULL;
            gchar* _tmp21_;
            vala_code_node_set_error ((ValaCodeNode*) cl, TRUE);
            _tmp17_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
            _tmp18_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp19_ = _tmp18_;
            _tmp20_ = g_strdup_printf ("Class name `%s' is too short", _tmp19_);
            _tmp21_ = _tmp20_;
            vala_report_error (_tmp17_, _tmp21_);
            _g_free0 (_tmp21_);
            _g_free0 (_tmp19_);
            _vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
            _vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
            _vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
            _vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
            _vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
            _vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
            _vala_ccode_node_unref0 (old_prop_enum);
            _vala_ccode_node_unref0 (old_param_spec_struct);
            return;
      }
      _tmp22_ = vala_ccode_enum_new (NULL);
      _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
      ((ValaCCodeBaseModule*) self)->prop_enum = _tmp22_;
      _tmp23_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
      _tmp24_ = _tmp23_;
      _tmp25_ = g_strdup_printf ("%s_DUMMY_PROPERTY", _tmp24_);
      _tmp26_ = _tmp25_;
      _tmp27_ = vala_ccode_enum_value_new (_tmp26_, NULL);
      _tmp28_ = _tmp27_;
      vala_ccode_enum_add_value (((ValaCCodeBaseModule*) self)->prop_enum, _tmp28_);
      _vala_ccode_node_unref0 (_tmp28_);
      _g_free0 (_tmp26_);
      _g_free0 (_tmp24_);
      _tmp29_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
      ((ValaCCodeBaseModule*) self)->class_init_context = _tmp29_;
      _tmp30_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
      ((ValaCCodeBaseModule*) self)->base_init_context = _tmp30_;
      _tmp31_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
      ((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp31_;
      _tmp32_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
      ((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp32_;
      _tmp33_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
      ((ValaCCodeBaseModule*) self)->instance_init_context = _tmp33_;
      _tmp34_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
      ((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp34_;
      vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, ((ValaCCodeBaseModule*) self)->cfile);
      vala_gtype_module_generate_class_private_declaration (self, cl, ((ValaCCodeBaseModule*) self)->cfile);
      _tmp35_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
      if (!_tmp35_) {
            vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, ((ValaCCodeBaseModule*) self)->header_file);
      }
      _tmp36_ = vala_symbol_is_private_symbol ((ValaSymbol*) cl);
      if (!_tmp36_) {
            vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, ((ValaCCodeBaseModule*) self)->internal_header_file);
      }
      if (is_gtypeinstance) {
            vala_gtype_module_begin_base_init_function (self, cl);
            vala_gtype_module_begin_class_init_function (self, cl);
            vala_gtype_module_begin_instance_init_function (self, cl);
            vala_gtype_module_begin_base_finalize_function (self, cl);
            vala_gtype_module_begin_class_finalize_function (self, cl);
            vala_gtype_module_begin_finalize_function (self, cl);
      } else {
            ValaClass* _tmp37_ = NULL;
            _tmp37_ = vala_class_get_base_class (cl);
            if (_tmp37_ == NULL) {
                  vala_gtype_module_begin_instance_init_function (self, cl);
                  vala_gtype_module_begin_finalize_function (self, cl);
            }
      }
      vala_code_node_accept_children ((ValaCodeNode*) cl, (ValaCodeVisitor*) self);
      if (is_gtypeinstance) {
            gboolean _tmp66_ = FALSE;
            ValaConstructor* _tmp67_ = NULL;
            gboolean _tmp72_ = FALSE;
            ValaDestructor* _tmp73_ = NULL;
            ValaDestructor* _tmp78_ = NULL;
            gboolean _tmp84_ = FALSE;
            gboolean _tmp85_;
            ValaComment* _tmp94_ = NULL;
            ValaCodeContext* _tmp99_ = NULL;
            ValaClassRegisterFunction* _tmp100_ = NULL;
            ValaClassRegisterFunction* type_fun;
            ValaCCodeFragment* _tmp101_ = NULL;
            ValaCCodeFragment* _tmp102_;
            ValaCCodeFragment* _tmp103_ = NULL;
            ValaCCodeFragment* _tmp104_;
            if (is_fundamental) {
                  ValaSymbol* _tmp38_ = NULL;
                  gchar* _tmp39_ = NULL;
                  gchar* _tmp40_;
                  const gchar* _tmp41_ = NULL;
                  gchar* _tmp42_ = NULL;
                  gchar* _tmp43_;
                  ValaCCodeStruct* _tmp44_ = NULL;
                  const gchar* _tmp45_ = NULL;
                  gchar* _tmp46_ = NULL;
                  gchar* _tmp47_;
                  ValaSymbol* _tmp48_ = NULL;
                  gchar* _tmp49_ = NULL;
                  gchar* _tmp50_;
                  const gchar* _tmp51_ = NULL;
                  gchar* _tmp52_ = NULL;
                  gchar* _tmp53_;
                  ValaCCodeVariableDeclarator* _tmp54_ = NULL;
                  ValaCCodeVariableDeclarator* _tmp55_;
                  ValaCCodeTypeDefinition* _tmp56_ = NULL;
                  ValaCCodeTypeDefinition* _tmp57_;
                  ValaCCodeIdentifier* _tmp58_ = NULL;
                  ValaCCodeIdentifier* _tmp59_;
                  ValaCCodeMemberAccess* _tmp60_ = NULL;
                  ValaCCodeMemberAccess* _tmp61_;
                  ValaCCodeConstant* _tmp62_ = NULL;
                  ValaCCodeConstant* _tmp63_;
                  ValaCCodeAssignment* _tmp64_ = NULL;
                  ValaCCodeAssignment* _tmp65_;
                  ValaCCodeAssignment* ref_count;
                  _tmp38_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
                  _tmp39_ = vala_symbol_get_cprefix (_tmp38_);
                  _tmp40_ = _tmp39_;
                  _tmp41_ = vala_symbol_get_name ((ValaSymbol*) cl);
                  _tmp42_ = g_strdup_printf ("_%sParamSpec%s", _tmp40_, _tmp41_);
                  _tmp43_ = _tmp42_;
                  _tmp44_ = vala_ccode_struct_new (_tmp43_);
                  _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
                  ((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp44_;
                  _g_free0 (_tmp43_);
                  _g_free0 (_tmp40_);
                  vala_ccode_struct_add_field (((ValaCCodeBaseModule*) self)->param_spec_struct, "GParamSpec", "parent_instance", NULL);
                  vala_ccode_file_add_type_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) ((ValaCCodeBaseModule*) self)->param_spec_struct);
                  _tmp45_ = vala_ccode_struct_get_name (((ValaCCodeBaseModule*) self)->param_spec_struct);
                  _tmp46_ = g_strdup_printf ("struct %s", _tmp45_);
                  _tmp47_ = _tmp46_;
                  _tmp48_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
                  _tmp49_ = vala_symbol_get_cprefix (_tmp48_);
                  _tmp50_ = _tmp49_;
                  _tmp51_ = vala_symbol_get_name ((ValaSymbol*) cl);
                  _tmp52_ = g_strdup_printf ("%sParamSpec%s", _tmp50_, _tmp51_);
                  _tmp53_ = _tmp52_;
                  _tmp54_ = vala_ccode_variable_declarator_new (_tmp53_, NULL, NULL);
                  _tmp55_ = _tmp54_;
                  _tmp56_ = vala_ccode_type_definition_new (_tmp47_, (ValaCCodeDeclarator*) _tmp55_);
                  _tmp57_ = _tmp56_;
                  vala_ccode_file_add_type_declaration (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp57_);
                  _vala_ccode_node_unref0 (_tmp57_);
                  _vala_ccode_node_unref0 (_tmp55_);
                  _g_free0 (_tmp53_);
                  _g_free0 (_tmp50_);
                  _g_free0 (_tmp47_);
                  ((ValaCCodeBaseModule*) self)->gvaluecollector_h_needed = TRUE;
                  vala_gtype_module_add_type_value_table_init_function (self, cl);
                  vala_gtype_module_add_type_value_table_free_function (self, cl);
                  vala_gtype_module_add_type_value_table_copy_function (self, cl);
                  vala_gtype_module_add_type_value_table_peek_pointer_function (self, cl);
                  vala_gtype_module_add_type_value_table_collect_value_function (self, cl);
                  vala_gtype_module_add_type_value_table_lcopy_value_function (self, cl);
                  vala_gtype_module_add_g_param_spec_type_function (self, cl);
                  vala_gtype_module_add_g_value_get_function (self, cl);
                  vala_gtype_module_add_g_value_set_function (self, cl);
                  vala_gtype_module_add_g_value_take_function (self, cl);
                  _tmp58_ = vala_ccode_identifier_new ("self");
                  _tmp59_ = _tmp58_;
                  _tmp60_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp59_, "ref_count");
                  _tmp61_ = _tmp60_;
                  _tmp62_ = vala_ccode_constant_new ("1");
                  _tmp63_ = _tmp62_;
                  _tmp64_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp61_, (ValaCCodeExpression*) _tmp63_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                  _tmp65_ = _tmp64_;
                  _vala_ccode_node_unref0 (_tmp63_);
                  _vala_ccode_node_unref0 (_tmp61_);
                  _vala_ccode_node_unref0 (_tmp59_);
                  ref_count = _tmp65_;
                  vala_ccode_function_add_expression (((ValaCCodeBaseModule*) self)->instance_init_context->ccode, (ValaCCodeExpression*) ref_count);
                  _vala_ccode_node_unref0 (ref_count);
            }
            _tmp67_ = vala_class_get_class_constructor (cl);
            if (_tmp67_ != NULL) {
                  _tmp66_ = TRUE;
            } else {
                  gboolean _tmp68_ = FALSE;
                  ValaCodeContext* _tmp69_ = NULL;
                  gboolean _tmp70_;
                  _tmp69_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
                  _tmp70_ = vala_code_context_require_glib_version (_tmp69_, 2, 24);
                  if (!_tmp70_) {
                        gboolean _tmp71_;
                        _tmp71_ = vala_class_get_has_class_private_fields (cl);
                        _tmp68_ = _tmp71_;
                  } else {
                        _tmp68_ = FALSE;
                  }
                  _tmp66_ = _tmp68_;
            }
            if (_tmp66_) {
                  vala_gtype_module_add_base_init_function (self, cl);
            }
            vala_gtype_module_add_class_init_function (self, cl);
            _tmp73_ = vala_class_get_class_destructor (cl);
            if (_tmp73_ != NULL) {
                  _tmp72_ = TRUE;
            } else {
                  gboolean _tmp74_ = FALSE;
                  ValaCodeContext* _tmp75_ = NULL;
                  gboolean _tmp76_;
                  _tmp75_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
                  _tmp76_ = vala_code_context_require_glib_version (_tmp75_, 2, 24);
                  if (!_tmp76_) {
                        gboolean _tmp77_;
                        _tmp77_ = vala_class_get_has_class_private_fields (cl);
                        _tmp74_ = _tmp77_;
                  } else {
                        _tmp74_ = FALSE;
                  }
                  _tmp72_ = _tmp74_;
            }
            if (_tmp72_) {
                  vala_gtype_module_add_base_finalize_function (self, cl);
            }
            _tmp78_ = vala_class_get_static_destructor (cl);
            if (_tmp78_ != NULL) {
                  vala_gtype_module_add_class_finalize_function (self, cl);
            }
            {
                  ValaList* _tmp79_ = NULL;
                  ValaList* _base_type_list;
                  gint _tmp80_;
                  gint _base_type_size;
                  gint _base_type_index;
                  _tmp79_ = vala_class_get_base_types (cl);
                  _base_type_list = _tmp79_;
                  _tmp80_ = vala_collection_get_size ((ValaCollection*) _base_type_list);
                  _base_type_size = _tmp80_;
                  _base_type_index = -1;
                  while (TRUE) {
                        gpointer _tmp81_ = NULL;
                        ValaDataType* base_type;
                        ValaTypeSymbol* _tmp82_ = NULL;
                        _base_type_index = _base_type_index + 1;
                        if (!(_base_type_index < _base_type_size)) {
                              break;
                        }
                        _tmp81_ = vala_list_get (_base_type_list, _base_type_index);
                        base_type = (ValaDataType*) _tmp81_;
                        _tmp82_ = vala_data_type_get_data_type (base_type);
                        if (VALA_IS_INTERFACE (_tmp82_)) {
                              ValaTypeSymbol* _tmp83_ = NULL;
                              _tmp83_ = vala_data_type_get_data_type (base_type);
                              vala_gtype_module_add_interface_init_function (self, cl, VALA_INTERFACE (_tmp83_));
                        }
                        _vala_code_node_unref0 (base_type);
                  }
                  _vala_iterable_unref0 (_base_type_list);
            }
            vala_gtype_module_add_instance_init_function (self, cl);
            _tmp85_ = vala_class_get_is_compact (cl);
            if (!_tmp85_) {
                  gboolean _tmp86_ = FALSE;
                  gboolean _tmp87_ = FALSE;
                  ValaList* _tmp88_ = NULL;
                  ValaList* _tmp89_;
                  gint _tmp90_;
                  gboolean _tmp91_;
                  _tmp88_ = vala_class_get_fields (cl);
                  _tmp89_ = _tmp88_;
                  _tmp90_ = vala_collection_get_size ((ValaCollection*) _tmp89_);
                  _tmp91_ = _tmp90_ > 0;
                  _vala_iterable_unref0 (_tmp89_);
                  if (_tmp91_) {
                        _tmp87_ = TRUE;
                  } else {
                        ValaDestructor* _tmp92_ = NULL;
                        _tmp92_ = vala_class_get_destructor (cl);
                        _tmp87_ = _tmp92_ != NULL;
                  }
                  if (_tmp87_) {
                        _tmp86_ = TRUE;
                  } else {
                        gboolean _tmp93_;
                        _tmp93_ = vala_class_is_fundamental (cl);
                        _tmp86_ = _tmp93_;
                  }
                  _tmp84_ = _tmp86_;
            } else {
                  _tmp84_ = FALSE;
            }
            if (_tmp84_) {
                  vala_gtype_module_add_finalize_function (self, cl);
            }
            _tmp94_ = vala_symbol_get_comment ((ValaSymbol*) cl);
            if (_tmp94_ != NULL) {
                  ValaComment* _tmp95_ = NULL;
                  const gchar* _tmp96_ = NULL;
                  ValaCCodeComment* _tmp97_ = NULL;
                  ValaCCodeComment* _tmp98_;
                  _tmp95_ = vala_symbol_get_comment ((ValaSymbol*) cl);
                  _tmp96_ = vala_comment_get_content (_tmp95_);
                  _tmp97_ = vala_ccode_comment_new (_tmp96_);
                  _tmp98_ = _tmp97_;
                  vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp98_);
                  _vala_ccode_node_unref0 (_tmp98_);
            }
            _tmp99_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
            _tmp100_ = vala_class_register_function_new (cl, _tmp99_);
            type_fun = _tmp100_;
            vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) type_fun, ((ValaCCodeBaseModule*) self)->in_plugin, FALSE);
            _tmp101_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) type_fun);
            _tmp102_ = _tmp101_;
            vala_ccode_file_add_type_member_declaration (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp102_);
            _vala_ccode_node_unref0 (_tmp102_);
            _tmp103_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) type_fun);
            _tmp104_ = _tmp103_;
            vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp104_);
            _vala_ccode_node_unref0 (_tmp104_);
            if (is_fundamental) {
                  ValaCCodeIdentifier* _tmp105_ = NULL;
                  ValaCCodeIdentifier* _tmp106_;
                  ValaCCodeMemberAccess* _tmp107_ = NULL;
                  ValaCCodeMemberAccess* _tmp108_;
                  ValaCCodeMemberAccess* ref_count;
                  gchar* _tmp109_ = NULL;
                  gchar* _tmp110_;
                  gchar* _tmp111_;
                  gchar* _tmp112_;
                  ValaCCodeFunction* _tmp113_ = NULL;
                  ValaCCodeFunction* _tmp114_;
                  ValaCCodeFunction* ref_fun;
                  ValaCCodeParameter* _tmp115_ = NULL;
                  ValaCCodeParameter* _tmp116_;
                  ValaSymbolAccessibility _tmp117_;
                  ValaCCodeFunction* _tmp118_ = NULL;
                  gchar* _tmp119_ = NULL;
                  gchar* _tmp120_;
                  gchar* _tmp121_;
                  gchar* _tmp122_;
                  ValaCCodeIdentifier* _tmp123_ = NULL;
                  ValaCCodeIdentifier* _tmp124_;
                  ValaCCodeVariableDeclarator* _tmp125_ = NULL;
                  ValaCCodeVariableDeclarator* _tmp126_;
                  ValaCCodeIdentifier* _tmp127_ = NULL;
                  ValaCCodeIdentifier* _tmp128_;
                  ValaCCodeFunctionCall* _tmp129_ = NULL;
                  ValaCCodeFunctionCall* _tmp130_;
                  ValaCCodeFunctionCall* ccall;
                  ValaCCodeUnaryExpression* _tmp131_ = NULL;
                  ValaCCodeUnaryExpression* _tmp132_;
                  ValaCCodeFunction* _tmp133_ = NULL;
                  ValaCCodeFunction* _tmp134_ = NULL;
                  ValaCCodeIdentifier* _tmp135_ = NULL;
                  ValaCCodeIdentifier* _tmp136_;
                  gchar* _tmp137_ = NULL;
                  gchar* _tmp138_;
                  gchar* _tmp139_;
                  gchar* _tmp140_;
                  ValaCCodeFunction* _tmp141_ = NULL;
                  ValaCCodeFunction* _tmp142_;
                  ValaCCodeFunction* unref_fun;
                  ValaCCodeParameter* _tmp143_ = NULL;
                  ValaCCodeParameter* _tmp144_;
                  ValaSymbolAccessibility _tmp145_;
                  ValaCCodeFunction* _tmp146_ = NULL;
                  gchar* _tmp147_ = NULL;
                  gchar* _tmp148_;
                  gchar* _tmp149_;
                  gchar* _tmp150_;
                  ValaCCodeIdentifier* _tmp151_ = NULL;
                  ValaCCodeIdentifier* _tmp152_;
                  ValaCCodeVariableDeclarator* _tmp153_ = NULL;
                  ValaCCodeVariableDeclarator* _tmp154_;
                  ValaCCodeIdentifier* _tmp155_ = NULL;
                  ValaCCodeIdentifier* _tmp156_;
                  ValaCCodeFunctionCall* _tmp157_ = NULL;
                  ValaCCodeUnaryExpression* _tmp158_ = NULL;
                  ValaCCodeUnaryExpression* _tmp159_;
                  ValaCCodeFunction* _tmp160_ = NULL;
                  gchar* _tmp161_ = NULL;
                  gchar* _tmp162_;
                  gchar* _tmp163_ = NULL;
                  gchar* _tmp164_;
                  ValaCCodeIdentifier* _tmp165_ = NULL;
                  ValaCCodeIdentifier* _tmp166_;
                  ValaCCodeFunctionCall* _tmp167_ = NULL;
                  ValaCCodeFunctionCall* _tmp168_;
                  ValaCCodeFunctionCall* get_class;
                  ValaCCodeIdentifier* _tmp169_ = NULL;
                  ValaCCodeIdentifier* _tmp170_;
                  gchar* _tmp171_ = NULL;
                  gchar* _tmp172_;
                  gchar* _tmp173_ = NULL;
                  gchar* _tmp174_;
                  ValaCCodeIdentifier* _tmp175_ = NULL;
                  ValaCCodeIdentifier* _tmp176_;
                  ValaCCodeFunctionCall* _tmp177_ = NULL;
                  ValaCCodeFunctionCall* _tmp178_;
                  ValaCCodeFunctionCall* ccast;
                  ValaCCodeIdentifier* _tmp179_ = NULL;
                  ValaCCodeIdentifier* _tmp180_;
                  ValaCCodeMemberAccess* _tmp181_ = NULL;
                  ValaCCodeMemberAccess* _tmp182_;
                  ValaCCodeFunctionCall* _tmp183_ = NULL;
                  ValaCCodeIdentifier* _tmp184_ = NULL;
                  ValaCCodeIdentifier* _tmp185_;
                  ValaCCodeFunction* _tmp186_ = NULL;
                  ValaCCodeIdentifier* _tmp187_ = NULL;
                  ValaCCodeIdentifier* _tmp188_;
                  ValaCCodeFunctionCall* _tmp189_ = NULL;
                  ValaCCodeFunctionCall* _tmp190_;
                  ValaCCodeFunctionCall* free;
                  ValaCCodeIdentifier* _tmp191_ = NULL;
                  ValaCCodeIdentifier* _tmp192_;
                  ValaCCodeCastExpression* _tmp193_ = NULL;
                  ValaCCodeCastExpression* _tmp194_;
                  ValaCCodeFunction* _tmp195_ = NULL;
                  ValaCCodeFunction* _tmp196_ = NULL;
                  _tmp105_ = vala_ccode_identifier_new ("self");
                  _tmp106_ = _tmp105_;
                  _tmp107_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp106_, "ref_count");
                  _tmp108_ = _tmp107_;
                  _vala_ccode_node_unref0 (_tmp106_);
                  ref_count = _tmp108_;
                  _tmp109_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
                  _tmp110_ = _tmp109_;
                  _tmp111_ = g_strconcat (_tmp110_, "ref", NULL);
                  _tmp112_ = _tmp111_;
                  _tmp113_ = vala_ccode_function_new (_tmp112_, "gpointer");
                  _tmp114_ = _tmp113_;
                  _g_free0 (_tmp112_);
                  _g_free0 (_tmp110_);
                  ref_fun = _tmp114_;
                  _tmp115_ = vala_ccode_parameter_new ("instance", "gpointer");
                  _tmp116_ = _tmp115_;
                  vala_ccode_function_add_parameter (ref_fun, _tmp116_);
                  _vala_ccode_node_unref0 (_tmp116_);
                  _tmp117_ = vala_symbol_get_access ((ValaSymbol*) cl);
                  if (_tmp117_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                        vala_ccode_function_set_modifiers (ref_fun, VALA_CCODE_MODIFIERS_STATIC);
                  }
                  vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, ref_fun);
                  _tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp119_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                  _tmp120_ = _tmp119_;
                  _tmp121_ = g_strconcat (_tmp120_, "*", NULL);
                  _tmp122_ = _tmp121_;
                  _tmp123_ = vala_ccode_identifier_new ("instance");
                  _tmp124_ = _tmp123_;
                  _tmp125_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp124_, NULL);
                  _tmp126_ = _tmp125_;
                  vala_ccode_function_add_declaration (_tmp118_, _tmp122_, (ValaCCodeDeclarator*) _tmp126_, 0);
                  _vala_ccode_node_unref0 (_tmp126_);
                  _vala_ccode_node_unref0 (_tmp124_);
                  _g_free0 (_tmp122_);
                  _g_free0 (_tmp120_);
                  _tmp127_ = vala_ccode_identifier_new ("g_atomic_int_inc");
                  _tmp128_ = _tmp127_;
                  _tmp129_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp128_);
                  _tmp130_ = _tmp129_;
                  _vala_ccode_node_unref0 (_tmp128_);
                  ccall = _tmp130_;
                  _tmp131_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) ref_count);
                  _tmp132_ = _tmp131_;
                  vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp132_);
                  _vala_ccode_node_unref0 (_tmp132_);
                  _tmp133_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_expression (_tmp133_, (ValaCCodeExpression*) ccall);
                  _tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp135_ = vala_ccode_identifier_new ("instance");
                  _tmp136_ = _tmp135_;
                  vala_ccode_function_add_return (_tmp134_, (ValaCCodeExpression*) _tmp136_);
                  _vala_ccode_node_unref0 (_tmp136_);
                  vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
                  vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, ref_fun);
                  _tmp137_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
                  _tmp138_ = _tmp137_;
                  _tmp139_ = g_strconcat (_tmp138_, "unref", NULL);
                  _tmp140_ = _tmp139_;
                  _tmp141_ = vala_ccode_function_new (_tmp140_, "void");
                  _tmp142_ = _tmp141_;
                  _g_free0 (_tmp140_);
                  _g_free0 (_tmp138_);
                  unref_fun = _tmp142_;
                  _tmp143_ = vala_ccode_parameter_new ("instance", "gpointer");
                  _tmp144_ = _tmp143_;
                  vala_ccode_function_add_parameter (unref_fun, _tmp144_);
                  _vala_ccode_node_unref0 (_tmp144_);
                  _tmp145_ = vala_symbol_get_access ((ValaSymbol*) cl);
                  if (_tmp145_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                        vala_ccode_function_set_modifiers (unref_fun, VALA_CCODE_MODIFIERS_STATIC);
                  }
                  vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, unref_fun);
                  _tmp146_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp147_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
                  _tmp148_ = _tmp147_;
                  _tmp149_ = g_strconcat (_tmp148_, "*", NULL);
                  _tmp150_ = _tmp149_;
                  _tmp151_ = vala_ccode_identifier_new ("instance");
                  _tmp152_ = _tmp151_;
                  _tmp153_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp152_, NULL);
                  _tmp154_ = _tmp153_;
                  vala_ccode_function_add_declaration (_tmp146_, _tmp150_, (ValaCCodeDeclarator*) _tmp154_, 0);
                  _vala_ccode_node_unref0 (_tmp154_);
                  _vala_ccode_node_unref0 (_tmp152_);
                  _g_free0 (_tmp150_);
                  _g_free0 (_tmp148_);
                  _tmp155_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
                  _tmp156_ = _tmp155_;
                  _tmp157_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp156_);
                  _vala_ccode_node_unref0 (ccall);
                  ccall = _tmp157_;
                  _vala_ccode_node_unref0 (_tmp156_);
                  _tmp158_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) ref_count);
                  _tmp159_ = _tmp158_;
                  vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp159_);
                  _vala_ccode_node_unref0 (_tmp159_);
                  _tmp160_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_open_if (_tmp160_, (ValaCCodeExpression*) ccall);
                  _tmp161_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                  _tmp162_ = _tmp161_;
                  _tmp163_ = g_strdup_printf ("%s_GET_CLASS", _tmp162_);
                  _tmp164_ = _tmp163_;
                  _tmp165_ = vala_ccode_identifier_new (_tmp164_);
                  _tmp166_ = _tmp165_;
                  _tmp167_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp166_);
                  _tmp168_ = _tmp167_;
                  _vala_ccode_node_unref0 (_tmp166_);
                  _g_free0 (_tmp164_);
                  _g_free0 (_tmp162_);
                  get_class = _tmp168_;
                  _tmp169_ = vala_ccode_identifier_new ("self");
                  _tmp170_ = _tmp169_;
                  vala_ccode_function_call_add_argument (get_class, (ValaCCodeExpression*) _tmp170_);
                  _vala_ccode_node_unref0 (_tmp170_);
                  _tmp171_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                  _tmp172_ = _tmp171_;
                  _tmp173_ = g_strdup_printf ("%s_GET_CLASS", _tmp172_);
                  _tmp174_ = _tmp173_;
                  _tmp175_ = vala_ccode_identifier_new (_tmp174_);
                  _tmp176_ = _tmp175_;
                  _tmp177_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp176_);
                  _tmp178_ = _tmp177_;
                  _vala_ccode_node_unref0 (_tmp176_);
                  _g_free0 (_tmp174_);
                  _g_free0 (_tmp172_);
                  ccast = _tmp178_;
                  _tmp179_ = vala_ccode_identifier_new ("self");
                  _tmp180_ = _tmp179_;
                  vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp180_);
                  _vala_ccode_node_unref0 (_tmp180_);
                  _tmp181_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, "finalize");
                  _tmp182_ = _tmp181_;
                  _tmp183_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp182_);
                  _vala_ccode_node_unref0 (ccall);
                  ccall = _tmp183_;
                  _vala_ccode_node_unref0 (_tmp182_);
                  _tmp184_ = vala_ccode_identifier_new ("self");
                  _tmp185_ = _tmp184_;
                  vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp185_);
                  _vala_ccode_node_unref0 (_tmp185_);
                  _tmp186_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_expression (_tmp186_, (ValaCCodeExpression*) ccall);
                  _tmp187_ = vala_ccode_identifier_new ("g_type_free_instance");
                  _tmp188_ = _tmp187_;
                  _tmp189_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp188_);
                  _tmp190_ = _tmp189_;
                  _vala_ccode_node_unref0 (_tmp188_);
                  free = _tmp190_;
                  _tmp191_ = vala_ccode_identifier_new ("self");
                  _tmp192_ = _tmp191_;
                  _tmp193_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp192_, "GTypeInstance *");
                  _tmp194_ = _tmp193_;
                  vala_ccode_function_call_add_argument (free, (ValaCCodeExpression*) _tmp194_);
                  _vala_ccode_node_unref0 (_tmp194_);
                  _vala_ccode_node_unref0 (_tmp192_);
                  _tmp195_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_expression (_tmp195_, (ValaCCodeExpression*) free);
                  _tmp196_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_close (_tmp196_);
                  vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
                  vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, unref_fun);
                  _vala_ccode_node_unref0 (free);
                  _vala_ccode_node_unref0 (ccast);
                  _vala_ccode_node_unref0 (get_class);
                  _vala_ccode_node_unref0 (unref_fun);
                  _vala_ccode_node_unref0 (ccall);
                  _vala_ccode_node_unref0 (ref_fun);
                  _vala_ccode_node_unref0 (ref_count);
            }
            _vala_typeregister_function_unref0 (type_fun);
      } else {
            ValaClass* _tmp197_ = NULL;
            _tmp197_ = vala_class_get_base_class (cl);
            if (_tmp197_ == NULL) {
                  vala_gtype_module_add_instance_init_function (self, cl);
                  vala_gtype_module_add_finalize_function (self, cl);
            }
      }
      _tmp198_ = _vala_ccode_node_ref0 (old_param_spec_struct);
      _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
      ((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp198_;
      _tmp199_ = _vala_ccode_node_ref0 (old_prop_enum);
      _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
      ((ValaCCodeBaseModule*) self)->prop_enum = _tmp199_;
      _tmp200_ = _vala_ccode_base_module_emit_context_ref0 (old_class_init_context);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
      ((ValaCCodeBaseModule*) self)->class_init_context = _tmp200_;
      _tmp201_ = _vala_ccode_base_module_emit_context_ref0 (old_base_init_context);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
      ((ValaCCodeBaseModule*) self)->base_init_context = _tmp201_;
      _tmp202_ = _vala_ccode_base_module_emit_context_ref0 (old_class_finalize_context);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
      ((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp202_;
      _tmp203_ = _vala_ccode_base_module_emit_context_ref0 (old_base_finalize_context);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
      ((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp203_;
      _tmp204_ = _vala_ccode_base_module_emit_context_ref0 (old_instance_init_context);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
      ((ValaCCodeBaseModule*) self)->instance_init_context = _tmp204_;
      _tmp205_ = _vala_ccode_base_module_emit_context_ref0 (old_instance_finalize_context);
      _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
      ((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp205_;
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
      _vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
      _vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
      _vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
      _vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
      _vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
      _vala_ccode_node_unref0 (old_prop_enum);
      _vala_ccode_node_unref0 (old_param_spec_struct);
}


static void vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeFunction* _tmp8_ = NULL;
      ValaCCodeIdentifier* _tmp9_ = NULL;
      ValaCCodeIdentifier* _tmp10_;
      ValaCCodeMemberAccess* _tmp11_ = NULL;
      ValaCCodeMemberAccess* _tmp12_;
      ValaCCodeMemberAccess* _tmp13_ = NULL;
      ValaCCodeMemberAccess* _tmp14_;
      ValaCCodeConstant* _tmp15_ = NULL;
      ValaCCodeConstant* _tmp16_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "value_");
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_init", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      _tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp8_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp9_ = vala_ccode_identifier_new ("value");
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp10_, "data[0]");
      _tmp12_ = _tmp11_;
      _tmp13_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp12_, "v_pointer", FALSE);
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_constant_new ("NULL");
      _tmp16_ = _tmp15_;
      vala_ccode_function_add_assignment (_tmp8_, (ValaCCodeExpression*) _tmp14_, (ValaCCodeExpression*) _tmp16_);
      _vala_ccode_node_unref0 (_tmp16_);
      _vala_ccode_node_unref0 (_tmp14_);
      _vala_ccode_node_unref0 (_tmp12_);
      _vala_ccode_node_unref0 (_tmp10_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeIdentifier* _tmp8_ = NULL;
      ValaCCodeIdentifier* _tmp9_;
      ValaCCodeMemberAccess* _tmp10_ = NULL;
      ValaCCodeMemberAccess* _tmp11_;
      ValaCCodeMemberAccess* _tmp12_ = NULL;
      ValaCCodeMemberAccess* _tmp13_;
      ValaCCodeMemberAccess* vpointer;
      gchar* _tmp14_ = NULL;
      gchar* _tmp15_;
      gchar* _tmp16_;
      gchar* _tmp17_;
      ValaCCodeIdentifier* _tmp18_ = NULL;
      ValaCCodeIdentifier* _tmp19_;
      ValaCCodeFunctionCall* _tmp20_ = NULL;
      ValaCCodeFunctionCall* _tmp21_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeFunction* _tmp22_ = NULL;
      ValaCCodeFunction* _tmp23_ = NULL;
      ValaCCodeFunction* _tmp24_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "value_");
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_free_value", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      _tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp8_ = vala_ccode_identifier_new ("value");
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp9_, "data[0]");
      _tmp11_ = _tmp10_;
      _tmp12_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp11_, "v_pointer", FALSE);
      _tmp13_ = _tmp12_;
      _vala_ccode_node_unref0 (_tmp11_);
      _vala_ccode_node_unref0 (_tmp9_);
      vpointer = _tmp13_;
      _tmp14_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
      _tmp15_ = _tmp14_;
      _tmp16_ = g_strconcat (_tmp15_, "unref", NULL);
      _tmp17_ = _tmp16_;
      _tmp18_ = vala_ccode_identifier_new (_tmp17_);
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_);
      _tmp21_ = _tmp20_;
      _vala_ccode_node_unref0 (_tmp19_);
      _g_free0 (_tmp17_);
      _g_free0 (_tmp15_);
      ccall = _tmp21_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) vpointer);
      _tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_open_if (_tmp22_, (ValaCCodeExpression*) vpointer);
      _tmp23_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp23_, (ValaCCodeExpression*) ccall);
      _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp24_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeIdentifier* _tmp10_ = NULL;
      ValaCCodeIdentifier* _tmp11_;
      ValaCCodeMemberAccess* _tmp12_ = NULL;
      ValaCCodeMemberAccess* _tmp13_;
      ValaCCodeMemberAccess* _tmp14_ = NULL;
      ValaCCodeMemberAccess* _tmp15_;
      ValaCCodeMemberAccess* dest_vpointer;
      ValaCCodeIdentifier* _tmp16_ = NULL;
      ValaCCodeIdentifier* _tmp17_;
      ValaCCodeMemberAccess* _tmp18_ = NULL;
      ValaCCodeMemberAccess* _tmp19_;
      ValaCCodeMemberAccess* _tmp20_ = NULL;
      ValaCCodeMemberAccess* _tmp21_;
      ValaCCodeMemberAccess* src_vpointer;
      gchar* _tmp22_ = NULL;
      gchar* _tmp23_;
      gchar* _tmp24_;
      gchar* _tmp25_;
      ValaCCodeIdentifier* _tmp26_ = NULL;
      ValaCCodeIdentifier* _tmp27_;
      ValaCCodeFunctionCall* _tmp28_ = NULL;
      ValaCCodeFunctionCall* _tmp29_;
      ValaCCodeFunctionCall* ref_ccall;
      ValaCCodeFunction* _tmp30_ = NULL;
      ValaCCodeFunction* _tmp31_ = NULL;
      ValaCCodeFunction* _tmp32_ = NULL;
      ValaCCodeFunction* _tmp33_ = NULL;
      ValaCCodeConstant* _tmp34_ = NULL;
      ValaCCodeConstant* _tmp35_;
      ValaCCodeFunction* _tmp36_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "value_");
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_copy_value", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      _tmp6_ = vala_ccode_parameter_new ("src_value", "const GValue*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_parameter_new ("dest_value", "GValue*");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (function, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp10_ = vala_ccode_identifier_new ("dest_value");
      _tmp11_ = _tmp10_;
      _tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "data[0]");
      _tmp13_ = _tmp12_;
      _tmp14_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp13_, "v_pointer", FALSE);
      _tmp15_ = _tmp14_;
      _vala_ccode_node_unref0 (_tmp13_);
      _vala_ccode_node_unref0 (_tmp11_);
      dest_vpointer = _tmp15_;
      _tmp16_ = vala_ccode_identifier_new ("src_value");
      _tmp17_ = _tmp16_;
      _tmp18_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp17_, "data[0]");
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp19_, "v_pointer", FALSE);
      _tmp21_ = _tmp20_;
      _vala_ccode_node_unref0 (_tmp19_);
      _vala_ccode_node_unref0 (_tmp17_);
      src_vpointer = _tmp21_;
      _tmp22_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
      _tmp23_ = _tmp22_;
      _tmp24_ = g_strconcat (_tmp23_, "ref", NULL);
      _tmp25_ = _tmp24_;
      _tmp26_ = vala_ccode_identifier_new (_tmp25_);
      _tmp27_ = _tmp26_;
      _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
      _tmp29_ = _tmp28_;
      _vala_ccode_node_unref0 (_tmp27_);
      _g_free0 (_tmp25_);
      _g_free0 (_tmp23_);
      ref_ccall = _tmp29_;
      vala_ccode_function_call_add_argument (ref_ccall, (ValaCCodeExpression*) src_vpointer);
      _tmp30_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_open_if (_tmp30_, (ValaCCodeExpression*) src_vpointer);
      _tmp31_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_assignment (_tmp31_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) ref_ccall);
      _tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_else (_tmp32_);
      _tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp34_ = vala_ccode_constant_new ("NULL");
      _tmp35_ = _tmp34_;
      vala_ccode_function_add_assignment (_tmp33_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) _tmp35_);
      _vala_ccode_node_unref0 (_tmp35_);
      _tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp36_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ref_ccall);
      _vala_ccode_node_unref0 (src_vpointer);
      _vala_ccode_node_unref0 (dest_vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeIdentifier* _tmp8_ = NULL;
      ValaCCodeIdentifier* _tmp9_;
      ValaCCodeMemberAccess* _tmp10_ = NULL;
      ValaCCodeMemberAccess* _tmp11_;
      ValaCCodeMemberAccess* _tmp12_ = NULL;
      ValaCCodeMemberAccess* _tmp13_;
      ValaCCodeMemberAccess* vpointer;
      ValaCCodeFunction* _tmp14_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "value_");
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_peek_pointer", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "gpointer");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      _tmp6_ = vala_ccode_parameter_new ("value", "const GValue*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp8_ = vala_ccode_identifier_new ("value");
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp9_, "data[0]");
      _tmp11_ = _tmp10_;
      _tmp12_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp11_, "v_pointer", FALSE);
      _tmp13_ = _tmp12_;
      _vala_ccode_node_unref0 (_tmp11_);
      _vala_ccode_node_unref0 (_tmp9_);
      vpointer = _tmp13_;
      _tmp14_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp14_, (ValaCCodeExpression*) vpointer);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeIdentifier* _tmp14_ = NULL;
      ValaCCodeIdentifier* _tmp15_;
      ValaCCodeMemberAccess* _tmp16_ = NULL;
      ValaCCodeMemberAccess* _tmp17_;
      ValaCCodeMemberAccess* _tmp18_ = NULL;
      ValaCCodeMemberAccess* _tmp19_;
      ValaCCodeMemberAccess* vpointer;
      ValaCCodeIdentifier* _tmp20_ = NULL;
      ValaCCodeIdentifier* object_p_ptr;
      ValaCCodeConstant* _tmp21_ = NULL;
      ValaCCodeConstant* null_;
      ValaCCodeFunction* _tmp22_ = NULL;
      gchar* _tmp23_ = NULL;
      gchar* _tmp24_;
      gchar* _tmp25_;
      gchar* _tmp26_;
      ValaCCodeIdentifier* _tmp27_ = NULL;
      ValaCCodeIdentifier* _tmp28_;
      ValaCCodeMemberAccess* _tmp29_ = NULL;
      ValaCCodeMemberAccess* _tmp30_;
      ValaCCodeVariableDeclarator* _tmp31_ = NULL;
      ValaCCodeVariableDeclarator* _tmp32_;
      ValaCCodeIdentifier* _tmp33_ = NULL;
      ValaCCodeIdentifier* _tmp34_;
      ValaCCodeFunctionCall* _tmp35_ = NULL;
      ValaCCodeFunctionCall* _tmp36_;
      ValaCCodeFunctionCall* value_type_name_fct;
      ValaCCodeConstant* _tmp37_ = NULL;
      ValaCCodeConstant* _tmp38_;
      ValaCCodeIdentifier* _tmp39_ = NULL;
      ValaCCodeIdentifier* _tmp40_;
      ValaCCodeUnaryExpression* _tmp41_ = NULL;
      ValaCCodeUnaryExpression* _tmp42_;
      ValaCCodeUnaryExpression* assert_condition;
      ValaCCodeFunction* _tmp43_ = NULL;
      ValaCCodeIdentifier* _tmp44_ = NULL;
      ValaCCodeIdentifier* _tmp45_;
      ValaCCodeFunctionCall* _tmp46_ = NULL;
      ValaCCodeFunctionCall* _tmp47_;
      ValaCCodeFunctionCall* assert_printf;
      ValaCCodeConstant* _tmp48_ = NULL;
      ValaCCodeConstant* _tmp49_;
      ValaCCodeFunction* _tmp50_ = NULL;
      ValaCCodeFunction* _tmp51_ = NULL;
      ValaCCodeUnaryExpression* _tmp52_ = NULL;
      ValaCCodeUnaryExpression* main_condition;
      ValaCCodeIdentifier* _tmp53_ = NULL;
      ValaCCodeIdentifier* _tmp54_;
      ValaCCodeIdentifier* _tmp55_ = NULL;
      ValaCCodeIdentifier* _tmp56_;
      ValaCCodeBinaryExpression* _tmp57_ = NULL;
      ValaCCodeBinaryExpression* _tmp58_;
      ValaCCodeBinaryExpression* main_else_if_condition;
      gchar* _tmp59_ = NULL;
      gchar* _tmp60_;
      ValaCCodeIdentifier* _tmp61_ = NULL;
      ValaCCodeIdentifier* _tmp62_;
      ValaCCodeFunctionCall* _tmp63_ = NULL;
      ValaCCodeFunctionCall* _tmp64_;
      ValaCCodeFunctionCall* ref_fct;
      ValaCCodeFunction* _tmp65_ = NULL;
      ValaCCodeFunction* _tmp66_ = NULL;
      ValaCCodeFunction* _tmp67_ = NULL;
      ValaCCodeFunction* _tmp68_ = NULL;
      ValaCCodeFunction* _tmp69_ = NULL;
      ValaCCodeFunction* _tmp70_ = NULL;
      ValaCCodeFunction* _tmp71_ = NULL;
      ValaCCodeFunction* _tmp72_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "value_");
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_lcopy_value", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "gchar*");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      _tmp6_ = vala_ccode_parameter_new ("value", "const GValue*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_parameter_new ("n_collect_values", "guint");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (function, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (function, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_parameter_new ("collect_flags", "guint");
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (function, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      _tmp14_ = vala_ccode_identifier_new ("value");
      _tmp15_ = _tmp14_;
      _tmp16_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp15_, "data[0]");
      _tmp17_ = _tmp16_;
      _tmp18_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp17_, "v_pointer", FALSE);
      _tmp19_ = _tmp18_;
      _vala_ccode_node_unref0 (_tmp17_);
      _vala_ccode_node_unref0 (_tmp15_);
      vpointer = _tmp19_;
      _tmp20_ = vala_ccode_identifier_new ("*object_p");
      object_p_ptr = _tmp20_;
      _tmp21_ = vala_ccode_constant_new ("NULL");
      null_ = _tmp21_;
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp23_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp24_ = _tmp23_;
      _tmp25_ = g_strconcat (_tmp24_, "**", NULL);
      _tmp26_ = _tmp25_;
      _tmp27_ = vala_ccode_identifier_new ("collect_values[0]");
      _tmp28_ = _tmp27_;
      _tmp29_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp28_, "v_pointer", FALSE);
      _tmp30_ = _tmp29_;
      _tmp31_ = vala_ccode_variable_declarator_new ("object_p", (ValaCCodeExpression*) _tmp30_, NULL);
      _tmp32_ = _tmp31_;
      vala_ccode_function_add_declaration (_tmp22_, _tmp26_, (ValaCCodeDeclarator*) _tmp32_, 0);
      _vala_ccode_node_unref0 (_tmp32_);
      _vala_ccode_node_unref0 (_tmp30_);
      _vala_ccode_node_unref0 (_tmp28_);
      _g_free0 (_tmp26_);
      _g_free0 (_tmp24_);
      _tmp33_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
      _tmp34_ = _tmp33_;
      _tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
      _tmp36_ = _tmp35_;
      _vala_ccode_node_unref0 (_tmp34_);
      value_type_name_fct = _tmp36_;
      _tmp37_ = vala_ccode_constant_new ("value");
      _tmp38_ = _tmp37_;
      vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp38_);
      _vala_ccode_node_unref0 (_tmp38_);
      _tmp39_ = vala_ccode_identifier_new ("object_p");
      _tmp40_ = _tmp39_;
      _tmp41_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp40_);
      _tmp42_ = _tmp41_;
      _vala_ccode_node_unref0 (_tmp40_);
      assert_condition = _tmp42_;
      _tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_open_if (_tmp43_, (ValaCCodeExpression*) assert_condition);
      _tmp44_ = vala_ccode_identifier_new ("g_strdup_printf");
      _tmp45_ = _tmp44_;
      _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
      _tmp47_ = _tmp46_;
      _vala_ccode_node_unref0 (_tmp45_);
      assert_printf = _tmp47_;
      _tmp48_ = vala_ccode_constant_new ("\"value location for `%s' passed as NULL\"");
      _tmp49_ = _tmp48_;
      vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) _tmp49_);
      _vala_ccode_node_unref0 (_tmp49_);
      vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) value_type_name_fct);
      _tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp50_, (ValaCCodeExpression*) assert_printf);
      _tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp51_);
      _tmp52_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) vpointer);
      main_condition = _tmp52_;
      _tmp53_ = vala_ccode_identifier_new ("collect_flags");
      _tmp54_ = _tmp53_;
      _tmp55_ = vala_ccode_identifier_new ("G_VALUE_NOCOPY_CONTENTS");
      _tmp56_ = _tmp55_;
      _tmp57_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, (ValaCCodeExpression*) _tmp54_, (ValaCCodeExpression*) _tmp56_);
      _tmp58_ = _tmp57_;
      _vala_ccode_node_unref0 (_tmp56_);
      _vala_ccode_node_unref0 (_tmp54_);
      main_else_if_condition = _tmp58_;
      _tmp59_ = vala_typesymbol_get_ref_function ((ValaTypeSymbol*) cl);
      _tmp60_ = _tmp59_;
      _tmp61_ = vala_ccode_identifier_new (_tmp60_);
      _tmp62_ = _tmp61_;
      _tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
      _tmp64_ = _tmp63_;
      _vala_ccode_node_unref0 (_tmp62_);
      _g_free0 (_tmp60_);
      ref_fct = _tmp64_;
      vala_ccode_function_call_add_argument (ref_fct, (ValaCCodeExpression*) vpointer);
      _tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) main_condition);
      _tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_assignment (_tmp66_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) null_);
      _tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_else_if (_tmp67_, (ValaCCodeExpression*) main_else_if_condition);
      _tmp68_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_assignment (_tmp68_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) vpointer);
      _tmp69_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_else (_tmp69_);
      _tmp70_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_assignment (_tmp70_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) ref_fct);
      _tmp71_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp71_);
      _tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp72_, (ValaCCodeExpression*) null_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ref_fct);
      _vala_ccode_node_unref0 (main_else_if_condition);
      _vala_ccode_node_unref0 (main_condition);
      _vala_ccode_node_unref0 (assert_printf);
      _vala_ccode_node_unref0 (assert_condition);
      _vala_ccode_node_unref0 (value_type_name_fct);
      _vala_ccode_node_unref0 (null_);
      _vala_ccode_node_unref0 (object_p_ptr);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeIdentifier* _tmp14_ = NULL;
      ValaCCodeIdentifier* _tmp15_;
      ValaCCodeMemberAccess* _tmp16_ = NULL;
      ValaCCodeMemberAccess* _tmp17_;
      ValaCCodeMemberAccess* _tmp18_ = NULL;
      ValaCCodeMemberAccess* _tmp19_;
      ValaCCodeMemberAccess* vpointer;
      ValaCCodeIdentifier* _tmp20_ = NULL;
      ValaCCodeIdentifier* _tmp21_;
      ValaCCodeMemberAccess* _tmp22_ = NULL;
      ValaCCodeMemberAccess* _tmp23_;
      ValaCCodeMemberAccess* collect_vpointer;
      ValaCCodeFunction* _tmp24_ = NULL;
      ValaCCodeFunction* _tmp25_ = NULL;
      gchar* _tmp26_ = NULL;
      gchar* _tmp27_;
      gchar* _tmp28_;
      gchar* _tmp29_;
      ValaCCodeVariableDeclarator* _tmp30_ = NULL;
      ValaCCodeVariableDeclarator* _tmp31_;
      ValaCCodeIdentifier* _tmp32_ = NULL;
      ValaCCodeIdentifier* obj_identifier;
      ValaCCodeMemberAccess* _tmp33_ = NULL;
      ValaCCodeMemberAccess* _tmp34_;
      ValaCCodeMemberAccess* _tmp35_ = NULL;
      ValaCCodeMemberAccess* _tmp36_;
      ValaCCodeMemberAccess* l_expression;
      ValaCCodeConstant* _tmp37_ = NULL;
      ValaCCodeConstant* _tmp38_;
      ValaCCodeBinaryExpression* _tmp39_ = NULL;
      ValaCCodeBinaryExpression* _tmp40_;
      ValaCCodeBinaryExpression* sub_condition;
      ValaCCodeIdentifier* _tmp41_ = NULL;
      ValaCCodeIdentifier* _tmp42_;
      ValaCCodeFunctionCall* _tmp43_ = NULL;
      ValaCCodeFunctionCall* _tmp44_;
      ValaCCodeFunctionCall* value_type_name_fct;
      ValaCCodeConstant* _tmp45_ = NULL;
      ValaCCodeConstant* _tmp46_;
      ValaCCodeFunction* _tmp47_ = NULL;
      ValaCCodeIdentifier* _tmp48_ = NULL;
      ValaCCodeIdentifier* _tmp49_;
      ValaCCodeFunctionCall* _tmp50_ = NULL;
      ValaCCodeFunctionCall* _tmp51_;
      ValaCCodeFunctionCall* true_return;
      ValaCCodeConstant* _tmp52_ = NULL;
      ValaCCodeConstant* _tmp53_;
      ValaCCodeConstant* _tmp54_ = NULL;
      ValaCCodeConstant* _tmp55_;
      ValaCCodeConstant* _tmp56_ = NULL;
      ValaCCodeConstant* _tmp57_;
      ValaCCodeFunction* _tmp58_ = NULL;
      ValaCCodeIdentifier* _tmp59_ = NULL;
      ValaCCodeIdentifier* _tmp60_;
      ValaCCodeFunctionCall* _tmp61_ = NULL;
      ValaCCodeFunctionCall* _tmp62_;
      ValaCCodeFunctionCall* reg_call;
      ValaCCodeIdentifier* _tmp63_ = NULL;
      ValaCCodeIdentifier* _tmp64_;
      ValaCCodeFunctionCall* _tmp65_ = NULL;
      ValaCCodeFunctionCall* _tmp66_;
      ValaCCodeFunctionCall* type_check;
      ValaCCodeIdentifier* _tmp67_ = NULL;
      ValaCCodeIdentifier* _tmp68_;
      ValaCCodeIdentifier* _tmp69_ = NULL;
      ValaCCodeIdentifier* _tmp70_;
      ValaCCodeFunctionCall* _tmp71_ = NULL;
      ValaCCodeFunctionCall* _tmp72_;
      ValaCCodeFunctionCall* stored_type;
      ValaCCodeIdentifier* _tmp73_ = NULL;
      ValaCCodeIdentifier* _tmp74_;
      ValaCCodeFunction* _tmp75_ = NULL;
      ValaCCodeUnaryExpression* _tmp76_ = NULL;
      ValaCCodeUnaryExpression* _tmp77_;
      ValaCCodeIdentifier* _tmp78_ = NULL;
      ValaCCodeIdentifier* _tmp79_;
      ValaCCodeFunctionCall* _tmp80_ = NULL;
      ValaCCodeFunctionCall* _tmp81_;
      ValaCCodeFunctionCall* false_return;
      ValaCCodeIdentifier* _tmp82_ = NULL;
      ValaCCodeIdentifier* _tmp83_;
      ValaCCodeFunctionCall* _tmp84_ = NULL;
      ValaCCodeFunctionCall* _tmp85_;
      ValaCCodeFunctionCall* type_name_fct;
      ValaCCodeConstant* _tmp86_ = NULL;
      ValaCCodeConstant* _tmp87_;
      ValaCCodeConstant* _tmp88_ = NULL;
      ValaCCodeConstant* _tmp89_;
      ValaCCodeConstant* _tmp90_ = NULL;
      ValaCCodeConstant* _tmp91_;
      ValaCCodeConstant* _tmp92_ = NULL;
      ValaCCodeConstant* _tmp93_;
      ValaCCodeFunction* _tmp94_ = NULL;
      ValaCCodeFunction* _tmp95_ = NULL;
      gchar* _tmp96_ = NULL;
      gchar* _tmp97_;
      ValaCCodeIdentifier* _tmp98_ = NULL;
      ValaCCodeIdentifier* _tmp99_;
      ValaCCodeFunctionCall* _tmp100_ = NULL;
      ValaCCodeFunctionCall* _tmp101_;
      ValaCCodeFunctionCall* ref_call;
      ValaCCodeIdentifier* _tmp102_ = NULL;
      ValaCCodeIdentifier* _tmp103_;
      ValaCCodeFunction* _tmp104_ = NULL;
      ValaCCodeFunction* _tmp105_ = NULL;
      ValaCCodeFunction* _tmp106_ = NULL;
      ValaCCodeConstant* _tmp107_ = NULL;
      ValaCCodeConstant* _tmp108_;
      ValaCCodeFunction* _tmp109_ = NULL;
      ValaCCodeFunction* _tmp110_ = NULL;
      ValaCCodeConstant* _tmp111_ = NULL;
      ValaCCodeConstant* _tmp112_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "value_");
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_collect_value", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "gchar*");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      _tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_parameter_new ("n_collect_values", "guint");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (function, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (function, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_ccode_parameter_new ("collect_flags", "guint");
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (function, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      _tmp14_ = vala_ccode_identifier_new ("value");
      _tmp15_ = _tmp14_;
      _tmp16_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp15_, "data[0]");
      _tmp17_ = _tmp16_;
      _tmp18_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp17_, "v_pointer", FALSE);
      _tmp19_ = _tmp18_;
      _vala_ccode_node_unref0 (_tmp17_);
      _vala_ccode_node_unref0 (_tmp15_);
      vpointer = _tmp19_;
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp20_ = vala_ccode_identifier_new ("collect_values[0]");
      _tmp21_ = _tmp20_;
      _tmp22_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp21_, "v_pointer", FALSE);
      _tmp23_ = _tmp22_;
      _vala_ccode_node_unref0 (_tmp21_);
      collect_vpointer = _tmp23_;
      _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_open_if (_tmp24_, (ValaCCodeExpression*) collect_vpointer);
      _tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp26_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp27_ = _tmp26_;
      _tmp28_ = g_strconcat (_tmp27_, "*", NULL);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) collect_vpointer, NULL);
      _tmp31_ = _tmp30_;
      vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp31_, 0);
      _vala_ccode_node_unref0 (_tmp31_);
      _g_free0 (_tmp29_);
      _g_free0 (_tmp27_);
      _tmp32_ = vala_ccode_identifier_new ("object");
      obj_identifier = _tmp32_;
      _tmp33_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) obj_identifier, "parent_instance");
      _tmp34_ = _tmp33_;
      _tmp35_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp34_, "g_class", FALSE);
      _tmp36_ = _tmp35_;
      _vala_ccode_node_unref0 (_tmp34_);
      l_expression = _tmp36_;
      _tmp37_ = vala_ccode_constant_new ("NULL");
      _tmp38_ = _tmp37_;
      _tmp39_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) l_expression, (ValaCCodeExpression*) _tmp38_);
      _tmp40_ = _tmp39_;
      _vala_ccode_node_unref0 (_tmp38_);
      sub_condition = _tmp40_;
      _tmp41_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
      _tmp42_ = _tmp41_;
      _tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
      _tmp44_ = _tmp43_;
      _vala_ccode_node_unref0 (_tmp42_);
      value_type_name_fct = _tmp44_;
      _tmp45_ = vala_ccode_constant_new ("value");
      _tmp46_ = _tmp45_;
      vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp46_);
      _vala_ccode_node_unref0 (_tmp46_);
      _tmp47_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_open_if (_tmp47_, (ValaCCodeExpression*) sub_condition);
      _tmp48_ = vala_ccode_identifier_new ("g_strconcat");
      _tmp49_ = _tmp48_;
      _tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_);
      _tmp51_ = _tmp50_;
      _vala_ccode_node_unref0 (_tmp49_);
      true_return = _tmp51_;
      _tmp52_ = vala_ccode_constant_new ("\"invalid unclassed object pointer for value type `\"");
      _tmp53_ = _tmp52_;
      vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp53_);
      _vala_ccode_node_unref0 (_tmp53_);
      vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) value_type_name_fct);
      _tmp54_ = vala_ccode_constant_new ("\"'\"");
      _tmp55_ = _tmp54_;
      vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp55_);
      _vala_ccode_node_unref0 (_tmp55_);
      _tmp56_ = vala_ccode_constant_new ("NULL");
      _tmp57_ = _tmp56_;
      vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp57_);
      _vala_ccode_node_unref0 (_tmp57_);
      _tmp58_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp58_, (ValaCCodeExpression*) true_return);
      _tmp59_ = vala_ccode_identifier_new ("g_value_type_compatible");
      _tmp60_ = _tmp59_;
      _tmp61_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp60_);
      _tmp62_ = _tmp61_;
      _vala_ccode_node_unref0 (_tmp60_);
      reg_call = _tmp62_;
      _tmp63_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
      _tmp64_ = _tmp63_;
      _tmp65_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp64_);
      _tmp66_ = _tmp65_;
      _vala_ccode_node_unref0 (_tmp64_);
      type_check = _tmp66_;
      _tmp67_ = vala_ccode_identifier_new ("object");
      _tmp68_ = _tmp67_;
      vala_ccode_function_call_add_argument (type_check, (ValaCCodeExpression*) _tmp68_);
      _vala_ccode_node_unref0 (_tmp68_);
      vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) type_check);
      _tmp69_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
      _tmp70_ = _tmp69_;
      _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
      _tmp72_ = _tmp71_;
      _vala_ccode_node_unref0 (_tmp70_);
      stored_type = _tmp72_;
      _tmp73_ = vala_ccode_identifier_new ("value");
      _tmp74_ = _tmp73_;
      vala_ccode_function_call_add_argument (stored_type, (ValaCCodeExpression*) _tmp74_);
      _vala_ccode_node_unref0 (_tmp74_);
      vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) stored_type);
      _tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp76_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) reg_call);
      _tmp77_ = _tmp76_;
      vala_ccode_function_else_if (_tmp75_, (ValaCCodeExpression*) _tmp77_);
      _vala_ccode_node_unref0 (_tmp77_);
      _tmp78_ = vala_ccode_identifier_new ("g_strconcat");
      _tmp79_ = _tmp78_;
      _tmp80_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp79_);
      _tmp81_ = _tmp80_;
      _vala_ccode_node_unref0 (_tmp79_);
      false_return = _tmp81_;
      _tmp82_ = vala_ccode_identifier_new ("g_type_name");
      _tmp83_ = _tmp82_;
      _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
      _tmp85_ = _tmp84_;
      _vala_ccode_node_unref0 (_tmp83_);
      type_name_fct = _tmp85_;
      vala_ccode_function_call_add_argument (type_name_fct, (ValaCCodeExpression*) type_check);
      _tmp86_ = vala_ccode_constant_new ("\"invalid object type `\"");
      _tmp87_ = _tmp86_;
      vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp87_);
      _vala_ccode_node_unref0 (_tmp87_);
      vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) type_name_fct);
      _tmp88_ = vala_ccode_constant_new ("\"' for value type `\"");
      _tmp89_ = _tmp88_;
      vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp89_);
      _vala_ccode_node_unref0 (_tmp89_);
      vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) value_type_name_fct);
      _tmp90_ = vala_ccode_constant_new ("\"'\"");
      _tmp91_ = _tmp90_;
      vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp91_);
      _vala_ccode_node_unref0 (_tmp91_);
      _tmp92_ = vala_ccode_constant_new ("NULL");
      _tmp93_ = _tmp92_;
      vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp93_);
      _vala_ccode_node_unref0 (_tmp93_);
      _tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp94_, (ValaCCodeExpression*) false_return);
      _tmp95_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp95_);
      _tmp96_ = vala_typesymbol_get_ref_function ((ValaTypeSymbol*) cl);
      _tmp97_ = _tmp96_;
      _tmp98_ = vala_ccode_identifier_new (_tmp97_);
      _tmp99_ = _tmp98_;
      _tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
      _tmp101_ = _tmp100_;
      _vala_ccode_node_unref0 (_tmp99_);
      _g_free0 (_tmp97_);
      ref_call = _tmp101_;
      _tmp102_ = vala_ccode_identifier_new ("object");
      _tmp103_ = _tmp102_;
      vala_ccode_function_call_add_argument (ref_call, (ValaCCodeExpression*) _tmp103_);
      _vala_ccode_node_unref0 (_tmp103_);
      _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) ref_call);
      _tmp105_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_else (_tmp105_);
      _tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp107_ = vala_ccode_constant_new ("NULL");
      _tmp108_ = _tmp107_;
      vala_ccode_function_add_assignment (_tmp106_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp108_);
      _vala_ccode_node_unref0 (_tmp108_);
      _tmp109_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp109_);
      _tmp110_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp111_ = vala_ccode_constant_new ("NULL");
      _tmp112_ = _tmp111_;
      vala_ccode_function_add_return (_tmp110_, (ValaCCodeExpression*) _tmp112_);
      _vala_ccode_node_unref0 (_tmp112_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ref_call);
      _vala_ccode_node_unref0 (type_name_fct);
      _vala_ccode_node_unref0 (false_return);
      _vala_ccode_node_unref0 (stored_type);
      _vala_ccode_node_unref0 (type_check);
      _vala_ccode_node_unref0 (reg_call);
      _vala_ccode_node_unref0 (true_return);
      _vala_ccode_node_unref0 (value_type_name_fct);
      _vala_ccode_node_unref0 (sub_condition);
      _vala_ccode_node_unref0 (l_expression);
      _vala_ccode_node_unref0 (obj_identifier);
      _vala_ccode_node_unref0 (collect_vpointer);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* function_name;
      ValaCCodeFunction* _tmp1_ = NULL;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp2_ = NULL;
      ValaCCodeParameter* _tmp3_;
      ValaCCodeParameter* _tmp4_ = NULL;
      ValaCCodeParameter* _tmp5_;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaCCodeParameter* _tmp8_ = NULL;
      ValaCCodeParameter* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaSymbolAccessibility _tmp12_;
      ValaCCodeFunction* _tmp13_ = NULL;
      ValaSymbol* _tmp14_ = NULL;
      gchar* _tmp15_ = NULL;
      gchar* _tmp16_;
      const gchar* _tmp17_ = NULL;
      gchar* _tmp18_ = NULL;
      gchar* _tmp19_;
      ValaCCodeVariableDeclarator* _tmp20_ = NULL;
      ValaCCodeVariableDeclarator* _tmp21_;
      ValaCCodeIdentifier* _tmp22_ = NULL;
      ValaCCodeIdentifier* _tmp23_;
      ValaCCodeFunctionCall* _tmp24_ = NULL;
      ValaCCodeFunctionCall* _tmp25_;
      ValaCCodeFunctionCall* subccall;
      ValaCCodeIdentifier* _tmp26_ = NULL;
      ValaCCodeIdentifier* _tmp27_;
      gchar* _tmp28_ = NULL;
      gchar* _tmp29_;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeIdentifier* _tmp32_ = NULL;
      ValaCCodeIdentifier* _tmp33_;
      ValaCCodeFunctionCall* _tmp34_ = NULL;
      ValaCCodeFunctionCall* _tmp35_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeIdentifier* _tmp36_ = NULL;
      ValaCCodeIdentifier* _tmp37_;
      ValaCCodeFunction* _tmp38_ = NULL;
      ValaCCodeIdentifier* _tmp39_ = NULL;
      ValaCCodeIdentifier* _tmp40_;
      ValaCCodeFunctionCall* _tmp41_ = NULL;
      ValaCCodeIdentifier* _tmp42_ = NULL;
      ValaCCodeIdentifier* _tmp43_;
      ValaCCodeIdentifier* _tmp44_ = NULL;
      ValaCCodeIdentifier* _tmp45_;
      ValaCCodeIdentifier* _tmp46_ = NULL;
      ValaCCodeIdentifier* _tmp47_;
      ValaCCodeIdentifier* _tmp48_ = NULL;
      ValaCCodeIdentifier* _tmp49_;
      ValaCCodeIdentifier* _tmp50_ = NULL;
      ValaCCodeIdentifier* _tmp51_;
      ValaCCodeFunction* _tmp52_ = NULL;
      ValaCCodeIdentifier* _tmp53_ = NULL;
      ValaCCodeIdentifier* _tmp54_;
      ValaCCodeIdentifier* _tmp55_ = NULL;
      ValaCCodeIdentifier* _tmp56_;
      ValaCCodeFunctionCall* _tmp57_ = NULL;
      ValaCCodeIdentifier* _tmp58_ = NULL;
      ValaCCodeIdentifier* _tmp59_;
      ValaCCodeFunction* _tmp60_ = NULL;
      ValaCCodeMemberAccess* _tmp61_ = NULL;
      ValaCCodeMemberAccess* _tmp62_;
      ValaCCodeIdentifier* _tmp63_ = NULL;
      ValaCCodeIdentifier* _tmp64_;
      ValaCCodeFunction* _tmp65_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, "param_spec_");
      function_name = _tmp0_;
      _tmp1_ = vala_ccode_function_new (function_name, "GParamSpec*");
      function = _tmp1_;
      _tmp2_ = vala_ccode_parameter_new ("name", "const gchar*");
      _tmp3_ = _tmp2_;
      vala_ccode_function_add_parameter (function, _tmp3_);
      _vala_ccode_node_unref0 (_tmp3_);
      _tmp4_ = vala_ccode_parameter_new ("nick", "const gchar*");
      _tmp5_ = _tmp4_;
      vala_ccode_function_add_parameter (function, _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _tmp6_ = vala_ccode_parameter_new ("blurb", "const gchar*");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_ccode_parameter_new ("object_type", "GType");
      _tmp9_ = _tmp8_;
      vala_ccode_function_add_parameter (function, _tmp9_);
      _vala_ccode_node_unref0 (_tmp9_);
      _tmp10_ = vala_ccode_parameter_new ("flags", "GParamFlags");
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (function, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _tmp12_ = vala_symbol_get_access ((ValaSymbol*) cl);
      if (_tmp12_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      }
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp13_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp14_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
      _tmp15_ = vala_symbol_get_cprefix (_tmp14_);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_symbol_get_name ((ValaSymbol*) cl);
      _tmp18_ = g_strdup_printf ("%sParamSpec%s*", _tmp16_, _tmp17_);
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
      _tmp21_ = _tmp20_;
      vala_ccode_function_add_declaration (_tmp13_, _tmp19_, (ValaCCodeDeclarator*) _tmp21_, 0);
      _vala_ccode_node_unref0 (_tmp21_);
      _g_free0 (_tmp19_);
      _g_free0 (_tmp16_);
      _tmp22_ = vala_ccode_identifier_new ("g_type_is_a");
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
      _tmp25_ = _tmp24_;
      _vala_ccode_node_unref0 (_tmp23_);
      subccall = _tmp25_;
      _tmp26_ = vala_ccode_identifier_new ("object_type");
      _tmp27_ = _tmp26_;
      vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp27_);
      _vala_ccode_node_unref0 (_tmp27_);
      _tmp28_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_identifier_new (_tmp29_);
      _tmp31_ = _tmp30_;
      vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp31_);
      _vala_ccode_node_unref0 (_tmp31_);
      _g_free0 (_tmp29_);
      _tmp32_ = vala_ccode_identifier_new ("g_return_val_if_fail");
      _tmp33_ = _tmp32_;
      _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
      _tmp35_ = _tmp34_;
      _vala_ccode_node_unref0 (_tmp33_);
      ccall = _tmp35_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) subccall);
      _tmp36_ = vala_ccode_identifier_new ("NULL");
      _tmp37_ = _tmp36_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp37_);
      _vala_ccode_node_unref0 (_tmp37_);
      _tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp38_, (ValaCCodeExpression*) ccall);
      _tmp39_ = vala_ccode_identifier_new ("g_param_spec_internal");
      _tmp40_ = _tmp39_;
      _tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp41_;
      _vala_ccode_node_unref0 (_tmp40_);
      _tmp42_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
      _tmp43_ = _tmp42_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp43_);
      _vala_ccode_node_unref0 (_tmp43_);
      _tmp44_ = vala_ccode_identifier_new ("name");
      _tmp45_ = _tmp44_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp45_);
      _vala_ccode_node_unref0 (_tmp45_);
      _tmp46_ = vala_ccode_identifier_new ("nick");
      _tmp47_ = _tmp46_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp47_);
      _vala_ccode_node_unref0 (_tmp47_);
      _tmp48_ = vala_ccode_identifier_new ("blurb");
      _tmp49_ = _tmp48_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp49_);
      _vala_ccode_node_unref0 (_tmp49_);
      _tmp50_ = vala_ccode_identifier_new ("flags");
      _tmp51_ = _tmp50_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp51_);
      _vala_ccode_node_unref0 (_tmp51_);
      _tmp52_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp53_ = vala_ccode_identifier_new ("spec");
      _tmp54_ = _tmp53_;
      vala_ccode_function_add_assignment (_tmp52_, (ValaCCodeExpression*) _tmp54_, (ValaCCodeExpression*) ccall);
      _vala_ccode_node_unref0 (_tmp54_);
      _tmp55_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
      _tmp56_ = _tmp55_;
      _tmp57_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp56_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp57_;
      _vala_ccode_node_unref0 (_tmp56_);
      _tmp58_ = vala_ccode_identifier_new ("spec");
      _tmp59_ = _tmp58_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp59_);
      _vala_ccode_node_unref0 (_tmp59_);
      _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp61_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccall, "value_type");
      _tmp62_ = _tmp61_;
      _tmp63_ = vala_ccode_identifier_new ("object_type");
      _tmp64_ = _tmp63_;
      vala_ccode_function_add_assignment (_tmp60_, (ValaCCodeExpression*) _tmp62_, (ValaCCodeExpression*) _tmp64_);
      _vala_ccode_node_unref0 (_tmp64_);
      _vala_ccode_node_unref0 (_tmp62_);
      _tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp65_, (ValaCCodeExpression*) ccall);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (subccall);
      _vala_ccode_node_unref0 (function);
      _g_free0 (function_name);
}


static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      ValaCCodeFunction* _tmp2_ = NULL;
      ValaCCodeFunction* _tmp3_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp4_ = NULL;
      ValaCCodeParameter* _tmp5_;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaSymbolAccessibility _tmp8_;
      ValaCCodeIdentifier* _tmp9_ = NULL;
      ValaCCodeIdentifier* _tmp10_;
      ValaCCodeMemberAccess* _tmp11_ = NULL;
      ValaCCodeMemberAccess* _tmp12_;
      ValaCCodeMemberAccess* _tmp13_ = NULL;
      ValaCCodeMemberAccess* _tmp14_;
      ValaCCodeMemberAccess* vpointer;
      ValaCCodeFunction* _tmp15_ = NULL;
      gchar* _tmp16_ = NULL;
      gchar* _tmp17_;
      gchar* _tmp18_;
      gchar* _tmp19_;
      ValaCCodeVariableDeclarator* _tmp20_ = NULL;
      ValaCCodeVariableDeclarator* _tmp21_;
      ValaCCodeIdentifier* _tmp22_ = NULL;
      ValaCCodeIdentifier* _tmp23_;
      ValaCCodeFunctionCall* _tmp24_ = NULL;
      ValaCCodeFunctionCall* _tmp25_;
      ValaCCodeFunctionCall* ccall_typecheck;
      ValaCCodeIdentifier* _tmp26_ = NULL;
      ValaCCodeIdentifier* _tmp27_;
      gchar* _tmp28_ = NULL;
      gchar* _tmp29_;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeIdentifier* _tmp32_ = NULL;
      ValaCCodeIdentifier* _tmp33_;
      ValaCCodeFunctionCall* _tmp34_ = NULL;
      ValaCCodeFunctionCall* _tmp35_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeFunction* _tmp36_ = NULL;
      ValaCCodeFunction* _tmp37_ = NULL;
      ValaCCodeConstant* _tmp38_ = NULL;
      ValaCCodeConstant* _tmp39_;
      ValaCCodeFunction* _tmp40_ = NULL;
      ValaCCodeIdentifier* _tmp41_ = NULL;
      ValaCCodeIdentifier* _tmp42_;
      ValaCCodeIdentifier* _tmp43_ = NULL;
      ValaCCodeIdentifier* _tmp44_;
      ValaCCodeFunctionCall* _tmp45_ = NULL;
      ValaCCodeIdentifier* _tmp46_ = NULL;
      ValaCCodeIdentifier* _tmp47_;
      gchar* _tmp48_ = NULL;
      gchar* _tmp49_;
      ValaCCodeIdentifier* _tmp50_ = NULL;
      ValaCCodeIdentifier* _tmp51_;
      ValaCCodeIdentifier* _tmp52_ = NULL;
      ValaCCodeIdentifier* _tmp53_;
      ValaCCodeFunctionCall* _tmp54_ = NULL;
      ValaCCodeFunction* _tmp55_ = NULL;
      ValaCCodeIdentifier* _tmp56_ = NULL;
      ValaCCodeIdentifier* _tmp57_;
      ValaCCodeFunctionCall* _tmp58_ = NULL;
      ValaCCodeFunctionCall* _tmp59_;
      ValaCCodeFunctionCall* ccall_typefrominstance;
      ValaCCodeIdentifier* _tmp60_ = NULL;
      ValaCCodeIdentifier* _tmp61_;
      ValaCCodeIdentifier* _tmp62_ = NULL;
      ValaCCodeIdentifier* _tmp63_;
      ValaCCodeFunctionCall* _tmp64_ = NULL;
      ValaCCodeFunctionCall* _tmp65_;
      ValaCCodeFunctionCall* ccall_gvaluetype;
      ValaCCodeIdentifier* _tmp66_ = NULL;
      ValaCCodeIdentifier* _tmp67_;
      ValaCCodeIdentifier* _tmp68_ = NULL;
      ValaCCodeIdentifier* _tmp69_;
      ValaCCodeFunctionCall* _tmp70_ = NULL;
      ValaCCodeFunctionCall* _tmp71_;
      ValaCCodeFunctionCall* ccall_typecompatible;
      ValaCCodeIdentifier* _tmp72_ = NULL;
      ValaCCodeIdentifier* _tmp73_;
      ValaCCodeFunctionCall* _tmp74_ = NULL;
      ValaCCodeFunction* _tmp75_ = NULL;
      ValaCCodeFunction* _tmp76_ = NULL;
      ValaCCodeConstant* _tmp77_ = NULL;
      ValaCCodeConstant* _tmp78_;
      gchar* _tmp79_ = NULL;
      gchar* _tmp80_;
      ValaCCodeIdentifier* _tmp81_ = NULL;
      ValaCCodeIdentifier* _tmp82_;
      ValaCCodeFunctionCall* _tmp83_ = NULL;
      ValaCCodeFunction* _tmp84_ = NULL;
      ValaCCodeFunction* _tmp85_ = NULL;
      ValaCCodeFunction* _tmp86_ = NULL;
      ValaCCodeConstant* _tmp87_ = NULL;
      ValaCCodeConstant* _tmp88_;
      ValaCCodeFunction* _tmp89_ = NULL;
      ValaCCodeFunction* _tmp90_ = NULL;
      ValaCCodeIdentifier* _tmp91_ = NULL;
      ValaCCodeIdentifier* _tmp92_;
      gchar* _tmp93_ = NULL;
      gchar* _tmp94_;
      ValaCCodeIdentifier* _tmp95_ = NULL;
      ValaCCodeIdentifier* _tmp96_;
      ValaCCodeFunctionCall* _tmp97_ = NULL;
      ValaCCodeIdentifier* _tmp98_ = NULL;
      ValaCCodeIdentifier* _tmp99_;
      ValaCCodeFunction* _tmp100_ = NULL;
      ValaCCodeFunction* _tmp101_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_typesymbol_get_set_value_function ((ValaTypeSymbol*) cl);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_function_new (_tmp1_, "void");
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      function = _tmp3_;
      _tmp4_ = vala_ccode_parameter_new ("value", "GValue*");
      _tmp5_ = _tmp4_;
      vala_ccode_function_add_parameter (function, _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _tmp6_ = vala_ccode_parameter_new ("v_object", "gpointer");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_symbol_get_access ((ValaSymbol*) cl);
      if (_tmp8_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      }
      _tmp9_ = vala_ccode_identifier_new ("value");
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp10_, "data[0]");
      _tmp12_ = _tmp11_;
      _tmp13_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp12_, "v_pointer", FALSE);
      _tmp14_ = _tmp13_;
      _vala_ccode_node_unref0 (_tmp12_);
      _vala_ccode_node_unref0 (_tmp10_);
      vpointer = _tmp14_;
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp15_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp16_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp17_ = _tmp16_;
      _tmp18_ = g_strconcat (_tmp17_, "*", NULL);
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
      _tmp21_ = _tmp20_;
      vala_ccode_function_add_declaration (_tmp15_, _tmp19_, (ValaCCodeDeclarator*) _tmp21_, 0);
      _vala_ccode_node_unref0 (_tmp21_);
      _g_free0 (_tmp19_);
      _g_free0 (_tmp17_);
      _tmp22_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
      _tmp25_ = _tmp24_;
      _vala_ccode_node_unref0 (_tmp23_);
      ccall_typecheck = _tmp25_;
      _tmp26_ = vala_ccode_identifier_new ("value");
      _tmp27_ = _tmp26_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp27_);
      _vala_ccode_node_unref0 (_tmp27_);
      _tmp28_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_identifier_new (_tmp29_);
      _tmp31_ = _tmp30_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp31_);
      _vala_ccode_node_unref0 (_tmp31_);
      _g_free0 (_tmp29_);
      _tmp32_ = vala_ccode_identifier_new ("g_return_if_fail");
      _tmp33_ = _tmp32_;
      _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
      _tmp35_ = _tmp34_;
      _vala_ccode_node_unref0 (_tmp33_);
      ccall = _tmp35_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
      _tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) ccall);
      _tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp38_ = vala_ccode_constant_new ("old");
      _tmp39_ = _tmp38_;
      vala_ccode_function_add_assignment (_tmp37_, (ValaCCodeExpression*) _tmp39_, (ValaCCodeExpression*) vpointer);
      _vala_ccode_node_unref0 (_tmp39_);
      _tmp40_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp41_ = vala_ccode_identifier_new ("v_object");
      _tmp42_ = _tmp41_;
      vala_ccode_function_open_if (_tmp40_, (ValaCCodeExpression*) _tmp42_);
      _vala_ccode_node_unref0 (_tmp42_);
      _tmp43_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
      _tmp44_ = _tmp43_;
      _tmp45_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp44_);
      _vala_ccode_node_unref0 (ccall_typecheck);
      ccall_typecheck = _tmp45_;
      _vala_ccode_node_unref0 (_tmp44_);
      _tmp46_ = vala_ccode_identifier_new ("v_object");
      _tmp47_ = _tmp46_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp47_);
      _vala_ccode_node_unref0 (_tmp47_);
      _tmp48_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
      _tmp49_ = _tmp48_;
      _tmp50_ = vala_ccode_identifier_new (_tmp49_);
      _tmp51_ = _tmp50_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp51_);
      _vala_ccode_node_unref0 (_tmp51_);
      _g_free0 (_tmp49_);
      _tmp52_ = vala_ccode_identifier_new ("g_return_if_fail");
      _tmp53_ = _tmp52_;
      _tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp54_;
      _vala_ccode_node_unref0 (_tmp53_);
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
      _tmp55_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp55_, (ValaCCodeExpression*) ccall);
      _tmp56_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
      _tmp57_ = _tmp56_;
      _tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
      _tmp59_ = _tmp58_;
      _vala_ccode_node_unref0 (_tmp57_);
      ccall_typefrominstance = _tmp59_;
      _tmp60_ = vala_ccode_identifier_new ("v_object");
      _tmp61_ = _tmp60_;
      vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp61_);
      _vala_ccode_node_unref0 (_tmp61_);
      _tmp62_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
      _tmp63_ = _tmp62_;
      _tmp64_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp63_);
      _tmp65_ = _tmp64_;
      _vala_ccode_node_unref0 (_tmp63_);
      ccall_gvaluetype = _tmp65_;
      _tmp66_ = vala_ccode_identifier_new ("value");
      _tmp67_ = _tmp66_;
      vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp67_);
      _vala_ccode_node_unref0 (_tmp67_);
      _tmp68_ = vala_ccode_identifier_new ("g_value_type_compatible");
      _tmp69_ = _tmp68_;
      _tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
      _tmp71_ = _tmp70_;
      _vala_ccode_node_unref0 (_tmp69_);
      ccall_typecompatible = _tmp71_;
      vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
      vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
      _tmp72_ = vala_ccode_identifier_new ("g_return_if_fail");
      _tmp73_ = _tmp72_;
      _tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp74_;
      _vala_ccode_node_unref0 (_tmp73_);
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecompatible);
      _tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp75_, (ValaCCodeExpression*) ccall);
      _tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp77_ = vala_ccode_constant_new ("v_object");
      _tmp78_ = _tmp77_;
      vala_ccode_function_add_assignment (_tmp76_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp78_);
      _vala_ccode_node_unref0 (_tmp78_);
      _tmp79_ = vala_typesymbol_get_ref_function ((ValaTypeSymbol*) cl);
      _tmp80_ = _tmp79_;
      _tmp81_ = vala_ccode_identifier_new (_tmp80_);
      _tmp82_ = _tmp81_;
      _tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp83_;
      _vala_ccode_node_unref0 (_tmp82_);
      _g_free0 (_tmp80_);
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) vpointer);
      _tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp84_, (ValaCCodeExpression*) ccall);
      _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_else (_tmp85_);
      _tmp86_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp87_ = vala_ccode_constant_new ("NULL");
      _tmp88_ = _tmp87_;
      vala_ccode_function_add_assignment (_tmp86_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp88_);
      _vala_ccode_node_unref0 (_tmp88_);
      _tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp89_);
      _tmp90_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp91_ = vala_ccode_identifier_new ("old");
      _tmp92_ = _tmp91_;
      vala_ccode_function_open_if (_tmp90_, (ValaCCodeExpression*) _tmp92_);
      _vala_ccode_node_unref0 (_tmp92_);
      _tmp93_ = vala_typesymbol_get_unref_function ((ValaTypeSymbol*) cl);
      _tmp94_ = _tmp93_;
      _tmp95_ = vala_ccode_identifier_new (_tmp94_);
      _tmp96_ = _tmp95_;
      _tmp97_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp96_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp97_;
      _vala_ccode_node_unref0 (_tmp96_);
      _g_free0 (_tmp94_);
      _tmp98_ = vala_ccode_identifier_new ("old");
      _tmp99_ = _tmp98_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp99_);
      _vala_ccode_node_unref0 (_tmp99_);
      _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp100_, (ValaCCodeExpression*) ccall);
      _tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp101_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ccall_typecompatible);
      _vala_ccode_node_unref0 (ccall_gvaluetype);
      _vala_ccode_node_unref0 (ccall_typefrominstance);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (ccall_typecheck);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      ValaCCodeFunction* _tmp2_ = NULL;
      ValaCCodeFunction* _tmp3_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp4_ = NULL;
      ValaCCodeParameter* _tmp5_;
      ValaCCodeParameter* _tmp6_ = NULL;
      ValaCCodeParameter* _tmp7_;
      ValaSymbolAccessibility _tmp8_;
      ValaCCodeIdentifier* _tmp9_ = NULL;
      ValaCCodeIdentifier* _tmp10_;
      ValaCCodeMemberAccess* _tmp11_ = NULL;
      ValaCCodeMemberAccess* _tmp12_;
      ValaCCodeMemberAccess* _tmp13_ = NULL;
      ValaCCodeMemberAccess* _tmp14_;
      ValaCCodeMemberAccess* vpointer;
      ValaCCodeFunction* _tmp15_ = NULL;
      gchar* _tmp16_ = NULL;
      gchar* _tmp17_;
      gchar* _tmp18_;
      gchar* _tmp19_;
      ValaCCodeVariableDeclarator* _tmp20_ = NULL;
      ValaCCodeVariableDeclarator* _tmp21_;
      ValaCCodeIdentifier* _tmp22_ = NULL;
      ValaCCodeIdentifier* _tmp23_;
      ValaCCodeFunctionCall* _tmp24_ = NULL;
      ValaCCodeFunctionCall* _tmp25_;
      ValaCCodeFunctionCall* ccall_typecheck;
      ValaCCodeIdentifier* _tmp26_ = NULL;
      ValaCCodeIdentifier* _tmp27_;
      gchar* _tmp28_ = NULL;
      gchar* _tmp29_;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeIdentifier* _tmp32_ = NULL;
      ValaCCodeIdentifier* _tmp33_;
      ValaCCodeFunctionCall* _tmp34_ = NULL;
      ValaCCodeFunctionCall* _tmp35_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeFunction* _tmp36_ = NULL;
      ValaCCodeFunction* _tmp37_ = NULL;
      ValaCCodeConstant* _tmp38_ = NULL;
      ValaCCodeConstant* _tmp39_;
      ValaCCodeFunction* _tmp40_ = NULL;
      ValaCCodeIdentifier* _tmp41_ = NULL;
      ValaCCodeIdentifier* _tmp42_;
      ValaCCodeIdentifier* _tmp43_ = NULL;
      ValaCCodeIdentifier* _tmp44_;
      ValaCCodeFunctionCall* _tmp45_ = NULL;
      ValaCCodeIdentifier* _tmp46_ = NULL;
      ValaCCodeIdentifier* _tmp47_;
      gchar* _tmp48_ = NULL;
      gchar* _tmp49_;
      ValaCCodeIdentifier* _tmp50_ = NULL;
      ValaCCodeIdentifier* _tmp51_;
      ValaCCodeIdentifier* _tmp52_ = NULL;
      ValaCCodeIdentifier* _tmp53_;
      ValaCCodeFunctionCall* _tmp54_ = NULL;
      ValaCCodeFunction* _tmp55_ = NULL;
      ValaCCodeIdentifier* _tmp56_ = NULL;
      ValaCCodeIdentifier* _tmp57_;
      ValaCCodeFunctionCall* _tmp58_ = NULL;
      ValaCCodeFunctionCall* _tmp59_;
      ValaCCodeFunctionCall* ccall_typefrominstance;
      ValaCCodeIdentifier* _tmp60_ = NULL;
      ValaCCodeIdentifier* _tmp61_;
      ValaCCodeIdentifier* _tmp62_ = NULL;
      ValaCCodeIdentifier* _tmp63_;
      ValaCCodeFunctionCall* _tmp64_ = NULL;
      ValaCCodeFunctionCall* _tmp65_;
      ValaCCodeFunctionCall* ccall_gvaluetype;
      ValaCCodeIdentifier* _tmp66_ = NULL;
      ValaCCodeIdentifier* _tmp67_;
      ValaCCodeIdentifier* _tmp68_ = NULL;
      ValaCCodeIdentifier* _tmp69_;
      ValaCCodeFunctionCall* _tmp70_ = NULL;
      ValaCCodeFunctionCall* _tmp71_;
      ValaCCodeFunctionCall* ccall_typecompatible;
      ValaCCodeIdentifier* _tmp72_ = NULL;
      ValaCCodeIdentifier* _tmp73_;
      ValaCCodeFunctionCall* _tmp74_ = NULL;
      ValaCCodeFunction* _tmp75_ = NULL;
      ValaCCodeFunction* _tmp76_ = NULL;
      ValaCCodeConstant* _tmp77_ = NULL;
      ValaCCodeConstant* _tmp78_;
      ValaCCodeFunction* _tmp79_ = NULL;
      ValaCCodeFunction* _tmp80_ = NULL;
      ValaCCodeConstant* _tmp81_ = NULL;
      ValaCCodeConstant* _tmp82_;
      ValaCCodeFunction* _tmp83_ = NULL;
      ValaCCodeFunction* _tmp84_ = NULL;
      ValaCCodeIdentifier* _tmp85_ = NULL;
      ValaCCodeIdentifier* _tmp86_;
      gchar* _tmp87_ = NULL;
      gchar* _tmp88_;
      ValaCCodeIdentifier* _tmp89_ = NULL;
      ValaCCodeIdentifier* _tmp90_;
      ValaCCodeFunctionCall* _tmp91_ = NULL;
      ValaCCodeIdentifier* _tmp92_ = NULL;
      ValaCCodeIdentifier* _tmp93_;
      ValaCCodeFunction* _tmp94_ = NULL;
      ValaCCodeFunction* _tmp95_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_typesymbol_get_take_value_function ((ValaTypeSymbol*) cl);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_function_new (_tmp1_, "void");
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      function = _tmp3_;
      _tmp4_ = vala_ccode_parameter_new ("value", "GValue*");
      _tmp5_ = _tmp4_;
      vala_ccode_function_add_parameter (function, _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _tmp6_ = vala_ccode_parameter_new ("v_object", "gpointer");
      _tmp7_ = _tmp6_;
      vala_ccode_function_add_parameter (function, _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _tmp8_ = vala_symbol_get_access ((ValaSymbol*) cl);
      if (_tmp8_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      }
      _tmp9_ = vala_ccode_identifier_new ("value");
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp10_, "data[0]");
      _tmp12_ = _tmp11_;
      _tmp13_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp12_, "v_pointer", FALSE);
      _tmp14_ = _tmp13_;
      _vala_ccode_node_unref0 (_tmp12_);
      _vala_ccode_node_unref0 (_tmp10_);
      vpointer = _tmp14_;
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp15_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp16_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp17_ = _tmp16_;
      _tmp18_ = g_strconcat (_tmp17_, "*", NULL);
      _tmp19_ = _tmp18_;
      _tmp20_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
      _tmp21_ = _tmp20_;
      vala_ccode_function_add_declaration (_tmp15_, _tmp19_, (ValaCCodeDeclarator*) _tmp21_, 0);
      _vala_ccode_node_unref0 (_tmp21_);
      _g_free0 (_tmp19_);
      _g_free0 (_tmp17_);
      _tmp22_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp23_);
      _tmp25_ = _tmp24_;
      _vala_ccode_node_unref0 (_tmp23_);
      ccall_typecheck = _tmp25_;
      _tmp26_ = vala_ccode_identifier_new ("value");
      _tmp27_ = _tmp26_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp27_);
      _vala_ccode_node_unref0 (_tmp27_);
      _tmp28_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_identifier_new (_tmp29_);
      _tmp31_ = _tmp30_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp31_);
      _vala_ccode_node_unref0 (_tmp31_);
      _g_free0 (_tmp29_);
      _tmp32_ = vala_ccode_identifier_new ("g_return_if_fail");
      _tmp33_ = _tmp32_;
      _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
      _tmp35_ = _tmp34_;
      _vala_ccode_node_unref0 (_tmp33_);
      ccall = _tmp35_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
      _tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) ccall);
      _tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp38_ = vala_ccode_constant_new ("old");
      _tmp39_ = _tmp38_;
      vala_ccode_function_add_assignment (_tmp37_, (ValaCCodeExpression*) _tmp39_, (ValaCCodeExpression*) vpointer);
      _vala_ccode_node_unref0 (_tmp39_);
      _tmp40_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp41_ = vala_ccode_identifier_new ("v_object");
      _tmp42_ = _tmp41_;
      vala_ccode_function_open_if (_tmp40_, (ValaCCodeExpression*) _tmp42_);
      _vala_ccode_node_unref0 (_tmp42_);
      _tmp43_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
      _tmp44_ = _tmp43_;
      _tmp45_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp44_);
      _vala_ccode_node_unref0 (ccall_typecheck);
      ccall_typecheck = _tmp45_;
      _vala_ccode_node_unref0 (_tmp44_);
      _tmp46_ = vala_ccode_identifier_new ("v_object");
      _tmp47_ = _tmp46_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp47_);
      _vala_ccode_node_unref0 (_tmp47_);
      _tmp48_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
      _tmp49_ = _tmp48_;
      _tmp50_ = vala_ccode_identifier_new (_tmp49_);
      _tmp51_ = _tmp50_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp51_);
      _vala_ccode_node_unref0 (_tmp51_);
      _g_free0 (_tmp49_);
      _tmp52_ = vala_ccode_identifier_new ("g_return_if_fail");
      _tmp53_ = _tmp52_;
      _tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp54_;
      _vala_ccode_node_unref0 (_tmp53_);
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
      _tmp55_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp55_, (ValaCCodeExpression*) ccall);
      _tmp56_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
      _tmp57_ = _tmp56_;
      _tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
      _tmp59_ = _tmp58_;
      _vala_ccode_node_unref0 (_tmp57_);
      ccall_typefrominstance = _tmp59_;
      _tmp60_ = vala_ccode_identifier_new ("v_object");
      _tmp61_ = _tmp60_;
      vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp61_);
      _vala_ccode_node_unref0 (_tmp61_);
      _tmp62_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
      _tmp63_ = _tmp62_;
      _tmp64_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp63_);
      _tmp65_ = _tmp64_;
      _vala_ccode_node_unref0 (_tmp63_);
      ccall_gvaluetype = _tmp65_;
      _tmp66_ = vala_ccode_identifier_new ("value");
      _tmp67_ = _tmp66_;
      vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp67_);
      _vala_ccode_node_unref0 (_tmp67_);
      _tmp68_ = vala_ccode_identifier_new ("g_value_type_compatible");
      _tmp69_ = _tmp68_;
      _tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
      _tmp71_ = _tmp70_;
      _vala_ccode_node_unref0 (_tmp69_);
      ccall_typecompatible = _tmp71_;
      vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
      vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
      _tmp72_ = vala_ccode_identifier_new ("g_return_if_fail");
      _tmp73_ = _tmp72_;
      _tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp74_;
      _vala_ccode_node_unref0 (_tmp73_);
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecompatible);
      _tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp75_, (ValaCCodeExpression*) ccall);
      _tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp77_ = vala_ccode_constant_new ("v_object");
      _tmp78_ = _tmp77_;
      vala_ccode_function_add_assignment (_tmp76_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp78_);
      _vala_ccode_node_unref0 (_tmp78_);
      _tmp79_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_else (_tmp79_);
      _tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp81_ = vala_ccode_constant_new ("NULL");
      _tmp82_ = _tmp81_;
      vala_ccode_function_add_assignment (_tmp80_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp82_);
      _vala_ccode_node_unref0 (_tmp82_);
      _tmp83_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp83_);
      _tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp85_ = vala_ccode_identifier_new ("old");
      _tmp86_ = _tmp85_;
      vala_ccode_function_open_if (_tmp84_, (ValaCCodeExpression*) _tmp86_);
      _vala_ccode_node_unref0 (_tmp86_);
      _tmp87_ = vala_typesymbol_get_unref_function ((ValaTypeSymbol*) cl);
      _tmp88_ = _tmp87_;
      _tmp89_ = vala_ccode_identifier_new (_tmp88_);
      _tmp90_ = _tmp89_;
      _tmp91_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp90_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp91_;
      _vala_ccode_node_unref0 (_tmp90_);
      _g_free0 (_tmp88_);
      _tmp92_ = vala_ccode_identifier_new ("old");
      _tmp93_ = _tmp92_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp93_);
      _vala_ccode_node_unref0 (_tmp93_);
      _tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp94_, (ValaCCodeExpression*) ccall);
      _tmp95_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp95_);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ccall_typecompatible);
      _vala_ccode_node_unref0 (ccall_gvaluetype);
      _vala_ccode_node_unref0 (ccall_typefrominstance);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (ccall_typecheck);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      ValaCCodeFunction* _tmp2_ = NULL;
      ValaCCodeFunction* _tmp3_;
      ValaCCodeFunction* function;
      ValaCCodeParameter* _tmp4_ = NULL;
      ValaCCodeParameter* _tmp5_;
      ValaSymbolAccessibility _tmp6_;
      ValaCCodeIdentifier* _tmp7_ = NULL;
      ValaCCodeIdentifier* _tmp8_;
      ValaCCodeMemberAccess* _tmp9_ = NULL;
      ValaCCodeMemberAccess* _tmp10_;
      ValaCCodeMemberAccess* _tmp11_ = NULL;
      ValaCCodeMemberAccess* _tmp12_;
      ValaCCodeMemberAccess* vpointer;
      ValaCCodeIdentifier* _tmp13_ = NULL;
      ValaCCodeIdentifier* _tmp14_;
      ValaCCodeFunctionCall* _tmp15_ = NULL;
      ValaCCodeFunctionCall* _tmp16_;
      ValaCCodeFunctionCall* ccall_typecheck;
      ValaCCodeIdentifier* _tmp17_ = NULL;
      ValaCCodeIdentifier* _tmp18_;
      gchar* _tmp19_ = NULL;
      gchar* _tmp20_;
      ValaCCodeIdentifier* _tmp21_ = NULL;
      ValaCCodeIdentifier* _tmp22_;
      ValaCCodeIdentifier* _tmp23_ = NULL;
      ValaCCodeIdentifier* _tmp24_;
      ValaCCodeFunctionCall* _tmp25_ = NULL;
      ValaCCodeFunctionCall* _tmp26_;
      ValaCCodeFunctionCall* ccall;
      ValaCCodeIdentifier* _tmp27_ = NULL;
      ValaCCodeIdentifier* _tmp28_;
      ValaCCodeFunction* _tmp29_ = NULL;
      ValaCCodeFunction* _tmp30_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_typesymbol_get_get_value_function ((ValaTypeSymbol*) cl);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_function_new (_tmp1_, "gpointer");
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      function = _tmp3_;
      _tmp4_ = vala_ccode_parameter_new ("value", "const GValue*");
      _tmp5_ = _tmp4_;
      vala_ccode_function_add_parameter (function, _tmp5_);
      _vala_ccode_node_unref0 (_tmp5_);
      _tmp6_ = vala_symbol_get_access ((ValaSymbol*) cl);
      if (_tmp6_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
            vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      }
      _tmp7_ = vala_ccode_identifier_new ("value");
      _tmp8_ = _tmp7_;
      _tmp9_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp8_, "data[0]");
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp10_, "v_pointer", FALSE);
      _tmp12_ = _tmp11_;
      _vala_ccode_node_unref0 (_tmp10_);
      _vala_ccode_node_unref0 (_tmp8_);
      vpointer = _tmp12_;
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp13_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
      _tmp14_ = _tmp13_;
      _tmp15_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp14_);
      _tmp16_ = _tmp15_;
      _vala_ccode_node_unref0 (_tmp14_);
      ccall_typecheck = _tmp16_;
      _tmp17_ = vala_ccode_identifier_new ("value");
      _tmp18_ = _tmp17_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp18_);
      _vala_ccode_node_unref0 (_tmp18_);
      _tmp19_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) cl);
      _tmp20_ = _tmp19_;
      _tmp21_ = vala_ccode_identifier_new (_tmp20_);
      _tmp22_ = _tmp21_;
      vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp22_);
      _vala_ccode_node_unref0 (_tmp22_);
      _g_free0 (_tmp20_);
      _tmp23_ = vala_ccode_identifier_new ("g_return_val_if_fail");
      _tmp24_ = _tmp23_;
      _tmp25_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp24_);
      _tmp26_ = _tmp25_;
      _vala_ccode_node_unref0 (_tmp24_);
      ccall = _tmp26_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
      _tmp27_ = vala_ccode_identifier_new ("NULL");
      _tmp28_ = _tmp27_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp28_);
      _vala_ccode_node_unref0 (_tmp28_);
      _tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp29_, (ValaCCodeExpression*) ccall);
      _tmp30_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_return (_tmp30_, (ValaCCodeExpression*) vpointer);
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, function);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (ccall_typecheck);
      _vala_ccode_node_unref0 (vpointer);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* base_init;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      gboolean _tmp12_ = FALSE;
      ValaCodeContext* _tmp13_ = NULL;
      gboolean _tmp14_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->base_init_context);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_base_init", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      base_init = _tmp5_;
      _tmp6_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp7_ = _tmp6_;
      _tmp8_ = g_strdup_printf ("%sClass *", _tmp7_);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_parameter_new ("klass", _tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (base_init, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _g_free0 (_tmp9_);
      _g_free0 (_tmp7_);
      vala_ccode_function_set_modifiers (base_init, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
      _tmp13_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
      _tmp14_ = vala_code_context_require_glib_version (_tmp13_, 2, 24);
      if (!_tmp14_) {
            gboolean _tmp15_;
            _tmp15_ = vala_class_get_has_class_private_fields (cl);
            _tmp12_ = _tmp15_;
      } else {
            _tmp12_ = FALSE;
      }
      if (_tmp12_) {
            ValaCCodeFunction* _tmp16_ = NULL;
            gchar* _tmp17_ = NULL;
            gchar* _tmp18_;
            gchar* _tmp19_ = NULL;
            gchar* _tmp20_;
            ValaCCodeVariableDeclarator* _tmp21_ = NULL;
            ValaCCodeVariableDeclarator* _tmp22_;
            ValaCCodeFunction* _tmp23_ = NULL;
            gchar* _tmp24_ = NULL;
            gchar* _tmp25_;
            gchar* _tmp26_ = NULL;
            gchar* _tmp27_;
            ValaCCodeConstant* _tmp28_ = NULL;
            ValaCCodeConstant* _tmp29_;
            ValaCCodeVariableDeclarator* _tmp30_ = NULL;
            ValaCCodeVariableDeclarator* _tmp31_;
            ValaCCodeFunction* _tmp32_ = NULL;
            ValaCCodeVariableDeclarator* _tmp33_ = NULL;
            ValaCCodeVariableDeclarator* _tmp34_;
            ValaCCodeIdentifier* _tmp35_ = NULL;
            ValaCCodeIdentifier* _tmp36_;
            ValaCCodeFunctionCall* _tmp37_ = NULL;
            ValaCCodeFunctionCall* _tmp38_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeIdentifier* _tmp39_ = NULL;
            ValaCCodeIdentifier* _tmp40_;
            ValaCCodeFunctionCall* _tmp41_ = NULL;
            ValaCCodeFunctionCall* _tmp42_;
            ValaCCodeFunctionCall* ccall2;
            ValaCCodeIdentifier* _tmp43_ = NULL;
            ValaCCodeIdentifier* _tmp44_;
            ValaCCodeFunction* _tmp45_ = NULL;
            ValaCCodeIdentifier* _tmp46_ = NULL;
            ValaCCodeIdentifier* _tmp47_;
            ValaCCodeFunction* _tmp48_ = NULL;
            ValaCCodeIdentifier* _tmp49_ = NULL;
            ValaCCodeIdentifier* _tmp50_;
            gchar* _tmp51_ = NULL;
            gchar* _tmp52_;
            gchar* _tmp53_ = NULL;
            gchar* _tmp54_;
            ValaCCodeIdentifier* _tmp55_ = NULL;
            ValaCCodeIdentifier* _tmp56_;
            ValaCCodeFunctionCall* _tmp57_ = NULL;
            ValaCCodeIdentifier* _tmp58_ = NULL;
            ValaCCodeIdentifier* _tmp59_;
            ValaCCodeFunctionCall* _tmp60_ = NULL;
            ValaCCodeIdentifier* _tmp61_ = NULL;
            ValaCCodeIdentifier* _tmp62_;
            ValaCCodeFunction* _tmp63_ = NULL;
            ValaCCodeIdentifier* _tmp64_ = NULL;
            ValaCCodeIdentifier* _tmp65_;
            ValaCCodeFunction* _tmp66_ = NULL;
            ValaCCodeIdentifier* _tmp67_ = NULL;
            ValaCCodeIdentifier* _tmp68_;
            ValaCCodeFunctionCall* _tmp69_ = NULL;
            gchar* _tmp70_ = NULL;
            gchar* _tmp71_;
            gchar* _tmp72_ = NULL;
            gchar* _tmp73_;
            ValaCCodeIdentifier* _tmp74_ = NULL;
            ValaCCodeIdentifier* _tmp75_;
            ValaCCodeFunction* _tmp76_ = NULL;
            ValaCCodeIdentifier* _tmp77_ = NULL;
            ValaCCodeIdentifier* _tmp78_;
            ValaCCodeFunction* _tmp79_ = NULL;
            ValaCCodeIdentifier* _tmp80_ = NULL;
            ValaCCodeIdentifier* _tmp81_;
            ValaCCodeIdentifier* _tmp82_ = NULL;
            ValaCCodeIdentifier* _tmp83_;
            ValaCCodeFunctionCall* _tmp84_ = NULL;
            ValaCCodeIdentifier* _tmp85_ = NULL;
            ValaCCodeIdentifier* _tmp86_;
            ValaCCodeIdentifier* _tmp87_ = NULL;
            ValaCCodeIdentifier* _tmp88_;
            gchar* _tmp89_ = NULL;
            gchar* _tmp90_;
            gchar* _tmp91_ = NULL;
            gchar* _tmp92_;
            ValaCCodeIdentifier* _tmp93_ = NULL;
            ValaCCodeIdentifier* _tmp94_;
            ValaCCodeFunction* _tmp95_ = NULL;
            ValaCCodeFunction* _tmp96_ = NULL;
            ValaCCodeIdentifier* _tmp97_ = NULL;
            ValaCCodeIdentifier* _tmp98_;
            ValaCCodeFunctionCall* _tmp99_ = NULL;
            ValaCCodeIdentifier* _tmp100_ = NULL;
            ValaCCodeIdentifier* _tmp101_;
            ValaCCodeFunctionCall* _tmp102_ = NULL;
            ValaCCodeIdentifier* _tmp103_ = NULL;
            ValaCCodeIdentifier* _tmp104_;
            gchar* _tmp105_ = NULL;
            gchar* _tmp106_;
            gchar* _tmp107_ = NULL;
            gchar* _tmp108_;
            ValaCCodeIdentifier* _tmp109_ = NULL;
            ValaCCodeIdentifier* _tmp110_;
            ValaCCodeIdentifier* _tmp111_ = NULL;
            ValaCCodeIdentifier* _tmp112_;
            ValaCCodeFunction* _tmp113_ = NULL;
            _tmp16_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp17_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp18_ = _tmp17_;
            _tmp19_ = g_strdup_printf ("%sClassPrivate *", _tmp18_);
            _tmp20_ = _tmp19_;
            _tmp21_ = vala_ccode_variable_declarator_new ("priv", NULL, NULL);
            _tmp22_ = _tmp21_;
            vala_ccode_function_add_declaration (_tmp16_, _tmp20_, (ValaCCodeDeclarator*) _tmp22_, 0);
            _vala_ccode_node_unref0 (_tmp22_);
            _g_free0 (_tmp20_);
            _g_free0 (_tmp18_);
            _tmp23_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp24_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp25_ = _tmp24_;
            _tmp26_ = g_strdup_printf ("%sClassPrivate *", _tmp25_);
            _tmp27_ = _tmp26_;
            _tmp28_ = vala_ccode_constant_new ("NULL");
            _tmp29_ = _tmp28_;
            _tmp30_ = vala_ccode_variable_declarator_new ("parent_priv", (ValaCCodeExpression*) _tmp29_, NULL);
            _tmp31_ = _tmp30_;
            vala_ccode_function_add_declaration (_tmp23_, _tmp27_, (ValaCCodeDeclarator*) _tmp31_, 0);
            _vala_ccode_node_unref0 (_tmp31_);
            _vala_ccode_node_unref0 (_tmp29_);
            _g_free0 (_tmp27_);
            _g_free0 (_tmp25_);
            _tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp33_ = vala_ccode_variable_declarator_new ("parent_type", NULL, NULL);
            _tmp34_ = _tmp33_;
            vala_ccode_function_add_declaration (_tmp32_, "GType", (ValaCCodeDeclarator*) _tmp34_, 0);
            _vala_ccode_node_unref0 (_tmp34_);
            _tmp35_ = vala_ccode_identifier_new ("g_type_parent");
            _tmp36_ = _tmp35_;
            _tmp37_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp36_);
            _tmp38_ = _tmp37_;
            _vala_ccode_node_unref0 (_tmp36_);
            ccall = _tmp38_;
            _tmp39_ = vala_ccode_identifier_new ("G_TYPE_FROM_CLASS");
            _tmp40_ = _tmp39_;
            _tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
            _tmp42_ = _tmp41_;
            _vala_ccode_node_unref0 (_tmp40_);
            ccall2 = _tmp42_;
            _tmp43_ = vala_ccode_identifier_new ("klass");
            _tmp44_ = _tmp43_;
            vala_ccode_function_call_add_argument (ccall2, (ValaCCodeExpression*) _tmp44_);
            _vala_ccode_node_unref0 (_tmp44_);
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall2);
            _tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp46_ = vala_ccode_identifier_new ("parent_type");
            _tmp47_ = _tmp46_;
            vala_ccode_function_add_assignment (_tmp45_, (ValaCCodeExpression*) _tmp47_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp47_);
            _tmp48_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp49_ = vala_ccode_identifier_new ("parent_type");
            _tmp50_ = _tmp49_;
            vala_ccode_function_open_if (_tmp48_, (ValaCCodeExpression*) _tmp50_);
            _vala_ccode_node_unref0 (_tmp50_);
            _tmp51_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
            _tmp52_ = _tmp51_;
            _tmp53_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp52_);
            _tmp54_ = _tmp53_;
            _tmp55_ = vala_ccode_identifier_new (_tmp54_);
            _tmp56_ = _tmp55_;
            _tmp57_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp56_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp57_;
            _vala_ccode_node_unref0 (_tmp56_);
            _g_free0 (_tmp54_);
            _g_free0 (_tmp52_);
            _tmp58_ = vala_ccode_identifier_new ("g_type_class_peek");
            _tmp59_ = _tmp58_;
            _tmp60_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp59_);
            _vala_ccode_node_unref0 (ccall2);
            ccall2 = _tmp60_;
            _vala_ccode_node_unref0 (_tmp59_);
            _tmp61_ = vala_ccode_identifier_new ("parent_type");
            _tmp62_ = _tmp61_;
            vala_ccode_function_call_add_argument (ccall2, (ValaCCodeExpression*) _tmp62_);
            _vala_ccode_node_unref0 (_tmp62_);
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall2);
            _tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp64_ = vala_ccode_identifier_new ("parent_priv");
            _tmp65_ = _tmp64_;
            vala_ccode_function_add_assignment (_tmp63_, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp65_);
            _tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_close (_tmp66_);
            _tmp67_ = vala_ccode_identifier_new ("g_slice_new0");
            _tmp68_ = _tmp67_;
            _tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp69_;
            _vala_ccode_node_unref0 (_tmp68_);
            _tmp70_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp71_ = _tmp70_;
            _tmp72_ = g_strdup_printf ("%sClassPrivate", _tmp71_);
            _tmp73_ = _tmp72_;
            _tmp74_ = vala_ccode_identifier_new (_tmp73_);
            _tmp75_ = _tmp74_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp75_);
            _vala_ccode_node_unref0 (_tmp75_);
            _g_free0 (_tmp73_);
            _g_free0 (_tmp71_);
            _tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp77_ = vala_ccode_identifier_new ("priv");
            _tmp78_ = _tmp77_;
            vala_ccode_function_add_assignment (_tmp76_, (ValaCCodeExpression*) _tmp78_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp78_);
            vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "string.h", FALSE);
            _tmp79_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp80_ = vala_ccode_identifier_new ("parent_priv");
            _tmp81_ = _tmp80_;
            vala_ccode_function_open_if (_tmp79_, (ValaCCodeExpression*) _tmp81_);
            _vala_ccode_node_unref0 (_tmp81_);
            _tmp82_ = vala_ccode_identifier_new ("memcpy");
            _tmp83_ = _tmp82_;
            _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp84_;
            _vala_ccode_node_unref0 (_tmp83_);
            _tmp85_ = vala_ccode_identifier_new ("priv");
            _tmp86_ = _tmp85_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp86_);
            _vala_ccode_node_unref0 (_tmp86_);
            _tmp87_ = vala_ccode_identifier_new ("parent_priv");
            _tmp88_ = _tmp87_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp88_);
            _vala_ccode_node_unref0 (_tmp88_);
            _tmp89_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp90_ = _tmp89_;
            _tmp91_ = g_strdup_printf ("sizeof (%sClassPrivate)", _tmp90_);
            _tmp92_ = _tmp91_;
            _tmp93_ = vala_ccode_identifier_new (_tmp92_);
            _tmp94_ = _tmp93_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp94_);
            _vala_ccode_node_unref0 (_tmp94_);
            _g_free0 (_tmp92_);
            _g_free0 (_tmp90_);
            _tmp95_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_add_expression (_tmp95_, (ValaCCodeExpression*) ccall);
            _tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_close (_tmp96_);
            _tmp97_ = vala_ccode_identifier_new ("g_type_set_qdata");
            _tmp98_ = _tmp97_;
            _tmp99_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp98_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp99_;
            _vala_ccode_node_unref0 (_tmp98_);
            _tmp100_ = vala_ccode_identifier_new ("G_TYPE_FROM_CLASS");
            _tmp101_ = _tmp100_;
            _tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
            _vala_ccode_node_unref0 (ccall2);
            ccall2 = _tmp102_;
            _vala_ccode_node_unref0 (_tmp101_);
            _tmp103_ = vala_ccode_identifier_new ("klass");
            _tmp104_ = _tmp103_;
            vala_ccode_function_call_add_argument (ccall2, (ValaCCodeExpression*) _tmp104_);
            _vala_ccode_node_unref0 (_tmp104_);
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall2);
            _tmp105_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp106_ = _tmp105_;
            _tmp107_ = g_strdup_printf ("_vala_%s_class_private_quark", _tmp106_);
            _tmp108_ = _tmp107_;
            _tmp109_ = vala_ccode_identifier_new (_tmp108_);
            _tmp110_ = _tmp109_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp110_);
            _vala_ccode_node_unref0 (_tmp110_);
            _g_free0 (_tmp108_);
            _g_free0 (_tmp106_);
            _tmp111_ = vala_ccode_identifier_new ("priv");
            _tmp112_ = _tmp111_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp112_);
            _vala_ccode_node_unref0 (_tmp112_);
            _tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_add_expression (_tmp113_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (ccall2);
            _vala_ccode_node_unref0 (ccall);
      }
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_ccode_node_unref0 (base_init);
}


static void vala_gtype_module_add_base_init_function (ValaGTypeModule* self, ValaClass* cl) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->base_init_context->ccode);
}


static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self, ValaClass* cl) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
}


void vala_gtype_module_generate_class_init (ValaGTypeModule* self, ValaClass* cl) {
      VALA_GTYPE_MODULE_GET_CLASS (self)->generate_class_init (self, cl);
}


static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* func;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaCCodeFunctionCall* ccall = NULL;
      ValaCCodeDeclaration* _tmp12_ = NULL;
      ValaCCodeDeclaration* parent_decl;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      gchar* _tmp15_ = NULL;
      gchar* _tmp16_;
      ValaCCodeVariableDeclarator* _tmp17_ = NULL;
      ValaCCodeVariableDeclarator* _tmp18_;
      ValaCCodeVariableDeclarator* parent_var_decl;
      ValaCCodeConstant* _tmp19_ = NULL;
      ValaCCodeConstant* _tmp20_;
      ValaCCodeIdentifier* _tmp21_ = NULL;
      ValaCCodeIdentifier* _tmp22_;
      ValaCCodeFunctionCall* _tmp23_ = NULL;
      ValaCCodeIdentifier* _tmp24_ = NULL;
      ValaCCodeIdentifier* _tmp25_;
      gchar* _tmp26_ = NULL;
      gchar* _tmp27_;
      gchar* _tmp28_ = NULL;
      gchar* _tmp29_;
      ValaCCodeIdentifier* _tmp30_ = NULL;
      ValaCCodeIdentifier* _tmp31_;
      ValaCCodeAssignment* _tmp32_ = NULL;
      ValaCCodeAssignment* _tmp33_;
      ValaCCodeAssignment* parent_assignment;
      ValaCCodeFunction* _tmp34_ = NULL;
      gboolean _tmp35_ = FALSE;
      gboolean _tmp36_ = FALSE;
      gboolean _tmp37_;
      gboolean _tmp71_ = FALSE;
      gboolean _tmp72_;
      gboolean _tmp197_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->class_init_context);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_class_init", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      func = _tmp5_;
      _tmp6_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp7_ = _tmp6_;
      _tmp8_ = g_strdup_printf ("%sClass *", _tmp7_);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_parameter_new ("klass", _tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (func, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _g_free0 (_tmp9_);
      _g_free0 (_tmp7_);
      vala_ccode_function_set_modifiers (func, VALA_CCODE_MODIFIERS_STATIC);
      _tmp12_ = vala_ccode_declaration_new ("gpointer");
      parent_decl = _tmp12_;
      _tmp13_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp14_ = _tmp13_;
      _tmp15_ = g_strdup_printf ("%s_parent_class", _tmp14_);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_variable_declarator_new (_tmp16_, NULL, NULL);
      _tmp18_ = _tmp17_;
      _g_free0 (_tmp16_);
      _g_free0 (_tmp14_);
      parent_var_decl = _tmp18_;
      _tmp19_ = vala_ccode_constant_new ("NULL");
      _tmp20_ = _tmp19_;
      vala_ccode_variable_declarator_set_initializer (parent_var_decl, (ValaCCodeExpression*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      vala_ccode_declaration_add_declarator (parent_decl, (ValaCCodeDeclarator*) parent_var_decl);
      vala_ccode_declaration_set_modifiers (parent_decl, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_file_add_type_member_declaration (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) parent_decl);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, func);
      _tmp21_ = vala_ccode_identifier_new ("g_type_class_peek_parent");
      _tmp22_ = _tmp21_;
      _tmp23_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp22_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp23_;
      _vala_ccode_node_unref0 (_tmp22_);
      _tmp24_ = vala_ccode_identifier_new ("klass");
      _tmp25_ = _tmp24_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp25_);
      _vala_ccode_node_unref0 (_tmp25_);
      _tmp26_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp27_ = _tmp26_;
      _tmp28_ = g_strdup_printf ("%s_parent_class", _tmp27_);
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_identifier_new (_tmp29_);
      _tmp31_ = _tmp30_;
      _tmp32_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp31_, (ValaCCodeExpression*) ccall, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
      _tmp33_ = _tmp32_;
      _vala_ccode_node_unref0 (_tmp31_);
      _g_free0 (_tmp29_);
      _g_free0 (_tmp27_);
      parent_assignment = _tmp33_;
      _tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_add_expression (_tmp34_, (ValaCCodeExpression*) parent_assignment);
      _tmp37_ = vala_class_get_is_compact (cl);
      if (!_tmp37_) {
            gboolean _tmp38_;
            _tmp38_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, ((ValaCCodeBaseModule*) self)->gobject_type);
            _tmp36_ = !_tmp38_;
      } else {
            _tmp36_ = FALSE;
      }
      if (_tmp36_) {
            gboolean _tmp39_ = FALSE;
            gboolean _tmp40_ = FALSE;
            ValaList* _tmp41_ = NULL;
            ValaList* _tmp42_;
            gint _tmp43_;
            gboolean _tmp44_;
            _tmp41_ = vala_class_get_fields (cl);
            _tmp42_ = _tmp41_;
            _tmp43_ = vala_collection_get_size ((ValaCollection*) _tmp42_);
            _tmp44_ = _tmp43_ > 0;
            _vala_iterable_unref0 (_tmp42_);
            if (_tmp44_) {
                  _tmp40_ = TRUE;
            } else {
                  ValaDestructor* _tmp45_ = NULL;
                  _tmp45_ = vala_class_get_destructor (cl);
                  _tmp40_ = _tmp45_ != NULL;
            }
            if (_tmp40_) {
                  _tmp39_ = TRUE;
            } else {
                  gboolean _tmp46_;
                  _tmp46_ = vala_class_is_fundamental (cl);
                  _tmp39_ = _tmp46_;
            }
            _tmp35_ = _tmp39_;
      } else {
            _tmp35_ = FALSE;
      }
      if (_tmp35_) {
            ValaClass* _tmp47_;
            ValaClass* fundamental_class;
            gchar* _tmp51_ = NULL;
            gchar* _tmp52_;
            gchar* _tmp53_ = NULL;
            gchar* _tmp54_;
            ValaCCodeIdentifier* _tmp55_ = NULL;
            ValaCCodeIdentifier* _tmp56_;
            ValaCCodeFunctionCall* _tmp57_ = NULL;
            ValaCCodeIdentifier* _tmp58_ = NULL;
            ValaCCodeIdentifier* _tmp59_;
            ValaCCodeMemberAccess* _tmp60_ = NULL;
            ValaCCodeMemberAccess* _tmp61_;
            gchar* _tmp62_ = NULL;
            gchar* _tmp63_;
            gchar* _tmp64_;
            gchar* _tmp65_;
            ValaCCodeIdentifier* _tmp66_ = NULL;
            ValaCCodeIdentifier* _tmp67_;
            ValaCCodeAssignment* _tmp68_ = NULL;
            ValaCCodeAssignment* _tmp69_;
            ValaCCodeAssignment* finalize_assignment;
            ValaCCodeFunction* _tmp70_ = NULL;
            _tmp47_ = _vala_code_node_ref0 (cl);
            fundamental_class = _tmp47_;
            while (TRUE) {
                  ValaClass* _tmp48_ = NULL;
                  ValaClass* _tmp49_ = NULL;
                  ValaClass* _tmp50_;
                  _tmp48_ = vala_class_get_base_class (fundamental_class);
                  if (!(_tmp48_ != NULL)) {
                        break;
                  }
                  _tmp49_ = vala_class_get_base_class (fundamental_class);
                  _tmp50_ = _vala_code_node_ref0 (_tmp49_);
                  _vala_code_node_unref0 (fundamental_class);
                  fundamental_class = _tmp50_;
            }
            _tmp51_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) fundamental_class, NULL);
            _tmp52_ = _tmp51_;
            _tmp53_ = g_strdup_printf ("%s_CLASS", _tmp52_);
            _tmp54_ = _tmp53_;
            _tmp55_ = vala_ccode_identifier_new (_tmp54_);
            _tmp56_ = _tmp55_;
            _tmp57_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp56_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp57_;
            _vala_ccode_node_unref0 (_tmp56_);
            _g_free0 (_tmp54_);
            _g_free0 (_tmp52_);
            _tmp58_ = vala_ccode_identifier_new ("klass");
            _tmp59_ = _tmp58_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp59_);
            _vala_ccode_node_unref0 (_tmp59_);
            _tmp60_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccall, "finalize");
            _tmp61_ = _tmp60_;
            _tmp62_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
            _tmp63_ = _tmp62_;
            _tmp64_ = g_strconcat (_tmp63_, "finalize", NULL);
            _tmp65_ = _tmp64_;
            _tmp66_ = vala_ccode_identifier_new (_tmp65_);
            _tmp67_ = _tmp66_;
            _tmp68_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp61_, (ValaCCodeExpression*) _tmp67_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp69_ = _tmp68_;
            _vala_ccode_node_unref0 (_tmp67_);
            _g_free0 (_tmp65_);
            _g_free0 (_tmp63_);
            _vala_ccode_node_unref0 (_tmp61_);
            finalize_assignment = _tmp69_;
            _tmp70_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_add_expression (_tmp70_, (ValaCCodeExpression*) finalize_assignment);
            _vala_ccode_node_unref0 (finalize_assignment);
            _vala_code_node_unref0 (fundamental_class);
      }
      _tmp72_ = vala_class_get_has_private_fields (cl);
      if (_tmp72_) {
            _tmp71_ = TRUE;
      } else {
            ValaList* _tmp73_ = NULL;
            ValaList* _tmp74_;
            gint _tmp75_;
            _tmp73_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
            _tmp74_ = _tmp73_;
            _tmp75_ = vala_collection_get_size ((ValaCollection*) _tmp74_);
            _tmp71_ = _tmp75_ > 0;
            _vala_iterable_unref0 (_tmp74_);
      }
      if (_tmp71_) {
            ValaCCodeIdentifier* _tmp76_ = NULL;
            ValaCCodeIdentifier* _tmp77_;
            ValaCCodeFunctionCall* _tmp78_ = NULL;
            ValaCCodeIdentifier* _tmp79_ = NULL;
            ValaCCodeIdentifier* _tmp80_;
            gchar* _tmp81_ = NULL;
            gchar* _tmp82_;
            gchar* _tmp83_ = NULL;
            gchar* _tmp84_;
            ValaCCodeConstant* _tmp85_ = NULL;
            ValaCCodeConstant* _tmp86_;
            ValaCCodeFunction* _tmp87_ = NULL;
            _tmp76_ = vala_ccode_identifier_new ("g_type_class_add_private");
            _tmp77_ = _tmp76_;
            _tmp78_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp77_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp78_;
            _vala_ccode_node_unref0 (_tmp77_);
            _tmp79_ = vala_ccode_identifier_new ("klass");
            _tmp80_ = _tmp79_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp80_);
            _vala_ccode_node_unref0 (_tmp80_);
            _tmp81_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp82_ = _tmp81_;
            _tmp83_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp82_);
            _tmp84_ = _tmp83_;
            _tmp85_ = vala_ccode_constant_new (_tmp84_);
            _tmp86_ = _tmp85_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp86_);
            _vala_ccode_node_unref0 (_tmp86_);
            _g_free0 (_tmp84_);
            _g_free0 (_tmp82_);
            _tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_add_expression (_tmp87_, (ValaCCodeExpression*) ccall);
      }
      {
            ValaList* _tmp88_ = NULL;
            ValaList* _m_list;
            gint _tmp89_;
            gint _m_size;
            gint _m_index;
            _tmp88_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
            _m_list = _tmp88_;
            _tmp89_ = vala_collection_get_size ((ValaCollection*) _m_list);
            _m_size = _tmp89_;
            _m_index = -1;
            while (TRUE) {
                  gpointer _tmp90_ = NULL;
                  ValaMethod* m;
                  ValaMethod* _tmp91_ = NULL;
                  ValaMethod* _tmp92_ = NULL;
                  ValaSymbol* _tmp93_ = NULL;
                  ValaSymbol* _tmp94_;
                  ValaSymbol* base_type;
                  gboolean _tmp95_ = FALSE;
                  gboolean _tmp96_;
                  _m_index = _m_index + 1;
                  if (!(_m_index < _m_size)) {
                        break;
                  }
                  _tmp90_ = vala_list_get (_m_list, _m_index);
                  m = (ValaMethod*) _tmp90_;
                  _tmp91_ = vala_method_get_base_method (m);
                  if (_tmp91_ == NULL) {
                        _vala_code_node_unref0 (m);
                        continue;
                  }
                  _tmp92_ = vala_method_get_base_method (m);
                  _tmp93_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp92_);
                  _tmp94_ = _vala_code_node_ref0 (_tmp93_);
                  base_type = _tmp94_;
                  _tmp96_ = vala_method_get_is_abstract (m);
                  if (!_tmp96_) {
                        _tmp95_ = TRUE;
                  } else {
                        gboolean _tmp97_;
                        _tmp97_ = vala_method_get_coroutine (m);
                        _tmp95_ = !_tmp97_;
                  }
                  if (_tmp95_) {
                        gchar* _tmp98_ = NULL;
                        gchar* _tmp99_;
                        gchar* _tmp100_ = NULL;
                        gchar* _tmp101_;
                        ValaCCodeIdentifier* _tmp102_ = NULL;
                        ValaCCodeIdentifier* _tmp103_;
                        ValaCCodeFunctionCall* _tmp104_ = NULL;
                        ValaCCodeFunctionCall* _tmp105_;
                        ValaCCodeFunctionCall* ccast;
                        ValaCCodeIdentifier* _tmp106_ = NULL;
                        ValaCCodeIdentifier* _tmp107_;
                        ValaCCodeFunction* _tmp108_ = NULL;
                        ValaMethod* _tmp109_ = NULL;
                        const gchar* _tmp110_ = NULL;
                        ValaCCodeMemberAccess* _tmp111_ = NULL;
                        ValaCCodeMemberAccess* _tmp112_;
                        gchar* _tmp113_ = NULL;
                        gchar* _tmp114_;
                        ValaCCodeIdentifier* _tmp115_ = NULL;
                        ValaCCodeIdentifier* _tmp116_;
                        gboolean _tmp117_;
                        _tmp98_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) VALA_CLASS (base_type), NULL);
                        _tmp99_ = _tmp98_;
                        _tmp100_ = g_strdup_printf ("%s_CLASS", _tmp99_);
                        _tmp101_ = _tmp100_;
                        _tmp102_ = vala_ccode_identifier_new (_tmp101_);
                        _tmp103_ = _tmp102_;
                        _tmp104_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp103_);
                        _tmp105_ = _tmp104_;
                        _vala_ccode_node_unref0 (_tmp103_);
                        _g_free0 (_tmp101_);
                        _g_free0 (_tmp99_);
                        ccast = _tmp105_;
                        _tmp106_ = vala_ccode_identifier_new ("klass");
                        _tmp107_ = _tmp106_;
                        vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp107_);
                        _vala_ccode_node_unref0 (_tmp107_);
                        _tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp109_ = vala_method_get_base_method (m);
                        _tmp110_ = vala_method_get_vfunc_name (_tmp109_);
                        _tmp111_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, _tmp110_);
                        _tmp112_ = _tmp111_;
                        _tmp113_ = vala_method_get_real_cname (m);
                        _tmp114_ = _tmp113_;
                        _tmp115_ = vala_ccode_identifier_new (_tmp114_);
                        _tmp116_ = _tmp115_;
                        vala_ccode_function_add_assignment (_tmp108_, (ValaCCodeExpression*) _tmp112_, (ValaCCodeExpression*) _tmp116_);
                        _vala_ccode_node_unref0 (_tmp116_);
                        _g_free0 (_tmp114_);
                        _vala_ccode_node_unref0 (_tmp112_);
                        _tmp117_ = vala_method_get_coroutine (m);
                        if (_tmp117_) {
                              ValaCCodeFunction* _tmp118_ = NULL;
                              ValaMethod* _tmp119_ = NULL;
                              gchar* _tmp120_ = NULL;
                              gchar* _tmp121_;
                              ValaCCodeMemberAccess* _tmp122_ = NULL;
                              ValaCCodeMemberAccess* _tmp123_;
                              gchar* _tmp124_ = NULL;
                              gchar* _tmp125_;
                              ValaCCodeIdentifier* _tmp126_ = NULL;
                              ValaCCodeIdentifier* _tmp127_;
                              _tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp119_ = vala_method_get_base_method (m);
                              _tmp120_ = vala_method_get_finish_vfunc_name (_tmp119_);
                              _tmp121_ = _tmp120_;
                              _tmp122_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, _tmp121_);
                              _tmp123_ = _tmp122_;
                              _tmp124_ = vala_method_get_finish_real_cname (m);
                              _tmp125_ = _tmp124_;
                              _tmp126_ = vala_ccode_identifier_new (_tmp125_);
                              _tmp127_ = _tmp126_;
                              vala_ccode_function_add_assignment (_tmp118_, (ValaCCodeExpression*) _tmp123_, (ValaCCodeExpression*) _tmp127_);
                              _vala_ccode_node_unref0 (_tmp127_);
                              _g_free0 (_tmp125_);
                              _vala_ccode_node_unref0 (_tmp123_);
                              _g_free0 (_tmp121_);
                        }
                        _vala_ccode_node_unref0 (ccast);
                  }
                  _vala_code_node_unref0 (base_type);
                  _vala_code_node_unref0 (m);
            }
            _vala_iterable_unref0 (_m_list);
      }
      {
            ValaList* _tmp128_ = NULL;
            ValaList* _sig_list;
            gint _tmp129_;
            gint _sig_size;
            gint _sig_index;
            _tmp128_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
            _sig_list = _tmp128_;
            _tmp129_ = vala_collection_get_size ((ValaCollection*) _sig_list);
            _sig_size = _tmp129_;
            _sig_index = -1;
            while (TRUE) {
                  gpointer _tmp130_ = NULL;
                  ValaSignal* sig;
                  ValaMethod* _tmp131_ = NULL;
                  gchar* _tmp132_ = NULL;
                  gchar* _tmp133_;
                  gchar* _tmp134_ = NULL;
                  gchar* _tmp135_;
                  ValaCCodeIdentifier* _tmp136_ = NULL;
                  ValaCCodeIdentifier* _tmp137_;
                  ValaCCodeFunctionCall* _tmp138_ = NULL;
                  ValaCCodeFunctionCall* _tmp139_;
                  ValaCCodeFunctionCall* ccast;
                  ValaCCodeIdentifier* _tmp140_ = NULL;
                  ValaCCodeIdentifier* _tmp141_;
                  ValaCCodeFunction* _tmp142_ = NULL;
                  ValaMethod* _tmp143_ = NULL;
                  const gchar* _tmp144_ = NULL;
                  ValaCCodeMemberAccess* _tmp145_ = NULL;
                  ValaCCodeMemberAccess* _tmp146_;
                  ValaMethod* _tmp147_ = NULL;
                  gchar* _tmp148_ = NULL;
                  gchar* _tmp149_;
                  ValaCCodeIdentifier* _tmp150_ = NULL;
                  ValaCCodeIdentifier* _tmp151_;
                  _sig_index = _sig_index + 1;
                  if (!(_sig_index < _sig_size)) {
                        break;
                  }
                  _tmp130_ = vala_list_get (_sig_list, _sig_index);
                  sig = (ValaSignal*) _tmp130_;
                  _tmp131_ = vala_signal_get_default_handler (sig);
                  if (_tmp131_ == NULL) {
                        _vala_code_node_unref0 (sig);
                        continue;
                  }
                  _tmp132_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                  _tmp133_ = _tmp132_;
                  _tmp134_ = g_strdup_printf ("%s_CLASS", _tmp133_);
                  _tmp135_ = _tmp134_;
                  _tmp136_ = vala_ccode_identifier_new (_tmp135_);
                  _tmp137_ = _tmp136_;
                  _tmp138_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp137_);
                  _tmp139_ = _tmp138_;
                  _vala_ccode_node_unref0 (_tmp137_);
                  _g_free0 (_tmp135_);
                  _g_free0 (_tmp133_);
                  ccast = _tmp139_;
                  _tmp140_ = vala_ccode_identifier_new ("klass");
                  _tmp141_ = _tmp140_;
                  vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp141_);
                  _vala_ccode_node_unref0 (_tmp141_);
                  _tmp142_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp143_ = vala_signal_get_default_handler (sig);
                  _tmp144_ = vala_method_get_vfunc_name (_tmp143_);
                  _tmp145_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, _tmp144_);
                  _tmp146_ = _tmp145_;
                  _tmp147_ = vala_signal_get_default_handler (sig);
                  _tmp148_ = vala_method_get_real_cname (_tmp147_);
                  _tmp149_ = _tmp148_;
                  _tmp150_ = vala_ccode_identifier_new (_tmp149_);
                  _tmp151_ = _tmp150_;
                  vala_ccode_function_add_assignment (_tmp142_, (ValaCCodeExpression*) _tmp146_, (ValaCCodeExpression*) _tmp151_);
                  _vala_ccode_node_unref0 (_tmp151_);
                  _g_free0 (_tmp149_);
                  _vala_ccode_node_unref0 (_tmp146_);
                  _vala_ccode_node_unref0 (ccast);
                  _vala_code_node_unref0 (sig);
            }
            _vala_iterable_unref0 (_sig_list);
      }
      {
            ValaList* _tmp152_ = NULL;
            ValaList* _prop_list;
            gint _tmp153_;
            gint _prop_size;
            gint _prop_index;
            _tmp152_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
            _prop_list = _tmp152_;
            _tmp153_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp153_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp154_ = NULL;
                  ValaProperty* prop;
                  ValaProperty* _tmp155_ = NULL;
                  ValaProperty* _tmp156_ = NULL;
                  ValaSymbol* _tmp157_ = NULL;
                  ValaSymbol* _tmp158_;
                  ValaSymbol* base_type;
                  gchar* _tmp159_ = NULL;
                  gchar* _tmp160_;
                  gchar* _tmp161_ = NULL;
                  gchar* _tmp162_;
                  ValaCCodeIdentifier* _tmp163_ = NULL;
                  ValaCCodeIdentifier* _tmp164_;
                  ValaCCodeFunctionCall* _tmp165_ = NULL;
                  ValaCCodeFunctionCall* _tmp166_;
                  ValaCCodeFunctionCall* ccast;
                  ValaCCodeIdentifier* _tmp167_ = NULL;
                  ValaCCodeIdentifier* _tmp168_;
                  ValaPropertyAccessor* _tmp169_ = NULL;
                  ValaPropertyAccessor* _tmp183_ = NULL;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp154_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp154_;
                  _tmp155_ = vala_property_get_base_property (prop);
                  if (_tmp155_ == NULL) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp156_ = vala_property_get_base_property (prop);
                  _tmp157_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp156_);
                  _tmp158_ = _vala_code_node_ref0 (_tmp157_);
                  base_type = _tmp158_;
                  _tmp159_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) VALA_CLASS (base_type), NULL);
                  _tmp160_ = _tmp159_;
                  _tmp161_ = g_strdup_printf ("%s_CLASS", _tmp160_);
                  _tmp162_ = _tmp161_;
                  _tmp163_ = vala_ccode_identifier_new (_tmp162_);
                  _tmp164_ = _tmp163_;
                  _tmp165_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp164_);
                  _tmp166_ = _tmp165_;
                  _vala_ccode_node_unref0 (_tmp164_);
                  _g_free0 (_tmp162_);
                  _g_free0 (_tmp160_);
                  ccast = _tmp166_;
                  _tmp167_ = vala_ccode_identifier_new ("klass");
                  _tmp168_ = _tmp167_;
                  vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp168_);
                  _vala_ccode_node_unref0 (_tmp168_);
                  _tmp169_ = vala_property_get_get_accessor (prop);
                  if (_tmp169_ != NULL) {
                        gchar* _tmp170_ = NULL;
                        gchar* _tmp171_;
                        const gchar* _tmp172_ = NULL;
                        gchar* _tmp173_ = NULL;
                        gchar* _tmp174_;
                        gchar* cname;
                        ValaCCodeFunction* _tmp175_ = NULL;
                        const gchar* _tmp176_ = NULL;
                        gchar* _tmp177_ = NULL;
                        gchar* _tmp178_;
                        ValaCCodeMemberAccess* _tmp179_ = NULL;
                        ValaCCodeMemberAccess* _tmp180_;
                        ValaCCodeIdentifier* _tmp181_ = NULL;
                        ValaCCodeIdentifier* _tmp182_;
                        _tmp170_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                        _tmp171_ = _tmp170_;
                        _tmp172_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp173_ = g_strdup_printf ("%s_real_get_%s", _tmp171_, _tmp172_);
                        _tmp174_ = _tmp173_;
                        _g_free0 (_tmp171_);
                        cname = _tmp174_;
                        _tmp175_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp176_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp177_ = g_strdup_printf ("get_%s", _tmp176_);
                        _tmp178_ = _tmp177_;
                        _tmp179_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, _tmp178_);
                        _tmp180_ = _tmp179_;
                        _tmp181_ = vala_ccode_identifier_new (cname);
                        _tmp182_ = _tmp181_;
                        vala_ccode_function_add_assignment (_tmp175_, (ValaCCodeExpression*) _tmp180_, (ValaCCodeExpression*) _tmp182_);
                        _vala_ccode_node_unref0 (_tmp182_);
                        _vala_ccode_node_unref0 (_tmp180_);
                        _g_free0 (_tmp178_);
                        _g_free0 (cname);
                  }
                  _tmp183_ = vala_property_get_set_accessor (prop);
                  if (_tmp183_ != NULL) {
                        gchar* _tmp184_ = NULL;
                        gchar* _tmp185_;
                        const gchar* _tmp186_ = NULL;
                        gchar* _tmp187_ = NULL;
                        gchar* _tmp188_;
                        gchar* cname;
                        ValaCCodeFunction* _tmp189_ = NULL;
                        const gchar* _tmp190_ = NULL;
                        gchar* _tmp191_ = NULL;
                        gchar* _tmp192_;
                        ValaCCodeMemberAccess* _tmp193_ = NULL;
                        ValaCCodeMemberAccess* _tmp194_;
                        ValaCCodeIdentifier* _tmp195_ = NULL;
                        ValaCCodeIdentifier* _tmp196_;
                        _tmp184_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                        _tmp185_ = _tmp184_;
                        _tmp186_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp187_ = g_strdup_printf ("%s_real_set_%s", _tmp185_, _tmp186_);
                        _tmp188_ = _tmp187_;
                        _g_free0 (_tmp185_);
                        cname = _tmp188_;
                        _tmp189_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp190_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp191_ = g_strdup_printf ("set_%s", _tmp190_);
                        _tmp192_ = _tmp191_;
                        _tmp193_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, _tmp192_);
                        _tmp194_ = _tmp193_;
                        _tmp195_ = vala_ccode_identifier_new (cname);
                        _tmp196_ = _tmp195_;
                        vala_ccode_function_add_assignment (_tmp189_, (ValaCCodeExpression*) _tmp194_, (ValaCCodeExpression*) _tmp196_);
                        _vala_ccode_node_unref0 (_tmp196_);
                        _vala_ccode_node_unref0 (_tmp194_);
                        _g_free0 (_tmp192_);
                        _g_free0 (cname);
                  }
                  _vala_ccode_node_unref0 (ccast);
                  _vala_code_node_unref0 (base_type);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      vala_gtype_module_generate_class_init (self, cl);
      _tmp197_ = vala_class_get_is_compact (cl);
      if (!_tmp197_) {
            {
                  ValaList* _tmp198_ = NULL;
                  ValaList* _sig_list;
                  gint _tmp199_;
                  gint _sig_size;
                  gint _sig_index;
                  _tmp198_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
                  _sig_list = _tmp198_;
                  _tmp199_ = vala_collection_get_size ((ValaCollection*) _sig_list);
                  _sig_size = _tmp199_;
                  _sig_index = -1;
                  while (TRUE) {
                        gpointer _tmp200_ = NULL;
                        ValaSignal* sig;
                        ValaComment* _tmp201_ = NULL;
                        ValaCCodeFunction* _tmp207_ = NULL;
                        ValaCCodeFunctionCall* _tmp208_ = NULL;
                        ValaCCodeFunctionCall* _tmp209_;
                        _sig_index = _sig_index + 1;
                        if (!(_sig_index < _sig_size)) {
                              break;
                        }
                        _tmp200_ = vala_list_get (_sig_list, _sig_index);
                        sig = (ValaSignal*) _tmp200_;
                        _tmp201_ = vala_symbol_get_comment ((ValaSymbol*) sig);
                        if (_tmp201_ != NULL) {
                              ValaCCodeFunction* _tmp202_ = NULL;
                              ValaComment* _tmp203_ = NULL;
                              const gchar* _tmp204_ = NULL;
                              ValaCCodeComment* _tmp205_ = NULL;
                              ValaCCodeComment* _tmp206_;
                              _tmp202_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp203_ = vala_symbol_get_comment ((ValaSymbol*) sig);
                              _tmp204_ = vala_comment_get_content (_tmp203_);
                              _tmp205_ = vala_ccode_comment_new (_tmp204_);
                              _tmp206_ = _tmp205_;
                              vala_ccode_function_add_statement (_tmp202_, (ValaCCodeNode*) _tmp206_);
                              _vala_ccode_node_unref0 (_tmp206_);
                        }
                        _tmp207_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp208_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, sig, (ValaTypeSymbol*) cl);
                        _tmp209_ = _tmp208_;
                        vala_ccode_function_add_expression (_tmp207_, (ValaCCodeExpression*) _tmp209_);
                        _vala_ccode_node_unref0 (_tmp209_);
                        _vala_code_node_unref0 (sig);
                  }
                  _vala_iterable_unref0 (_sig_list);
            }
      }
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_ccode_node_unref0 (parent_assignment);
      _vala_ccode_node_unref0 (parent_var_decl);
      _vala_ccode_node_unref0 (parent_decl);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (func);
}


static void vala_gtype_module_add_class_init_function (ValaGTypeModule* self, ValaClass* cl) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->class_init_context->ccode);
}


static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self, ValaClass* cl, ValaInterface* iface) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      ValaCCodeFunction* _tmp6_ = NULL;
      ValaCCodeFunction* _tmp7_;
      ValaCCodeFunction* iface_init;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      gchar* _tmp10_ = NULL;
      gchar* _tmp11_;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeFunctionCall* ccall = NULL;
      gchar* _tmp14_ = NULL;
      gchar* _tmp15_;
      gchar* _tmp16_ = NULL;
      gchar* _tmp17_;
      gchar* _tmp18_ = NULL;
      gchar* _tmp19_;
      gchar* parent_iface_var;
      gchar* _tmp20_ = NULL;
      gchar* _tmp21_;
      gchar* _tmp22_;
      gchar* _tmp23_;
      ValaCCodeDeclaration* _tmp24_ = NULL;
      ValaCCodeDeclaration* _tmp25_;
      ValaCCodeDeclaration* parent_decl;
      ValaCCodeVariableDeclarator* _tmp26_ = NULL;
      ValaCCodeVariableDeclarator* parent_var_decl;
      ValaCCodeConstant* _tmp27_ = NULL;
      ValaCCodeConstant* _tmp28_;
      ValaCCodeIdentifier* _tmp29_ = NULL;
      ValaCCodeIdentifier* _tmp30_;
      ValaCCodeFunctionCall* _tmp31_ = NULL;
      ValaCCodeIdentifier* _tmp32_ = NULL;
      ValaCCodeIdentifier* _tmp33_;
      ValaCCodeFunction* _tmp34_ = NULL;
      ValaCCodeIdentifier* _tmp35_ = NULL;
      ValaCCodeIdentifier* _tmp36_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      g_return_if_fail (iface != NULL);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) iface, NULL);
      _tmp3_ = _tmp2_;
      _tmp4_ = g_strdup_printf ("%s_%s_interface_init", _tmp1_, _tmp3_);
      _tmp5_ = _tmp4_;
      _tmp6_ = vala_ccode_function_new (_tmp5_, "void");
      _tmp7_ = _tmp6_;
      _g_free0 (_tmp5_);
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      iface_init = _tmp7_;
      _tmp8_ = vala_interface_get_type_cname (iface);
      _tmp9_ = _tmp8_;
      _tmp10_ = g_strdup_printf ("%s *", _tmp9_);
      _tmp11_ = _tmp10_;
      _tmp12_ = vala_ccode_parameter_new ("iface", _tmp11_);
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (iface_init, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _g_free0 (_tmp11_);
      _g_free0 (_tmp9_);
      vala_ccode_function_set_modifiers (iface_init, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, iface_init);
      _tmp14_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp15_ = _tmp14_;
      _tmp16_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) iface, NULL);
      _tmp17_ = _tmp16_;
      _tmp18_ = g_strdup_printf ("%s_%s_parent_iface", _tmp15_, _tmp17_);
      _tmp19_ = _tmp18_;
      _g_free0 (_tmp17_);
      _g_free0 (_tmp15_);
      parent_iface_var = _tmp19_;
      _tmp20_ = vala_interface_get_type_cname (iface);
      _tmp21_ = _tmp20_;
      _tmp22_ = g_strconcat (_tmp21_, "*", NULL);
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_declaration_new (_tmp23_);
      _tmp25_ = _tmp24_;
      _g_free0 (_tmp23_);
      _g_free0 (_tmp21_);
      parent_decl = _tmp25_;
      _tmp26_ = vala_ccode_variable_declarator_new (parent_iface_var, NULL, NULL);
      parent_var_decl = _tmp26_;
      _tmp27_ = vala_ccode_constant_new ("NULL");
      _tmp28_ = _tmp27_;
      vala_ccode_variable_declarator_set_initializer (parent_var_decl, (ValaCCodeExpression*) _tmp28_);
      _vala_ccode_node_unref0 (_tmp28_);
      vala_ccode_declaration_add_declarator (parent_decl, (ValaCCodeDeclarator*) parent_var_decl);
      vala_ccode_declaration_set_modifiers (parent_decl, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_file_add_type_member_declaration (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) parent_decl);
      _tmp29_ = vala_ccode_identifier_new ("g_type_interface_peek_parent");
      _tmp30_ = _tmp29_;
      _tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
      _vala_ccode_node_unref0 (ccall);
      ccall = _tmp31_;
      _vala_ccode_node_unref0 (_tmp30_);
      _tmp32_ = vala_ccode_identifier_new ("iface");
      _tmp33_ = _tmp32_;
      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp33_);
      _vala_ccode_node_unref0 (_tmp33_);
      _tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp35_ = vala_ccode_identifier_new (parent_iface_var);
      _tmp36_ = _tmp35_;
      vala_ccode_function_add_assignment (_tmp34_, (ValaCCodeExpression*) _tmp36_, (ValaCCodeExpression*) ccall);
      _vala_ccode_node_unref0 (_tmp36_);
      {
            ValaList* _tmp37_ = NULL;
            ValaList* _m_list;
            gint _tmp38_;
            gint _m_size;
            gint _m_index;
            _tmp37_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
            _m_list = _tmp37_;
            _tmp38_ = vala_collection_get_size ((ValaCollection*) _m_list);
            _m_size = _tmp38_;
            _m_index = -1;
            while (TRUE) {
                  gpointer _tmp39_ = NULL;
                  ValaMethod* m;
                  ValaMethod* _tmp40_ = NULL;
                  ValaMethod* _tmp41_ = NULL;
                  ValaSymbol* _tmp42_ = NULL;
                  ValaSymbol* _tmp43_;
                  ValaSymbol* base_type;
                  ValaCCodeIdentifier* _tmp44_ = NULL;
                  ValaCCodeIdentifier* ciface;
                  ValaCCodeExpression* cfunc = NULL;
                  gboolean _tmp45_ = FALSE;
                  gboolean _tmp46_;
                  ValaMethod* _tmp54_ = NULL;
                  ValaCCodeExpression* _tmp55_ = NULL;
                  ValaCCodeFunction* _tmp56_ = NULL;
                  ValaMethod* _tmp57_ = NULL;
                  const gchar* _tmp58_ = NULL;
                  ValaCCodeMemberAccess* _tmp59_ = NULL;
                  ValaCCodeMemberAccess* _tmp60_;
                  gboolean _tmp61_;
                  _m_index = _m_index + 1;
                  if (!(_m_index < _m_size)) {
                        break;
                  }
                  _tmp39_ = vala_list_get (_m_list, _m_index);
                  m = (ValaMethod*) _tmp39_;
                  _tmp40_ = vala_method_get_base_interface_method (m);
                  if (_tmp40_ == NULL) {
                        _vala_code_node_unref0 (m);
                        continue;
                  }
                  _tmp41_ = vala_method_get_base_interface_method (m);
                  _tmp42_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp41_);
                  _tmp43_ = _vala_code_node_ref0 (_tmp42_);
                  base_type = _tmp43_;
                  if (base_type != VALA_SYMBOL (iface)) {
                        _vala_code_node_unref0 (base_type);
                        _vala_code_node_unref0 (m);
                        continue;
                  }
                  _tmp44_ = vala_ccode_identifier_new ("iface");
                  ciface = _tmp44_;
                  _tmp46_ = vala_method_get_is_abstract (m);
                  if (_tmp46_) {
                        _tmp45_ = TRUE;
                  } else {
                        gboolean _tmp47_;
                        _tmp47_ = vala_method_get_is_virtual (m);
                        _tmp45_ = _tmp47_;
                  }
                  if (_tmp45_) {
                        gchar* _tmp48_ = NULL;
                        gchar* _tmp49_;
                        ValaCCodeIdentifier* _tmp50_ = NULL;
                        _tmp48_ = vala_method_get_cname (m);
                        _tmp49_ = _tmp48_;
                        _tmp50_ = vala_ccode_identifier_new (_tmp49_);
                        _vala_ccode_node_unref0 (cfunc);
                        cfunc = (ValaCCodeExpression*) _tmp50_;
                        _g_free0 (_tmp49_);
                  } else {
                        gchar* _tmp51_ = NULL;
                        gchar* _tmp52_;
                        ValaCCodeIdentifier* _tmp53_ = NULL;
                        _tmp51_ = vala_method_get_real_cname (m);
                        _tmp52_ = _tmp51_;
                        _tmp53_ = vala_ccode_identifier_new (_tmp52_);
                        _vala_ccode_node_unref0 (cfunc);
                        cfunc = (ValaCCodeExpression*) _tmp53_;
                        _g_free0 (_tmp52_);
                  }
                  _tmp54_ = vala_method_get_base_interface_method (m);
                  _tmp55_ = vala_gtype_module_cast_method_pointer (self, _tmp54_, cfunc, (ValaObjectTypeSymbol*) iface);
                  _vala_ccode_node_unref0 (cfunc);
                  cfunc = _tmp55_;
                  _tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp57_ = vala_method_get_base_interface_method (m);
                  _tmp58_ = vala_method_get_vfunc_name (_tmp57_);
                  _tmp59_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp58_);
                  _tmp60_ = _tmp59_;
                  vala_ccode_function_add_assignment (_tmp56_, (ValaCCodeExpression*) _tmp60_, cfunc);
                  _vala_ccode_node_unref0 (_tmp60_);
                  _tmp61_ = vala_method_get_coroutine (m);
                  if (_tmp61_) {
                        gboolean _tmp62_ = FALSE;
                        gboolean _tmp63_;
                        ValaCCodeFunction* _tmp71_ = NULL;
                        ValaMethod* _tmp72_ = NULL;
                        gchar* _tmp73_ = NULL;
                        gchar* _tmp74_;
                        ValaCCodeMemberAccess* _tmp75_ = NULL;
                        ValaCCodeMemberAccess* _tmp76_;
                        _tmp63_ = vala_method_get_is_abstract (m);
                        if (_tmp63_) {
                              _tmp62_ = TRUE;
                        } else {
                              gboolean _tmp64_;
                              _tmp64_ = vala_method_get_is_virtual (m);
                              _tmp62_ = _tmp64_;
                        }
                        if (_tmp62_) {
                              gchar* _tmp65_ = NULL;
                              gchar* _tmp66_;
                              ValaCCodeIdentifier* _tmp67_ = NULL;
                              _tmp65_ = vala_method_get_finish_cname (m);
                              _tmp66_ = _tmp65_;
                              _tmp67_ = vala_ccode_identifier_new (_tmp66_);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = (ValaCCodeExpression*) _tmp67_;
                              _g_free0 (_tmp66_);
                        } else {
                              gchar* _tmp68_ = NULL;
                              gchar* _tmp69_;
                              ValaCCodeIdentifier* _tmp70_ = NULL;
                              _tmp68_ = vala_method_get_finish_real_cname (m);
                              _tmp69_ = _tmp68_;
                              _tmp70_ = vala_ccode_identifier_new (_tmp69_);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = (ValaCCodeExpression*) _tmp70_;
                              _g_free0 (_tmp69_);
                        }
                        _tmp71_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp72_ = vala_method_get_base_interface_method (m);
                        _tmp73_ = vala_method_get_finish_vfunc_name (_tmp72_);
                        _tmp74_ = _tmp73_;
                        _tmp75_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp74_);
                        _tmp76_ = _tmp75_;
                        vala_ccode_function_add_assignment (_tmp71_, (ValaCCodeExpression*) _tmp76_, cfunc);
                        _vala_ccode_node_unref0 (_tmp76_);
                        _g_free0 (_tmp74_);
                  }
                  _vala_ccode_node_unref0 (cfunc);
                  _vala_ccode_node_unref0 (ciface);
                  _vala_code_node_unref0 (base_type);
                  _vala_code_node_unref0 (m);
            }
            _vala_iterable_unref0 (_m_list);
      }
      {
            ValaList* _tmp77_ = NULL;
            ValaList* _m_list;
            gint _tmp78_;
            gint _m_size;
            gint _m_index;
            _tmp77_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) iface);
            _m_list = _tmp77_;
            _tmp78_ = vala_collection_get_size ((ValaCollection*) _m_list);
            _m_size = _tmp78_;
            _m_index = -1;
            while (TRUE) {
                  gpointer _tmp79_ = NULL;
                  ValaMethod* m;
                  gboolean _tmp80_;
                  _m_index = _m_index + 1;
                  if (!(_m_index < _m_size)) {
                        break;
                  }
                  _tmp79_ = vala_list_get (_m_list, _m_index);
                  m = (ValaMethod*) _tmp79_;
                  _tmp80_ = vala_method_get_is_abstract (m);
                  if (_tmp80_) {
                        ValaMethod* cl_method;
                        ValaClass* _tmp81_;
                        ValaClass* base_class;
                        gboolean _tmp89_ = FALSE;
                        cl_method = NULL;
                        _tmp81_ = _vala_code_node_ref0 (cl);
                        base_class = _tmp81_;
                        while (TRUE) {
                              gboolean _tmp82_ = FALSE;
                              ValaScope* _tmp83_ = NULL;
                              const gchar* _tmp84_ = NULL;
                              ValaSymbol* _tmp85_ = NULL;
                              ValaSymbol* _tmp86_;
                              ValaClass* _tmp87_ = NULL;
                              ValaClass* _tmp88_;
                              if (base_class != NULL) {
                                    _tmp82_ = cl_method == NULL;
                              } else {
                                    _tmp82_ = FALSE;
                              }
                              if (!_tmp82_) {
                                    break;
                              }
                              _tmp83_ = vala_symbol_get_scope ((ValaSymbol*) base_class);
                              _tmp84_ = vala_symbol_get_name ((ValaSymbol*) m);
                              _tmp85_ = vala_scope_lookup (_tmp83_, _tmp84_);
                              _tmp86_ = _tmp85_;
                              _vala_code_node_unref0 (cl_method);
                              cl_method = VALA_IS_METHOD (_tmp86_) ? ((ValaMethod*) _tmp86_) : NULL;
                              _tmp87_ = vala_class_get_base_class (base_class);
                              _tmp88_ = _vala_code_node_ref0 (_tmp87_);
                              _vala_code_node_unref0 (base_class);
                              base_class = _tmp88_;
                        }
                        if (base_class != NULL) {
                              ValaSymbol* _tmp90_ = NULL;
                              _tmp90_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl_method);
                              _tmp89_ = _tmp90_ != VALA_SYMBOL (cl);
                        } else {
                              _tmp89_ = FALSE;
                        }
                        if (_tmp89_) {
                              ValaMethod* _tmp91_;
                              ValaMethod* base_method;
                              ValaMethod* _tmp92_ = NULL;
                              gchar* _tmp98_ = NULL;
                              gchar* _tmp99_;
                              ValaCCodeIdentifier* _tmp100_ = NULL;
                              ValaCCodeExpression* _tmp101_;
                              ValaCCodeExpression* cfunc;
                              ValaCCodeExpression* _tmp102_ = NULL;
                              ValaCCodeIdentifier* _tmp103_ = NULL;
                              ValaCCodeIdentifier* ciface;
                              ValaCCodeFunction* _tmp104_ = NULL;
                              const gchar* _tmp105_ = NULL;
                              ValaCCodeMemberAccess* _tmp106_ = NULL;
                              ValaCCodeMemberAccess* _tmp107_;
                              _tmp91_ = _vala_code_node_ref0 (cl_method);
                              base_method = _tmp91_;
                              _tmp92_ = vala_method_get_base_method (cl_method);
                              if (_tmp92_ != NULL) {
                                    ValaMethod* _tmp93_ = NULL;
                                    ValaMethod* _tmp94_;
                                    _tmp93_ = vala_method_get_base_method (cl_method);
                                    _tmp94_ = _vala_code_node_ref0 (_tmp93_);
                                    _vala_code_node_unref0 (base_method);
                                    base_method = _tmp94_;
                              } else {
                                    ValaMethod* _tmp95_ = NULL;
                                    _tmp95_ = vala_method_get_base_interface_method (cl_method);
                                    if (_tmp95_ != NULL) {
                                          ValaMethod* _tmp96_ = NULL;
                                          ValaMethod* _tmp97_;
                                          _tmp96_ = vala_method_get_base_interface_method (cl_method);
                                          _tmp97_ = _vala_code_node_ref0 (_tmp96_);
                                          _vala_code_node_unref0 (base_method);
                                          base_method = _tmp97_;
                                    }
                              }
                              vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, base_method, ((ValaCCodeBaseModule*) self)->cfile);
                              _tmp98_ = vala_method_get_cname (base_method);
                              _tmp99_ = _tmp98_;
                              _tmp100_ = vala_ccode_identifier_new (_tmp99_);
                              _tmp101_ = (ValaCCodeExpression*) _tmp100_;
                              _g_free0 (_tmp99_);
                              cfunc = _tmp101_;
                              _tmp102_ = vala_gtype_module_cast_method_pointer (self, base_method, cfunc, (ValaObjectTypeSymbol*) iface);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = _tmp102_;
                              _tmp103_ = vala_ccode_identifier_new ("iface");
                              ciface = _tmp103_;
                              _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp105_ = vala_method_get_vfunc_name (m);
                              _tmp106_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp105_);
                              _tmp107_ = _tmp106_;
                              vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) _tmp107_, cfunc);
                              _vala_ccode_node_unref0 (_tmp107_);
                              _vala_ccode_node_unref0 (ciface);
                              _vala_ccode_node_unref0 (cfunc);
                              _vala_code_node_unref0 (base_method);
                        }
                        _vala_code_node_unref0 (base_class);
                        _vala_code_node_unref0 (cl_method);
                  }
                  _vala_code_node_unref0 (m);
            }
            _vala_iterable_unref0 (_m_list);
      }
      {
            ValaList* _tmp108_ = NULL;
            ValaList* _prop_list;
            gint _tmp109_;
            gint _prop_size;
            gint _prop_index;
            _tmp108_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
            _prop_list = _tmp108_;
            _tmp109_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp109_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp110_ = NULL;
                  ValaProperty* prop;
                  ValaProperty* _tmp111_ = NULL;
                  ValaProperty* _tmp112_ = NULL;
                  ValaSymbol* _tmp113_ = NULL;
                  ValaObjectTypeSymbol* _tmp114_;
                  ValaObjectTypeSymbol* base_type;
                  ValaCCodeIdentifier* _tmp115_ = NULL;
                  ValaCCodeIdentifier* ciface;
                  ValaPropertyAccessor* _tmp116_ = NULL;
                  ValaPropertyAccessor* _tmp141_ = NULL;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp110_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp110_;
                  _tmp111_ = vala_property_get_base_interface_property (prop);
                  if (_tmp111_ == NULL) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp112_ = vala_property_get_base_interface_property (prop);
                  _tmp113_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp112_);
                  _tmp114_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE_SYMBOL (_tmp113_));
                  base_type = _tmp114_;
                  if (base_type != VALA_OBJECT_TYPE_SYMBOL (iface)) {
                        _vala_code_node_unref0 (base_type);
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp115_ = vala_ccode_identifier_new ("iface");
                  ciface = _tmp115_;
                  _tmp116_ = vala_property_get_get_accessor (prop);
                  if (_tmp116_ != NULL) {
                        gchar* _tmp117_ = NULL;
                        gchar* _tmp118_;
                        const gchar* _tmp119_ = NULL;
                        gchar* _tmp120_ = NULL;
                        gchar* _tmp121_;
                        gchar* cname;
                        gboolean _tmp122_ = FALSE;
                        gboolean _tmp123_;
                        ValaCCodeIdentifier* _tmp129_ = NULL;
                        ValaCCodeExpression* cfunc;
                        gboolean _tmp130_ = FALSE;
                        gboolean _tmp131_;
                        ValaCCodeFunction* _tmp135_ = NULL;
                        const gchar* _tmp136_ = NULL;
                        gchar* _tmp137_ = NULL;
                        gchar* _tmp138_;
                        ValaCCodeMemberAccess* _tmp139_ = NULL;
                        ValaCCodeMemberAccess* _tmp140_;
                        _tmp117_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                        _tmp118_ = _tmp117_;
                        _tmp119_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp120_ = g_strdup_printf ("%s_real_get_%s", _tmp118_, _tmp119_);
                        _tmp121_ = _tmp120_;
                        _g_free0 (_tmp118_);
                        cname = _tmp121_;
                        _tmp123_ = vala_property_get_is_abstract (prop);
                        if (_tmp123_) {
                              _tmp122_ = TRUE;
                        } else {
                              gboolean _tmp124_;
                              _tmp124_ = vala_property_get_is_virtual (prop);
                              _tmp122_ = _tmp124_;
                        }
                        if (_tmp122_) {
                              gchar* _tmp125_ = NULL;
                              gchar* _tmp126_;
                              const gchar* _tmp127_ = NULL;
                              gchar* _tmp128_ = NULL;
                              _tmp125_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                              _tmp126_ = _tmp125_;
                              _tmp127_ = vala_symbol_get_name ((ValaSymbol*) prop);
                              _tmp128_ = g_strdup_printf ("%s_get_%s", _tmp126_, _tmp127_);
                              _g_free0 (cname);
                              cname = _tmp128_;
                              _g_free0 (_tmp126_);
                        }
                        _tmp129_ = vala_ccode_identifier_new (cname);
                        cfunc = (ValaCCodeExpression*) _tmp129_;
                        _tmp131_ = vala_property_get_is_abstract (prop);
                        if (_tmp131_) {
                              _tmp130_ = TRUE;
                        } else {
                              gboolean _tmp132_;
                              _tmp132_ = vala_property_get_is_virtual (prop);
                              _tmp130_ = _tmp132_;
                        }
                        if (_tmp130_) {
                              ValaPropertyAccessor* _tmp133_ = NULL;
                              ValaCCodeExpression* _tmp134_ = NULL;
                              _tmp133_ = vala_property_get_get_accessor (prop);
                              _tmp134_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp133_, cfunc, base_type);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = _tmp134_;
                        }
                        _tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp136_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp137_ = g_strdup_printf ("get_%s", _tmp136_);
                        _tmp138_ = _tmp137_;
                        _tmp139_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp138_);
                        _tmp140_ = _tmp139_;
                        vala_ccode_function_add_assignment (_tmp135_, (ValaCCodeExpression*) _tmp140_, cfunc);
                        _vala_ccode_node_unref0 (_tmp140_);
                        _g_free0 (_tmp138_);
                        _vala_ccode_node_unref0 (cfunc);
                        _g_free0 (cname);
                  }
                  _tmp141_ = vala_property_get_set_accessor (prop);
                  if (_tmp141_ != NULL) {
                        gchar* _tmp142_ = NULL;
                        gchar* _tmp143_;
                        const gchar* _tmp144_ = NULL;
                        gchar* _tmp145_ = NULL;
                        gchar* _tmp146_;
                        gchar* cname;
                        gboolean _tmp147_ = FALSE;
                        gboolean _tmp148_;
                        ValaCCodeIdentifier* _tmp154_ = NULL;
                        ValaCCodeExpression* cfunc;
                        gboolean _tmp155_ = FALSE;
                        gboolean _tmp156_;
                        ValaCCodeFunction* _tmp160_ = NULL;
                        const gchar* _tmp161_ = NULL;
                        gchar* _tmp162_ = NULL;
                        gchar* _tmp163_;
                        ValaCCodeMemberAccess* _tmp164_ = NULL;
                        ValaCCodeMemberAccess* _tmp165_;
                        _tmp142_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                        _tmp143_ = _tmp142_;
                        _tmp144_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp145_ = g_strdup_printf ("%s_real_set_%s", _tmp143_, _tmp144_);
                        _tmp146_ = _tmp145_;
                        _g_free0 (_tmp143_);
                        cname = _tmp146_;
                        _tmp148_ = vala_property_get_is_abstract (prop);
                        if (_tmp148_) {
                              _tmp147_ = TRUE;
                        } else {
                              gboolean _tmp149_;
                              _tmp149_ = vala_property_get_is_virtual (prop);
                              _tmp147_ = _tmp149_;
                        }
                        if (_tmp147_) {
                              gchar* _tmp150_ = NULL;
                              gchar* _tmp151_;
                              const gchar* _tmp152_ = NULL;
                              gchar* _tmp153_ = NULL;
                              _tmp150_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                              _tmp151_ = _tmp150_;
                              _tmp152_ = vala_symbol_get_name ((ValaSymbol*) prop);
                              _tmp153_ = g_strdup_printf ("%s_set_%s", _tmp151_, _tmp152_);
                              _g_free0 (cname);
                              cname = _tmp153_;
                              _g_free0 (_tmp151_);
                        }
                        _tmp154_ = vala_ccode_identifier_new (cname);
                        cfunc = (ValaCCodeExpression*) _tmp154_;
                        _tmp156_ = vala_property_get_is_abstract (prop);
                        if (_tmp156_) {
                              _tmp155_ = TRUE;
                        } else {
                              gboolean _tmp157_;
                              _tmp157_ = vala_property_get_is_virtual (prop);
                              _tmp155_ = _tmp157_;
                        }
                        if (_tmp155_) {
                              ValaPropertyAccessor* _tmp158_ = NULL;
                              ValaCCodeExpression* _tmp159_ = NULL;
                              _tmp158_ = vala_property_get_set_accessor (prop);
                              _tmp159_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp158_, cfunc, base_type);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = _tmp159_;
                        }
                        _tmp160_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp161_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp162_ = g_strdup_printf ("set_%s", _tmp161_);
                        _tmp163_ = _tmp162_;
                        _tmp164_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp163_);
                        _tmp165_ = _tmp164_;
                        vala_ccode_function_add_assignment (_tmp160_, (ValaCCodeExpression*) _tmp165_, cfunc);
                        _vala_ccode_node_unref0 (_tmp165_);
                        _g_free0 (_tmp163_);
                        _vala_ccode_node_unref0 (cfunc);
                        _g_free0 (cname);
                  }
                  _vala_ccode_node_unref0 (ciface);
                  _vala_code_node_unref0 (base_type);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      {
            ValaList* _tmp166_ = NULL;
            ValaList* _prop_list;
            gint _tmp167_;
            gint _prop_size;
            gint _prop_index;
            _tmp166_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
            _prop_list = _tmp166_;
            _tmp167_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp167_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp168_ = NULL;
                  ValaProperty* prop;
                  gboolean _tmp169_;
                  ValaProperty* cl_prop;
                  ValaClass* _tmp170_;
                  ValaClass* base_class;
                  gboolean _tmp178_ = FALSE;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp168_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp168_;
                  _tmp169_ = vala_property_get_is_abstract (prop);
                  if (!_tmp169_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  cl_prop = NULL;
                  _tmp170_ = _vala_code_node_ref0 (cl);
                  base_class = _tmp170_;
                  while (TRUE) {
                        gboolean _tmp171_ = FALSE;
                        ValaScope* _tmp172_ = NULL;
                        const gchar* _tmp173_ = NULL;
                        ValaSymbol* _tmp174_ = NULL;
                        ValaSymbol* _tmp175_;
                        ValaClass* _tmp176_ = NULL;
                        ValaClass* _tmp177_;
                        if (base_class != NULL) {
                              _tmp171_ = cl_prop == NULL;
                        } else {
                              _tmp171_ = FALSE;
                        }
                        if (!_tmp171_) {
                              break;
                        }
                        _tmp172_ = vala_symbol_get_scope ((ValaSymbol*) base_class);
                        _tmp173_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp174_ = vala_scope_lookup (_tmp172_, _tmp173_);
                        _tmp175_ = _tmp174_;
                        _vala_code_node_unref0 (cl_prop);
                        cl_prop = VALA_IS_PROPERTY (_tmp175_) ? ((ValaProperty*) _tmp175_) : NULL;
                        _tmp176_ = vala_class_get_base_class (base_class);
                        _tmp177_ = _vala_code_node_ref0 (_tmp176_);
                        _vala_code_node_unref0 (base_class);
                        base_class = _tmp177_;
                  }
                  if (base_class != NULL) {
                        ValaSymbol* _tmp179_ = NULL;
                        _tmp179_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl_prop);
                        _tmp178_ = _tmp179_ != VALA_SYMBOL (cl);
                  } else {
                        _tmp178_ = FALSE;
                  }
                  if (_tmp178_) {
                        ValaProperty* _tmp180_;
                        ValaProperty* base_property;
                        ValaProperty* _tmp181_ = NULL;
                        ValaCCodeIdentifier* _tmp187_ = NULL;
                        ValaCCodeIdentifier* ciface;
                        ValaPropertyAccessor* _tmp188_ = NULL;
                        ValaPropertyAccessor* _tmp201_ = NULL;
                        _tmp180_ = _vala_code_node_ref0 (cl_prop);
                        base_property = _tmp180_;
                        _tmp181_ = vala_property_get_base_property (cl_prop);
                        if (_tmp181_ != NULL) {
                              ValaProperty* _tmp182_ = NULL;
                              ValaProperty* _tmp183_;
                              _tmp182_ = vala_property_get_base_property (cl_prop);
                              _tmp183_ = _vala_code_node_ref0 (_tmp182_);
                              _vala_code_node_unref0 (base_property);
                              base_property = _tmp183_;
                        } else {
                              ValaProperty* _tmp184_ = NULL;
                              _tmp184_ = vala_property_get_base_interface_property (cl_prop);
                              if (_tmp184_ != NULL) {
                                    ValaProperty* _tmp185_ = NULL;
                                    ValaProperty* _tmp186_;
                                    _tmp185_ = vala_property_get_base_interface_property (cl_prop);
                                    _tmp186_ = _vala_code_node_ref0 (_tmp185_);
                                    _vala_code_node_unref0 (base_property);
                                    base_property = _tmp186_;
                              }
                        }
                        _tmp187_ = vala_ccode_identifier_new ("iface");
                        ciface = _tmp187_;
                        _tmp188_ = vala_property_get_get_accessor (base_property);
                        if (_tmp188_ != NULL) {
                              ValaPropertyAccessor* _tmp189_ = NULL;
                              ValaPropertyAccessor* _tmp190_ = NULL;
                              gchar* _tmp191_ = NULL;
                              gchar* cname;
                              ValaCCodeIdentifier* _tmp192_ = NULL;
                              ValaCCodeExpression* cfunc;
                              ValaPropertyAccessor* _tmp193_ = NULL;
                              ValaCCodeExpression* _tmp194_ = NULL;
                              ValaCCodeFunction* _tmp195_ = NULL;
                              const gchar* _tmp196_ = NULL;
                              gchar* _tmp197_ = NULL;
                              gchar* _tmp198_;
                              ValaCCodeMemberAccess* _tmp199_ = NULL;
                              ValaCCodeMemberAccess* _tmp200_;
                              _tmp189_ = vala_property_get_get_accessor (base_property);
                              vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp189_, ((ValaCCodeBaseModule*) self)->cfile);
                              _tmp190_ = vala_property_get_get_accessor (base_property);
                              _tmp191_ = vala_property_accessor_get_cname (_tmp190_);
                              cname = _tmp191_;
                              _tmp192_ = vala_ccode_identifier_new (cname);
                              cfunc = (ValaCCodeExpression*) _tmp192_;
                              _tmp193_ = vala_property_get_get_accessor (prop);
                              _tmp194_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp193_, cfunc, (ValaObjectTypeSymbol*) iface);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = _tmp194_;
                              _tmp195_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp196_ = vala_symbol_get_name ((ValaSymbol*) prop);
                              _tmp197_ = g_strdup_printf ("get_%s", _tmp196_);
                              _tmp198_ = _tmp197_;
                              _tmp199_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp198_);
                              _tmp200_ = _tmp199_;
                              vala_ccode_function_add_assignment (_tmp195_, (ValaCCodeExpression*) _tmp200_, cfunc);
                              _vala_ccode_node_unref0 (_tmp200_);
                              _g_free0 (_tmp198_);
                              _vala_ccode_node_unref0 (cfunc);
                              _g_free0 (cname);
                        }
                        _tmp201_ = vala_property_get_set_accessor (base_property);
                        if (_tmp201_ != NULL) {
                              ValaPropertyAccessor* _tmp202_ = NULL;
                              ValaPropertyAccessor* _tmp203_ = NULL;
                              gchar* _tmp204_ = NULL;
                              gchar* cname;
                              ValaCCodeIdentifier* _tmp205_ = NULL;
                              ValaCCodeExpression* cfunc;
                              ValaPropertyAccessor* _tmp206_ = NULL;
                              ValaCCodeExpression* _tmp207_ = NULL;
                              ValaCCodeFunction* _tmp208_ = NULL;
                              const gchar* _tmp209_ = NULL;
                              gchar* _tmp210_ = NULL;
                              gchar* _tmp211_;
                              ValaCCodeMemberAccess* _tmp212_ = NULL;
                              ValaCCodeMemberAccess* _tmp213_;
                              _tmp202_ = vala_property_get_set_accessor (base_property);
                              vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp202_, ((ValaCCodeBaseModule*) self)->cfile);
                              _tmp203_ = vala_property_get_set_accessor (base_property);
                              _tmp204_ = vala_property_accessor_get_cname (_tmp203_);
                              cname = _tmp204_;
                              _tmp205_ = vala_ccode_identifier_new (cname);
                              cfunc = (ValaCCodeExpression*) _tmp205_;
                              _tmp206_ = vala_property_get_set_accessor (prop);
                              _tmp207_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp206_, cfunc, (ValaObjectTypeSymbol*) iface);
                              _vala_ccode_node_unref0 (cfunc);
                              cfunc = _tmp207_;
                              _tmp208_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp209_ = vala_symbol_get_name ((ValaSymbol*) prop);
                              _tmp210_ = g_strdup_printf ("set_%s", _tmp209_);
                              _tmp211_ = _tmp210_;
                              _tmp212_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp211_);
                              _tmp213_ = _tmp212_;
                              vala_ccode_function_add_assignment (_tmp208_, (ValaCCodeExpression*) _tmp213_, cfunc);
                              _vala_ccode_node_unref0 (_tmp213_);
                              _g_free0 (_tmp211_);
                              _vala_ccode_node_unref0 (cfunc);
                              _g_free0 (cname);
                        }
                        _vala_ccode_node_unref0 (ciface);
                        _vala_code_node_unref0 (base_property);
                  }
                  _vala_code_node_unref0 (base_class);
                  _vala_code_node_unref0 (cl_prop);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, iface_init);
      _vala_ccode_node_unref0 (parent_var_decl);
      _vala_ccode_node_unref0 (parent_decl);
      _g_free0 (parent_iface_var);
      _vala_ccode_node_unref0 (ccall);
      _vala_ccode_node_unref0 (iface_init);
}


static ValaCCodeExpression* vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self, ValaPropertyAccessor* acc, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type) {
      ValaCCodeExpression* result = NULL;
      gchar* cast = NULL;
      gboolean _tmp0_ = FALSE;
      gboolean _tmp1_;
      ValaCCodeCastExpression* _tmp31_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (acc != NULL, NULL);
      g_return_val_if_fail (cfunc != NULL, NULL);
      g_return_val_if_fail (base_type != NULL, NULL);
      _tmp1_ = vala_property_accessor_get_readable (acc);
      if (_tmp1_) {
            ValaDataType* _tmp2_ = NULL;
            gboolean _tmp3_;
            _tmp2_ = vala_property_accessor_get_value_type (acc);
            _tmp3_ = vala_data_type_is_real_non_null_struct_type (_tmp2_);
            _tmp0_ = _tmp3_;
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            gchar* _tmp4_ = NULL;
            gchar* _tmp5_;
            ValaDataType* _tmp6_ = NULL;
            gchar* _tmp7_ = NULL;
            gchar* _tmp8_;
            gchar* _tmp9_ = NULL;
            _tmp4_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) base_type, FALSE);
            _tmp5_ = _tmp4_;
            _tmp6_ = vala_property_accessor_get_value_type (acc);
            _tmp7_ = vala_data_type_get_cname (_tmp6_);
            _tmp8_ = _tmp7_;
            _tmp9_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp5_, _tmp8_);
            _g_free0 (cast);
            cast = _tmp9_;
            _g_free0 (_tmp8_);
            _g_free0 (_tmp5_);
      } else {
            gboolean _tmp10_;
            _tmp10_ = vala_property_accessor_get_readable (acc);
            if (_tmp10_) {
                  ValaDataType* _tmp11_ = NULL;
                  gchar* _tmp12_ = NULL;
                  gchar* _tmp13_;
                  gchar* _tmp14_ = NULL;
                  gchar* _tmp15_;
                  gchar* _tmp16_ = NULL;
                  _tmp11_ = vala_property_accessor_get_value_type (acc);
                  _tmp12_ = vala_data_type_get_cname (_tmp11_);
                  _tmp13_ = _tmp12_;
                  _tmp14_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) base_type, FALSE);
                  _tmp15_ = _tmp14_;
                  _tmp16_ = g_strdup_printf ("%s (*) (%s *)", _tmp13_, _tmp15_);
                  _g_free0 (cast);
                  cast = _tmp16_;
                  _g_free0 (_tmp15_);
                  _g_free0 (_tmp13_);
            } else {
                  ValaDataType* _tmp17_ = NULL;
                  gboolean _tmp18_;
                  _tmp17_ = vala_property_accessor_get_value_type (acc);
                  _tmp18_ = vala_data_type_is_real_non_null_struct_type (_tmp17_);
                  if (_tmp18_) {
                        gchar* _tmp19_ = NULL;
                        gchar* _tmp20_;
                        ValaDataType* _tmp21_ = NULL;
                        gchar* _tmp22_ = NULL;
                        gchar* _tmp23_;
                        gchar* _tmp24_ = NULL;
                        _tmp19_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) base_type, FALSE);
                        _tmp20_ = _tmp19_;
                        _tmp21_ = vala_property_accessor_get_value_type (acc);
                        _tmp22_ = vala_data_type_get_cname (_tmp21_);
                        _tmp23_ = _tmp22_;
                        _tmp24_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp20_, _tmp23_);
                        _g_free0 (cast);
                        cast = _tmp24_;
                        _g_free0 (_tmp23_);
                        _g_free0 (_tmp20_);
                  } else {
                        gchar* _tmp25_ = NULL;
                        gchar* _tmp26_;
                        ValaDataType* _tmp27_ = NULL;
                        gchar* _tmp28_ = NULL;
                        gchar* _tmp29_;
                        gchar* _tmp30_ = NULL;
                        _tmp25_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) base_type, FALSE);
                        _tmp26_ = _tmp25_;
                        _tmp27_ = vala_property_accessor_get_value_type (acc);
                        _tmp28_ = vala_data_type_get_cname (_tmp27_);
                        _tmp29_ = _tmp28_;
                        _tmp30_ = g_strdup_printf ("void (*) (%s *, %s)", _tmp26_, _tmp29_);
                        _g_free0 (cast);
                        cast = _tmp30_;
                        _g_free0 (_tmp29_);
                        _g_free0 (_tmp26_);
                  }
            }
      }
      _tmp31_ = vala_ccode_cast_expression_new (cfunc, cast);
      result = (ValaCCodeExpression*) _tmp31_;
      _g_free0 (cast);
      return result;
}


static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self, ValaMethod* m, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type) {
      ValaCCodeExpression* result = NULL;
      ValaDataType* _tmp0_ = NULL;
      gchar* _tmp1_ = NULL;
      gchar* _tmp2_;
      gchar* _tmp3_;
      gchar* _tmp4_;
      gchar* cast;
      gchar* _tmp5_ = NULL;
      gchar* _tmp6_;
      gchar* _tmp7_;
      gchar* _tmp8_;
      gchar* cast_args;
      const gchar* _tmp9_ = NULL;
      ValaCCodeFunctionDeclarator* _tmp10_ = NULL;
      ValaCCodeFunctionDeclarator* vdeclarator;
      ValaHashMap* _tmp11_ = NULL;
      ValaHashMap* cparam_map;
      ValaCCodeFunction* _tmp12_ = NULL;
      ValaCCodeFunction* _tmp13_;
      gint last_pos;
      gint min_pos = 0;
      gchar* _tmp28_;
      gchar* _tmp29_;
      gchar* _tmp30_;
      gchar* _tmp31_;
      gchar* _tmp32_;
      ValaCCodeCastExpression* _tmp33_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (m != NULL, NULL);
      g_return_val_if_fail (cfunc != NULL, NULL);
      g_return_val_if_fail (base_type != NULL, NULL);
      _tmp0_ = vala_method_get_return_type (m);
      _tmp1_ = vala_data_type_get_cname (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = g_strconcat (_tmp2_, " (*)", NULL);
      _tmp4_ = _tmp3_;
      _g_free0 (_tmp2_);
      cast = _tmp4_;
      _tmp5_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) base_type, FALSE);
      _tmp6_ = _tmp5_;
      _tmp7_ = g_strconcat (_tmp6_, "*", NULL);
      _tmp8_ = _tmp7_;
      _g_free0 (_tmp6_);
      cast_args = _tmp8_;
      _tmp9_ = vala_method_get_vfunc_name (m);
      _tmp10_ = vala_ccode_function_declarator_new (_tmp9_);
      vdeclarator = _tmp10_;
      _tmp11_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
      cparam_map = _tmp11_;
      _tmp12_ = vala_ccode_function_new ("fake", "void");
      _tmp13_ = _tmp12_;
      vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->cfile, (ValaMap*) cparam_map, _tmp13_, vdeclarator, NULL, NULL, 3);
      _vala_ccode_node_unref0 (_tmp13_);
      last_pos = -1;
      while (TRUE) {
            min_pos = -1;
            {
                  ValaSet* _tmp14_ = NULL;
                  ValaSet* _tmp15_;
                  ValaIterator* _tmp16_ = NULL;
                  ValaIterator* _tmp17_;
                  ValaIterator* _pos_it;
                  _tmp14_ = vala_map_get_keys ((ValaMap*) cparam_map);
                  _tmp15_ = _tmp14_;
                  _tmp16_ = vala_iterable_iterator ((ValaIterable*) _tmp15_);
                  _tmp17_ = _tmp16_;
                  _vala_iterable_unref0 (_tmp15_);
                  _pos_it = _tmp17_;
                  while (TRUE) {
                        gboolean _tmp18_;
                        gpointer _tmp19_ = NULL;
                        gint pos;
                        gboolean _tmp20_ = FALSE;
                        _tmp18_ = vala_iterator_next (_pos_it);
                        if (!_tmp18_) {
                              break;
                        }
                        _tmp19_ = vala_iterator_get (_pos_it);
                        pos = GPOINTER_TO_INT (_tmp19_);
                        if (pos > last_pos) {
                              gboolean _tmp21_ = FALSE;
                              if (min_pos == (-1)) {
                                    _tmp21_ = TRUE;
                              } else {
                                    _tmp21_ = pos < min_pos;
                              }
                              _tmp20_ = _tmp21_;
                        } else {
                              _tmp20_ = FALSE;
                        }
                        if (_tmp20_) {
                              min_pos = pos;
                        }
                  }
                  _vala_iterator_unref0 (_pos_it);
            }
            if (last_pos != (-1)) {
                  gpointer _tmp22_ = NULL;
                  ValaCCodeParameter* _tmp23_;
                  const gchar* _tmp24_ = NULL;
                  gchar* _tmp25_;
                  gchar* _tmp26_;
                  gchar* _tmp27_;
                  if (min_pos == (-1)) {
                        break;
                  }
                  _tmp22_ = vala_map_get ((ValaMap*) cparam_map, GINT_TO_POINTER (min_pos));
                  _tmp23_ = (ValaCCodeParameter*) _tmp22_;
                  _tmp24_ = vala_ccode_parameter_get_type_name (_tmp23_);
                  _tmp25_ = g_strconcat (" ,", _tmp24_, NULL);
                  _tmp26_ = _tmp25_;
                  _tmp27_ = g_strconcat (cast_args, _tmp26_, NULL);
                  _g_free0 (cast_args);
                  cast_args = _tmp27_;
                  _g_free0 (_tmp26_);
                  _vala_ccode_node_unref0 (_tmp23_);
            }
            last_pos = min_pos;
      }
      _tmp28_ = g_strconcat ("(", cast_args, NULL);
      _tmp29_ = _tmp28_;
      _tmp30_ = g_strconcat (_tmp29_, ")", NULL);
      _tmp31_ = _tmp30_;
      _tmp32_ = g_strconcat (cast, _tmp31_, NULL);
      _g_free0 (cast);
      cast = _tmp32_;
      _g_free0 (_tmp31_);
      _g_free0 (_tmp29_);
      _tmp33_ = vala_ccode_cast_expression_new (cfunc, cast);
      result = (ValaCCodeExpression*) _tmp33_;
      _vala_map_unref0 (cparam_map);
      _vala_ccode_node_unref0 (vdeclarator);
      _g_free0 (cast_args);
      _g_free0 (cast);
      return result;
}


static void vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* func;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      gboolean _tmp12_;
      gboolean _tmp13_ = FALSE;
      gboolean _tmp14_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->instance_init_context);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_instance_init", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      func = _tmp5_;
      _tmp6_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp7_ = _tmp6_;
      _tmp8_ = g_strdup_printf ("%s *", _tmp7_);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_parameter_new ("self", _tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (func, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _g_free0 (_tmp9_);
      _g_free0 (_tmp7_);
      vala_ccode_function_set_modifiers (func, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, func);
      _tmp12_ = vala_class_get_is_compact (cl);
      if (_tmp12_) {
            vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, func);
      }
      _tmp14_ = vala_class_get_is_compact (cl);
      if (!_tmp14_) {
            gboolean _tmp15_ = FALSE;
            gboolean _tmp16_;
            _tmp16_ = vala_class_get_has_private_fields (cl);
            if (_tmp16_) {
                  _tmp15_ = TRUE;
            } else {
                  ValaList* _tmp17_ = NULL;
                  ValaList* _tmp18_;
                  gint _tmp19_;
                  _tmp17_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
                  _tmp18_ = _tmp17_;
                  _tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
                  _tmp15_ = _tmp19_ > 0;
                  _vala_iterable_unref0 (_tmp18_);
            }
            _tmp13_ = _tmp15_;
      } else {
            _tmp13_ = FALSE;
      }
      if (_tmp13_) {
            gchar* _tmp20_ = NULL;
            gchar* _tmp21_;
            gchar* _tmp22_ = NULL;
            gchar* _tmp23_;
            ValaCCodeIdentifier* _tmp24_ = NULL;
            ValaCCodeIdentifier* _tmp25_;
            ValaCCodeFunctionCall* _tmp26_ = NULL;
            ValaCCodeFunctionCall* _tmp27_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeIdentifier* _tmp28_ = NULL;
            ValaCCodeIdentifier* _tmp29_;
            ValaCCodeIdentifier* _tmp30_ = NULL;
            ValaCCodeIdentifier* _tmp31_;
            ValaCCodeMemberAccess* _tmp32_ = NULL;
            ValaCCodeMemberAccess* _tmp33_;
            _tmp20_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
            _tmp21_ = _tmp20_;
            _tmp22_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp21_);
            _tmp23_ = _tmp22_;
            _tmp24_ = vala_ccode_identifier_new (_tmp23_);
            _tmp25_ = _tmp24_;
            _tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
            _tmp27_ = _tmp26_;
            _vala_ccode_node_unref0 (_tmp25_);
            _g_free0 (_tmp23_);
            _g_free0 (_tmp21_);
            ccall = _tmp27_;
            _tmp28_ = vala_ccode_identifier_new ("self");
            _tmp29_ = _tmp28_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp29_);
            _vala_ccode_node_unref0 (_tmp29_);
            _tmp30_ = vala_ccode_identifier_new ("self");
            _tmp31_ = _tmp30_;
            _tmp32_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp31_, "priv");
            _tmp33_ = _tmp32_;
            vala_ccode_function_add_assignment (func, (ValaCCodeExpression*) _tmp33_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp33_);
            _vala_ccode_node_unref0 (_tmp31_);
            _vala_ccode_node_unref0 (ccall);
      }
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_ccode_node_unref0 (func);
}


static void vala_gtype_module_add_instance_init_function (ValaGTypeModule* self, ValaClass* cl) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->instance_init_context->ccode);
}


static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      gchar* _tmp8_;
      gchar* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaDestructor* _tmp12_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->class_finalize_context);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_class_finalize", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      _tmp6_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp7_ = _tmp6_;
      _tmp8_ = g_strconcat (_tmp7_, "Class *", NULL);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_parameter_new ("klass", _tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (function, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _g_free0 (_tmp9_);
      _g_free0 (_tmp7_);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp12_ = vala_class_get_class_destructor (cl);
      if (_tmp12_ != NULL) {
            ValaDestructor* _tmp13_ = NULL;
            ValaBlock* _tmp14_ = NULL;
            _tmp13_ = vala_class_get_class_destructor (cl);
            _tmp14_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp13_);
            vala_code_node_emit ((ValaCodeNode*) _tmp14_, (ValaCodeGenerator*) self);
      }
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->class_finalize_context->ccode);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->class_finalize_context->ccode);
}


static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      ValaCCodeFunction* _tmp4_ = NULL;
      ValaCCodeFunction* _tmp5_;
      ValaCCodeFunction* function;
      gchar* _tmp6_ = NULL;
      gchar* _tmp7_;
      gchar* _tmp8_;
      gchar* _tmp9_;
      ValaCCodeParameter* _tmp10_ = NULL;
      ValaCCodeParameter* _tmp11_;
      ValaDestructor* _tmp12_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->base_finalize_context);
      _tmp0_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
      _tmp1_ = _tmp0_;
      _tmp2_ = g_strdup_printf ("%s_base_finalize", _tmp1_);
      _tmp3_ = _tmp2_;
      _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
      _tmp5_ = _tmp4_;
      _g_free0 (_tmp3_);
      _g_free0 (_tmp1_);
      function = _tmp5_;
      vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
      _tmp6_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
      _tmp7_ = _tmp6_;
      _tmp8_ = g_strconcat (_tmp7_, "Class *", NULL);
      _tmp9_ = _tmp8_;
      _tmp10_ = vala_ccode_parameter_new ("klass", _tmp9_);
      _tmp11_ = _tmp10_;
      vala_ccode_function_add_parameter (function, _tmp11_);
      _vala_ccode_node_unref0 (_tmp11_);
      _g_free0 (_tmp9_);
      _g_free0 (_tmp7_);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
      _tmp12_ = vala_class_get_class_destructor (cl);
      if (_tmp12_ != NULL) {
            ValaDestructor* _tmp13_ = NULL;
            ValaBlock* _tmp14_ = NULL;
            _tmp13_ = vala_class_get_class_destructor (cl);
            _tmp14_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp13_);
            vala_code_node_emit ((ValaCodeNode*) _tmp14_, (ValaCodeGenerator*) self);
      }
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
      gboolean _tmp0_ = FALSE;
      ValaCodeContext* _tmp1_ = NULL;
      gboolean _tmp2_;
      ValaCCodeFunction* _tmp46_ = NULL;
      ValaCCodeFunction* _tmp47_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->base_finalize_context);
      _tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
      _tmp2_ = vala_code_context_require_glib_version (_tmp1_, 2, 24);
      if (!_tmp2_) {
            gboolean _tmp3_;
            _tmp3_ = vala_class_get_has_class_private_fields (cl);
            _tmp0_ = _tmp3_;
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            ValaCCodeFunction* _tmp4_ = NULL;
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            gchar* _tmp7_ = NULL;
            gchar* _tmp8_;
            ValaCCodeDeclaration* _tmp9_ = NULL;
            ValaCCodeDeclaration* _tmp10_;
            ValaCCodeDeclaration* _cdecl_;
            ValaCCodeVariableDeclarator* _tmp11_ = NULL;
            ValaCCodeVariableDeclarator* _tmp12_;
            ValaCCodeFunction* _tmp13_ = NULL;
            gchar* _tmp14_ = NULL;
            gchar* _tmp15_;
            gchar* _tmp16_ = NULL;
            gchar* _tmp17_;
            ValaCCodeIdentifier* _tmp18_ = NULL;
            ValaCCodeIdentifier* _tmp19_;
            ValaCCodeFunctionCall* _tmp20_ = NULL;
            ValaCCodeFunctionCall* _tmp21_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeConstant* _tmp22_ = NULL;
            ValaCCodeConstant* _tmp23_;
            ValaCCodeFunction* _tmp24_ = NULL;
            ValaCCodeIdentifier* _tmp25_ = NULL;
            ValaCCodeIdentifier* _tmp26_;
            ValaCCodeAssignment* _tmp27_ = NULL;
            ValaCCodeAssignment* _tmp28_;
            ValaCCodeExpressionStatement* _tmp29_ = NULL;
            ValaCCodeExpressionStatement* _tmp30_;
            ValaCCodeIdentifier* _tmp31_ = NULL;
            ValaCCodeIdentifier* _tmp32_;
            ValaCCodeFunctionCall* _tmp33_ = NULL;
            gchar* _tmp34_ = NULL;
            gchar* _tmp35_;
            gchar* _tmp36_ = NULL;
            gchar* _tmp37_;
            ValaCCodeIdentifier* _tmp38_ = NULL;
            ValaCCodeIdentifier* _tmp39_;
            ValaCCodeIdentifier* _tmp40_ = NULL;
            ValaCCodeIdentifier* _tmp41_;
            ValaCCodeFunction* _tmp42_ = NULL;
            ValaCCodeExpressionStatement* _tmp43_ = NULL;
            ValaCCodeExpressionStatement* _tmp44_;
            ValaCCodeFunction* _tmp45_ = NULL;
            _tmp4_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_open_block (_tmp4_);
            _tmp5_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp6_ = _tmp5_;
            _tmp7_ = g_strdup_printf ("%sClassPrivate *", _tmp6_);
            _tmp8_ = _tmp7_;
            _tmp9_ = vala_ccode_declaration_new (_tmp8_);
            _tmp10_ = _tmp9_;
            _g_free0 (_tmp8_);
            _g_free0 (_tmp6_);
            _cdecl_ = _tmp10_;
            _tmp11_ = vala_ccode_variable_declarator_new ("priv", NULL, NULL);
            _tmp12_ = _tmp11_;
            vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp12_);
            _vala_ccode_node_unref0 (_tmp12_);
            _tmp13_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_add_statement (_tmp13_, (ValaCCodeNode*) _cdecl_);
            _tmp14_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
            _tmp15_ = _tmp14_;
            _tmp16_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp15_);
            _tmp17_ = _tmp16_;
            _tmp18_ = vala_ccode_identifier_new (_tmp17_);
            _tmp19_ = _tmp18_;
            _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_);
            _tmp21_ = _tmp20_;
            _vala_ccode_node_unref0 (_tmp19_);
            _g_free0 (_tmp17_);
            _g_free0 (_tmp15_);
            ccall = _tmp21_;
            _tmp22_ = vala_ccode_constant_new ("klass");
            _tmp23_ = _tmp22_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp23_);
            _vala_ccode_node_unref0 (_tmp23_);
            _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp25_ = vala_ccode_identifier_new ("priv");
            _tmp26_ = _tmp25_;
            _tmp27_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp26_, (ValaCCodeExpression*) ccall, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
            _tmp28_ = _tmp27_;
            _tmp29_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp28_);
            _tmp30_ = _tmp29_;
            vala_ccode_function_add_statement (_tmp24_, (ValaCCodeNode*) _tmp30_);
            _vala_ccode_node_unref0 (_tmp30_);
            _vala_ccode_node_unref0 (_tmp28_);
            _vala_ccode_node_unref0 (_tmp26_);
            _tmp31_ = vala_ccode_identifier_new ("g_slice_free");
            _tmp32_ = _tmp31_;
            _tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
            _vala_ccode_node_unref0 (ccall);
            ccall = _tmp33_;
            _vala_ccode_node_unref0 (_tmp32_);
            _tmp34_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp35_ = _tmp34_;
            _tmp36_ = g_strdup_printf ("%sClassPrivate", _tmp35_);
            _tmp37_ = _tmp36_;
            _tmp38_ = vala_ccode_identifier_new (_tmp37_);
            _tmp39_ = _tmp38_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp39_);
            _vala_ccode_node_unref0 (_tmp39_);
            _g_free0 (_tmp37_);
            _g_free0 (_tmp35_);
            _tmp40_ = vala_ccode_identifier_new ("priv");
            _tmp41_ = _tmp40_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp41_);
            _vala_ccode_node_unref0 (_tmp41_);
            _tmp42_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp43_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) ccall);
            _tmp44_ = _tmp43_;
            vala_ccode_function_add_statement (_tmp42_, (ValaCCodeNode*) _tmp44_);
            _vala_ccode_node_unref0 (_tmp44_);
            _tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            vala_ccode_function_close (_tmp45_);
            _vala_ccode_node_unref0 (ccall);
            _vala_ccode_node_unref0 (_cdecl_);
      }
      _tmp46_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, _tmp46_);
      _tmp47_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp47_);
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
}


static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
      gboolean _tmp0_;
      ValaDestructor* _tmp44_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->instance_finalize_context);
      _tmp0_ = vala_class_get_is_compact (cl);
      if (!_tmp0_) {
            ValaClass* _tmp1_;
            ValaClass* fundamental_class;
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            gchar* _tmp7_ = NULL;
            gchar* _tmp8_;
            ValaCCodeFunction* _tmp9_ = NULL;
            ValaCCodeFunction* _tmp10_;
            ValaCCodeFunction* func;
            gchar* _tmp11_ = NULL;
            gchar* _tmp12_;
            gchar* _tmp13_;
            gchar* _tmp14_;
            ValaCCodeParameter* _tmp15_ = NULL;
            ValaCCodeParameter* _tmp16_;
            ValaCCodeIdentifier* _tmp17_ = NULL;
            ValaCCodeIdentifier* _tmp18_;
            ValaCCodeFunctionCall* _tmp19_ = NULL;
            ValaCCodeFunctionCall* _tmp20_;
            ValaCCodeFunctionCall* ccall;
            ValaCCodeFunction* _tmp21_ = NULL;
            gchar* _tmp22_ = NULL;
            gchar* _tmp23_;
            gchar* _tmp24_ = NULL;
            gchar* _tmp25_;
            ValaCCodeVariableDeclarator* _tmp26_ = NULL;
            ValaCCodeVariableDeclarator* _tmp27_;
            ValaCCodeFunction* _tmp28_ = NULL;
            ValaCCodeIdentifier* _tmp29_ = NULL;
            ValaCCodeIdentifier* _tmp30_;
            _tmp1_ = _vala_code_node_ref0 (cl);
            fundamental_class = _tmp1_;
            while (TRUE) {
                  ValaClass* _tmp2_ = NULL;
                  ValaClass* _tmp3_ = NULL;
                  ValaClass* _tmp4_;
                  _tmp2_ = vala_class_get_base_class (fundamental_class);
                  if (!(_tmp2_ != NULL)) {
                        break;
                  }
                  _tmp3_ = vala_class_get_base_class (fundamental_class);
                  _tmp4_ = _vala_code_node_ref0 (_tmp3_);
                  _vala_code_node_unref0 (fundamental_class);
                  fundamental_class = _tmp4_;
            }
            _tmp5_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
            _tmp6_ = _tmp5_;
            _tmp7_ = g_strdup_printf ("%s_finalize", _tmp6_);
            _tmp8_ = _tmp7_;
            _tmp9_ = vala_ccode_function_new (_tmp8_, "void");
            _tmp10_ = _tmp9_;
            _g_free0 (_tmp8_);
            _g_free0 (_tmp6_);
            func = _tmp10_;
            _tmp11_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) fundamental_class, FALSE);
            _tmp12_ = _tmp11_;
            _tmp13_ = g_strconcat (_tmp12_, "*", NULL);
            _tmp14_ = _tmp13_;
            _tmp15_ = vala_ccode_parameter_new ("obj", _tmp14_);
            _tmp16_ = _tmp15_;
            vala_ccode_function_add_parameter (func, _tmp16_);
            _vala_ccode_node_unref0 (_tmp16_);
            _g_free0 (_tmp14_);
            _g_free0 (_tmp12_);
            vala_ccode_function_set_modifiers (func, VALA_CCODE_MODIFIERS_STATIC);
            vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, func);
            _tmp17_ = vala_ccode_identifier_new ("obj");
            _tmp18_ = _tmp17_;
            _tmp19_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp18_, (ValaTypeSymbol*) cl);
            _tmp20_ = _tmp19_;
            _vala_ccode_node_unref0 (_tmp18_);
            ccall = _tmp20_;
            _tmp21_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp22_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp23_ = _tmp22_;
            _tmp24_ = g_strdup_printf ("%s *", _tmp23_);
            _tmp25_ = _tmp24_;
            _tmp26_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
            _tmp27_ = _tmp26_;
            vala_ccode_function_add_declaration (_tmp21_, _tmp25_, (ValaCCodeDeclarator*) _tmp27_, 0);
            _vala_ccode_node_unref0 (_tmp27_);
            _g_free0 (_tmp25_);
            _g_free0 (_tmp23_);
            _tmp28_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
            _tmp29_ = vala_ccode_identifier_new ("self");
            _tmp30_ = _tmp29_;
            vala_ccode_function_add_assignment (_tmp28_, (ValaCCodeExpression*) _tmp30_, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (_tmp30_);
            _vala_ccode_node_unref0 (ccall);
            _vala_ccode_node_unref0 (func);
            _vala_code_node_unref0 (fundamental_class);
      } else {
            gchar* _tmp31_ = NULL;
            gchar* _tmp32_;
            gchar* _tmp33_;
            gchar* _tmp34_;
            ValaCCodeFunction* _tmp35_ = NULL;
            ValaCCodeFunction* _tmp36_;
            ValaCCodeFunction* function;
            ValaSymbolAccessibility _tmp37_;
            gchar* _tmp38_ = NULL;
            gchar* _tmp39_;
            gchar* _tmp40_;
            gchar* _tmp41_;
            ValaCCodeParameter* _tmp42_ = NULL;
            ValaCCodeParameter* _tmp43_;
            _tmp31_ = vala_symbol_get_lower_case_cprefix ((ValaSymbol*) cl);
            _tmp32_ = _tmp31_;
            _tmp33_ = g_strconcat (_tmp32_, "free", NULL);
            _tmp34_ = _tmp33_;
            _tmp35_ = vala_ccode_function_new (_tmp34_, "void");
            _tmp36_ = _tmp35_;
            _g_free0 (_tmp34_);
            _g_free0 (_tmp32_);
            function = _tmp36_;
            _tmp37_ = vala_symbol_get_access ((ValaSymbol*) cl);
            if (_tmp37_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
            }
            _tmp38_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp39_ = _tmp38_;
            _tmp40_ = g_strconcat (_tmp39_, "*", NULL);
            _tmp41_ = _tmp40_;
            _tmp42_ = vala_ccode_parameter_new ("self", _tmp41_);
            _tmp43_ = _tmp42_;
            vala_ccode_function_add_parameter (function, _tmp43_);
            _vala_ccode_node_unref0 (_tmp43_);
            _g_free0 (_tmp41_);
            _g_free0 (_tmp39_);
            vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
            _vala_ccode_node_unref0 (function);
      }
      _tmp44_ = vala_class_get_destructor (cl);
      if (_tmp44_ != NULL) {
            ValaDestructor* _tmp45_ = NULL;
            ValaBlock* _tmp46_ = NULL;
            gboolean _tmp47_;
            gboolean _tmp53_;
            _tmp45_ = vala_class_get_destructor (cl);
            _tmp46_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp45_);
            vala_code_node_emit ((ValaCodeNode*) _tmp46_, (ValaCodeGenerator*) self);
            _tmp47_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
            if (_tmp47_) {
                  ValaCCodeFunction* _tmp48_ = NULL;
                  ValaCCodeConstant* _tmp49_ = NULL;
                  ValaCCodeConstant* _tmp50_;
                  ValaCCodeVariableDeclarator* _tmp51_ = NULL;
                  ValaCCodeVariableDeclarator* _tmp52_;
                  _tmp48_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp49_ = vala_ccode_constant_new ("NULL");
                  _tmp50_ = _tmp49_;
                  _tmp51_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp50_, NULL);
                  _tmp52_ = _tmp51_;
                  vala_ccode_function_add_declaration (_tmp48_, "GError *", (ValaCCodeDeclarator*) _tmp52_, 0);
                  _vala_ccode_node_unref0 (_tmp52_);
                  _vala_ccode_node_unref0 (_tmp50_);
            }
            _tmp53_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
            if (_tmp53_) {
                  ValaCCodeFunction* _tmp54_ = NULL;
                  _tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  vala_ccode_function_add_label (_tmp54_, "_return");
            }
      }
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
}


static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
      gboolean _tmp0_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_class_get_is_compact (cl);
      if (!_tmp0_) {
            ValaClass* _tmp1_;
            ValaClass* fundamental_class;
            ValaClass* _tmp5_ = NULL;
            _tmp1_ = _vala_code_node_ref0 (cl);
            fundamental_class = _tmp1_;
            while (TRUE) {
                  ValaClass* _tmp2_ = NULL;
                  ValaClass* _tmp3_ = NULL;
                  ValaClass* _tmp4_;
                  _tmp2_ = vala_class_get_base_class (fundamental_class);
                  if (!(_tmp2_ != NULL)) {
                        break;
                  }
                  _tmp3_ = vala_class_get_base_class (fundamental_class);
                  _tmp4_ = _vala_code_node_ref0 (_tmp3_);
                  _vala_code_node_unref0 (fundamental_class);
                  fundamental_class = _tmp4_;
            }
            _tmp5_ = vala_class_get_base_class (cl);
            if (_tmp5_ != NULL) {
                  gchar* _tmp6_ = NULL;
                  gchar* _tmp7_;
                  gchar* _tmp8_ = NULL;
                  gchar* _tmp9_;
                  ValaCCodeIdentifier* _tmp10_ = NULL;
                  ValaCCodeIdentifier* _tmp11_;
                  ValaCCodeFunctionCall* _tmp12_ = NULL;
                  ValaCCodeFunctionCall* _tmp13_;
                  ValaCCodeFunctionCall* ccast;
                  gchar* _tmp14_ = NULL;
                  gchar* _tmp15_;
                  gchar* _tmp16_ = NULL;
                  gchar* _tmp17_;
                  ValaCCodeIdentifier* _tmp18_ = NULL;
                  ValaCCodeIdentifier* _tmp19_;
                  ValaCCodeMemberAccess* _tmp20_ = NULL;
                  ValaCCodeMemberAccess* _tmp21_;
                  ValaCCodeFunctionCall* _tmp22_ = NULL;
                  ValaCCodeFunctionCall* _tmp23_;
                  ValaCCodeFunctionCall* ccall;
                  ValaCCodeIdentifier* _tmp24_ = NULL;
                  ValaCCodeIdentifier* _tmp25_;
                  _tmp6_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) fundamental_class, NULL);
                  _tmp7_ = _tmp6_;
                  _tmp8_ = g_strdup_printf ("%s_CLASS", _tmp7_);
                  _tmp9_ = _tmp8_;
                  _tmp10_ = vala_ccode_identifier_new (_tmp9_);
                  _tmp11_ = _tmp10_;
                  _tmp12_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp11_);
                  _tmp13_ = _tmp12_;
                  _vala_ccode_node_unref0 (_tmp11_);
                  _g_free0 (_tmp9_);
                  _g_free0 (_tmp7_);
                  ccast = _tmp13_;
                  _tmp14_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
                  _tmp15_ = _tmp14_;
                  _tmp16_ = g_strdup_printf ("%s_parent_class", _tmp15_);
                  _tmp17_ = _tmp16_;
                  _tmp18_ = vala_ccode_identifier_new (_tmp17_);
                  _tmp19_ = _tmp18_;
                  vala_ccode_function_call_add_argument (ccast, (ValaCCodeExpression*) _tmp19_);
                  _vala_ccode_node_unref0 (_tmp19_);
                  _g_free0 (_tmp17_);
                  _g_free0 (_tmp15_);
                  _tmp20_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccast, "finalize");
                  _tmp21_ = _tmp20_;
                  _tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
                  _tmp23_ = _tmp22_;
                  _vala_ccode_node_unref0 (_tmp21_);
                  ccall = _tmp23_;
                  _tmp24_ = vala_ccode_identifier_new ("obj");
                  _tmp25_ = _tmp24_;
                  vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp25_);
                  _vala_ccode_node_unref0 (_tmp25_);
                  vala_ccode_function_add_expression (((ValaCCodeBaseModule*) self)->instance_finalize_context->ccode, (ValaCCodeExpression*) ccall);
                  _vala_ccode_node_unref0 (ccall);
                  _vala_ccode_node_unref0 (ccast);
            }
            vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->instance_finalize_context->ccode);
            _vala_code_node_unref0 (fundamental_class);
      } else {
            ValaCCodeIdentifier* _tmp26_ = NULL;
            ValaCCodeIdentifier* _tmp27_;
            ValaCCodeFunctionCall* _tmp28_ = NULL;
            ValaCCodeFunctionCall* _tmp29_;
            ValaCCodeFunctionCall* ccall;
            gchar* _tmp30_ = NULL;
            gchar* _tmp31_;
            ValaCCodeIdentifier* _tmp32_ = NULL;
            ValaCCodeIdentifier* _tmp33_;
            ValaCCodeIdentifier* _tmp34_ = NULL;
            ValaCCodeIdentifier* _tmp35_;
            _tmp26_ = vala_ccode_identifier_new ("g_slice_free");
            _tmp27_ = _tmp26_;
            _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
            _tmp29_ = _tmp28_;
            _vala_ccode_node_unref0 (_tmp27_);
            ccall = _tmp29_;
            _tmp30_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
            _tmp31_ = _tmp30_;
            _tmp32_ = vala_ccode_identifier_new (_tmp31_);
            _tmp33_ = _tmp32_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp33_);
            _vala_ccode_node_unref0 (_tmp33_);
            _g_free0 (_tmp31_);
            _tmp34_ = vala_ccode_identifier_new ("self");
            _tmp35_ = _tmp34_;
            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp35_);
            _vala_ccode_node_unref0 (_tmp35_);
            vala_ccode_function_add_expression (((ValaCCodeBaseModule*) self)->instance_finalize_context->ccode, (ValaCCodeExpression*) ccall);
            _vala_ccode_node_unref0 (ccall);
      }
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, ((ValaCCodeBaseModule*) self)->instance_finalize_context->ccode);
}


static ValaCCodeFunctionCall* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base, ValaProperty* prop) {
      ValaGTypeModule * self;
      ValaCCodeFunctionCall* result = NULL;
      ValaCCodeFunctionCall* _tmp0_ = NULL;
      ValaCCodeFunctionCall* cspec;
      ValaCCodeConstant* _tmp1_ = NULL;
      ValaCCodeConstant* _tmp2_;
      const gchar* _tmp3_ = NULL;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      ValaCCodeConstant* _tmp6_ = NULL;
      ValaCCodeConstant* _tmp7_;
      const gchar* _tmp8_ = NULL;
      gchar* _tmp9_ = NULL;
      gchar* _tmp10_;
      ValaCCodeConstant* _tmp11_ = NULL;
      ValaCCodeConstant* _tmp12_;
      gboolean _tmp13_ = FALSE;
      ValaDataType* _tmp14_ = NULL;
      ValaTypeSymbol* _tmp15_ = NULL;
      gchar* _tmp274_;
      gchar* pflags;
      gboolean _tmp275_ = FALSE;
      ValaPropertyAccessor* _tmp276_ = NULL;
      gboolean _tmp280_ = FALSE;
      ValaPropertyAccessor* _tmp281_ = NULL;
      ValaCCodeConstant* _tmp291_ = NULL;
      ValaCCodeConstant* _tmp292_;
      self = (ValaGTypeModule*) base;
      g_return_val_if_fail (prop != NULL, NULL);
      _tmp0_ = vala_ccode_function_call_new (NULL);
      cspec = _tmp0_;
      _tmp1_ = vala_property_get_canonical_cconstant (prop);
      _tmp2_ = _tmp1_;
      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp2_);
      _vala_ccode_node_unref0 (_tmp2_);
      _tmp3_ = vala_property_get_nick (prop);
      _tmp4_ = g_strdup_printf ("\"%s\"", _tmp3_);
      _tmp5_ = _tmp4_;
      _tmp6_ = vala_ccode_constant_new (_tmp5_);
      _tmp7_ = _tmp6_;
      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp7_);
      _vala_ccode_node_unref0 (_tmp7_);
      _g_free0 (_tmp5_);
      _tmp8_ = vala_property_get_blurb (prop);
      _tmp9_ = g_strdup_printf ("\"%s\"", _tmp8_);
      _tmp10_ = _tmp9_;
      _tmp11_ = vala_ccode_constant_new (_tmp10_);
      _tmp12_ = _tmp11_;
      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp12_);
      _vala_ccode_node_unref0 (_tmp12_);
      _g_free0 (_tmp10_);
      _tmp14_ = vala_property_get_property_type (prop);
      _tmp15_ = vala_data_type_get_data_type (_tmp14_);
      if (VALA_IS_CLASS (_tmp15_)) {
            _tmp13_ = TRUE;
      } else {
            ValaDataType* _tmp16_ = NULL;
            ValaTypeSymbol* _tmp17_ = NULL;
            _tmp16_ = vala_property_get_property_type (prop);
            _tmp17_ = vala_data_type_get_data_type (_tmp16_);
            _tmp13_ = VALA_IS_INTERFACE (_tmp17_);
      }
      if (_tmp13_) {
            ValaDataType* _tmp18_ = NULL;
            ValaTypeSymbol* _tmp19_ = NULL;
            gchar* _tmp20_ = NULL;
            gchar* param_spec_name;
            ValaCCodeIdentifier* _tmp21_ = NULL;
            ValaCCodeIdentifier* _tmp22_;
            _tmp18_ = vala_property_get_property_type (prop);
            _tmp19_ = vala_data_type_get_data_type (_tmp18_);
            _tmp20_ = vala_typesymbol_get_param_spec_function (_tmp19_);
            param_spec_name = _tmp20_;
            _tmp21_ = vala_ccode_identifier_new (param_spec_name);
            _tmp22_ = _tmp21_;
            vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp22_);
            _vala_ccode_node_unref0 (_tmp22_);
            if (g_strcmp0 (param_spec_name, "g_param_spec_string") == 0) {
                  ValaCCodeConstant* _tmp23_ = NULL;
                  ValaCCodeConstant* _tmp24_;
                  _tmp23_ = vala_ccode_constant_new ("NULL");
                  _tmp24_ = _tmp23_;
                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp24_);
                  _vala_ccode_node_unref0 (_tmp24_);
            } else {
                  if (g_strcmp0 (param_spec_name, "g_param_spec_variant") == 0) {
                        ValaCCodeConstant* _tmp25_ = NULL;
                        ValaCCodeConstant* _tmp26_;
                        ValaCCodeConstant* _tmp27_ = NULL;
                        ValaCCodeConstant* _tmp28_;
                        _tmp25_ = vala_ccode_constant_new ("G_VARIANT_TYPE_ANY");
                        _tmp26_ = _tmp25_;
                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp26_);
                        _vala_ccode_node_unref0 (_tmp26_);
                        _tmp27_ = vala_ccode_constant_new ("NULL");
                        _tmp28_ = _tmp27_;
                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp28_);
                        _vala_ccode_node_unref0 (_tmp28_);
                  } else {
                        ValaDataType* _tmp29_ = NULL;
                        ValaTypeSymbol* _tmp30_ = NULL;
                        gchar* _tmp31_ = NULL;
                        gchar* _tmp32_;
                        gboolean _tmp33_;
                        _tmp29_ = vala_property_get_property_type (prop);
                        _tmp30_ = vala_data_type_get_data_type (_tmp29_);
                        _tmp31_ = vala_typesymbol_get_type_id (_tmp30_);
                        _tmp32_ = _tmp31_;
                        _tmp33_ = g_strcmp0 (_tmp32_, "G_TYPE_POINTER") != 0;
                        _g_free0 (_tmp32_);
                        if (_tmp33_) {
                              ValaDataType* _tmp34_ = NULL;
                              ValaTypeSymbol* _tmp35_ = NULL;
                              gchar* _tmp36_ = NULL;
                              gchar* _tmp37_;
                              ValaCCodeIdentifier* _tmp38_ = NULL;
                              ValaCCodeIdentifier* _tmp39_;
                              _tmp34_ = vala_property_get_property_type (prop);
                              _tmp35_ = vala_data_type_get_data_type (_tmp34_);
                              _tmp36_ = vala_typesymbol_get_type_id (_tmp35_);
                              _tmp37_ = _tmp36_;
                              _tmp38_ = vala_ccode_identifier_new (_tmp37_);
                              _tmp39_ = _tmp38_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp39_);
                              _vala_ccode_node_unref0 (_tmp39_);
                              _g_free0 (_tmp37_);
                        }
                  }
            }
            _g_free0 (param_spec_name);
      } else {
            ValaDataType* _tmp40_ = NULL;
            ValaTypeSymbol* _tmp41_ = NULL;
            _tmp40_ = vala_property_get_property_type (prop);
            _tmp41_ = vala_data_type_get_data_type (_tmp40_);
            if (VALA_IS_ENUM (_tmp41_)) {
                  ValaDataType* _tmp42_ = NULL;
                  ValaTypeSymbol* _tmp43_ = NULL;
                  ValaTypeSymbol* _tmp44_;
                  ValaEnum* _tmp45_;
                  ValaEnum* e;
                  gboolean _tmp46_;
                  ValaExpression* _tmp69_ = NULL;
                  _tmp42_ = vala_property_get_property_type (prop);
                  _tmp43_ = vala_data_type_get_data_type (_tmp42_);
                  _tmp44_ = _tmp43_;
                  _tmp45_ = _vala_code_node_ref0 (VALA_IS_ENUM (_tmp44_) ? ((ValaEnum*) _tmp44_) : NULL);
                  e = _tmp45_;
                  _tmp46_ = vala_enum_get_has_type_id (e);
                  if (_tmp46_) {
                        gboolean _tmp47_;
                        gchar* _tmp52_ = NULL;
                        gchar* _tmp53_;
                        ValaCCodeIdentifier* _tmp54_ = NULL;
                        ValaCCodeIdentifier* _tmp55_;
                        _tmp47_ = vala_enum_get_is_flags (e);
                        if (_tmp47_) {
                              ValaCCodeIdentifier* _tmp48_ = NULL;
                              ValaCCodeIdentifier* _tmp49_;
                              _tmp48_ = vala_ccode_identifier_new ("g_param_spec_flags");
                              _tmp49_ = _tmp48_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp49_);
                              _vala_ccode_node_unref0 (_tmp49_);
                        } else {
                              ValaCCodeIdentifier* _tmp50_ = NULL;
                              ValaCCodeIdentifier* _tmp51_;
                              _tmp50_ = vala_ccode_identifier_new ("g_param_spec_enum");
                              _tmp51_ = _tmp50_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp51_);
                              _vala_ccode_node_unref0 (_tmp51_);
                        }
                        _tmp52_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) e);
                        _tmp53_ = _tmp52_;
                        _tmp54_ = vala_ccode_identifier_new (_tmp53_);
                        _tmp55_ = _tmp54_;
                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp55_);
                        _vala_ccode_node_unref0 (_tmp55_);
                        _g_free0 (_tmp53_);
                  } else {
                        gboolean _tmp56_;
                        _tmp56_ = vala_enum_get_is_flags (e);
                        if (_tmp56_) {
                              ValaCCodeIdentifier* _tmp57_ = NULL;
                              ValaCCodeIdentifier* _tmp58_;
                              ValaCCodeConstant* _tmp59_ = NULL;
                              ValaCCodeConstant* _tmp60_;
                              ValaCCodeConstant* _tmp61_ = NULL;
                              ValaCCodeConstant* _tmp62_;
                              _tmp57_ = vala_ccode_identifier_new ("g_param_spec_uint");
                              _tmp58_ = _tmp57_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp58_);
                              _vala_ccode_node_unref0 (_tmp58_);
                              _tmp59_ = vala_ccode_constant_new ("0");
                              _tmp60_ = _tmp59_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp60_);
                              _vala_ccode_node_unref0 (_tmp60_);
                              _tmp61_ = vala_ccode_constant_new ("G_MAXUINT");
                              _tmp62_ = _tmp61_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp62_);
                              _vala_ccode_node_unref0 (_tmp62_);
                        } else {
                              ValaCCodeIdentifier* _tmp63_ = NULL;
                              ValaCCodeIdentifier* _tmp64_;
                              ValaCCodeConstant* _tmp65_ = NULL;
                              ValaCCodeConstant* _tmp66_;
                              ValaCCodeConstant* _tmp67_ = NULL;
                              ValaCCodeConstant* _tmp68_;
                              _tmp63_ = vala_ccode_identifier_new ("g_param_spec_int");
                              _tmp64_ = _tmp63_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp64_);
                              _vala_ccode_node_unref0 (_tmp64_);
                              _tmp65_ = vala_ccode_constant_new ("G_MININT");
                              _tmp66_ = _tmp65_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp66_);
                              _vala_ccode_node_unref0 (_tmp66_);
                              _tmp67_ = vala_ccode_constant_new ("G_MAXINT");
                              _tmp68_ = _tmp67_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp68_);
                              _vala_ccode_node_unref0 (_tmp68_);
                        }
                  }
                  _tmp69_ = vala_property_get_initializer (prop);
                  if (_tmp69_ != NULL) {
                        ValaExpression* _tmp70_ = NULL;
                        ValaCCodeExpression* _tmp71_ = NULL;
                        ValaCCodeExpression* _tmp72_;
                        _tmp70_ = vala_property_get_initializer (prop);
                        _tmp71_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp70_);
                        _tmp72_ = VALA_CCODE_EXPRESSION (_tmp71_);
                        vala_ccode_function_call_add_argument (cspec, _tmp72_);
                        _vala_ccode_node_unref0 (_tmp72_);
                  } else {
                        ValaDataType* _tmp73_ = NULL;
                        ValaTypeSymbol* _tmp74_ = NULL;
                        gchar* _tmp75_ = NULL;
                        gchar* _tmp76_;
                        ValaCCodeConstant* _tmp77_ = NULL;
                        ValaCCodeConstant* _tmp78_;
                        _tmp73_ = vala_property_get_property_type (prop);
                        _tmp74_ = vala_data_type_get_data_type (_tmp73_);
                        _tmp75_ = vala_typesymbol_get_default_value (_tmp74_);
                        _tmp76_ = _tmp75_;
                        _tmp77_ = vala_ccode_constant_new (_tmp76_);
                        _tmp78_ = _tmp77_;
                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp78_);
                        _vala_ccode_node_unref0 (_tmp78_);
                        _g_free0 (_tmp76_);
                  }
                  _vala_code_node_unref0 (e);
            } else {
                  ValaDataType* _tmp79_ = NULL;
                  ValaTypeSymbol* _tmp80_ = NULL;
                  _tmp79_ = vala_property_get_property_type (prop);
                  _tmp80_ = vala_data_type_get_data_type (_tmp79_);
                  if (VALA_IS_STRUCT (_tmp80_)) {
                        ValaDataType* _tmp81_ = NULL;
                        ValaTypeSymbol* _tmp82_ = NULL;
                        ValaStruct* _tmp83_;
                        ValaStruct* st;
                        gchar* _tmp84_ = NULL;
                        gchar* _tmp85_;
                        gboolean _tmp86_;
                        _tmp81_ = vala_property_get_property_type (prop);
                        _tmp82_ = vala_data_type_get_data_type (_tmp81_);
                        _tmp83_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp82_));
                        st = _tmp83_;
                        _tmp84_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                        _tmp85_ = _tmp84_;
                        _tmp86_ = g_strcmp0 (_tmp85_, "G_TYPE_INT") == 0;
                        _g_free0 (_tmp85_);
                        if (_tmp86_) {
                              ValaCCodeIdentifier* _tmp87_ = NULL;
                              ValaCCodeIdentifier* _tmp88_;
                              ValaCCodeConstant* _tmp89_ = NULL;
                              ValaCCodeConstant* _tmp90_;
                              ValaCCodeConstant* _tmp91_ = NULL;
                              ValaCCodeConstant* _tmp92_;
                              ValaExpression* _tmp93_ = NULL;
                              _tmp87_ = vala_ccode_identifier_new ("g_param_spec_int");
                              _tmp88_ = _tmp87_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp88_);
                              _vala_ccode_node_unref0 (_tmp88_);
                              _tmp89_ = vala_ccode_constant_new ("G_MININT");
                              _tmp90_ = _tmp89_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp90_);
                              _vala_ccode_node_unref0 (_tmp90_);
                              _tmp91_ = vala_ccode_constant_new ("G_MAXINT");
                              _tmp92_ = _tmp91_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp92_);
                              _vala_ccode_node_unref0 (_tmp92_);
                              _tmp93_ = vala_property_get_initializer (prop);
                              if (_tmp93_ != NULL) {
                                    ValaExpression* _tmp94_ = NULL;
                                    ValaCCodeExpression* _tmp95_ = NULL;
                                    ValaCCodeExpression* _tmp96_;
                                    _tmp94_ = vala_property_get_initializer (prop);
                                    _tmp95_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp94_);
                                    _tmp96_ = VALA_CCODE_EXPRESSION (_tmp95_);
                                    vala_ccode_function_call_add_argument (cspec, _tmp96_);
                                    _vala_ccode_node_unref0 (_tmp96_);
                              } else {
                                    ValaCCodeConstant* _tmp97_ = NULL;
                                    ValaCCodeConstant* _tmp98_;
                                    _tmp97_ = vala_ccode_constant_new ("0");
                                    _tmp98_ = _tmp97_;
                                    vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp98_);
                                    _vala_ccode_node_unref0 (_tmp98_);
                              }
                        } else {
                              gchar* _tmp99_ = NULL;
                              gchar* _tmp100_;
                              gboolean _tmp101_;
                              _tmp99_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                              _tmp100_ = _tmp99_;
                              _tmp101_ = g_strcmp0 (_tmp100_, "G_TYPE_UINT") == 0;
                              _g_free0 (_tmp100_);
                              if (_tmp101_) {
                                    ValaCCodeIdentifier* _tmp102_ = NULL;
                                    ValaCCodeIdentifier* _tmp103_;
                                    ValaCCodeConstant* _tmp104_ = NULL;
                                    ValaCCodeConstant* _tmp105_;
                                    ValaCCodeConstant* _tmp106_ = NULL;
                                    ValaCCodeConstant* _tmp107_;
                                    ValaExpression* _tmp108_ = NULL;
                                    _tmp102_ = vala_ccode_identifier_new ("g_param_spec_uint");
                                    _tmp103_ = _tmp102_;
                                    vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp103_);
                                    _vala_ccode_node_unref0 (_tmp103_);
                                    _tmp104_ = vala_ccode_constant_new ("0");
                                    _tmp105_ = _tmp104_;
                                    vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp105_);
                                    _vala_ccode_node_unref0 (_tmp105_);
                                    _tmp106_ = vala_ccode_constant_new ("G_MAXUINT");
                                    _tmp107_ = _tmp106_;
                                    vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp107_);
                                    _vala_ccode_node_unref0 (_tmp107_);
                                    _tmp108_ = vala_property_get_initializer (prop);
                                    if (_tmp108_ != NULL) {
                                          ValaExpression* _tmp109_ = NULL;
                                          ValaCCodeExpression* _tmp110_ = NULL;
                                          ValaCCodeExpression* _tmp111_;
                                          _tmp109_ = vala_property_get_initializer (prop);
                                          _tmp110_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp109_);
                                          _tmp111_ = VALA_CCODE_EXPRESSION (_tmp110_);
                                          vala_ccode_function_call_add_argument (cspec, _tmp111_);
                                          _vala_ccode_node_unref0 (_tmp111_);
                                    } else {
                                          ValaCCodeConstant* _tmp112_ = NULL;
                                          ValaCCodeConstant* _tmp113_;
                                          _tmp112_ = vala_ccode_constant_new ("0U");
                                          _tmp113_ = _tmp112_;
                                          vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp113_);
                                          _vala_ccode_node_unref0 (_tmp113_);
                                    }
                              } else {
                                    gchar* _tmp114_ = NULL;
                                    gchar* _tmp115_;
                                    gboolean _tmp116_;
                                    _tmp114_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                    _tmp115_ = _tmp114_;
                                    _tmp116_ = g_strcmp0 (_tmp115_, "G_TYPE_INT64") == 0;
                                    _g_free0 (_tmp115_);
                                    if (_tmp116_) {
                                          ValaCCodeIdentifier* _tmp117_ = NULL;
                                          ValaCCodeIdentifier* _tmp118_;
                                          ValaCCodeConstant* _tmp119_ = NULL;
                                          ValaCCodeConstant* _tmp120_;
                                          ValaCCodeConstant* _tmp121_ = NULL;
                                          ValaCCodeConstant* _tmp122_;
                                          ValaExpression* _tmp123_ = NULL;
                                          _tmp117_ = vala_ccode_identifier_new ("g_param_spec_int64");
                                          _tmp118_ = _tmp117_;
                                          vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp118_);
                                          _vala_ccode_node_unref0 (_tmp118_);
                                          _tmp119_ = vala_ccode_constant_new ("G_MININT64");
                                          _tmp120_ = _tmp119_;
                                          vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp120_);
                                          _vala_ccode_node_unref0 (_tmp120_);
                                          _tmp121_ = vala_ccode_constant_new ("G_MAXINT64");
                                          _tmp122_ = _tmp121_;
                                          vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp122_);
                                          _vala_ccode_node_unref0 (_tmp122_);
                                          _tmp123_ = vala_property_get_initializer (prop);
                                          if (_tmp123_ != NULL) {
                                                ValaExpression* _tmp124_ = NULL;
                                                ValaCCodeExpression* _tmp125_ = NULL;
                                                ValaCCodeExpression* _tmp126_;
                                                _tmp124_ = vala_property_get_initializer (prop);
                                                _tmp125_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp124_);
                                                _tmp126_ = VALA_CCODE_EXPRESSION (_tmp125_);
                                                vala_ccode_function_call_add_argument (cspec, _tmp126_);
                                                _vala_ccode_node_unref0 (_tmp126_);
                                          } else {
                                                ValaCCodeConstant* _tmp127_ = NULL;
                                                ValaCCodeConstant* _tmp128_;
                                                _tmp127_ = vala_ccode_constant_new ("0");
                                                _tmp128_ = _tmp127_;
                                                vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp128_);
                                                _vala_ccode_node_unref0 (_tmp128_);
                                          }
                                    } else {
                                          gchar* _tmp129_ = NULL;
                                          gchar* _tmp130_;
                                          gboolean _tmp131_;
                                          _tmp129_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                          _tmp130_ = _tmp129_;
                                          _tmp131_ = g_strcmp0 (_tmp130_, "G_TYPE_UINT64") == 0;
                                          _g_free0 (_tmp130_);
                                          if (_tmp131_) {
                                                ValaCCodeIdentifier* _tmp132_ = NULL;
                                                ValaCCodeIdentifier* _tmp133_;
                                                ValaCCodeConstant* _tmp134_ = NULL;
                                                ValaCCodeConstant* _tmp135_;
                                                ValaCCodeConstant* _tmp136_ = NULL;
                                                ValaCCodeConstant* _tmp137_;
                                                ValaExpression* _tmp138_ = NULL;
                                                _tmp132_ = vala_ccode_identifier_new ("g_param_spec_uint64");
                                                _tmp133_ = _tmp132_;
                                                vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp133_);
                                                _vala_ccode_node_unref0 (_tmp133_);
                                                _tmp134_ = vala_ccode_constant_new ("0");
                                                _tmp135_ = _tmp134_;
                                                vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp135_);
                                                _vala_ccode_node_unref0 (_tmp135_);
                                                _tmp136_ = vala_ccode_constant_new ("G_MAXUINT64");
                                                _tmp137_ = _tmp136_;
                                                vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp137_);
                                                _vala_ccode_node_unref0 (_tmp137_);
                                                _tmp138_ = vala_property_get_initializer (prop);
                                                if (_tmp138_ != NULL) {
                                                      ValaExpression* _tmp139_ = NULL;
                                                      ValaCCodeExpression* _tmp140_ = NULL;
                                                      ValaCCodeExpression* _tmp141_;
                                                      _tmp139_ = vala_property_get_initializer (prop);
                                                      _tmp140_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp139_);
                                                      _tmp141_ = VALA_CCODE_EXPRESSION (_tmp140_);
                                                      vala_ccode_function_call_add_argument (cspec, _tmp141_);
                                                      _vala_ccode_node_unref0 (_tmp141_);
                                                } else {
                                                      ValaCCodeConstant* _tmp142_ = NULL;
                                                      ValaCCodeConstant* _tmp143_;
                                                      _tmp142_ = vala_ccode_constant_new ("0U");
                                                      _tmp143_ = _tmp142_;
                                                      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp143_);
                                                      _vala_ccode_node_unref0 (_tmp143_);
                                                }
                                          } else {
                                                gchar* _tmp144_ = NULL;
                                                gchar* _tmp145_;
                                                gboolean _tmp146_;
                                                _tmp144_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                _tmp145_ = _tmp144_;
                                                _tmp146_ = g_strcmp0 (_tmp145_, "G_TYPE_LONG") == 0;
                                                _g_free0 (_tmp145_);
                                                if (_tmp146_) {
                                                      ValaCCodeIdentifier* _tmp147_ = NULL;
                                                      ValaCCodeIdentifier* _tmp148_;
                                                      ValaCCodeConstant* _tmp149_ = NULL;
                                                      ValaCCodeConstant* _tmp150_;
                                                      ValaCCodeConstant* _tmp151_ = NULL;
                                                      ValaCCodeConstant* _tmp152_;
                                                      ValaExpression* _tmp153_ = NULL;
                                                      _tmp147_ = vala_ccode_identifier_new ("g_param_spec_long");
                                                      _tmp148_ = _tmp147_;
                                                      vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp148_);
                                                      _vala_ccode_node_unref0 (_tmp148_);
                                                      _tmp149_ = vala_ccode_constant_new ("G_MINLONG");
                                                      _tmp150_ = _tmp149_;
                                                      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp150_);
                                                      _vala_ccode_node_unref0 (_tmp150_);
                                                      _tmp151_ = vala_ccode_constant_new ("G_MAXLONG");
                                                      _tmp152_ = _tmp151_;
                                                      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp152_);
                                                      _vala_ccode_node_unref0 (_tmp152_);
                                                      _tmp153_ = vala_property_get_initializer (prop);
                                                      if (_tmp153_ != NULL) {
                                                            ValaExpression* _tmp154_ = NULL;
                                                            ValaCCodeExpression* _tmp155_ = NULL;
                                                            ValaCCodeExpression* _tmp156_;
                                                            _tmp154_ = vala_property_get_initializer (prop);
                                                            _tmp155_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp154_);
                                                            _tmp156_ = VALA_CCODE_EXPRESSION (_tmp155_);
                                                            vala_ccode_function_call_add_argument (cspec, _tmp156_);
                                                            _vala_ccode_node_unref0 (_tmp156_);
                                                      } else {
                                                            ValaCCodeConstant* _tmp157_ = NULL;
                                                            ValaCCodeConstant* _tmp158_;
                                                            _tmp157_ = vala_ccode_constant_new ("0L");
                                                            _tmp158_ = _tmp157_;
                                                            vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp158_);
                                                            _vala_ccode_node_unref0 (_tmp158_);
                                                      }
                                                } else {
                                                      gchar* _tmp159_ = NULL;
                                                      gchar* _tmp160_;
                                                      gboolean _tmp161_;
                                                      _tmp159_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                      _tmp160_ = _tmp159_;
                                                      _tmp161_ = g_strcmp0 (_tmp160_, "G_TYPE_ULONG") == 0;
                                                      _g_free0 (_tmp160_);
                                                      if (_tmp161_) {
                                                            ValaCCodeIdentifier* _tmp162_ = NULL;
                                                            ValaCCodeIdentifier* _tmp163_;
                                                            ValaCCodeConstant* _tmp164_ = NULL;
                                                            ValaCCodeConstant* _tmp165_;
                                                            ValaCCodeConstant* _tmp166_ = NULL;
                                                            ValaCCodeConstant* _tmp167_;
                                                            ValaExpression* _tmp168_ = NULL;
                                                            _tmp162_ = vala_ccode_identifier_new ("g_param_spec_ulong");
                                                            _tmp163_ = _tmp162_;
                                                            vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp163_);
                                                            _vala_ccode_node_unref0 (_tmp163_);
                                                            _tmp164_ = vala_ccode_constant_new ("0");
                                                            _tmp165_ = _tmp164_;
                                                            vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp165_);
                                                            _vala_ccode_node_unref0 (_tmp165_);
                                                            _tmp166_ = vala_ccode_constant_new ("G_MAXULONG");
                                                            _tmp167_ = _tmp166_;
                                                            vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp167_);
                                                            _vala_ccode_node_unref0 (_tmp167_);
                                                            _tmp168_ = vala_property_get_initializer (prop);
                                                            if (_tmp168_ != NULL) {
                                                                  ValaExpression* _tmp169_ = NULL;
                                                                  ValaCCodeExpression* _tmp170_ = NULL;
                                                                  ValaCCodeExpression* _tmp171_;
                                                                  _tmp169_ = vala_property_get_initializer (prop);
                                                                  _tmp170_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp169_);
                                                                  _tmp171_ = VALA_CCODE_EXPRESSION (_tmp170_);
                                                                  vala_ccode_function_call_add_argument (cspec, _tmp171_);
                                                                  _vala_ccode_node_unref0 (_tmp171_);
                                                            } else {
                                                                  ValaCCodeConstant* _tmp172_ = NULL;
                                                                  ValaCCodeConstant* _tmp173_;
                                                                  _tmp172_ = vala_ccode_constant_new ("0UL");
                                                                  _tmp173_ = _tmp172_;
                                                                  vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp173_);
                                                                  _vala_ccode_node_unref0 (_tmp173_);
                                                            }
                                                      } else {
                                                            gchar* _tmp174_ = NULL;
                                                            gchar* _tmp175_;
                                                            gboolean _tmp176_;
                                                            _tmp174_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                            _tmp175_ = _tmp174_;
                                                            _tmp176_ = g_strcmp0 (_tmp175_, "G_TYPE_BOOLEAN") == 0;
                                                            _g_free0 (_tmp175_);
                                                            if (_tmp176_) {
                                                                  ValaCCodeIdentifier* _tmp177_ = NULL;
                                                                  ValaCCodeIdentifier* _tmp178_;
                                                                  ValaExpression* _tmp179_ = NULL;
                                                                  _tmp177_ = vala_ccode_identifier_new ("g_param_spec_boolean");
                                                                  _tmp178_ = _tmp177_;
                                                                  vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp178_);
                                                                  _vala_ccode_node_unref0 (_tmp178_);
                                                                  _tmp179_ = vala_property_get_initializer (prop);
                                                                  if (_tmp179_ != NULL) {
                                                                        ValaExpression* _tmp180_ = NULL;
                                                                        ValaCCodeExpression* _tmp181_ = NULL;
                                                                        ValaCCodeExpression* _tmp182_;
                                                                        _tmp180_ = vala_property_get_initializer (prop);
                                                                        _tmp181_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp180_);
                                                                        _tmp182_ = VALA_CCODE_EXPRESSION (_tmp181_);
                                                                        vala_ccode_function_call_add_argument (cspec, _tmp182_);
                                                                        _vala_ccode_node_unref0 (_tmp182_);
                                                                  } else {
                                                                        ValaCCodeConstant* _tmp183_ = NULL;
                                                                        ValaCCodeConstant* _tmp184_;
                                                                        _tmp183_ = vala_ccode_constant_new ("FALSE");
                                                                        _tmp184_ = _tmp183_;
                                                                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp184_);
                                                                        _vala_ccode_node_unref0 (_tmp184_);
                                                                  }
                                                            } else {
                                                                  gchar* _tmp185_ = NULL;
                                                                  gchar* _tmp186_;
                                                                  gboolean _tmp187_;
                                                                  _tmp185_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                                  _tmp186_ = _tmp185_;
                                                                  _tmp187_ = g_strcmp0 (_tmp186_, "G_TYPE_CHAR") == 0;
                                                                  _g_free0 (_tmp186_);
                                                                  if (_tmp187_) {
                                                                        ValaCCodeIdentifier* _tmp188_ = NULL;
                                                                        ValaCCodeIdentifier* _tmp189_;
                                                                        ValaCCodeConstant* _tmp190_ = NULL;
                                                                        ValaCCodeConstant* _tmp191_;
                                                                        ValaCCodeConstant* _tmp192_ = NULL;
                                                                        ValaCCodeConstant* _tmp193_;
                                                                        ValaExpression* _tmp194_ = NULL;
                                                                        _tmp188_ = vala_ccode_identifier_new ("g_param_spec_char");
                                                                        _tmp189_ = _tmp188_;
                                                                        vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp189_);
                                                                        _vala_ccode_node_unref0 (_tmp189_);
                                                                        _tmp190_ = vala_ccode_constant_new ("G_MININT8");
                                                                        _tmp191_ = _tmp190_;
                                                                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp191_);
                                                                        _vala_ccode_node_unref0 (_tmp191_);
                                                                        _tmp192_ = vala_ccode_constant_new ("G_MAXINT8");
                                                                        _tmp193_ = _tmp192_;
                                                                        vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp193_);
                                                                        _vala_ccode_node_unref0 (_tmp193_);
                                                                        _tmp194_ = vala_property_get_initializer (prop);
                                                                        if (_tmp194_ != NULL) {
                                                                              ValaExpression* _tmp195_ = NULL;
                                                                              ValaCCodeExpression* _tmp196_ = NULL;
                                                                              ValaCCodeExpression* _tmp197_;
                                                                              _tmp195_ = vala_property_get_initializer (prop);
                                                                              _tmp196_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp195_);
                                                                              _tmp197_ = VALA_CCODE_EXPRESSION (_tmp196_);
                                                                              vala_ccode_function_call_add_argument (cspec, _tmp197_);
                                                                              _vala_ccode_node_unref0 (_tmp197_);
                                                                        } else {
                                                                              ValaCCodeConstant* _tmp198_ = NULL;
                                                                              ValaCCodeConstant* _tmp199_;
                                                                              _tmp198_ = vala_ccode_constant_new ("0");
                                                                              _tmp199_ = _tmp198_;
                                                                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp199_);
                                                                              _vala_ccode_node_unref0 (_tmp199_);
                                                                        }
                                                                  } else {
                                                                        gchar* _tmp200_ = NULL;
                                                                        gchar* _tmp201_;
                                                                        gboolean _tmp202_;
                                                                        _tmp200_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                                        _tmp201_ = _tmp200_;
                                                                        _tmp202_ = g_strcmp0 (_tmp201_, "G_TYPE_UCHAR") == 0;
                                                                        _g_free0 (_tmp201_);
                                                                        if (_tmp202_) {
                                                                              ValaCCodeIdentifier* _tmp203_ = NULL;
                                                                              ValaCCodeIdentifier* _tmp204_;
                                                                              ValaCCodeConstant* _tmp205_ = NULL;
                                                                              ValaCCodeConstant* _tmp206_;
                                                                              ValaCCodeConstant* _tmp207_ = NULL;
                                                                              ValaCCodeConstant* _tmp208_;
                                                                              ValaExpression* _tmp209_ = NULL;
                                                                              _tmp203_ = vala_ccode_identifier_new ("g_param_spec_uchar");
                                                                              _tmp204_ = _tmp203_;
                                                                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp204_);
                                                                              _vala_ccode_node_unref0 (_tmp204_);
                                                                              _tmp205_ = vala_ccode_constant_new ("0");
                                                                              _tmp206_ = _tmp205_;
                                                                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp206_);
                                                                              _vala_ccode_node_unref0 (_tmp206_);
                                                                              _tmp207_ = vala_ccode_constant_new ("G_MAXUINT8");
                                                                              _tmp208_ = _tmp207_;
                                                                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp208_);
                                                                              _vala_ccode_node_unref0 (_tmp208_);
                                                                              _tmp209_ = vala_property_get_initializer (prop);
                                                                              if (_tmp209_ != NULL) {
                                                                                    ValaExpression* _tmp210_ = NULL;
                                                                                    ValaCCodeExpression* _tmp211_ = NULL;
                                                                                    ValaCCodeExpression* _tmp212_;
                                                                                    _tmp210_ = vala_property_get_initializer (prop);
                                                                                    _tmp211_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp210_);
                                                                                    _tmp212_ = VALA_CCODE_EXPRESSION (_tmp211_);
                                                                                    vala_ccode_function_call_add_argument (cspec, _tmp212_);
                                                                                    _vala_ccode_node_unref0 (_tmp212_);
                                                                              } else {
                                                                                    ValaCCodeConstant* _tmp213_ = NULL;
                                                                                    ValaCCodeConstant* _tmp214_;
                                                                                    _tmp213_ = vala_ccode_constant_new ("0");
                                                                                    _tmp214_ = _tmp213_;
                                                                                    vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp214_);
                                                                                    _vala_ccode_node_unref0 (_tmp214_);
                                                                              }
                                                                        } else {
                                                                              gchar* _tmp215_ = NULL;
                                                                              gchar* _tmp216_;
                                                                              gboolean _tmp217_;
                                                                              _tmp215_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                                              _tmp216_ = _tmp215_;
                                                                              _tmp217_ = g_strcmp0 (_tmp216_, "G_TYPE_FLOAT") == 0;
                                                                              _g_free0 (_tmp216_);
                                                                              if (_tmp217_) {
                                                                                    ValaCCodeIdentifier* _tmp218_ = NULL;
                                                                                    ValaCCodeIdentifier* _tmp219_;
                                                                                    ValaCCodeConstant* _tmp220_ = NULL;
                                                                                    ValaCCodeConstant* _tmp221_;
                                                                                    ValaCCodeConstant* _tmp222_ = NULL;
                                                                                    ValaCCodeConstant* _tmp223_;
                                                                                    ValaExpression* _tmp224_ = NULL;
                                                                                    _tmp218_ = vala_ccode_identifier_new ("g_param_spec_float");
                                                                                    _tmp219_ = _tmp218_;
                                                                                    vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp219_);
                                                                                    _vala_ccode_node_unref0 (_tmp219_);
                                                                                    _tmp220_ = vala_ccode_constant_new ("-G_MAXFLOAT");
                                                                                    _tmp221_ = _tmp220_;
                                                                                    vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp221_);
                                                                                    _vala_ccode_node_unref0 (_tmp221_);
                                                                                    _tmp222_ = vala_ccode_constant_new ("G_MAXFLOAT");
                                                                                    _tmp223_ = _tmp222_;
                                                                                    vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp223_);
                                                                                    _vala_ccode_node_unref0 (_tmp223_);
                                                                                    _tmp224_ = vala_property_get_initializer (prop);
                                                                                    if (_tmp224_ != NULL) {
                                                                                          ValaExpression* _tmp225_ = NULL;
                                                                                          ValaCCodeExpression* _tmp226_ = NULL;
                                                                                          ValaCCodeExpression* _tmp227_;
                                                                                          _tmp225_ = vala_property_get_initializer (prop);
                                                                                          _tmp226_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp225_);
                                                                                          _tmp227_ = VALA_CCODE_EXPRESSION (_tmp226_);
                                                                                          vala_ccode_function_call_add_argument (cspec, _tmp227_);
                                                                                          _vala_ccode_node_unref0 (_tmp227_);
                                                                                    } else {
                                                                                          ValaCCodeConstant* _tmp228_ = NULL;
                                                                                          ValaCCodeConstant* _tmp229_;
                                                                                          _tmp228_ = vala_ccode_constant_new ("0.0F");
                                                                                          _tmp229_ = _tmp228_;
                                                                                          vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp229_);
                                                                                          _vala_ccode_node_unref0 (_tmp229_);
                                                                                    }
                                                                              } else {
                                                                                    gchar* _tmp230_ = NULL;
                                                                                    gchar* _tmp231_;
                                                                                    gboolean _tmp232_;
                                                                                    _tmp230_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                                                    _tmp231_ = _tmp230_;
                                                                                    _tmp232_ = g_strcmp0 (_tmp231_, "G_TYPE_DOUBLE") == 0;
                                                                                    _g_free0 (_tmp231_);
                                                                                    if (_tmp232_) {
                                                                                          ValaCCodeIdentifier* _tmp233_ = NULL;
                                                                                          ValaCCodeIdentifier* _tmp234_;
                                                                                          ValaCCodeConstant* _tmp235_ = NULL;
                                                                                          ValaCCodeConstant* _tmp236_;
                                                                                          ValaCCodeConstant* _tmp237_ = NULL;
                                                                                          ValaCCodeConstant* _tmp238_;
                                                                                          ValaExpression* _tmp239_ = NULL;
                                                                                          _tmp233_ = vala_ccode_identifier_new ("g_param_spec_double");
                                                                                          _tmp234_ = _tmp233_;
                                                                                          vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp234_);
                                                                                          _vala_ccode_node_unref0 (_tmp234_);
                                                                                          _tmp235_ = vala_ccode_constant_new ("-G_MAXDOUBLE");
                                                                                          _tmp236_ = _tmp235_;
                                                                                          vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp236_);
                                                                                          _vala_ccode_node_unref0 (_tmp236_);
                                                                                          _tmp237_ = vala_ccode_constant_new ("G_MAXDOUBLE");
                                                                                          _tmp238_ = _tmp237_;
                                                                                          vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp238_);
                                                                                          _vala_ccode_node_unref0 (_tmp238_);
                                                                                          _tmp239_ = vala_property_get_initializer (prop);
                                                                                          if (_tmp239_ != NULL) {
                                                                                                ValaExpression* _tmp240_ = NULL;
                                                                                                ValaCCodeExpression* _tmp241_ = NULL;
                                                                                                ValaCCodeExpression* _tmp242_;
                                                                                                _tmp240_ = vala_property_get_initializer (prop);
                                                                                                _tmp241_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp240_);
                                                                                                _tmp242_ = VALA_CCODE_EXPRESSION (_tmp241_);
                                                                                                vala_ccode_function_call_add_argument (cspec, _tmp242_);
                                                                                                _vala_ccode_node_unref0 (_tmp242_);
                                                                                          } else {
                                                                                                ValaCCodeConstant* _tmp243_ = NULL;
                                                                                                ValaCCodeConstant* _tmp244_;
                                                                                                _tmp243_ = vala_ccode_constant_new ("0.0");
                                                                                                _tmp244_ = _tmp243_;
                                                                                                vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp244_);
                                                                                                _vala_ccode_node_unref0 (_tmp244_);
                                                                                          }
                                                                                    } else {
                                                                                          gchar* _tmp245_ = NULL;
                                                                                          gchar* _tmp246_;
                                                                                          gboolean _tmp247_;
                                                                                          _tmp245_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                                                          _tmp246_ = _tmp245_;
                                                                                          _tmp247_ = g_strcmp0 (_tmp246_, "G_TYPE_GTYPE") == 0;
                                                                                          _g_free0 (_tmp246_);
                                                                                          if (_tmp247_) {
                                                                                                ValaCCodeIdentifier* _tmp248_ = NULL;
                                                                                                ValaCCodeIdentifier* _tmp249_;
                                                                                                ValaExpression* _tmp250_ = NULL;
                                                                                                _tmp248_ = vala_ccode_identifier_new ("g_param_spec_gtype");
                                                                                                _tmp249_ = _tmp248_;
                                                                                                vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp249_);
                                                                                                _vala_ccode_node_unref0 (_tmp249_);
                                                                                                _tmp250_ = vala_property_get_initializer (prop);
                                                                                                if (_tmp250_ != NULL) {
                                                                                                      ValaExpression* _tmp251_ = NULL;
                                                                                                      ValaCCodeExpression* _tmp252_ = NULL;
                                                                                                      ValaCCodeExpression* _tmp253_;
                                                                                                      _tmp251_ = vala_property_get_initializer (prop);
                                                                                                      _tmp252_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp251_);
                                                                                                      _tmp253_ = VALA_CCODE_EXPRESSION (_tmp252_);
                                                                                                      vala_ccode_function_call_add_argument (cspec, _tmp253_);
                                                                                                      _vala_ccode_node_unref0 (_tmp253_);
                                                                                                } else {
                                                                                                      ValaCCodeConstant* _tmp254_ = NULL;
                                                                                                      ValaCCodeConstant* _tmp255_;
                                                                                                      _tmp254_ = vala_ccode_constant_new ("G_TYPE_NONE");
                                                                                                      _tmp255_ = _tmp254_;
                                                                                                      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp255_);
                                                                                                      _vala_ccode_node_unref0 (_tmp255_);
                                                                                                }
                                                                                          } else {
                                                                                                ValaCCodeIdentifier* _tmp256_ = NULL;
                                                                                                ValaCCodeIdentifier* _tmp257_;
                                                                                                gchar* _tmp258_ = NULL;
                                                                                                gchar* _tmp259_;
                                                                                                ValaCCodeIdentifier* _tmp260_ = NULL;
                                                                                                ValaCCodeIdentifier* _tmp261_;
                                                                                                _tmp256_ = vala_ccode_identifier_new ("g_param_spec_boxed");
                                                                                                _tmp257_ = _tmp256_;
                                                                                                vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp257_);
                                                                                                _vala_ccode_node_unref0 (_tmp257_);
                                                                                                _tmp258_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) st);
                                                                                                _tmp259_ = _tmp258_;
                                                                                                _tmp260_ = vala_ccode_identifier_new (_tmp259_);
                                                                                                _tmp261_ = _tmp260_;
                                                                                                vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp261_);
                                                                                                _vala_ccode_node_unref0 (_tmp261_);
                                                                                                _g_free0 (_tmp259_);
                                                                                          }
                                                                                    }
                                                                              }
                                                                        }
                                                                  }
                                                            }
                                                      }
                                                }
                                          }
                                    }
                              }
                        }
                        _vala_code_node_unref0 (st);
                  } else {
                        gboolean _tmp262_ = FALSE;
                        ValaDataType* _tmp263_ = NULL;
                        _tmp263_ = vala_property_get_property_type (prop);
                        if (VALA_IS_ARRAY_TYPE (_tmp263_)) {
                              ValaDataType* _tmp264_ = NULL;
                              ValaDataType* _tmp265_ = NULL;
                              ValaTypeSymbol* _tmp266_ = NULL;
                              ValaTypeSymbol* _tmp267_ = NULL;
                              _tmp264_ = vala_property_get_property_type (prop);
                              _tmp265_ = vala_array_type_get_element_type (VALA_ARRAY_TYPE (_tmp264_));
                              _tmp266_ = vala_data_type_get_data_type (_tmp265_);
                              _tmp267_ = vala_data_type_get_data_type (((ValaCCodeBaseModule*) self)->string_type);
                              _tmp262_ = _tmp266_ == _tmp267_;
                        } else {
                              _tmp262_ = FALSE;
                        }
                        if (_tmp262_) {
                              ValaCCodeIdentifier* _tmp268_ = NULL;
                              ValaCCodeIdentifier* _tmp269_;
                              ValaCCodeIdentifier* _tmp270_ = NULL;
                              ValaCCodeIdentifier* _tmp271_;
                              _tmp268_ = vala_ccode_identifier_new ("g_param_spec_boxed");
                              _tmp269_ = _tmp268_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp269_);
                              _vala_ccode_node_unref0 (_tmp269_);
                              _tmp270_ = vala_ccode_identifier_new ("G_TYPE_STRV");
                              _tmp271_ = _tmp270_;
                              vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp271_);
                              _vala_ccode_node_unref0 (_tmp271_);
                        } else {
                              ValaCCodeIdentifier* _tmp272_ = NULL;
                              ValaCCodeIdentifier* _tmp273_;
                              _tmp272_ = vala_ccode_identifier_new ("g_param_spec_pointer");
                              _tmp273_ = _tmp272_;
                              vala_ccode_function_call_set_call (cspec, (ValaCCodeExpression*) _tmp273_);
                              _vala_ccode_node_unref0 (_tmp273_);
                        }
                  }
            }
      }
      _tmp274_ = g_strdup ("G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB");
      pflags = _tmp274_;
      _tmp276_ = vala_property_get_get_accessor (prop);
      if (_tmp276_ != NULL) {
            ValaPropertyAccessor* _tmp277_ = NULL;
            ValaSymbolAccessibility _tmp278_;
            _tmp277_ = vala_property_get_get_accessor (prop);
            _tmp278_ = vala_symbol_get_access ((ValaSymbol*) _tmp277_);
            _tmp275_ = _tmp278_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
      } else {
            _tmp275_ = FALSE;
      }
      if (_tmp275_) {
            gchar* _tmp279_ = NULL;
            _tmp279_ = g_strdup_printf ("%s%s", pflags, " | G_PARAM_READABLE");
            _g_free0 (pflags);
            pflags = _tmp279_;
      }
      _tmp281_ = vala_property_get_set_accessor (prop);
      if (_tmp281_ != NULL) {
            ValaPropertyAccessor* _tmp282_ = NULL;
            ValaSymbolAccessibility _tmp283_;
            _tmp282_ = vala_property_get_set_accessor (prop);
            _tmp283_ = vala_symbol_get_access ((ValaSymbol*) _tmp282_);
            _tmp280_ = _tmp283_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
      } else {
            _tmp280_ = FALSE;
      }
      if (_tmp280_) {
            gchar* _tmp284_ = NULL;
            ValaPropertyAccessor* _tmp285_ = NULL;
            gboolean _tmp286_;
            _tmp284_ = g_strdup_printf ("%s%s", pflags, " | G_PARAM_WRITABLE");
            _g_free0 (pflags);
            pflags = _tmp284_;
            _tmp285_ = vala_property_get_set_accessor (prop);
            _tmp286_ = vala_property_accessor_get_construction (_tmp285_);
            if (_tmp286_) {
                  ValaPropertyAccessor* _tmp287_ = NULL;
                  gboolean _tmp288_;
                  _tmp287_ = vala_property_get_set_accessor (prop);
                  _tmp288_ = vala_property_accessor_get_writable (_tmp287_);
                  if (_tmp288_) {
                        gchar* _tmp289_ = NULL;
                        _tmp289_ = g_strdup_printf ("%s%s", pflags, " | G_PARAM_CONSTRUCT");
                        _g_free0 (pflags);
                        pflags = _tmp289_;
                  } else {
                        gchar* _tmp290_ = NULL;
                        _tmp290_ = g_strdup_printf ("%s%s", pflags, " | G_PARAM_CONSTRUCT_ONLY");
                        _g_free0 (pflags);
                        pflags = _tmp290_;
                  }
            }
      }
      _tmp291_ = vala_ccode_constant_new (pflags);
      _tmp292_ = _tmp291_;
      vala_ccode_function_call_add_argument (cspec, (ValaCCodeExpression*) _tmp292_);
      _vala_ccode_node_unref0 (_tmp292_);
      result = cspec;
      _g_free0 (pflags);
      return result;
}


static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space) {
      ValaGTypeModule * self;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gboolean _tmp2_;
      gboolean _tmp3_;
      gchar* _tmp13_ = NULL;
      gchar* _tmp14_;
      gchar* _tmp15_ = NULL;
      gchar* _tmp16_;
      ValaCCodeStruct* _tmp17_ = NULL;
      ValaCCodeStruct* _tmp18_;
      ValaCCodeStruct* type_struct;
      ValaCCodeNewline* _tmp19_ = NULL;
      ValaCCodeNewline* _tmp20_;
      gchar* _tmp21_ = NULL;
      gchar* _tmp22_;
      gchar* _tmp23_ = NULL;
      gchar* _tmp24_;
      gchar* macro;
      gchar* _tmp25_ = NULL;
      gchar* _tmp26_;
      ValaCCodeMacroReplacement* _tmp27_ = NULL;
      ValaCCodeMacroReplacement* _tmp28_;
      gchar* _tmp29_ = NULL;
      gchar* _tmp30_;
      gchar* _tmp31_ = NULL;
      gchar* _tmp32_;
      gchar* _tmp33_ = NULL;
      gchar* _tmp34_ = NULL;
      gchar* _tmp35_;
      gchar* _tmp36_ = NULL;
      gchar* _tmp37_;
      ValaCCodeMacroReplacement* _tmp38_ = NULL;
      ValaCCodeMacroReplacement* _tmp39_;
      gchar* _tmp40_ = NULL;
      gchar* _tmp41_;
      gchar* _tmp42_ = NULL;
      gchar* _tmp43_ = NULL;
      gchar* _tmp44_;
      gchar* _tmp45_ = NULL;
      gchar* _tmp46_;
      ValaCCodeMacroReplacement* _tmp47_ = NULL;
      ValaCCodeMacroReplacement* _tmp48_;
      gchar* _tmp49_ = NULL;
      gchar* _tmp50_;
      gchar* _tmp51_ = NULL;
      gchar* _tmp52_;
      gchar* _tmp53_ = NULL;
      gchar* _tmp54_ = NULL;
      gchar* _tmp55_;
      gchar* _tmp56_ = NULL;
      gchar* _tmp57_;
      ValaCCodeMacroReplacement* _tmp58_ = NULL;
      ValaCCodeMacroReplacement* _tmp59_;
      ValaCCodeNewline* _tmp60_ = NULL;
      ValaCCodeNewline* _tmp61_;
      gchar* _tmp62_ = NULL;
      gchar* _tmp63_;
      gchar* _tmp64_ = NULL;
      gchar* _tmp65_;
      gchar* _tmp66_ = NULL;
      gchar* _tmp67_;
      ValaCCodeVariableDeclarator* _tmp68_ = NULL;
      ValaCCodeVariableDeclarator* _tmp69_;
      ValaCCodeTypeDefinition* _tmp70_ = NULL;
      ValaCCodeTypeDefinition* _tmp71_;
      const gchar* _tmp72_ = NULL;
      gchar* _tmp73_ = NULL;
      gchar* _tmp74_;
      gchar* _tmp75_ = NULL;
      gchar* _tmp76_;
      ValaCCodeVariableDeclarator* _tmp77_ = NULL;
      ValaCCodeVariableDeclarator* _tmp78_;
      ValaCCodeTypeDefinition* _tmp79_ = NULL;
      ValaCCodeTypeDefinition* _tmp80_;
      ValaCodeContext* _tmp163_ = NULL;
      ValaInterfaceRegisterFunction* _tmp164_ = NULL;
      ValaInterfaceRegisterFunction* type_fun;
      ValaCCodeFragment* _tmp165_ = NULL;
      ValaCCodeFragment* _tmp166_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (iface != NULL);
      g_return_if_fail (decl_space != NULL);
      _tmp0_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) iface, _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      if (_tmp3_) {
            return;
      }
      {
            ValaList* _tmp4_ = NULL;
            ValaList* _prerequisite_list;
            gint _tmp5_;
            gint _prerequisite_size;
            gint _prerequisite_index;
            _tmp4_ = vala_interface_get_prerequisites (iface);
            _prerequisite_list = _tmp4_;
            _tmp5_ = vala_collection_get_size ((ValaCollection*) _prerequisite_list);
            _prerequisite_size = _tmp5_;
            _prerequisite_index = -1;
            while (TRUE) {
                  gpointer _tmp6_ = NULL;
                  ValaDataType* prerequisite;
                  ValaTypeSymbol* _tmp7_ = NULL;
                  ValaTypeSymbol* _tmp8_;
                  ValaClass* _tmp9_;
                  ValaClass* prereq_cl;
                  ValaTypeSymbol* _tmp10_ = NULL;
                  ValaTypeSymbol* _tmp11_;
                  ValaInterface* _tmp12_;
                  ValaInterface* prereq_iface;
                  _prerequisite_index = _prerequisite_index + 1;
                  if (!(_prerequisite_index < _prerequisite_size)) {
                        break;
                  }
                  _tmp6_ = vala_list_get (_prerequisite_list, _prerequisite_index);
                  prerequisite = (ValaDataType*) _tmp6_;
                  _tmp7_ = vala_data_type_get_data_type (prerequisite);
                  _tmp8_ = _tmp7_;
                  _tmp9_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp8_) ? ((ValaClass*) _tmp8_) : NULL);
                  prereq_cl = _tmp9_;
                  _tmp10_ = vala_data_type_get_data_type (prerequisite);
                  _tmp11_ = _tmp10_;
                  _tmp12_ = _vala_code_node_ref0 (VALA_IS_INTERFACE (_tmp11_) ? ((ValaInterface*) _tmp11_) : NULL);
                  prereq_iface = _tmp12_;
                  if (prereq_cl != NULL) {
                        vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, prereq_cl, decl_space);
                  } else {
                        if (prereq_iface != NULL) {
                              vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, prereq_iface, decl_space);
                        }
                  }
                  _vala_code_node_unref0 (prereq_iface);
                  _vala_code_node_unref0 (prereq_cl);
                  _vala_code_node_unref0 (prerequisite);
            }
            _vala_iterable_unref0 (_prerequisite_list);
      }
      _tmp13_ = vala_interface_get_type_cname (iface);
      _tmp14_ = _tmp13_;
      _tmp15_ = g_strdup_printf ("_%s", _tmp14_);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_struct_new (_tmp16_);
      _tmp18_ = _tmp17_;
      _g_free0 (_tmp16_);
      _g_free0 (_tmp14_);
      type_struct = _tmp18_;
      _tmp19_ = vala_ccode_newline_new ();
      _tmp20_ = _tmp19_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp20_);
      _vala_ccode_node_unref0 (_tmp20_);
      _tmp21_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) iface, NULL);
      _tmp22_ = _tmp21_;
      _tmp23_ = g_strdup_printf ("(%s_get_type ())", _tmp22_);
      _tmp24_ = _tmp23_;
      _g_free0 (_tmp22_);
      macro = _tmp24_;
      _tmp25_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) iface);
      _tmp26_ = _tmp25_;
      _tmp27_ = vala_ccode_macro_replacement_new (_tmp26_, macro);
      _tmp28_ = _tmp27_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp28_);
      _vala_ccode_node_unref0 (_tmp28_);
      _g_free0 (_tmp26_);
      _tmp29_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) iface);
      _tmp30_ = _tmp29_;
      _tmp31_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
      _tmp32_ = _tmp31_;
      _tmp33_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp30_, _tmp32_);
      _g_free0 (macro);
      macro = _tmp33_;
      _g_free0 (_tmp32_);
      _g_free0 (_tmp30_);
      _tmp34_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) iface, NULL);
      _tmp35_ = _tmp34_;
      _tmp36_ = g_strdup_printf ("%s(obj)", _tmp35_);
      _tmp37_ = _tmp36_;
      _tmp38_ = vala_ccode_macro_replacement_new (_tmp37_, macro);
      _tmp39_ = _tmp38_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp39_);
      _vala_ccode_node_unref0 (_tmp39_);
      _g_free0 (_tmp37_);
      _g_free0 (_tmp35_);
      _tmp40_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) iface);
      _tmp41_ = _tmp40_;
      _tmp42_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp41_);
      _g_free0 (macro);
      macro = _tmp42_;
      _g_free0 (_tmp41_);
      _tmp43_ = vala_ccode_base_module_get_type_check_function ((ValaCCodeBaseModule*) self, (ValaTypeSymbol*) iface);
      _tmp44_ = _tmp43_;
      _tmp45_ = g_strdup_printf ("%s(obj)", _tmp44_);
      _tmp46_ = _tmp45_;
      _tmp47_ = vala_ccode_macro_replacement_new (_tmp46_, macro);
      _tmp48_ = _tmp47_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp48_);
      _vala_ccode_node_unref0 (_tmp48_);
      _g_free0 (_tmp46_);
      _g_free0 (_tmp44_);
      _tmp49_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) iface);
      _tmp50_ = _tmp49_;
      _tmp51_ = vala_interface_get_type_cname (iface);
      _tmp52_ = _tmp51_;
      _tmp53_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))", _tmp50_, _tmp52_);
      _g_free0 (macro);
      macro = _tmp53_;
      _g_free0 (_tmp52_);
      _g_free0 (_tmp50_);
      _tmp54_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) iface, NULL);
      _tmp55_ = _tmp54_;
      _tmp56_ = g_strdup_printf ("%s_GET_INTERFACE(obj)", _tmp55_);
      _tmp57_ = _tmp56_;
      _tmp58_ = vala_ccode_macro_replacement_new (_tmp57_, macro);
      _tmp59_ = _tmp58_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp59_);
      _vala_ccode_node_unref0 (_tmp59_);
      _g_free0 (_tmp57_);
      _g_free0 (_tmp55_);
      _tmp60_ = vala_ccode_newline_new ();
      _tmp61_ = _tmp60_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp61_);
      _vala_ccode_node_unref0 (_tmp61_);
      _tmp62_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
      _tmp63_ = _tmp62_;
      _tmp64_ = g_strdup_printf ("struct _%s", _tmp63_);
      _tmp65_ = _tmp64_;
      _tmp66_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
      _tmp67_ = _tmp66_;
      _tmp68_ = vala_ccode_variable_declarator_new (_tmp67_, NULL, NULL);
      _tmp69_ = _tmp68_;
      _tmp70_ = vala_ccode_type_definition_new (_tmp65_, (ValaCCodeDeclarator*) _tmp69_);
      _tmp71_ = _tmp70_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp71_);
      _vala_ccode_node_unref0 (_tmp71_);
      _vala_ccode_node_unref0 (_tmp69_);
      _g_free0 (_tmp67_);
      _g_free0 (_tmp65_);
      _g_free0 (_tmp63_);
      _tmp72_ = vala_ccode_struct_get_name (type_struct);
      _tmp73_ = g_strdup_printf ("struct %s", _tmp72_);
      _tmp74_ = _tmp73_;
      _tmp75_ = vala_interface_get_type_cname (iface);
      _tmp76_ = _tmp75_;
      _tmp77_ = vala_ccode_variable_declarator_new (_tmp76_, NULL, NULL);
      _tmp78_ = _tmp77_;
      _tmp79_ = vala_ccode_type_definition_new (_tmp74_, (ValaCCodeDeclarator*) _tmp78_);
      _tmp80_ = _tmp79_;
      vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp80_);
      _vala_ccode_node_unref0 (_tmp80_);
      _vala_ccode_node_unref0 (_tmp78_);
      _g_free0 (_tmp76_);
      _g_free0 (_tmp74_);
      vala_ccode_struct_add_field (type_struct, "GTypeInterface", "parent_iface", NULL);
      {
            ValaList* _tmp81_ = NULL;
            ValaList* _m_list;
            gint _tmp82_;
            gint _m_size;
            gint _m_index;
            _tmp81_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) iface);
            _m_list = _tmp81_;
            _tmp82_ = vala_collection_get_size ((ValaCollection*) _m_list);
            _m_size = _tmp82_;
            _m_index = -1;
            while (TRUE) {
                  gpointer _tmp83_ = NULL;
                  ValaMethod* m;
                  _m_index = _m_index + 1;
                  if (!(_m_index < _m_size)) {
                        break;
                  }
                  _tmp83_ = vala_list_get (_m_list, _m_index);
                  m = (ValaMethod*) _tmp83_;
                  vala_gtype_module_generate_virtual_method_declaration (self, m, decl_space, type_struct);
                  _vala_code_node_unref0 (m);
            }
            _vala_iterable_unref0 (_m_list);
      }
      {
            ValaList* _tmp84_ = NULL;
            ValaList* _sig_list;
            gint _tmp85_;
            gint _sig_size;
            gint _sig_index;
            _tmp84_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
            _sig_list = _tmp84_;
            _tmp85_ = vala_collection_get_size ((ValaCollection*) _sig_list);
            _sig_size = _tmp85_;
            _sig_index = -1;
            while (TRUE) {
                  gpointer _tmp86_ = NULL;
                  ValaSignal* sig;
                  ValaMethod* _tmp87_ = NULL;
                  _sig_index = _sig_index + 1;
                  if (!(_sig_index < _sig_size)) {
                        break;
                  }
                  _tmp86_ = vala_list_get (_sig_list, _sig_index);
                  sig = (ValaSignal*) _tmp86_;
                  _tmp87_ = vala_signal_get_default_handler (sig);
                  if (_tmp87_ != NULL) {
                        ValaMethod* _tmp88_ = NULL;
                        _tmp88_ = vala_signal_get_default_handler (sig);
                        vala_gtype_module_generate_virtual_method_declaration (self, _tmp88_, decl_space, type_struct);
                  }
                  _vala_code_node_unref0 (sig);
            }
            _vala_iterable_unref0 (_sig_list);
      }
      {
            ValaList* _tmp89_ = NULL;
            ValaList* _prop_list;
            gint _tmp90_;
            gint _prop_size;
            gint _prop_index;
            _tmp89_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
            _prop_list = _tmp89_;
            _tmp90_ = vala_collection_get_size ((ValaCollection*) _prop_list);
            _prop_size = _tmp90_;
            _prop_index = -1;
            while (TRUE) {
                  gpointer _tmp91_ = NULL;
                  ValaProperty* prop;
                  gboolean _tmp92_ = FALSE;
                  gboolean _tmp93_;
                  ValaDataType* _tmp95_ = NULL;
                  ValaSymbol* _tmp96_ = NULL;
                  ValaObjectTypeSymbol* _tmp97_;
                  ValaObjectTypeSymbol* t;
                  ValaDataType* _tmp98_ = NULL;
                  gboolean _tmp99_;
                  gboolean returns_real_struct;
                  ValaObjectType* _tmp100_ = NULL;
                  ValaObjectType* this_type;
                  gchar* _tmp101_ = NULL;
                  gchar* _tmp102_;
                  ValaCCodeParameter* _tmp103_ = NULL;
                  ValaCCodeParameter* _tmp104_;
                  ValaCCodeParameter* cselfparam;
                  ValaPropertyAccessor* _tmp105_ = NULL;
                  ValaPropertyAccessor* _tmp133_ = NULL;
                  _prop_index = _prop_index + 1;
                  if (!(_prop_index < _prop_size)) {
                        break;
                  }
                  _tmp91_ = vala_list_get (_prop_list, _prop_index);
                  prop = (ValaProperty*) _tmp91_;
                  _tmp93_ = vala_property_get_is_abstract (prop);
                  if (!_tmp93_) {
                        gboolean _tmp94_;
                        _tmp94_ = vala_property_get_is_virtual (prop);
                        _tmp92_ = !_tmp94_;
                  } else {
                        _tmp92_ = FALSE;
                  }
                  if (_tmp92_) {
                        _vala_code_node_unref0 (prop);
                        continue;
                  }
                  _tmp95_ = vala_property_get_property_type (prop);
                  vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp95_, decl_space);
                  _tmp96_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
                  _tmp97_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE_SYMBOL (_tmp96_));
                  t = _tmp97_;
                  _tmp98_ = vala_property_get_property_type (prop);
                  _tmp99_ = vala_data_type_is_real_non_null_struct_type (_tmp98_);
                  returns_real_struct = _tmp99_;
                  _tmp100_ = vala_object_type_new (t);
                  this_type = _tmp100_;
                  _tmp101_ = vala_data_type_get_cname ((ValaDataType*) this_type);
                  _tmp102_ = _tmp101_;
                  _tmp103_ = vala_ccode_parameter_new ("self", _tmp102_);
                  _tmp104_ = _tmp103_;
                  _g_free0 (_tmp102_);
                  cselfparam = _tmp104_;
                  _tmp105_ = vala_property_get_get_accessor (prop);
                  if (_tmp105_ != NULL) {
                        const gchar* _tmp106_ = NULL;
                        gchar* _tmp107_ = NULL;
                        gchar* _tmp108_;
                        ValaCCodeFunctionDeclarator* _tmp109_ = NULL;
                        ValaCCodeFunctionDeclarator* _tmp110_;
                        ValaCCodeFunctionDeclarator* vdeclarator;
                        gchar* creturn_type = NULL;
                        ValaDataType* _tmp123_ = NULL;
                        ValaDataType* _tmp124_;
                        ValaArrayType* _tmp125_;
                        ValaArrayType* array_type;
                        ValaCCodeDeclaration* _tmp132_ = NULL;
                        ValaCCodeDeclaration* vdecl;
                        _tmp106_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp107_ = g_strdup_printf ("get_%s", _tmp106_);
                        _tmp108_ = _tmp107_;
                        _tmp109_ = vala_ccode_function_declarator_new (_tmp108_);
                        _tmp110_ = _tmp109_;
                        _g_free0 (_tmp108_);
                        vdeclarator = _tmp110_;
                        vala_ccode_function_declarator_add_parameter (vdeclarator, cselfparam);
                        if (returns_real_struct) {
                              ValaPropertyAccessor* _tmp111_ = NULL;
                              ValaDataType* _tmp112_ = NULL;
                              gchar* _tmp113_ = NULL;
                              gchar* _tmp114_;
                              gchar* _tmp115_;
                              gchar* _tmp116_;
                              ValaCCodeParameter* _tmp117_ = NULL;
                              ValaCCodeParameter* _tmp118_;
                              ValaCCodeParameter* cvalueparam;
                              gchar* _tmp119_;
                              _tmp111_ = vala_property_get_get_accessor (prop);
                              _tmp112_ = vala_property_accessor_get_value_type (_tmp111_);
                              _tmp113_ = vala_data_type_get_cname (_tmp112_);
                              _tmp114_ = _tmp113_;
                              _tmp115_ = g_strconcat (_tmp114_, "*", NULL);
                              _tmp116_ = _tmp115_;
                              _tmp117_ = vala_ccode_parameter_new ("value", _tmp116_);
                              _tmp118_ = _tmp117_;
                              _g_free0 (_tmp116_);
                              _g_free0 (_tmp114_);
                              cvalueparam = _tmp118_;
                              vala_ccode_function_declarator_add_parameter (vdeclarator, cvalueparam);
                              _tmp119_ = g_strdup ("void");
                              _g_free0 (creturn_type);
                              creturn_type = _tmp119_;
                              _vala_ccode_node_unref0 (cvalueparam);
                        } else {
                              ValaPropertyAccessor* _tmp120_ = NULL;
                              ValaDataType* _tmp121_ = NULL;
                              gchar* _tmp122_ = NULL;
                              _tmp120_ = vala_property_get_get_accessor (prop);
                              _tmp121_ = vala_property_accessor_get_value_type (_tmp120_);
                              _tmp122_ = vala_data_type_get_cname (_tmp121_);
                              _g_free0 (creturn_type);
                              creturn_type = _tmp122_;
                        }
                        _tmp123_ = vala_property_get_property_type (prop);
                        _tmp124_ = _tmp123_;
                        _tmp125_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp124_) ? ((ValaArrayType*) _tmp124_) : NULL);
                        array_type = _tmp125_;
                        if (array_type != NULL) {
                              {
                                    gint dim;
                                    dim = 1;
                                    {
                                          gboolean _tmp126_;
                                          _tmp126_ = TRUE;
                                          while (TRUE) {
                                                gint _tmp127_;
                                                gchar* _tmp128_ = NULL;
                                                gchar* _tmp129_;
                                                ValaCCodeParameter* _tmp130_ = NULL;
                                                ValaCCodeParameter* _tmp131_;
                                                if (!_tmp126_) {
                                                      dim++;
                                                }
                                                _tmp126_ = FALSE;
                                                _tmp127_ = vala_array_type_get_rank (array_type);
                                                if (!(dim <= _tmp127_)) {
                                                      break;
                                                }
                                                _tmp128_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
                                                _tmp129_ = _tmp128_;
                                                _tmp130_ = vala_ccode_parameter_new (_tmp129_, "int*");
                                                _tmp131_ = _tmp130_;
                                                vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp131_);
                                                _vala_ccode_node_unref0 (_tmp131_);
                                                _g_free0 (_tmp129_);
                                          }
                                    }
                              }
                        }
                        _tmp132_ = vala_ccode_declaration_new (creturn_type);
                        vdecl = _tmp132_;
                        vala_ccode_declaration_add_declarator (vdecl, (ValaCCodeDeclarator*) vdeclarator);
                        vala_ccode_struct_add_declaration (type_struct, vdecl);
                        _vala_ccode_node_unref0 (vdecl);
                        _vala_code_node_unref0 (array_type);
                        _g_free0 (creturn_type);
                        _vala_ccode_node_unref0 (vdeclarator);
                  }
                  _tmp133_ = vala_property_get_set_accessor (prop);
                  if (_tmp133_ != NULL) {
                        const gchar* _tmp134_ = NULL;
                        gchar* _tmp135_ = NULL;
                        gchar* _tmp136_;
                        ValaCCodeFunctionDeclarator* _tmp137_ = NULL;
                        ValaCCodeFunctionDeclarator* _tmp138_;
                        ValaCCodeFunctionDeclarator* vdeclarator;
                        ValaDataType* _tmp153_ = NULL;
                        ValaDataType* _tmp154_;
                        ValaArrayType* _tmp155_;
                        ValaArrayType* array_type;
                        ValaCCodeDeclaration* _tmp162_ = NULL;
                        ValaCCodeDeclaration* vdecl;
                        _tmp134_ = vala_symbol_get_name ((ValaSymbol*) prop);
                        _tmp135_ = g_strdup_printf ("set_%s", _tmp134_);
                        _tmp136_ = _tmp135_;
                        _tmp137_ = vala_ccode_function_declarator_new (_tmp136_);
                        _tmp138_ = _tmp137_;
                        _g_free0 (_tmp136_);
                        vdeclarator = _tmp138_;
                        vala_ccode_function_declarator_add_parameter (vdeclarator, cselfparam);
                        if (returns_real_struct) {
                              ValaPropertyAccessor* _tmp139_ = NULL;
                              ValaDataType* _tmp140_ = NULL;
                              gchar* _tmp141_ = NULL;
                              gchar* _tmp142_;
                              gchar* _tmp143_;
                              gchar* _tmp144_;
                              ValaCCodeParameter* _tmp145_ = NULL;
                              ValaCCodeParameter* _tmp146_;
                              ValaCCodeParameter* cvalueparam;
                              _tmp139_ = vala_property_get_set_accessor (prop);
                              _tmp140_ = vala_property_accessor_get_value_type (_tmp139_);
                              _tmp141_ = vala_data_type_get_cname (_tmp140_);
                              _tmp142_ = _tmp141_;
                              _tmp143_ = g_strconcat (_tmp142_, "*", NULL);
                              _tmp144_ = _tmp143_;
                              _tmp145_ = vala_ccode_parameter_new ("value", _tmp144_);
                              _tmp146_ = _tmp145_;
                              _g_free0 (_tmp144_);
                              _g_free0 (_tmp142_);
                              cvalueparam = _tmp146_;
                              vala_ccode_function_declarator_add_parameter (vdeclarator, cvalueparam);
                              _vala_ccode_node_unref0 (cvalueparam);
                        } else {
                              ValaPropertyAccessor* _tmp147_ = NULL;
                              ValaDataType* _tmp148_ = NULL;
                              gchar* _tmp149_ = NULL;
                              gchar* _tmp150_;
                              ValaCCodeParameter* _tmp151_ = NULL;
                              ValaCCodeParameter* _tmp152_;
                              ValaCCodeParameter* cvalueparam;
                              _tmp147_ = vala_property_get_set_accessor (prop);
                              _tmp148_ = vala_property_accessor_get_value_type (_tmp147_);
                              _tmp149_ = vala_data_type_get_cname (_tmp148_);
                              _tmp150_ = _tmp149_;
                              _tmp151_ = vala_ccode_parameter_new ("value", _tmp150_);
                              _tmp152_ = _tmp151_;
                              _g_free0 (_tmp150_);
                              cvalueparam = _tmp152_;
                              vala_ccode_function_declarator_add_parameter (vdeclarator, cvalueparam);
                              _vala_ccode_node_unref0 (cvalueparam);
                        }
                        _tmp153_ = vala_property_get_property_type (prop);
                        _tmp154_ = _tmp153_;
                        _tmp155_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp154_) ? ((ValaArrayType*) _tmp154_) : NULL);
                        array_type = _tmp155_;
                        if (array_type != NULL) {
                              {
                                    gint dim;
                                    dim = 1;
                                    {
                                          gboolean _tmp156_;
                                          _tmp156_ = TRUE;
                                          while (TRUE) {
                                                gint _tmp157_;
                                                gchar* _tmp158_ = NULL;
                                                gchar* _tmp159_;
                                                ValaCCodeParameter* _tmp160_ = NULL;
                                                ValaCCodeParameter* _tmp161_;
                                                if (!_tmp156_) {
                                                      dim++;
                                                }
                                                _tmp156_ = FALSE;
                                                _tmp157_ = vala_array_type_get_rank (array_type);
                                                if (!(dim <= _tmp157_)) {
                                                      break;
                                                }
                                                _tmp158_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
                                                _tmp159_ = _tmp158_;
                                                _tmp160_ = vala_ccode_parameter_new (_tmp159_, "int");
                                                _tmp161_ = _tmp160_;
                                                vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp161_);
                                                _vala_ccode_node_unref0 (_tmp161_);
                                                _g_free0 (_tmp159_);
                                          }
                                    }
                              }
                        }
                        _tmp162_ = vala_ccode_declaration_new ("void");
                        vdecl = _tmp162_;
                        vala_ccode_declaration_add_declarator (vdecl, (ValaCCodeDeclarator*) vdeclarator);
                        vala_ccode_struct_add_declaration (type_struct, vdecl);
                        _vala_ccode_node_unref0 (vdecl);
                        _vala_code_node_unref0 (array_type);
                        _vala_ccode_node_unref0 (vdeclarator);
                  }
                  _vala_ccode_node_unref0 (cselfparam);
                  _vala_code_node_unref0 (this_type);
                  _vala_code_node_unref0 (t);
                  _vala_code_node_unref0 (prop);
            }
            _vala_iterable_unref0 (_prop_list);
      }
      vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) type_struct);
      _tmp163_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
      _tmp164_ = vala_interface_register_function_new (iface, _tmp163_);
      type_fun = _tmp164_;
      vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) type_fun, ((ValaCCodeBaseModule*) self)->in_plugin, TRUE);
      _tmp165_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) type_fun);
      _tmp166_ = _tmp165_;
      vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp166_);
      _vala_ccode_node_unref0 (_tmp166_);
      _vala_typeregister_function_unref0 (type_fun);
      _g_free0 (macro);
      _vala_ccode_node_unref0 (type_struct);
}


static void vala_gtype_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface) {
      ValaGTypeModule * self;
      ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gint _tmp4_;
      gboolean _tmp5_;
      gboolean _tmp11_;
      gboolean _tmp12_;
      ValaComment* _tmp13_ = NULL;
      ValaCodeContext* _tmp18_ = NULL;
      ValaInterfaceRegisterFunction* _tmp19_ = NULL;
      ValaInterfaceRegisterFunction* type_fun;
      ValaCCodeFragment* _tmp20_ = NULL;
      ValaCCodeFragment* _tmp21_;
      ValaCCodeFragment* _tmp22_ = NULL;
      ValaCCodeFragment* _tmp23_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (iface != NULL);
      _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) iface);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
      _vala_ccode_base_module_emit_context_unref0 (_tmp1_);
      _tmp2_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
      _tmp3_ = _tmp2_;
      _tmp4_ = strlen (_tmp3_);
      _tmp5_ = _tmp4_ < 3;
      _g_free0 (_tmp3_);
      if (_tmp5_) {
            ValaSourceReference* _tmp6_ = NULL;
            gchar* _tmp7_ = NULL;
            gchar* _tmp8_;
            gchar* _tmp9_ = NULL;
            gchar* _tmp10_;
            vala_code_node_set_error ((ValaCodeNode*) iface, TRUE);
            _tmp6_ = vala_code_node_get_source_reference ((ValaCodeNode*) iface);
            _tmp7_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
            _tmp8_ = _tmp7_;
            _tmp9_ = g_strdup_printf ("Interface name `%s' is too short", _tmp8_);
            _tmp10_ = _tmp9_;
            vala_report_error (_tmp6_, _tmp10_);
            _g_free0 (_tmp10_);
            _g_free0 (_tmp8_);
            return;
      }
      vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, ((ValaCCodeBaseModule*) self)->cfile);
      _tmp11_ = vala_symbol_is_internal_symbol ((ValaSymbol*) iface);
      if (!_tmp11_) {
            vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, ((ValaCCodeBaseModule*) self)->header_file);
      }
      _tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) iface);
      if (!_tmp12_) {
            vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, ((ValaCCodeBaseModule*) self)->internal_header_file);
      }
      vala_code_node_accept_children ((ValaCodeNode*) iface, (ValaCodeVisitor*) self);
      vala_gtype_module_add_interface_base_init_function (self, iface);
      _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) iface);
      if (_tmp13_ != NULL) {
            ValaComment* _tmp14_ = NULL;
            const gchar* _tmp15_ = NULL;
            ValaCCodeComment* _tmp16_ = NULL;
            ValaCCodeComment* _tmp17_;
            _tmp14_ = vala_symbol_get_comment ((ValaSymbol*) iface);
            _tmp15_ = vala_comment_get_content (_tmp14_);
            _tmp16_ = vala_ccode_comment_new (_tmp15_);
            _tmp17_ = _tmp16_;
            vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp17_);
            _vala_ccode_node_unref0 (_tmp17_);
      }
      _tmp18_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
      _tmp19_ = vala_interface_register_function_new (iface, _tmp18_);
      type_fun = _tmp19_;
      vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) type_fun, ((ValaCCodeBaseModule*) self)->in_plugin, FALSE);
      _tmp20_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) type_fun);
      _tmp21_ = _tmp20_;
      vala_ccode_file_add_type_member_declaration (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp21_);
      _vala_ccode_node_unref0 (_tmp21_);
      _tmp22_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) type_fun);
      _tmp23_ = _tmp22_;
      vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp23_);
      _vala_ccode_node_unref0 (_tmp23_);
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      _vala_typeregister_function_unref0 (type_fun);
}


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


static void vala_gtype_module_add_interface_base_init_function (ValaGTypeModule* self, ValaInterface* iface) {
      ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
      ValaCCodeBaseModuleEmitContext* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      gchar* _tmp4_ = NULL;
      gchar* _tmp5_;
      ValaCCodeFunction* _tmp6_ = NULL;
      ValaCCodeFunction* _tmp7_;
      ValaCCodeFunction* base_init;
      gchar* _tmp8_ = NULL;
      gchar* _tmp9_;
      gchar* _tmp10_ = NULL;
      gchar* _tmp11_;
      ValaCCodeParameter* _tmp12_ = NULL;
      ValaCCodeParameter* _tmp13_;
      ValaCCodeFunction* _tmp14_ = NULL;
      gchar* _tmp15_ = NULL;
      gchar* _tmp16_;
      ValaCCodeConstant* _tmp17_ = NULL;
      ValaCCodeConstant* _tmp18_;
      ValaCCodeVariableDeclarator* _tmp19_ = NULL;
      ValaCCodeVariableDeclarator* _tmp20_;
      ValaCCodeFunction* _tmp21_ = NULL;
      ValaCCodeIdentifier* _tmp22_ = NULL;
      ValaCCodeIdentifier* _tmp23_;
      ValaCCodeUnaryExpression* _tmp24_ = NULL;
      ValaCCodeUnaryExpression* _tmp25_;
      ValaCCodeFunction* _tmp26_ = NULL;
      ValaCCodeIdentifier* _tmp27_ = NULL;
      ValaCCodeIdentifier* _tmp28_;
      ValaCCodeConstant* _tmp29_ = NULL;
      ValaCCodeConstant* _tmp30_;
      gboolean _tmp31_;
      ValaCCodeIdentifier* _tmp53_ = NULL;
      ValaCCodeIdentifier* ciface;
      ValaCCodeFunction* _tmp100_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (iface != NULL);
      _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) iface);
      _tmp1_ = _tmp0_;
      vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
      _vala_ccode_base_module_emit_context_unref0 (_tmp1_);
      _tmp2_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) iface, NULL);
      _tmp3_ = _tmp2_;
      _tmp4_ = g_strdup_printf ("%s_base_init", _tmp3_);
      _tmp5_ = _tmp4_;
      _tmp6_ = vala_ccode_function_new (_tmp5_, "void");
      _tmp7_ = _tmp6_;
      _g_free0 (_tmp5_);
      _g_free0 (_tmp3_);
      base_init = _tmp7_;
      _tmp8_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) iface, FALSE);
      _tmp9_ = _tmp8_;
      _tmp10_ = g_strdup_printf ("%sIface *", _tmp9_);
      _tmp11_ = _tmp10_;
      _tmp12_ = vala_ccode_parameter_new ("iface", _tmp11_);
      _tmp13_ = _tmp12_;
      vala_ccode_function_add_parameter (base_init, _tmp13_);
      _vala_ccode_node_unref0 (_tmp13_);
      _g_free0 (_tmp11_);
      _g_free0 (_tmp9_);
      vala_ccode_function_set_modifiers (base_init, VALA_CCODE_MODIFIERS_STATIC);
      vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
      _tmp14_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp15_ = vala_data_type_get_cname (((ValaCCodeBaseModule*) self)->bool_type);
      _tmp16_ = _tmp15_;
      _tmp17_ = vala_ccode_constant_new ("FALSE");
      _tmp18_ = _tmp17_;
      _tmp19_ = vala_ccode_variable_declarator_new ("initialized", (ValaCCodeExpression*) _tmp18_, NULL);
      _tmp20_ = _tmp19_;
      vala_ccode_function_add_declaration (_tmp14_, _tmp16_, (ValaCCodeDeclarator*) _tmp20_, VALA_CCODE_MODIFIERS_STATIC);
      _vala_ccode_node_unref0 (_tmp20_);
      _vala_ccode_node_unref0 (_tmp18_);
      _g_free0 (_tmp16_);
      _tmp21_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp22_ = vala_ccode_identifier_new ("initialized");
      _tmp23_ = _tmp22_;
      _tmp24_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp23_);
      _tmp25_ = _tmp24_;
      vala_ccode_function_open_if (_tmp21_, (ValaCCodeExpression*) _tmp25_);
      _vala_ccode_node_unref0 (_tmp25_);
      _vala_ccode_node_unref0 (_tmp23_);
      _tmp26_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp27_ = vala_ccode_identifier_new ("initialized");
      _tmp28_ = _tmp27_;
      _tmp29_ = vala_ccode_constant_new ("TRUE");
      _tmp30_ = _tmp29_;
      vala_ccode_function_add_assignment (_tmp26_, (ValaCCodeExpression*) _tmp28_, (ValaCCodeExpression*) _tmp30_);
      _vala_ccode_node_unref0 (_tmp30_);
      _vala_ccode_node_unref0 (_tmp28_);
      _tmp31_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) iface, ((ValaCCodeBaseModule*) self)->gobject_type);
      if (_tmp31_) {
            ValaList* _tmp32_ = NULL;
            ValaList* props;
            _tmp32_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
            props = _tmp32_;
            {
                  ValaList* _tmp33_;
                  ValaList* _prop_list;
                  gint _tmp34_;
                  gint _prop_size;
                  gint _prop_index;
                  _tmp33_ = _vala_iterable_ref0 (props);
                  _prop_list = _tmp33_;
                  _tmp34_ = vala_collection_get_size ((ValaCollection*) _prop_list);
                  _prop_size = _tmp34_;
                  _prop_index = -1;
                  while (TRUE) {
                        gpointer _tmp35_ = NULL;
                        ValaProperty* prop;
                        gboolean _tmp36_;
                        _prop_index = _prop_index + 1;
                        if (!(_prop_index < _prop_size)) {
                              break;
                        }
                        _tmp35_ = vala_list_get (_prop_list, _prop_index);
                        prop = (ValaProperty*) _tmp35_;
                        _tmp36_ = vala_property_get_is_abstract (prop);
                        if (_tmp36_) {
                              gboolean _tmp37_;
                              ValaComment* _tmp38_ = NULL;
                              ValaCCodeIdentifier* _tmp44_ = NULL;
                              ValaCCodeIdentifier* _tmp45_;
                              ValaCCodeFunctionCall* _tmp46_ = NULL;
                              ValaCCodeFunctionCall* _tmp47_;
                              ValaCCodeFunctionCall* cinst;
                              ValaCCodeIdentifier* _tmp48_ = NULL;
                              ValaCCodeIdentifier* _tmp49_;
                              ValaCCodeFunctionCall* _tmp50_ = NULL;
                              ValaCCodeFunctionCall* _tmp51_;
                              ValaCCodeFunction* _tmp52_ = NULL;
                              _tmp37_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, prop);
                              if (!_tmp37_) {
                                    _vala_code_node_unref0 (prop);
                                    continue;
                              }
                              _tmp38_ = vala_symbol_get_comment ((ValaSymbol*) prop);
                              if (_tmp38_ != NULL) {
                                    ValaCCodeFunction* _tmp39_ = NULL;
                                    ValaComment* _tmp40_ = NULL;
                                    const gchar* _tmp41_ = NULL;
                                    ValaCCodeComment* _tmp42_ = NULL;
                                    ValaCCodeComment* _tmp43_;
                                    _tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                    _tmp40_ = vala_symbol_get_comment ((ValaSymbol*) prop);
                                    _tmp41_ = vala_comment_get_content (_tmp40_);
                                    _tmp42_ = vala_ccode_comment_new (_tmp41_);
                                    _tmp43_ = _tmp42_;
                                    vala_ccode_function_add_statement (_tmp39_, (ValaCCodeNode*) _tmp43_);
                                    _vala_ccode_node_unref0 (_tmp43_);
                              }
                              _tmp44_ = vala_ccode_identifier_new ("g_object_interface_install_property");
                              _tmp45_ = _tmp44_;
                              _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
                              _tmp47_ = _tmp46_;
                              _vala_ccode_node_unref0 (_tmp45_);
                              cinst = _tmp47_;
                              _tmp48_ = vala_ccode_identifier_new ("iface");
                              _tmp49_ = _tmp48_;
                              vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp49_);
                              _vala_ccode_node_unref0 (_tmp49_);
                              _tmp50_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, prop);
                              _tmp51_ = _tmp50_;
                              vala_ccode_function_call_add_argument (cinst, (ValaCCodeExpression*) _tmp51_);
                              _vala_ccode_node_unref0 (_tmp51_);
                              _tmp52_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              vala_ccode_function_add_expression (_tmp52_, (ValaCCodeExpression*) cinst);
                              _vala_ccode_node_unref0 (cinst);
                        }
                        _vala_code_node_unref0 (prop);
                  }
                  _vala_iterable_unref0 (_prop_list);
            }
            _vala_iterable_unref0 (props);
      }
      _tmp53_ = vala_ccode_identifier_new ("iface");
      ciface = _tmp53_;
      {
            ValaList* _tmp54_ = NULL;
            ValaList* _sig_list;
            gint _tmp55_;
            gint _sig_size;
            gint _sig_index;
            _tmp54_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
            _sig_list = _tmp54_;
            _tmp55_ = vala_collection_get_size ((ValaCollection*) _sig_list);
            _sig_size = _tmp55_;
            _sig_index = -1;
            while (TRUE) {
                  gpointer _tmp56_ = NULL;
                  ValaSignal* sig;
                  ValaMethod* _tmp57_ = NULL;
                  ValaMethod* _tmp58_ = NULL;
                  gchar* _tmp59_ = NULL;
                  gchar* cname;
                  ValaCCodeFunction* _tmp60_ = NULL;
                  ValaMethod* _tmp61_ = NULL;
                  const gchar* _tmp62_ = NULL;
                  ValaCCodeMemberAccess* _tmp63_ = NULL;
                  ValaCCodeMemberAccess* _tmp64_;
                  ValaCCodeIdentifier* _tmp65_ = NULL;
                  ValaCCodeIdentifier* _tmp66_;
                  _sig_index = _sig_index + 1;
                  if (!(_sig_index < _sig_size)) {
                        break;
                  }
                  _tmp56_ = vala_list_get (_sig_list, _sig_index);
                  sig = (ValaSignal*) _tmp56_;
                  _tmp57_ = vala_signal_get_default_handler (sig);
                  if (_tmp57_ == NULL) {
                        _vala_code_node_unref0 (sig);
                        continue;
                  }
                  _tmp58_ = vala_signal_get_default_handler (sig);
                  _tmp59_ = vala_method_get_real_cname (_tmp58_);
                  cname = _tmp59_;
                  _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp61_ = vala_signal_get_default_handler (sig);
                  _tmp62_ = vala_method_get_vfunc_name (_tmp61_);
                  _tmp63_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp62_);
                  _tmp64_ = _tmp63_;
                  _tmp65_ = vala_ccode_identifier_new (cname);
                  _tmp66_ = _tmp65_;
                  vala_ccode_function_add_assignment (_tmp60_, (ValaCCodeExpression*) _tmp64_, (ValaCCodeExpression*) _tmp66_);
                  _vala_ccode_node_unref0 (_tmp66_);
                  _vala_ccode_node_unref0 (_tmp64_);
                  _g_free0 (cname);
                  _vala_code_node_unref0 (sig);
            }
            _vala_iterable_unref0 (_sig_list);
      }
      {
            ValaList* _tmp67_ = NULL;
            ValaList* _sig_list;
            gint _tmp68_;
            gint _sig_size;
            gint _sig_index;
            _tmp67_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
            _sig_list = _tmp67_;
            _tmp68_ = vala_collection_get_size ((ValaCollection*) _sig_list);
            _sig_size = _tmp68_;
            _sig_index = -1;
            while (TRUE) {
                  gpointer _tmp69_ = NULL;
                  ValaSignal* sig;
                  ValaComment* _tmp70_ = NULL;
                  ValaCCodeFunction* _tmp76_ = NULL;
                  ValaCCodeFunctionCall* _tmp77_ = NULL;
                  ValaCCodeFunctionCall* _tmp78_;
                  _sig_index = _sig_index + 1;
                  if (!(_sig_index < _sig_size)) {
                        break;
                  }
                  _tmp69_ = vala_list_get (_sig_list, _sig_index);
                  sig = (ValaSignal*) _tmp69_;
                  _tmp70_ = vala_symbol_get_comment ((ValaSymbol*) sig);
                  if (_tmp70_ != NULL) {
                        ValaCCodeFunction* _tmp71_ = NULL;
                        ValaComment* _tmp72_ = NULL;
                        const gchar* _tmp73_ = NULL;
                        ValaCCodeComment* _tmp74_ = NULL;
                        ValaCCodeComment* _tmp75_;
                        _tmp71_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp72_ = vala_symbol_get_comment ((ValaSymbol*) sig);
                        _tmp73_ = vala_comment_get_content (_tmp72_);
                        _tmp74_ = vala_ccode_comment_new (_tmp73_);
                        _tmp75_ = _tmp74_;
                        vala_ccode_function_add_statement (_tmp71_, (ValaCCodeNode*) _tmp75_);
                        _vala_ccode_node_unref0 (_tmp75_);
                  }
                  _tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                  _tmp77_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, sig, (ValaTypeSymbol*) iface);
                  _tmp78_ = _tmp77_;
                  vala_ccode_function_add_expression (_tmp76_, (ValaCCodeExpression*) _tmp78_);
                  _vala_ccode_node_unref0 (_tmp78_);
                  _vala_code_node_unref0 (sig);
            }
            _vala_iterable_unref0 (_sig_list);
      }
      {
            ValaList* _tmp79_ = NULL;
            ValaList* _m_list;
            gint _tmp80_;
            gint _m_size;
            gint _m_index;
            _tmp79_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) iface);
            _m_list = _tmp79_;
            _tmp80_ = vala_collection_get_size ((ValaCollection*) _m_list);
            _m_size = _tmp80_;
            _m_index = -1;
            while (TRUE) {
                  gpointer _tmp81_ = NULL;
                  ValaMethod* m;
                  gboolean _tmp82_;
                  _m_index = _m_index + 1;
                  if (!(_m_index < _m_size)) {
                        break;
                  }
                  _tmp81_ = vala_list_get (_m_list, _m_index);
                  m = (ValaMethod*) _tmp81_;
                  _tmp82_ = vala_method_get_is_virtual (m);
                  if (_tmp82_) {
                        gchar* _tmp83_ = NULL;
                        gchar* cname;
                        ValaCCodeFunction* _tmp84_ = NULL;
                        const gchar* _tmp85_ = NULL;
                        ValaCCodeMemberAccess* _tmp86_ = NULL;
                        ValaCCodeMemberAccess* _tmp87_;
                        ValaCCodeIdentifier* _tmp88_ = NULL;
                        ValaCCodeIdentifier* _tmp89_;
                        gboolean _tmp90_;
                        _tmp83_ = vala_method_get_real_cname (m);
                        cname = _tmp83_;
                        _tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp85_ = vala_method_get_vfunc_name (m);
                        _tmp86_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp85_);
                        _tmp87_ = _tmp86_;
                        _tmp88_ = vala_ccode_identifier_new (cname);
                        _tmp89_ = _tmp88_;
                        vala_ccode_function_add_assignment (_tmp84_, (ValaCCodeExpression*) _tmp87_, (ValaCCodeExpression*) _tmp89_);
                        _vala_ccode_node_unref0 (_tmp89_);
                        _vala_ccode_node_unref0 (_tmp87_);
                        _tmp90_ = vala_method_get_coroutine (m);
                        if (_tmp90_) {
                              ValaCCodeFunction* _tmp91_ = NULL;
                              gchar* _tmp92_ = NULL;
                              gchar* _tmp93_;
                              ValaCCodeMemberAccess* _tmp94_ = NULL;
                              ValaCCodeMemberAccess* _tmp95_;
                              gchar* _tmp96_ = NULL;
                              gchar* _tmp97_;
                              ValaCCodeIdentifier* _tmp98_ = NULL;
                              ValaCCodeIdentifier* _tmp99_;
                              _tmp91_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                              _tmp92_ = vala_method_get_finish_vfunc_name (m);
                              _tmp93_ = _tmp92_;
                              _tmp94_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp93_);
                              _tmp95_ = _tmp94_;
                              _tmp96_ = vala_method_get_finish_real_cname (m);
                              _tmp97_ = _tmp96_;
                              _tmp98_ = vala_ccode_identifier_new (_tmp97_);
                              _tmp99_ = _tmp98_;
                              vala_ccode_function_add_assignment (_tmp91_, (ValaCCodeExpression*) _tmp95_, (ValaCCodeExpression*) _tmp99_);
                              _vala_ccode_node_unref0 (_tmp99_);
                              _g_free0 (_tmp97_);
                              _vala_ccode_node_unref0 (_tmp95_);
                              _g_free0 (_tmp93_);
                        }
                        _g_free0 (cname);
                  }
                  _vala_code_node_unref0 (m);
            }
            _vala_iterable_unref0 (_m_list);
      }
      _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      vala_ccode_function_close (_tmp100_);
      vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
      vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, base_init);
      _vala_ccode_node_unref0 (ciface);
      _vala_ccode_node_unref0 (base_init);
}


static void vala_gtype_module_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st) {
      ValaGTypeModule * self;
      gboolean _tmp0_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (st != NULL);
      VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_struct ((ValaCodeVisitor*) VALA_GERROR_MODULE (self), st);
      _tmp0_ = vala_struct_get_has_type_id (st);
      if (_tmp0_) {
            ValaCodeContext* _tmp1_ = NULL;
            ValaStructRegisterFunction* _tmp2_ = NULL;
            ValaStructRegisterFunction* type_fun;
            ValaCCodeFragment* _tmp3_ = NULL;
            ValaCCodeFragment* _tmp4_;
            _tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
            _tmp2_ = vala_struct_register_function_new (st, _tmp1_);
            type_fun = _tmp2_;
            vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) type_fun, FALSE, FALSE);
            _tmp3_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) type_fun);
            _tmp4_ = _tmp3_;
            vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp4_);
            _vala_ccode_node_unref0 (_tmp4_);
            _vala_typeregister_function_unref0 (type_fun);
      }
}


static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
      ValaGTypeModule * self;
      gboolean _tmp0_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (en != NULL);
      VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_enum ((ValaCodeVisitor*) VALA_GERROR_MODULE (self), en);
      _tmp0_ = vala_enum_get_has_type_id (en);
      if (_tmp0_) {
            ValaCodeContext* _tmp1_ = NULL;
            ValaEnumRegisterFunction* _tmp2_ = NULL;
            ValaEnumRegisterFunction* type_fun;
            ValaCCodeFragment* _tmp3_ = NULL;
            ValaCCodeFragment* _tmp4_;
            _tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
            _tmp2_ = vala_enum_register_function_new (en, _tmp1_);
            type_fun = _tmp2_;
            vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) type_fun, FALSE, FALSE);
            _tmp3_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) type_fun);
            _tmp4_ = _tmp3_;
            vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp4_);
            _vala_ccode_node_unref0 (_tmp4_);
            _vala_typeregister_function_unref0 (type_fun);
      }
}


static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
      ValaGTypeModule * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_;
      ValaMemberAccess* _tmp2_;
      ValaMemberAccess* ma;
      ValaExpression* _tmp3_ = NULL;
      ValaDataType* _tmp4_ = NULL;
      ValaDataType* _tmp5_;
      ValaMethodType* _tmp6_;
      ValaMethodType* mtype;
      gboolean _tmp7_ = FALSE;
      gboolean _tmp8_ = FALSE;
      gboolean _tmp9_ = FALSE;
      gboolean _tmp10_ = FALSE;
      gboolean _tmp11_ = FALSE;
      ValaCType* _tmp24_ = NULL;
      ValaCType* _tmp25_;
      ValaLocalVariable* _tmp26_ = NULL;
      ValaLocalVariable* _tmp27_;
      ValaLocalVariable* temp_var;
      ValaCCodeIdentifier* _tmp28_ = NULL;
      ValaCCodeIdentifier* _tmp29_;
      ValaCCodeFunctionCall* _tmp30_ = NULL;
      ValaCCodeFunctionCall* _tmp31_;
      ValaCCodeFunctionCall* class_ref;
      ValaExpression* _tmp32_ = NULL;
      ValaDataType* _tmp33_ = NULL;
      gchar* _tmp34_ = NULL;
      gchar* _tmp35_;
      ValaCCodeIdentifier* _tmp36_ = NULL;
      ValaCCodeIdentifier* _tmp37_;
      ValaCCodeIdentifier* _tmp38_ = NULL;
      ValaCCodeIdentifier* _tmp39_;
      ValaCCodeFunctionCall* _tmp40_ = NULL;
      ValaCCodeFunctionCall* _tmp41_;
      ValaCCodeFunctionCall* get_value;
      ValaExpression* _tmp42_ = NULL;
      ValaExpression* _tmp43_ = NULL;
      ValaCCodeExpression* _tmp44_ = NULL;
      ValaCCodeExpression* _tmp45_;
      ValaCCodeFunction* _tmp46_ = NULL;
      const gchar* _tmp47_ = NULL;
      ValaCCodeExpression* _tmp48_ = NULL;
      ValaCCodeExpression* _tmp49_;
      const gchar* _tmp50_ = NULL;
      ValaCCodeExpression* _tmp51_ = NULL;
      ValaCCodeExpression* _tmp52_;
      ValaCCodeIdentifier* _tmp53_ = NULL;
      ValaCCodeIdentifier* _tmp54_;
      ValaCCodeBinaryExpression* _tmp55_ = NULL;
      ValaCCodeBinaryExpression* _tmp56_;
      ValaCCodeBinaryExpression* is_null_value;
      const gchar* _tmp57_ = NULL;
      ValaCCodeExpression* _tmp58_ = NULL;
      ValaCCodeExpression* _tmp59_;
      ValaCCodeMemberAccess* _tmp60_ = NULL;
      ValaCCodeMemberAccess* _tmp61_;
      ValaCCodeIdentifier* _tmp62_ = NULL;
      ValaCCodeIdentifier* _tmp63_;
      ValaCCodeConditionalExpression* _tmp64_ = NULL;
      ValaCCodeConditionalExpression* _tmp65_;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (expr != NULL);
      _tmp0_ = vala_method_call_get_call (expr);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp1_) ? ((ValaMemberAccess*) _tmp1_) : NULL);
      ma = _tmp2_;
      _tmp3_ = vala_method_call_get_call (expr);
      _tmp4_ = vala_expression_get_value_type (_tmp3_);
      _tmp5_ = _tmp4_;
      _tmp6_ = _vala_code_node_ref0 (VALA_IS_METHOD_TYPE (_tmp5_) ? ((ValaMethodType*) _tmp5_) : NULL);
      mtype = _tmp6_;
      if (mtype == NULL) {
            _tmp11_ = TRUE;
      } else {
            _tmp11_ = ma == NULL;
      }
      if (_tmp11_) {
            _tmp10_ = TRUE;
      } else {
            ValaExpression* _tmp12_ = NULL;
            _tmp12_ = vala_member_access_get_inner (ma);
            _tmp10_ = _tmp12_ == NULL;
      }
      if (_tmp10_) {
            _tmp9_ = TRUE;
      } else {
            ValaExpression* _tmp13_ = NULL;
            ValaDataType* _tmp14_ = NULL;
            _tmp13_ = vala_member_access_get_inner (ma);
            _tmp14_ = vala_expression_get_value_type (_tmp13_);
            _tmp9_ = !VALA_IS_ENUM_VALUE_TYPE (_tmp14_);
      }
      if (_tmp9_) {
            _tmp8_ = TRUE;
      } else {
            ValaExpression* _tmp15_ = NULL;
            ValaDataType* _tmp16_ = NULL;
            ValaTypeSymbol* _tmp17_ = NULL;
            gboolean _tmp18_;
            _tmp15_ = vala_member_access_get_inner (ma);
            _tmp16_ = vala_expression_get_value_type (_tmp15_);
            _tmp17_ = vala_data_type_get_data_type (_tmp16_);
            _tmp18_ = vala_enum_get_has_type_id (VALA_ENUM (_tmp17_));
            _tmp8_ = !_tmp18_;
      }
      if (_tmp8_) {
            _tmp7_ = TRUE;
      } else {
            ValaMethod* _tmp19_ = NULL;
            ValaExpression* _tmp20_ = NULL;
            ValaDataType* _tmp21_ = NULL;
            ValaMethod* _tmp22_ = NULL;
            ValaMethod* _tmp23_;
            _tmp19_ = vala_method_type_get_method_symbol (mtype);
            _tmp20_ = vala_member_access_get_inner (ma);
            _tmp21_ = vala_expression_get_value_type (_tmp20_);
            _tmp22_ = vala_enum_value_type_get_to_string_method (VALA_ENUM_VALUE_TYPE (_tmp21_));
            _tmp23_ = _tmp22_;
            _tmp7_ = _tmp19_ != _tmp23_;
            _vala_code_node_unref0 (_tmp23_);
      }
      if (_tmp7_) {
            VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_method_call ((ValaCodeVisitor*) VALA_GERROR_MODULE (self), expr);
            _vala_code_node_unref0 (mtype);
            _vala_code_node_unref0 (ma);
            return;
      }
      _tmp24_ = vala_ctype_new ("GEnumValue*");
      _tmp25_ = _tmp24_;
      _tmp26_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, (ValaDataType*) _tmp25_, FALSE, (ValaCodeNode*) expr, FALSE);
      _tmp27_ = _tmp26_;
      _vala_code_node_unref0 (_tmp25_);
      temp_var = _tmp27_;
      vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
      _tmp28_ = vala_ccode_identifier_new ("g_type_class_ref");
      _tmp29_ = _tmp28_;
      _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
      _tmp31_ = _tmp30_;
      _vala_ccode_node_unref0 (_tmp29_);
      class_ref = _tmp31_;
      _tmp32_ = vala_member_access_get_inner (ma);
      _tmp33_ = vala_expression_get_value_type (_tmp32_);
      _tmp34_ = vala_data_type_get_type_id (_tmp33_);
      _tmp35_ = _tmp34_;
      _tmp36_ = vala_ccode_identifier_new (_tmp35_);
      _tmp37_ = _tmp36_;
      vala_ccode_function_call_add_argument (class_ref, (ValaCCodeExpression*) _tmp37_);
      _vala_ccode_node_unref0 (_tmp37_);
      _g_free0 (_tmp35_);
      _tmp38_ = vala_ccode_identifier_new ("g_enum_get_value");
      _tmp39_ = _tmp38_;
      _tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
      _tmp41_ = _tmp40_;
      _vala_ccode_node_unref0 (_tmp39_);
      get_value = _tmp41_;
      vala_ccode_function_call_add_argument (get_value, (ValaCCodeExpression*) class_ref);
      _tmp42_ = vala_method_call_get_call (expr);
      _tmp43_ = vala_member_access_get_inner (VALA_MEMBER_ACCESS (_tmp42_));
      _tmp44_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp43_);
      _tmp45_ = VALA_CCODE_EXPRESSION (_tmp44_);
      vala_ccode_function_call_add_argument (get_value, _tmp45_);
      _vala_ccode_node_unref0 (_tmp45_);
      _tmp46_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
      _tmp47_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
      _tmp48_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp47_);
      _tmp49_ = _tmp48_;
      vala_ccode_function_add_assignment (_tmp46_, _tmp49_, (ValaCCodeExpression*) get_value);
      _vala_ccode_node_unref0 (_tmp49_);
      _tmp50_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
      _tmp51_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp50_);
      _tmp52_ = _tmp51_;
      _tmp53_ = vala_ccode_identifier_new ("NULL");
      _tmp54_ = _tmp53_;
      _tmp55_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp52_, (ValaCCodeExpression*) _tmp54_);
      _tmp56_ = _tmp55_;
      _vala_ccode_node_unref0 (_tmp54_);
      _vala_ccode_node_unref0 (_tmp52_);
      is_null_value = _tmp56_;
      _tmp57_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
      _tmp58_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp57_);
      _tmp59_ = _tmp58_;
      _tmp60_ = vala_ccode_member_access_new_pointer (_tmp59_, "value_name");
      _tmp61_ = _tmp60_;
      _tmp62_ = vala_ccode_identifier_new ("NULL");
      _tmp63_ = _tmp62_;
      _tmp64_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) is_null_value, (ValaCCodeExpression*) _tmp61_, (ValaCCodeExpression*) _tmp63_);
      _tmp65_ = _tmp64_;
      vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp65_);
      _vala_ccode_node_unref0 (_tmp65_);
      _vala_ccode_node_unref0 (_tmp63_);
      _vala_ccode_node_unref0 (_tmp61_);
      _vala_ccode_node_unref0 (_tmp59_);
      _vala_ccode_node_unref0 (is_null_value);
      _vala_ccode_node_unref0 (get_value);
      _vala_ccode_node_unref0 (class_ref);
      _vala_code_node_unref0 (temp_var);
      _vala_code_node_unref0 (mtype);
      _vala_code_node_unref0 (ma);
}


static void vala_gtype_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) {
      ValaGTypeModule * self;
      ValaTypeSymbol* _tmp0_ = NULL;
      ValaTypeSymbol* _tmp1_;
      ValaClass* _tmp2_;
      ValaClass* cl;
      ValaTypeSymbol* _tmp3_ = NULL;
      ValaTypeSymbol* _tmp4_;
      ValaStruct* _tmp5_;
      ValaStruct* st;
      gboolean _tmp6_ = FALSE;
      const gchar* _tmp7_ = NULL;
      self = (ValaGTypeModule*) base;
      g_return_if_fail (prop != NULL);
      _tmp0_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL);
      cl = _tmp2_;
      _tmp3_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
      _tmp4_ = _tmp3_;
      _tmp5_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp4_) ? ((ValaStruct*) _tmp4_) : NULL);
      st = _tmp5_;
      _tmp7_ = vala_symbol_get_name ((ValaSymbol*) prop);
      if (g_strcmp0 (_tmp7_, "type") == 0) {
            gboolean _tmp8_ = FALSE;
            gboolean _tmp9_ = FALSE;
            if (cl != NULL) {
                  gboolean _tmp10_;
                  _tmp10_ = vala_class_get_is_compact (cl);
                  _tmp9_ = !_tmp10_;
            } else {
                  _tmp9_ = FALSE;
            }
            if (_tmp9_) {
                  _tmp8_ = TRUE;
            } else {
                  gboolean _tmp11_ = FALSE;
                  if (st != NULL) {
                        gboolean _tmp12_;
                        _tmp12_ = vala_struct_get_has_type_id (st);
                        _tmp11_ = _tmp12_;
                  } else {
                        _tmp11_ = FALSE;
                  }
                  _tmp8_ = _tmp11_;
            }
            _tmp6_ = _tmp8_;
      } else {
            _tmp6_ = FALSE;
      }
      if (_tmp6_) {
            ValaSourceReference* _tmp13_ = NULL;
            _tmp13_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
            vala_report_error (_tmp13_, "Property 'type' not allowed");
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (cl);
            return;
      }
      VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_property ((ValaCodeVisitor*) VALA_GERROR_MODULE (self), prop);
      _vala_code_node_unref0 (st);
      _vala_code_node_unref0 (cl);
}


ValaGTypeModule* vala_gtype_module_construct (GType object_type) {
      ValaGTypeModule* self = NULL;
      self = (ValaGTypeModule*) vala_gerror_module_construct (object_type);
      return self;
}


ValaGTypeModule* vala_gtype_module_new (void) {
      return vala_gtype_module_construct (VALA_TYPE_GTYPE_MODULE);
}


static void vala_gtype_module_class_init (ValaGTypeModuleClass * klass) {
      vala_gtype_module_parent_class = g_type_class_peek_parent (klass);
      VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_parameter = vala_gtype_module_real_generate_parameter;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_gtype_module_real_generate_class_declaration;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_struct_declaration = vala_gtype_module_real_generate_class_struct_declaration;
      VALA_GTYPE_MODULE_CLASS (klass)->generate_virtual_method_declaration = vala_gtype_module_real_generate_virtual_method_declaration;
      VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gtype_module_real_visit_class;
      VALA_GTYPE_MODULE_CLASS (klass)->generate_class_init = vala_gtype_module_real_generate_class_init;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->get_param_spec = vala_gtype_module_real_get_param_spec;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_gtype_module_real_generate_interface_declaration;
      VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gtype_module_real_visit_interface;
      VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_gtype_module_real_visit_struct;
      VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_gtype_module_real_visit_enum;
      VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_gtype_module_real_visit_method_call;
      VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_gtype_module_real_visit_property;
}


static void vala_gtype_module_instance_init (ValaGTypeModule * self) {
}


GType vala_gtype_module_get_type (void) {
      static volatile gsize vala_gtype_module_type_id__volatile = 0;
      if (g_once_init_enter (&vala_gtype_module_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaGTypeModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gtype_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGTypeModule), 0, (GInstanceInitFunc) vala_gtype_module_instance_init, NULL };
            GType vala_gtype_module_type_id;
            vala_gtype_module_type_id = g_type_register_static (VALA_TYPE_GERROR_MODULE, "ValaGTypeModule", &g_define_type_info, 0);
            g_once_init_leave (&vala_gtype_module_type_id__volatile, vala_gtype_module_type_id);
      }
      return vala_gtype_module_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index