/* 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_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_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;
	ValaCCodeLineDirective* current_line;
	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;
	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* gqueue_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;
	ValaStruct* gmutex_type;
	ValaStruct* grecmutex_type;
	ValaStruct* grwlock_type;
	ValaStruct* gcond_type;
	ValaClass* gsource_type;
	ValaTypeSymbol* type_module_type;
	ValaTypeSymbol* dbus_proxy_type;
	ValaClass* gtk_widget_type;
	gboolean in_plugin;
	gchar* module_init_param_name;
	gboolean gvaluecollector_h_needed;
	gboolean requires_assert;
	gboolean requires_array_free;
	gboolean requires_array_move;
	gboolean requires_array_length;
	gboolean requires_clear_mutex;
	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_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value);
	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);
	void (*create_type_check_statement) (ValaCCodeBaseModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
	gboolean (*is_gobject_property) (ValaCCodeBaseModule* self, ValaProperty* prop);
	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);
	void (*end_instance_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_values;
	gint next_temp_var_id;
	gboolean current_method_inner_error;
	gboolean current_method_return;
	ValaMap* variable_name_map;
	ValaMap* closure_variable_count_map;
	ValaMap* closure_variable_clash_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_ccode_name (ValaCodeNode* node);
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);
gdouble vala_ccode_base_module_get_ccode_pos (ValaParameter* param);
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_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix);
gchar* vala_ccode_base_module_get_ccode_type_check_function (ValaTypeSymbol* sym);
gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym);
gchar* vala_ccode_base_module_get_ccode_take_value_function (ValaCodeNode* sym);
gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym);
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;
ValaClassRegisterFunction* vala_class_register_function_new (ValaClass* cl, ValaCodeContext* context);
ValaClassRegisterFunction* vala_class_register_function_construct (GType object_type, ValaClass* cl, ValaCodeContext* context);
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);
ValaCCodeDeclaratorSuffix* vala_ccode_base_module_get_ccode_declarator_suffix (ValaCCodeBaseModule* self, ValaDataType* type);
gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname);
gchar* vala_ccode_base_module_get_ccode_delegate_target_name (ValaVariable* variable);
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);
gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m);
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);
void vala_ccode_base_module_push_line (ValaCCodeBaseModule* self, ValaSourceReference* source_reference);
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);
gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym);
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);
ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self);
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);
void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
void vala_ccode_base_module_pop_line (ValaCCodeBaseModule* self);
gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym);
gchar* vala_ccode_base_module_get_ccode_unref_function (ValaObjectTypeSymbol* sym);
void vala_gtype_module_generate_class_init (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self, ValaClass* cl);
void vala_gtype_module_end_instance_init (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_real_end_instance_init (ValaGTypeModule* self, ValaClass* cl);
gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym);
gchar* vala_ccode_base_module_get_ccode_finish_vfunc_name (ValaMethod* m);
gchar* vala_ccode_base_module_get_ccode_finish_real_name (ValaMethod* m);
gboolean vala_ccode_base_module_get_ccode_no_accessor_method (ValaProperty* p);
gboolean vala_ccode_base_module_get_ccode_concrete_accessor (ValaProperty* p);
ValaCCodeFunctionCall* vala_ccode_base_module_get_signal_creation (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
static void vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self, const gchar* base_name, const gchar* return_type, ValaCCodeExpression* expression, ValaTypeParameter* p, ValaClass* cl, ValaInterface* iface);
ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym);
gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface);
static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self, ValaMethod* m, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type);
gchar* vala_ccode_base_module_get_ccode_finish_name (ValaMethod* m);
ValaCCodeExpression* vala_ccode_base_module_get_type_id_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup);
ValaCCodeExpression* vala_ccode_base_module_get_dup_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCodeBaseModule* self, ValaDataType* type, gboolean is_chainup);
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);
ValaCCodeConstant* vala_ccode_base_module_get_property_canonical_cconstant (ValaCCodeBaseModule* self, ValaProperty* prop);
gchar* vala_ccode_base_module_get_ccode_nick (ValaProperty* prop);
gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop);
gchar* vala_ccode_base_module_get_ccode_param_spec_function (ValaCodeNode* sym);
gboolean vala_ccode_base_module_get_ccode_has_type_id (ValaTypeSymbol* sym);
ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
gchar* vala_ccode_base_module_get_ccode_default_value (ValaTypeSymbol* sym);
static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space);
GType vala_interface_register_function_get_type (void) G_GNUC_CONST;
ValaInterfaceRegisterFunction* vala_interface_register_function_new (ValaInterface* iface, ValaCodeContext* context);
ValaInterfaceRegisterFunction* vala_interface_register_function_construct (GType object_type, ValaInterface* iface, ValaCodeContext* context);
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);
GType vala_struct_register_function_get_type (void) G_GNUC_CONST;
ValaStructRegisterFunction* vala_struct_register_function_new (ValaStruct* st, ValaCodeContext* context);
ValaStructRegisterFunction* vala_struct_register_function_construct (GType object_type, ValaStruct* st, ValaCodeContext* context);
static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
GType vala_enum_register_function_get_type (void) G_GNUC_CONST;
ValaEnumRegisterFunction* vala_enum_register_function_new (ValaEnum* en, ValaCodeContext* context);
ValaEnumRegisterFunction* vala_enum_register_function_construct (GType object_type, ValaEnum* en, ValaCodeContext* context);
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);
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);
static void vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);
ValaCCodeExpression* vala_ccode_base_module_default_value_for_type (ValaCCodeBaseModule* self, ValaDataType* type, gboolean initializer_expression);
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;
	ValaParameter* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	ValaDataType* _tmp2_ = NULL;
	ValaParameter* _tmp8_ = NULL;
	ValaDataType* _tmp9_ = NULL;
	ValaDataType* _tmp10_ = NULL;
	ValaCCodeFile* _tmp11_ = NULL;
	gchar* ctypename = NULL;
	ValaParameter* _tmp12_ = NULL;
	ValaDataType* _tmp13_ = NULL;
	ValaDataType* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	ValaParameter* _tmp16_ = NULL;
	ValaParameterDirection _tmp17_ = 0;
	ValaParameterDirection _tmp18_ = 0;
	ValaCCodeParameter* cparam = NULL;
	ValaParameter* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	const gchar* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	gchar* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	ValaCCodeParameter* _tmp27_ = NULL;
	ValaCCodeParameter* _tmp28_ = NULL;
	ValaMap* _tmp29_ = NULL;
	ValaParameter* _tmp30_ = NULL;
	gdouble _tmp31_ = 0.0;
	gint _tmp32_ = 0;
	ValaCCodeParameter* _tmp33_ = NULL;
	ValaMap* _tmp34_ = NULL;
	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_ = param;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_OBJECT_TYPE)) {
		ValaParameter* _tmp3_ = NULL;
		ValaCCodeFile* _tmp4_ = NULL;
		ValaMap* _tmp5_ = NULL;
		ValaMap* _tmp6_ = NULL;
		ValaCCodeParameter* _tmp7_ = NULL;
		_tmp3_ = param;
		_tmp4_ = decl_space;
		_tmp5_ = cparam_map;
		_tmp6_ = carg_map;
		_tmp7_ = VALA_CCODE_METHOD_MODULE_CLASS (vala_gtype_module_parent_class)->generate_parameter ((ValaCCodeMethodModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp3_, _tmp4_, _tmp5_, _tmp6_);
		result = _tmp7_;
		return result;
	}
	_tmp8_ = param;
	_tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = decl_space;
	vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp10_, _tmp11_);
	_tmp12_ = param;
	_tmp13_ = vala_variable_get_variable_type ((ValaVariable*) _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp14_);
	ctypename = _tmp15_;
	_tmp16_ = param;
	_tmp17_ = vala_parameter_get_direction (_tmp16_);
	_tmp18_ = _tmp17_;
	if (_tmp18_ != VALA_PARAMETER_DIRECTION_IN) {
		const gchar* _tmp19_ = NULL;
		gchar* _tmp20_ = NULL;
		_tmp19_ = ctypename;
		_tmp20_ = g_strconcat (_tmp19_, "*", NULL);
		_g_free0 (ctypename);
		ctypename = _tmp20_;
	}
	_tmp21_ = param;
	_tmp22_ = vala_symbol_get_name ((ValaSymbol*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = ctypename;
	_tmp27_ = vala_ccode_parameter_new (_tmp25_, _tmp26_);
	_tmp28_ = _tmp27_;
	_g_free0 (_tmp25_);
	cparam = _tmp28_;
	_tmp29_ = cparam_map;
	_tmp30_ = param;
	_tmp31_ = vala_ccode_base_module_get_ccode_pos (_tmp30_);
	_tmp32_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp31_, FALSE);
	_tmp33_ = cparam;
	vala_map_set (_tmp29_, (gpointer) ((gintptr) _tmp32_), _tmp33_);
	_tmp34_ = carg_map;
	if (_tmp34_ != NULL) {
		ValaMap* _tmp35_ = NULL;
		ValaParameter* _tmp36_ = NULL;
		gdouble _tmp37_ = 0.0;
		gint _tmp38_ = 0;
		ValaParameter* _tmp39_ = NULL;
		const gchar* _tmp40_ = NULL;
		const gchar* _tmp41_ = NULL;
		ValaCCodeExpression* _tmp42_ = NULL;
		ValaCCodeExpression* _tmp43_ = NULL;
		_tmp35_ = carg_map;
		_tmp36_ = param;
		_tmp37_ = vala_ccode_base_module_get_ccode_pos (_tmp36_);
		_tmp38_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp37_, FALSE);
		_tmp39_ = param;
		_tmp40_ = vala_symbol_get_name ((ValaSymbol*) _tmp39_);
		_tmp41_ = _tmp40_;
		_tmp42_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp41_);
		_tmp43_ = _tmp42_;
		vala_map_set (_tmp35_, (gpointer) ((gintptr) _tmp38_), _tmp43_);
		_vala_ccode_node_unref0 (_tmp43_);
	}
	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;
	ValaCCodeFile* _tmp0_ = NULL;
	ValaClass* _tmp1_ = NULL;
	ValaClass* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	ValaClass* _tmp7_ = NULL;
	ValaClass* _tmp8_ = NULL;
	ValaClass* _tmp9_ = NULL;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp14_ = NULL;
	gboolean _tmp15_ = FALSE;
	gboolean _tmp16_ = FALSE;
	gboolean _tmp17_ = FALSE;
	gboolean _tmp18_ = FALSE;
	gboolean is_fundamental = FALSE;
	gboolean is_gsource = FALSE;
	ValaClass* _tmp22_ = NULL;
	ValaClass* _tmp23_ = NULL;
	ValaClass* _tmp24_ = NULL;
	ValaClass* _tmp25_ = NULL;
	gboolean _tmp26_ = FALSE;
	gboolean _tmp119_ = FALSE;
	gboolean _tmp120_ = FALSE;
	ValaClass* _tmp121_ = NULL;
	gboolean _tmp122_ = FALSE;
	gboolean _tmp123_ = FALSE;
	gboolean _tmp154_ = FALSE;
	gboolean _tmp330_ = FALSE;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = cl;
	_tmp2_ = cl;
	_tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	if (_tmp6_) {
		return;
	}
	_tmp7_ = cl;
	_tmp8_ = vala_class_get_base_class (_tmp7_);
	_tmp9_ = _tmp8_;
	if (_tmp9_ != NULL) {
		ValaClass* _tmp10_ = NULL;
		ValaClass* _tmp11_ = NULL;
		ValaClass* _tmp12_ = NULL;
		ValaCCodeFile* _tmp13_ = NULL;
		_tmp10_ = cl;
		_tmp11_ = vala_class_get_base_class (_tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = decl_space;
		vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp12_, _tmp13_);
	}
	_tmp14_ = cl;
	_tmp15_ = vala_class_get_is_compact (_tmp14_);
	_tmp16_ = _tmp15_;
	is_gtypeinstance = !_tmp16_;
	_tmp18_ = is_gtypeinstance;
	if (_tmp18_) {
		ValaClass* _tmp19_ = NULL;
		ValaClass* _tmp20_ = NULL;
		ValaClass* _tmp21_ = NULL;
		_tmp19_ = cl;
		_tmp20_ = vala_class_get_base_class (_tmp19_);
		_tmp21_ = _tmp20_;
		_tmp17_ = _tmp21_ == NULL;
	} else {
		_tmp17_ = FALSE;
	}
	is_fundamental = _tmp17_;
	_tmp22_ = cl;
	_tmp23_ = vala_class_get_base_class (_tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = ((ValaCCodeBaseModule*) self)->gsource_type;
	is_gsource = _tmp24_ == _tmp25_;
	_tmp26_ = is_gtypeinstance;
	if (_tmp26_) {
		ValaCCodeFile* _tmp27_ = NULL;
		ValaCCodeNewline* _tmp28_ = NULL;
		ValaCCodeNewline* _tmp29_ = NULL;
		gchar* macro = NULL;
		ValaClass* _tmp30_ = NULL;
		gchar* _tmp31_ = NULL;
		gchar* _tmp32_ = NULL;
		gchar* _tmp33_ = NULL;
		gchar* _tmp34_ = NULL;
		ValaCCodeFile* _tmp35_ = NULL;
		ValaClass* _tmp36_ = NULL;
		gchar* _tmp37_ = NULL;
		gchar* _tmp38_ = NULL;
		const gchar* _tmp39_ = NULL;
		ValaCCodeMacroReplacement* _tmp40_ = NULL;
		ValaCCodeMacroReplacement* _tmp41_ = NULL;
		ValaClass* _tmp42_ = NULL;
		gchar* _tmp43_ = NULL;
		gchar* _tmp44_ = NULL;
		ValaClass* _tmp45_ = NULL;
		gchar* _tmp46_ = NULL;
		gchar* _tmp47_ = NULL;
		gchar* _tmp48_ = NULL;
		ValaCCodeFile* _tmp49_ = NULL;
		ValaClass* _tmp50_ = NULL;
		gchar* _tmp51_ = NULL;
		gchar* _tmp52_ = NULL;
		gchar* _tmp53_ = NULL;
		gchar* _tmp54_ = NULL;
		const gchar* _tmp55_ = NULL;
		ValaCCodeMacroReplacement* _tmp56_ = NULL;
		ValaCCodeMacroReplacement* _tmp57_ = NULL;
		ValaClass* _tmp58_ = NULL;
		gchar* _tmp59_ = NULL;
		gchar* _tmp60_ = NULL;
		ValaClass* _tmp61_ = NULL;
		gchar* _tmp62_ = NULL;
		gchar* _tmp63_ = NULL;
		gchar* _tmp64_ = NULL;
		ValaCCodeFile* _tmp65_ = NULL;
		ValaClass* _tmp66_ = NULL;
		gchar* _tmp67_ = NULL;
		gchar* _tmp68_ = NULL;
		gchar* _tmp69_ = NULL;
		gchar* _tmp70_ = NULL;
		const gchar* _tmp71_ = NULL;
		ValaCCodeMacroReplacement* _tmp72_ = NULL;
		ValaCCodeMacroReplacement* _tmp73_ = NULL;
		ValaClass* _tmp74_ = NULL;
		gchar* _tmp75_ = NULL;
		gchar* _tmp76_ = NULL;
		gchar* _tmp77_ = NULL;
		ValaCCodeFile* _tmp78_ = NULL;
		ValaClass* _tmp79_ = NULL;
		gchar* _tmp80_ = NULL;
		gchar* _tmp81_ = NULL;
		gchar* _tmp82_ = NULL;
		gchar* _tmp83_ = NULL;
		const gchar* _tmp84_ = NULL;
		ValaCCodeMacroReplacement* _tmp85_ = NULL;
		ValaCCodeMacroReplacement* _tmp86_ = NULL;
		ValaClass* _tmp87_ = NULL;
		gchar* _tmp88_ = NULL;
		gchar* _tmp89_ = NULL;
		gchar* _tmp90_ = NULL;
		ValaCCodeFile* _tmp91_ = NULL;
		ValaClass* _tmp92_ = NULL;
		gchar* _tmp93_ = NULL;
		gchar* _tmp94_ = NULL;
		gchar* _tmp95_ = NULL;
		gchar* _tmp96_ = NULL;
		const gchar* _tmp97_ = NULL;
		ValaCCodeMacroReplacement* _tmp98_ = NULL;
		ValaCCodeMacroReplacement* _tmp99_ = NULL;
		ValaClass* _tmp100_ = NULL;
		gchar* _tmp101_ = NULL;
		gchar* _tmp102_ = NULL;
		ValaClass* _tmp103_ = NULL;
		gchar* _tmp104_ = NULL;
		gchar* _tmp105_ = NULL;
		gchar* _tmp106_ = NULL;
		ValaCCodeFile* _tmp107_ = NULL;
		ValaClass* _tmp108_ = NULL;
		gchar* _tmp109_ = NULL;
		gchar* _tmp110_ = NULL;
		gchar* _tmp111_ = NULL;
		gchar* _tmp112_ = NULL;
		const gchar* _tmp113_ = NULL;
		ValaCCodeMacroReplacement* _tmp114_ = NULL;
		ValaCCodeMacroReplacement* _tmp115_ = NULL;
		ValaCCodeFile* _tmp116_ = NULL;
		ValaCCodeNewline* _tmp117_ = NULL;
		ValaCCodeNewline* _tmp118_ = NULL;
		_tmp27_ = decl_space;
		_tmp28_ = vala_ccode_newline_new ();
		_tmp29_ = _tmp28_;
		vala_ccode_file_add_type_declaration (_tmp27_, (ValaCCodeNode*) _tmp29_);
		_vala_ccode_node_unref0 (_tmp29_);
		_tmp30_ = cl;
		_tmp31_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp30_, NULL);
		_tmp32_ = _tmp31_;
		_tmp33_ = g_strdup_printf ("(%s_get_type ())", _tmp32_);
		_tmp34_ = _tmp33_;
		_g_free0 (_tmp32_);
		macro = _tmp34_;
		_tmp35_ = decl_space;
		_tmp36_ = cl;
		_tmp37_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp36_);
		_tmp38_ = _tmp37_;
		_tmp39_ = macro;
		_tmp40_ = vala_ccode_macro_replacement_new (_tmp38_, _tmp39_);
		_tmp41_ = _tmp40_;
		vala_ccode_file_add_type_declaration (_tmp35_, (ValaCCodeNode*) _tmp41_);
		_vala_ccode_node_unref0 (_tmp41_);
		_g_free0 (_tmp38_);
		_tmp42_ = cl;
		_tmp43_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp42_);
		_tmp44_ = _tmp43_;
		_tmp45_ = cl;
		_tmp46_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp45_);
		_tmp47_ = _tmp46_;
		_tmp48_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp44_, _tmp47_);
		_g_free0 (macro);
		macro = _tmp48_;
		_g_free0 (_tmp47_);
		_g_free0 (_tmp44_);
		_tmp49_ = decl_space;
		_tmp50_ = cl;
		_tmp51_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp50_, NULL);
		_tmp52_ = _tmp51_;
		_tmp53_ = g_strdup_printf ("%s(obj)", _tmp52_);
		_tmp54_ = _tmp53_;
		_tmp55_ = macro;
		_tmp56_ = vala_ccode_macro_replacement_new (_tmp54_, _tmp55_);
		_tmp57_ = _tmp56_;
		vala_ccode_file_add_type_declaration (_tmp49_, (ValaCCodeNode*) _tmp57_);
		_vala_ccode_node_unref0 (_tmp57_);
		_g_free0 (_tmp54_);
		_g_free0 (_tmp52_);
		_tmp58_ = cl;
		_tmp59_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp58_);
		_tmp60_ = _tmp59_;
		_tmp61_ = cl;
		_tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_);
		_tmp63_ = _tmp62_;
		_tmp64_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_CAST ((klass), %s, %sClass))", _tmp60_, _tmp63_);
		_g_free0 (macro);
		macro = _tmp64_;
		_g_free0 (_tmp63_);
		_g_free0 (_tmp60_);
		_tmp65_ = decl_space;
		_tmp66_ = cl;
		_tmp67_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp66_, NULL);
		_tmp68_ = _tmp67_;
		_tmp69_ = g_strdup_printf ("%s_CLASS(klass)", _tmp68_);
		_tmp70_ = _tmp69_;
		_tmp71_ = macro;
		_tmp72_ = vala_ccode_macro_replacement_new (_tmp70_, _tmp71_);
		_tmp73_ = _tmp72_;
		vala_ccode_file_add_type_declaration (_tmp65_, (ValaCCodeNode*) _tmp73_);
		_vala_ccode_node_unref0 (_tmp73_);
		_g_free0 (_tmp70_);
		_g_free0 (_tmp68_);
		_tmp74_ = cl;
		_tmp75_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp74_);
		_tmp76_ = _tmp75_;
		_tmp77_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp76_);
		_g_free0 (macro);
		macro = _tmp77_;
		_g_free0 (_tmp76_);
		_tmp78_ = decl_space;
		_tmp79_ = cl;
		_tmp80_ = vala_ccode_base_module_get_ccode_type_check_function ((ValaTypeSymbol*) _tmp79_);
		_tmp81_ = _tmp80_;
		_tmp82_ = g_strdup_printf ("%s(obj)", _tmp81_);
		_tmp83_ = _tmp82_;
		_tmp84_ = macro;
		_tmp85_ = vala_ccode_macro_replacement_new (_tmp83_, _tmp84_);
		_tmp86_ = _tmp85_;
		vala_ccode_file_add_type_declaration (_tmp78_, (ValaCCodeNode*) _tmp86_);
		_vala_ccode_node_unref0 (_tmp86_);
		_g_free0 (_tmp83_);
		_g_free0 (_tmp81_);
		_tmp87_ = cl;
		_tmp88_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_TYPE ((klass), %s))", _tmp89_);
		_g_free0 (macro);
		macro = _tmp90_;
		_g_free0 (_tmp89_);
		_tmp91_ = decl_space;
		_tmp92_ = cl;
		_tmp93_ = vala_ccode_base_module_get_ccode_type_check_function ((ValaTypeSymbol*) _tmp92_);
		_tmp94_ = _tmp93_;
		_tmp95_ = g_strdup_printf ("%s_CLASS(klass)", _tmp94_);
		_tmp96_ = _tmp95_;
		_tmp97_ = macro;
		_tmp98_ = vala_ccode_macro_replacement_new (_tmp96_, _tmp97_);
		_tmp99_ = _tmp98_;
		vala_ccode_file_add_type_declaration (_tmp91_, (ValaCCodeNode*) _tmp99_);
		_vala_ccode_node_unref0 (_tmp99_);
		_g_free0 (_tmp96_);
		_g_free0 (_tmp94_);
		_tmp100_ = cl;
		_tmp101_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp100_);
		_tmp102_ = _tmp101_;
		_tmp103_ = cl;
		_tmp104_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp103_);
		_tmp105_ = _tmp104_;
		_tmp106_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %sClass))", _tmp102_, _tmp105_);
		_g_free0 (macro);
		macro = _tmp106_;
		_g_free0 (_tmp105_);
		_g_free0 (_tmp102_);
		_tmp107_ = decl_space;
		_tmp108_ = cl;
		_tmp109_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp108_, NULL);
		_tmp110_ = _tmp109_;
		_tmp111_ = g_strdup_printf ("%s_GET_CLASS(obj)", _tmp110_);
		_tmp112_ = _tmp111_;
		_tmp113_ = macro;
		_tmp114_ = vala_ccode_macro_replacement_new (_tmp112_, _tmp113_);
		_tmp115_ = _tmp114_;
		vala_ccode_file_add_type_declaration (_tmp107_, (ValaCCodeNode*) _tmp115_);
		_vala_ccode_node_unref0 (_tmp115_);
		_g_free0 (_tmp112_);
		_g_free0 (_tmp110_);
		_tmp116_ = decl_space;
		_tmp117_ = vala_ccode_newline_new ();
		_tmp118_ = _tmp117_;
		vala_ccode_file_add_type_declaration (_tmp116_, (ValaCCodeNode*) _tmp118_);
		_vala_ccode_node_unref0 (_tmp118_);
		_g_free0 (macro);
	}
	_tmp121_ = cl;
	_tmp122_ = vala_class_get_is_compact (_tmp121_);
	_tmp123_ = _tmp122_;
	if (_tmp123_) {
		ValaClass* _tmp124_ = NULL;
		ValaClass* _tmp125_ = NULL;
		ValaClass* _tmp126_ = NULL;
		_tmp124_ = cl;
		_tmp125_ = vala_class_get_base_class (_tmp124_);
		_tmp126_ = _tmp125_;
		_tmp120_ = _tmp126_ != NULL;
	} else {
		_tmp120_ = FALSE;
	}
	if (_tmp120_) {
		gboolean _tmp127_ = FALSE;
		_tmp127_ = is_gsource;
		_tmp119_ = !_tmp127_;
	} else {
		_tmp119_ = FALSE;
	}
	if (_tmp119_) {
		ValaCCodeFile* _tmp128_ = NULL;
		ValaClass* _tmp129_ = NULL;
		ValaClass* _tmp130_ = NULL;
		ValaClass* _tmp131_ = NULL;
		gchar* _tmp132_ = NULL;
		gchar* _tmp133_ = NULL;
		ValaClass* _tmp134_ = NULL;
		gchar* _tmp135_ = NULL;
		gchar* _tmp136_ = NULL;
		ValaCCodeVariableDeclarator* _tmp137_ = NULL;
		ValaCCodeVariableDeclarator* _tmp138_ = NULL;
		ValaCCodeTypeDefinition* _tmp139_ = NULL;
		ValaCCodeTypeDefinition* _tmp140_ = NULL;
		_tmp128_ = decl_space;
		_tmp129_ = cl;
		_tmp130_ = vala_class_get_base_class (_tmp129_);
		_tmp131_ = _tmp130_;
		_tmp132_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp131_);
		_tmp133_ = _tmp132_;
		_tmp134_ = cl;
		_tmp135_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp134_);
		_tmp136_ = _tmp135_;
		_tmp137_ = vala_ccode_variable_declarator_new (_tmp136_, NULL, NULL);
		_tmp138_ = _tmp137_;
		_tmp139_ = vala_ccode_type_definition_new (_tmp133_, (ValaCCodeDeclarator*) _tmp138_);
		_tmp140_ = _tmp139_;
		vala_ccode_file_add_type_declaration (_tmp128_, (ValaCCodeNode*) _tmp140_);
		_vala_ccode_node_unref0 (_tmp140_);
		_vala_ccode_node_unref0 (_tmp138_);
		_g_free0 (_tmp136_);
		_g_free0 (_tmp133_);
	} else {
		ValaCCodeFile* _tmp141_ = NULL;
		ValaClass* _tmp142_ = NULL;
		gchar* _tmp143_ = NULL;
		gchar* _tmp144_ = NULL;
		gchar* _tmp145_ = NULL;
		gchar* _tmp146_ = NULL;
		ValaClass* _tmp147_ = NULL;
		gchar* _tmp148_ = NULL;
		gchar* _tmp149_ = NULL;
		ValaCCodeVariableDeclarator* _tmp150_ = NULL;
		ValaCCodeVariableDeclarator* _tmp151_ = NULL;
		ValaCCodeTypeDefinition* _tmp152_ = NULL;
		ValaCCodeTypeDefinition* _tmp153_ = NULL;
		_tmp141_ = decl_space;
		_tmp142_ = cl;
		_tmp143_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp142_);
		_tmp144_ = _tmp143_;
		_tmp145_ = g_strdup_printf ("struct _%s", _tmp144_);
		_tmp146_ = _tmp145_;
		_tmp147_ = cl;
		_tmp148_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp147_);
		_tmp149_ = _tmp148_;
		_tmp150_ = vala_ccode_variable_declarator_new (_tmp149_, NULL, NULL);
		_tmp151_ = _tmp150_;
		_tmp152_ = vala_ccode_type_definition_new (_tmp146_, (ValaCCodeDeclarator*) _tmp151_);
		_tmp153_ = _tmp152_;
		vala_ccode_file_add_type_declaration (_tmp141_, (ValaCCodeNode*) _tmp153_);
		_vala_ccode_node_unref0 (_tmp153_);
		_vala_ccode_node_unref0 (_tmp151_);
		_g_free0 (_tmp149_);
		_g_free0 (_tmp146_);
		_g_free0 (_tmp144_);
	}
	_tmp154_ = is_fundamental;
	if (_tmp154_) {
		ValaCCodeFunction* ref_fun = NULL;
		ValaClass* _tmp155_ = NULL;
		gchar* _tmp156_ = NULL;
		gchar* _tmp157_ = NULL;
		gchar* _tmp158_ = NULL;
		gchar* _tmp159_ = NULL;
		ValaCCodeFunction* _tmp160_ = NULL;
		ValaCCodeFunction* _tmp161_ = NULL;
		ValaCCodeFunction* unref_fun = NULL;
		ValaClass* _tmp162_ = NULL;
		gchar* _tmp163_ = NULL;
		gchar* _tmp164_ = NULL;
		gchar* _tmp165_ = NULL;
		gchar* _tmp166_ = NULL;
		ValaCCodeFunction* _tmp167_ = NULL;
		ValaCCodeFunction* _tmp168_ = NULL;
		ValaClass* _tmp169_ = NULL;
		gboolean _tmp170_ = FALSE;
		ValaCCodeFunction* _tmp182_ = NULL;
		ValaCCodeParameter* _tmp183_ = NULL;
		ValaCCodeParameter* _tmp184_ = NULL;
		ValaCCodeFunction* _tmp185_ = NULL;
		ValaCCodeParameter* _tmp186_ = NULL;
		ValaCCodeParameter* _tmp187_ = NULL;
		ValaCCodeFile* _tmp188_ = NULL;
		ValaCCodeFunction* _tmp189_ = NULL;
		ValaCCodeFile* _tmp190_ = NULL;
		ValaCCodeFunction* _tmp191_ = NULL;
		gchar* function_name = NULL;
		ValaClass* _tmp192_ = NULL;
		gchar* _tmp193_ = NULL;
		ValaCCodeFunction* function = NULL;
		const gchar* _tmp194_ = NULL;
		ValaCCodeFunction* _tmp195_ = NULL;
		ValaCCodeFunction* _tmp196_ = NULL;
		ValaCCodeParameter* _tmp197_ = NULL;
		ValaCCodeParameter* _tmp198_ = NULL;
		ValaCCodeFunction* _tmp199_ = NULL;
		ValaCCodeParameter* _tmp200_ = NULL;
		ValaCCodeParameter* _tmp201_ = NULL;
		ValaCCodeFunction* _tmp202_ = NULL;
		ValaCCodeParameter* _tmp203_ = NULL;
		ValaCCodeParameter* _tmp204_ = NULL;
		ValaCCodeFunction* _tmp205_ = NULL;
		ValaCCodeParameter* _tmp206_ = NULL;
		ValaCCodeParameter* _tmp207_ = NULL;
		ValaCCodeFunction* _tmp208_ = NULL;
		ValaCCodeParameter* _tmp209_ = NULL;
		ValaCCodeParameter* _tmp210_ = NULL;
		ValaClass* _tmp211_ = NULL;
		gboolean _tmp212_ = FALSE;
		ValaCCodeFile* _tmp223_ = NULL;
		ValaCCodeFunction* _tmp224_ = NULL;
		ValaClass* _tmp225_ = NULL;
		gchar* _tmp226_ = NULL;
		gchar* _tmp227_ = NULL;
		ValaCCodeFunction* _tmp228_ = NULL;
		ValaCCodeFunction* _tmp229_ = NULL;
		ValaCCodeParameter* _tmp230_ = NULL;
		ValaCCodeParameter* _tmp231_ = NULL;
		ValaCCodeFunction* _tmp232_ = NULL;
		ValaCCodeParameter* _tmp233_ = NULL;
		ValaCCodeParameter* _tmp234_ = NULL;
		ValaClass* _tmp235_ = NULL;
		gboolean _tmp236_ = FALSE;
		ValaCCodeFile* _tmp248_ = NULL;
		ValaCCodeFunction* _tmp249_ = NULL;
		ValaClass* _tmp250_ = NULL;
		gchar* _tmp251_ = NULL;
		gchar* _tmp252_ = NULL;
		ValaCCodeFunction* _tmp253_ = NULL;
		ValaCCodeFunction* _tmp254_ = NULL;
		ValaCCodeParameter* _tmp255_ = NULL;
		ValaCCodeParameter* _tmp256_ = NULL;
		ValaCCodeFunction* _tmp257_ = NULL;
		ValaCCodeParameter* _tmp258_ = NULL;
		ValaCCodeParameter* _tmp259_ = NULL;
		ValaClass* _tmp260_ = NULL;
		gboolean _tmp261_ = FALSE;
		ValaCCodeFile* _tmp272_ = NULL;
		ValaCCodeFunction* _tmp273_ = NULL;
		ValaClass* _tmp274_ = NULL;
		gchar* _tmp275_ = NULL;
		gchar* _tmp276_ = NULL;
		ValaCCodeFunction* _tmp277_ = NULL;
		ValaCCodeFunction* _tmp278_ = NULL;
		ValaCCodeParameter* _tmp279_ = NULL;
		ValaCCodeParameter* _tmp280_ = NULL;
		ValaClass* _tmp281_ = NULL;
		gboolean _tmp282_ = FALSE;
		ValaCCodeFile* _tmp294_ = NULL;
		ValaCCodeFunction* _tmp295_ = NULL;
		_tmp155_ = cl;
		_tmp156_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp155_);
		_tmp157_ = _tmp156_;
		_tmp158_ = g_strconcat (_tmp157_, "ref", NULL);
		_tmp159_ = _tmp158_;
		_tmp160_ = vala_ccode_function_new (_tmp159_, "gpointer");
		_tmp161_ = _tmp160_;
		_g_free0 (_tmp159_);
		_g_free0 (_tmp157_);
		ref_fun = _tmp161_;
		_tmp162_ = cl;
		_tmp163_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp162_);
		_tmp164_ = _tmp163_;
		_tmp165_ = g_strconcat (_tmp164_, "unref", NULL);
		_tmp166_ = _tmp165_;
		_tmp167_ = vala_ccode_function_new (_tmp166_, "void");
		_tmp168_ = _tmp167_;
		_g_free0 (_tmp166_);
		_g_free0 (_tmp164_);
		unref_fun = _tmp168_;
		_tmp169_ = cl;
		_tmp170_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp169_);
		if (_tmp170_) {
			ValaCCodeFunction* _tmp171_ = NULL;
			ValaCCodeFunction* _tmp172_ = NULL;
			_tmp171_ = ref_fun;
			vala_ccode_function_set_modifiers (_tmp171_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp172_ = unref_fun;
			vala_ccode_function_set_modifiers (_tmp172_, VALA_CCODE_MODIFIERS_STATIC);
		} else {
			gboolean _tmp173_ = FALSE;
			ValaCodeContext* _tmp174_ = NULL;
			ValaCodeContext* _tmp175_ = NULL;
			gboolean _tmp176_ = FALSE;
			gboolean _tmp177_ = FALSE;
			_tmp174_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp175_ = _tmp174_;
			_tmp176_ = vala_code_context_get_hide_internal (_tmp175_);
			_tmp177_ = _tmp176_;
			if (_tmp177_) {
				ValaClass* _tmp178_ = NULL;
				gboolean _tmp179_ = FALSE;
				_tmp178_ = cl;
				_tmp179_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp178_);
				_tmp173_ = _tmp179_;
			} else {
				_tmp173_ = FALSE;
			}
			if (_tmp173_) {
				ValaCCodeFunction* _tmp180_ = NULL;
				ValaCCodeFunction* _tmp181_ = NULL;
				_tmp180_ = ref_fun;
				vala_ccode_function_set_modifiers (_tmp180_, VALA_CCODE_MODIFIERS_INTERNAL);
				_tmp181_ = unref_fun;
				vala_ccode_function_set_modifiers (_tmp181_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp182_ = ref_fun;
		_tmp183_ = vala_ccode_parameter_new ("instance", "gpointer");
		_tmp184_ = _tmp183_;
		vala_ccode_function_add_parameter (_tmp182_, _tmp184_);
		_vala_ccode_node_unref0 (_tmp184_);
		_tmp185_ = unref_fun;
		_tmp186_ = vala_ccode_parameter_new ("instance", "gpointer");
		_tmp187_ = _tmp186_;
		vala_ccode_function_add_parameter (_tmp185_, _tmp187_);
		_vala_ccode_node_unref0 (_tmp187_);
		_tmp188_ = decl_space;
		_tmp189_ = ref_fun;
		vala_ccode_file_add_function_declaration (_tmp188_, _tmp189_);
		_tmp190_ = decl_space;
		_tmp191_ = unref_fun;
		vala_ccode_file_add_function_declaration (_tmp190_, _tmp191_);
		_tmp192_ = cl;
		_tmp193_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp192_, "param_spec_");
		function_name = _tmp193_;
		_tmp194_ = function_name;
		_tmp195_ = vala_ccode_function_new (_tmp194_, "GParamSpec*");
		function = _tmp195_;
		_tmp196_ = function;
		_tmp197_ = vala_ccode_parameter_new ("name", "const gchar*");
		_tmp198_ = _tmp197_;
		vala_ccode_function_add_parameter (_tmp196_, _tmp198_);
		_vala_ccode_node_unref0 (_tmp198_);
		_tmp199_ = function;
		_tmp200_ = vala_ccode_parameter_new ("nick", "const gchar*");
		_tmp201_ = _tmp200_;
		vala_ccode_function_add_parameter (_tmp199_, _tmp201_);
		_vala_ccode_node_unref0 (_tmp201_);
		_tmp202_ = function;
		_tmp203_ = vala_ccode_parameter_new ("blurb", "const gchar*");
		_tmp204_ = _tmp203_;
		vala_ccode_function_add_parameter (_tmp202_, _tmp204_);
		_vala_ccode_node_unref0 (_tmp204_);
		_tmp205_ = function;
		_tmp206_ = vala_ccode_parameter_new ("object_type", "GType");
		_tmp207_ = _tmp206_;
		vala_ccode_function_add_parameter (_tmp205_, _tmp207_);
		_vala_ccode_node_unref0 (_tmp207_);
		_tmp208_ = function;
		_tmp209_ = vala_ccode_parameter_new ("flags", "GParamFlags");
		_tmp210_ = _tmp209_;
		vala_ccode_function_add_parameter (_tmp208_, _tmp210_);
		_vala_ccode_node_unref0 (_tmp210_);
		_tmp211_ = cl;
		_tmp212_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp211_);
		if (_tmp212_) {
			ValaCCodeFunction* _tmp213_ = NULL;
			ValaCCodeFunction* _tmp214_ = NULL;
			_tmp213_ = function;
			vala_ccode_function_set_modifiers (_tmp213_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp214_ = function;
			vala_ccode_function_set_attributes (_tmp214_, "G_GNUC_UNUSED");
		} else {
			gboolean _tmp215_ = FALSE;
			ValaCodeContext* _tmp216_ = NULL;
			ValaCodeContext* _tmp217_ = NULL;
			gboolean _tmp218_ = FALSE;
			gboolean _tmp219_ = FALSE;
			_tmp216_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp217_ = _tmp216_;
			_tmp218_ = vala_code_context_get_hide_internal (_tmp217_);
			_tmp219_ = _tmp218_;
			if (_tmp219_) {
				ValaClass* _tmp220_ = NULL;
				gboolean _tmp221_ = FALSE;
				_tmp220_ = cl;
				_tmp221_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp220_);
				_tmp215_ = _tmp221_;
			} else {
				_tmp215_ = FALSE;
			}
			if (_tmp215_) {
				ValaCCodeFunction* _tmp222_ = NULL;
				_tmp222_ = function;
				vala_ccode_function_set_modifiers (_tmp222_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp223_ = decl_space;
		_tmp224_ = function;
		vala_ccode_file_add_function_declaration (_tmp223_, _tmp224_);
		_tmp225_ = cl;
		_tmp226_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp225_);
		_tmp227_ = _tmp226_;
		_tmp228_ = vala_ccode_function_new (_tmp227_, "void");
		_vala_ccode_node_unref0 (function);
		function = _tmp228_;
		_g_free0 (_tmp227_);
		_tmp229_ = function;
		_tmp230_ = vala_ccode_parameter_new ("value", "GValue*");
		_tmp231_ = _tmp230_;
		vala_ccode_function_add_parameter (_tmp229_, _tmp231_);
		_vala_ccode_node_unref0 (_tmp231_);
		_tmp232_ = function;
		_tmp233_ = vala_ccode_parameter_new ("v_object", "gpointer");
		_tmp234_ = _tmp233_;
		vala_ccode_function_add_parameter (_tmp232_, _tmp234_);
		_vala_ccode_node_unref0 (_tmp234_);
		_tmp235_ = cl;
		_tmp236_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp235_);
		if (_tmp236_) {
			ValaCCodeFunction* _tmp237_ = NULL;
			ValaCCodeFunction* _tmp238_ = NULL;
			_tmp237_ = function;
			vala_ccode_function_set_modifiers (_tmp237_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp238_ = function;
			vala_ccode_function_set_attributes (_tmp238_, "G_GNUC_UNUSED");
		} else {
			gboolean _tmp239_ = FALSE;
			ValaCodeContext* _tmp240_ = NULL;
			ValaCodeContext* _tmp241_ = NULL;
			gboolean _tmp242_ = FALSE;
			gboolean _tmp243_ = FALSE;
			_tmp240_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp241_ = _tmp240_;
			_tmp242_ = vala_code_context_get_hide_internal (_tmp241_);
			_tmp243_ = _tmp242_;
			if (_tmp243_) {
				ValaClass* _tmp244_ = NULL;
				gboolean _tmp245_ = FALSE;
				_tmp244_ = cl;
				_tmp245_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp244_);
				_tmp239_ = _tmp245_;
			} else {
				_tmp239_ = FALSE;
			}
			if (_tmp239_) {
				ValaCCodeFunction* _tmp246_ = NULL;
				ValaCCodeFunction* _tmp247_ = NULL;
				_tmp246_ = function;
				vala_ccode_function_set_modifiers (_tmp246_, VALA_CCODE_MODIFIERS_INTERNAL);
				_tmp247_ = function;
				vala_ccode_function_set_attributes (_tmp247_, "G_GNUC_UNUSED");
			}
		}
		_tmp248_ = decl_space;
		_tmp249_ = function;
		vala_ccode_file_add_function_declaration (_tmp248_, _tmp249_);
		_tmp250_ = cl;
		_tmp251_ = vala_ccode_base_module_get_ccode_take_value_function ((ValaCodeNode*) _tmp250_);
		_tmp252_ = _tmp251_;
		_tmp253_ = vala_ccode_function_new (_tmp252_, "void");
		_vala_ccode_node_unref0 (function);
		function = _tmp253_;
		_g_free0 (_tmp252_);
		_tmp254_ = function;
		_tmp255_ = vala_ccode_parameter_new ("value", "GValue*");
		_tmp256_ = _tmp255_;
		vala_ccode_function_add_parameter (_tmp254_, _tmp256_);
		_vala_ccode_node_unref0 (_tmp256_);
		_tmp257_ = function;
		_tmp258_ = vala_ccode_parameter_new ("v_object", "gpointer");
		_tmp259_ = _tmp258_;
		vala_ccode_function_add_parameter (_tmp257_, _tmp259_);
		_vala_ccode_node_unref0 (_tmp259_);
		_tmp260_ = cl;
		_tmp261_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp260_);
		if (_tmp261_) {
			ValaCCodeFunction* _tmp262_ = NULL;
			ValaCCodeFunction* _tmp263_ = NULL;
			_tmp262_ = function;
			vala_ccode_function_set_modifiers (_tmp262_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp263_ = function;
			vala_ccode_function_set_attributes (_tmp263_, "G_GNUC_UNUSED");
		} else {
			gboolean _tmp264_ = FALSE;
			ValaCodeContext* _tmp265_ = NULL;
			ValaCodeContext* _tmp266_ = NULL;
			gboolean _tmp267_ = FALSE;
			gboolean _tmp268_ = FALSE;
			_tmp265_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp266_ = _tmp265_;
			_tmp267_ = vala_code_context_get_hide_internal (_tmp266_);
			_tmp268_ = _tmp267_;
			if (_tmp268_) {
				ValaClass* _tmp269_ = NULL;
				gboolean _tmp270_ = FALSE;
				_tmp269_ = cl;
				_tmp270_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp269_);
				_tmp264_ = _tmp270_;
			} else {
				_tmp264_ = FALSE;
			}
			if (_tmp264_) {
				ValaCCodeFunction* _tmp271_ = NULL;
				_tmp271_ = function;
				vala_ccode_function_set_modifiers (_tmp271_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp272_ = decl_space;
		_tmp273_ = function;
		vala_ccode_file_add_function_declaration (_tmp272_, _tmp273_);
		_tmp274_ = cl;
		_tmp275_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp274_);
		_tmp276_ = _tmp275_;
		_tmp277_ = vala_ccode_function_new (_tmp276_, "gpointer");
		_vala_ccode_node_unref0 (function);
		function = _tmp277_;
		_g_free0 (_tmp276_);
		_tmp278_ = function;
		_tmp279_ = vala_ccode_parameter_new ("value", "const GValue*");
		_tmp280_ = _tmp279_;
		vala_ccode_function_add_parameter (_tmp278_, _tmp280_);
		_vala_ccode_node_unref0 (_tmp280_);
		_tmp281_ = cl;
		_tmp282_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp281_);
		if (_tmp282_) {
			ValaCCodeFunction* _tmp283_ = NULL;
			ValaCCodeFunction* _tmp284_ = NULL;
			_tmp283_ = function;
			vala_ccode_function_set_modifiers (_tmp283_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp284_ = function;
			vala_ccode_function_set_attributes (_tmp284_, "G_GNUC_UNUSED");
		} else {
			gboolean _tmp285_ = FALSE;
			ValaCodeContext* _tmp286_ = NULL;
			ValaCodeContext* _tmp287_ = NULL;
			gboolean _tmp288_ = FALSE;
			gboolean _tmp289_ = FALSE;
			_tmp286_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp287_ = _tmp286_;
			_tmp288_ = vala_code_context_get_hide_internal (_tmp287_);
			_tmp289_ = _tmp288_;
			if (_tmp289_) {
				ValaClass* _tmp290_ = NULL;
				gboolean _tmp291_ = FALSE;
				_tmp290_ = cl;
				_tmp291_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp290_);
				_tmp285_ = _tmp291_;
			} else {
				_tmp285_ = FALSE;
			}
			if (_tmp285_) {
				ValaCCodeFunction* _tmp292_ = NULL;
				ValaCCodeFunction* _tmp293_ = NULL;
				_tmp292_ = function;
				vala_ccode_function_set_modifiers (_tmp292_, VALA_CCODE_MODIFIERS_INTERNAL);
				_tmp293_ = function;
				vala_ccode_function_set_attributes (_tmp293_, "G_GNUC_UNUSED");
			}
		}
		_tmp294_ = decl_space;
		_tmp295_ = function;
		vala_ccode_file_add_function_declaration (_tmp294_, _tmp295_);
		_vala_ccode_node_unref0 (function);
		_g_free0 (function_name);
		_vala_ccode_node_unref0 (unref_fun);
		_vala_ccode_node_unref0 (ref_fun);
	} else {
		gboolean _tmp296_ = FALSE;
		gboolean _tmp297_ = FALSE;
		_tmp297_ = is_gtypeinstance;
		if (!_tmp297_) {
			gboolean _tmp298_ = FALSE;
			_tmp298_ = is_gsource;
			_tmp296_ = !_tmp298_;
		} else {
			_tmp296_ = FALSE;
		}
		if (_tmp296_) {
			ValaClass* _tmp299_ = NULL;
			ValaClass* _tmp300_ = NULL;
			ValaClass* _tmp301_ = NULL;
			_tmp299_ = cl;
			_tmp300_ = vala_class_get_base_class (_tmp299_);
			_tmp301_ = _tmp300_;
			if (_tmp301_ == NULL) {
				ValaCCodeFunction* function = NULL;
				ValaClass* _tmp302_ = NULL;
				gchar* _tmp303_ = NULL;
				gchar* _tmp304_ = NULL;
				gchar* _tmp305_ = NULL;
				gchar* _tmp306_ = NULL;
				ValaCCodeFunction* _tmp307_ = NULL;
				ValaCCodeFunction* _tmp308_ = NULL;
				ValaClass* _tmp309_ = NULL;
				gboolean _tmp310_ = FALSE;
				ValaCCodeFunction* _tmp320_ = NULL;
				ValaClass* _tmp321_ = NULL;
				gchar* _tmp322_ = NULL;
				gchar* _tmp323_ = NULL;
				gchar* _tmp324_ = NULL;
				gchar* _tmp325_ = NULL;
				ValaCCodeParameter* _tmp326_ = NULL;
				ValaCCodeParameter* _tmp327_ = NULL;
				ValaCCodeFile* _tmp328_ = NULL;
				ValaCCodeFunction* _tmp329_ = NULL;
				_tmp302_ = cl;
				_tmp303_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp302_);
				_tmp304_ = _tmp303_;
				_tmp305_ = g_strconcat (_tmp304_, "free", NULL);
				_tmp306_ = _tmp305_;
				_tmp307_ = vala_ccode_function_new (_tmp306_, "void");
				_tmp308_ = _tmp307_;
				_g_free0 (_tmp306_);
				_g_free0 (_tmp304_);
				function = _tmp308_;
				_tmp309_ = cl;
				_tmp310_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp309_);
				if (_tmp310_) {
					ValaCCodeFunction* _tmp311_ = NULL;
					_tmp311_ = function;
					vala_ccode_function_set_modifiers (_tmp311_, VALA_CCODE_MODIFIERS_STATIC);
				} else {
					gboolean _tmp312_ = FALSE;
					ValaCodeContext* _tmp313_ = NULL;
					ValaCodeContext* _tmp314_ = NULL;
					gboolean _tmp315_ = FALSE;
					gboolean _tmp316_ = FALSE;
					_tmp313_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
					_tmp314_ = _tmp313_;
					_tmp315_ = vala_code_context_get_hide_internal (_tmp314_);
					_tmp316_ = _tmp315_;
					if (_tmp316_) {
						ValaClass* _tmp317_ = NULL;
						gboolean _tmp318_ = FALSE;
						_tmp317_ = cl;
						_tmp318_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp317_);
						_tmp312_ = _tmp318_;
					} else {
						_tmp312_ = FALSE;
					}
					if (_tmp312_) {
						ValaCCodeFunction* _tmp319_ = NULL;
						_tmp319_ = function;
						vala_ccode_function_set_modifiers (_tmp319_, VALA_CCODE_MODIFIERS_INTERNAL);
					}
				}
				_tmp320_ = function;
				_tmp321_ = cl;
				_tmp322_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp321_);
				_tmp323_ = _tmp322_;
				_tmp324_ = g_strconcat (_tmp323_, "*", NULL);
				_tmp325_ = _tmp324_;
				_tmp326_ = vala_ccode_parameter_new ("self", _tmp325_);
				_tmp327_ = _tmp326_;
				vala_ccode_function_add_parameter (_tmp320_, _tmp327_);
				_vala_ccode_node_unref0 (_tmp327_);
				_g_free0 (_tmp325_);
				_g_free0 (_tmp323_);
				_tmp328_ = decl_space;
				_tmp329_ = function;
				vala_ccode_file_add_function_declaration (_tmp328_, _tmp329_);
				_vala_ccode_node_unref0 (function);
			}
		}
	}
	_tmp330_ = is_gtypeinstance;
	if (_tmp330_) {
		ValaCCodeFile* _tmp331_ = NULL;
		ValaClass* _tmp332_ = NULL;
		gchar* _tmp333_ = NULL;
		gchar* _tmp334_ = NULL;
		gchar* _tmp335_ = NULL;
		gchar* _tmp336_ = NULL;
		ValaClass* _tmp337_ = NULL;
		gchar* _tmp338_ = NULL;
		gchar* _tmp339_ = NULL;
		gchar* _tmp340_ = NULL;
		gchar* _tmp341_ = NULL;
		ValaCCodeVariableDeclarator* _tmp342_ = NULL;
		ValaCCodeVariableDeclarator* _tmp343_ = NULL;
		ValaCCodeTypeDefinition* _tmp344_ = NULL;
		ValaCCodeTypeDefinition* _tmp345_ = NULL;
		ValaClassRegisterFunction* type_fun = NULL;
		ValaClass* _tmp346_ = NULL;
		ValaCodeContext* _tmp347_ = NULL;
		ValaCodeContext* _tmp348_ = NULL;
		ValaClassRegisterFunction* _tmp349_ = NULL;
		ValaClassRegisterFunction* _tmp350_ = NULL;
		gboolean _tmp351_ = FALSE;
		ValaCCodeFile* _tmp352_ = NULL;
		ValaClassRegisterFunction* _tmp353_ = NULL;
		ValaCCodeFragment* _tmp354_ = NULL;
		ValaCCodeFragment* _tmp355_ = NULL;
		_tmp331_ = decl_space;
		_tmp332_ = cl;
		_tmp333_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp332_);
		_tmp334_ = _tmp333_;
		_tmp335_ = g_strdup_printf ("struct _%sClass", _tmp334_);
		_tmp336_ = _tmp335_;
		_tmp337_ = cl;
		_tmp338_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp337_);
		_tmp339_ = _tmp338_;
		_tmp340_ = g_strdup_printf ("%sClass", _tmp339_);
		_tmp341_ = _tmp340_;
		_tmp342_ = vala_ccode_variable_declarator_new (_tmp341_, NULL, NULL);
		_tmp343_ = _tmp342_;
		_tmp344_ = vala_ccode_type_definition_new (_tmp336_, (ValaCCodeDeclarator*) _tmp343_);
		_tmp345_ = _tmp344_;
		vala_ccode_file_add_type_declaration (_tmp331_, (ValaCCodeNode*) _tmp345_);
		_vala_ccode_node_unref0 (_tmp345_);
		_vala_ccode_node_unref0 (_tmp343_);
		_g_free0 (_tmp341_);
		_g_free0 (_tmp339_);
		_g_free0 (_tmp336_);
		_g_free0 (_tmp334_);
		_tmp346_ = cl;
		_tmp347_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp348_ = _tmp347_;
		_tmp349_ = vala_class_register_function_new (_tmp346_, _tmp348_);
		type_fun = _tmp349_;
		_tmp350_ = type_fun;
		_tmp351_ = ((ValaCCodeBaseModule*) self)->in_plugin;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp350_, _tmp351_, TRUE);
		_tmp352_ = decl_space;
		_tmp353_ = type_fun;
		_tmp354_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp353_);
		_tmp355_ = _tmp354_;
		vala_ccode_file_add_type_member_declaration (_tmp352_, (ValaCCodeNode*) _tmp355_);
		_vala_ccode_node_unref0 (_tmp355_);
		_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;
	ValaCCodeFile* _tmp0_ = NULL;
	ValaClass* _tmp1_ = NULL;
	ValaClass* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	ValaClass* _tmp9_ = NULL;
	ValaClass* _tmp10_ = NULL;
	ValaClass* _tmp11_ = NULL;
	ValaClass* _tmp34_ = NULL;
	ValaCCodeFile* _tmp35_ = NULL;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp36_ = NULL;
	gboolean _tmp37_ = FALSE;
	gboolean _tmp38_ = FALSE;
	gboolean _tmp39_ = FALSE;
	gboolean _tmp40_ = FALSE;
	gboolean is_fundamental = FALSE;
	gboolean is_gsource = FALSE;
	ValaClass* _tmp44_ = NULL;
	ValaClass* _tmp45_ = NULL;
	ValaClass* _tmp46_ = NULL;
	ValaClass* _tmp47_ = NULL;
	ValaCCodeStruct* instance_struct = NULL;
	ValaClass* _tmp48_ = NULL;
	gchar* _tmp49_ = NULL;
	gchar* _tmp50_ = NULL;
	gchar* _tmp51_ = NULL;
	gchar* _tmp52_ = NULL;
	ValaCCodeStruct* _tmp53_ = NULL;
	ValaCCodeStruct* _tmp54_ = NULL;
	ValaCCodeStruct* type_struct = NULL;
	ValaClass* _tmp55_ = NULL;
	gchar* _tmp56_ = NULL;
	gchar* _tmp57_ = NULL;
	gchar* _tmp58_ = NULL;
	gchar* _tmp59_ = NULL;
	ValaCCodeStruct* _tmp60_ = NULL;
	ValaCCodeStruct* _tmp61_ = NULL;
	ValaClass* _tmp62_ = NULL;
	ValaClass* _tmp63_ = NULL;
	ValaClass* _tmp64_ = NULL;
	gboolean _tmp75_ = FALSE;
	gboolean _tmp76_ = FALSE;
	ValaClass* _tmp77_ = NULL;
	gboolean _tmp78_ = FALSE;
	gboolean _tmp79_ = FALSE;
	gboolean _tmp89_ = FALSE;
	gboolean _tmp467_ = FALSE;
	gboolean _tmp468_ = FALSE;
	ValaClass* _tmp469_ = NULL;
	gboolean _tmp470_ = FALSE;
	gboolean _tmp471_ = FALSE;
	gboolean _tmp478_ = FALSE;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = cl;
	_tmp2_ = cl;
	_tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = g_strconcat ("struct _", _tmp4_, NULL);
	_tmp6_ = _tmp5_;
	_tmp7_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp6_);
	_tmp8_ = _tmp7_;
	_g_free0 (_tmp6_);
	_g_free0 (_tmp4_);
	if (_tmp8_) {
		return;
	}
	_tmp9_ = cl;
	_tmp10_ = vala_class_get_base_class (_tmp9_);
	_tmp11_ = _tmp10_;
	if (_tmp11_ != NULL) {
		ValaClass* _tmp12_ = NULL;
		ValaClass* _tmp13_ = NULL;
		ValaClass* _tmp14_ = NULL;
		ValaCCodeFile* _tmp15_ = NULL;
		_tmp12_ = cl;
		_tmp13_ = vala_class_get_base_class (_tmp12_);
		_tmp14_ = _tmp13_;
		_tmp15_ = decl_space;
		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp14_, _tmp15_);
	}
	{
		ValaList* _base_type_list = NULL;
		ValaClass* _tmp16_ = NULL;
		ValaList* _tmp17_ = NULL;
		gint _base_type_size = 0;
		ValaList* _tmp18_ = NULL;
		gint _tmp19_ = 0;
		gint _tmp20_ = 0;
		gint _base_type_index = 0;
		_tmp16_ = cl;
		_tmp17_ = vala_class_get_base_types (_tmp16_);
		_base_type_list = _tmp17_;
		_tmp18_ = _base_type_list;
		_tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
		_tmp20_ = _tmp19_;
		_base_type_size = _tmp20_;
		_base_type_index = -1;
		while (TRUE) {
			gint _tmp21_ = 0;
			gint _tmp22_ = 0;
			gint _tmp23_ = 0;
			ValaDataType* base_type = NULL;
			ValaList* _tmp24_ = NULL;
			gint _tmp25_ = 0;
			gpointer _tmp26_ = NULL;
			ValaInterface* iface = NULL;
			ValaDataType* _tmp27_ = NULL;
			ValaTypeSymbol* _tmp28_ = NULL;
			ValaTypeSymbol* _tmp29_ = NULL;
			ValaInterface* _tmp30_ = NULL;
			ValaInterface* _tmp31_ = NULL;
			_tmp21_ = _base_type_index;
			_base_type_index = _tmp21_ + 1;
			_tmp22_ = _base_type_index;
			_tmp23_ = _base_type_size;
			if (!(_tmp22_ < _tmp23_)) {
				break;
			}
			_tmp24_ = _base_type_list;
			_tmp25_ = _base_type_index;
			_tmp26_ = vala_list_get (_tmp24_, _tmp25_);
			base_type = (ValaDataType*) _tmp26_;
			_tmp27_ = base_type;
			_tmp28_ = vala_data_type_get_data_type (_tmp27_);
			_tmp29_ = _tmp28_;
			_tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp29_) : NULL);
			iface = _tmp30_;
			_tmp31_ = iface;
			if (_tmp31_ != NULL) {
				ValaInterface* _tmp32_ = NULL;
				ValaCCodeFile* _tmp33_ = NULL;
				_tmp32_ = iface;
				_tmp33_ = decl_space;
				vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp32_, _tmp33_);
			}
			_vala_code_node_unref0 (iface);
			_vala_code_node_unref0 (base_type);
		}
		_vala_iterable_unref0 (_base_type_list);
	}
	_tmp34_ = cl;
	_tmp35_ = decl_space;
	vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp34_, _tmp35_);
	_tmp36_ = cl;
	_tmp37_ = vala_class_get_is_compact (_tmp36_);
	_tmp38_ = _tmp37_;
	is_gtypeinstance = !_tmp38_;
	_tmp40_ = is_gtypeinstance;
	if (_tmp40_) {
		ValaClass* _tmp41_ = NULL;
		ValaClass* _tmp42_ = NULL;
		ValaClass* _tmp43_ = NULL;
		_tmp41_ = cl;
		_tmp42_ = vala_class_get_base_class (_tmp41_);
		_tmp43_ = _tmp42_;
		_tmp39_ = _tmp43_ == NULL;
	} else {
		_tmp39_ = FALSE;
	}
	is_fundamental = _tmp39_;
	_tmp44_ = cl;
	_tmp45_ = vala_class_get_base_class (_tmp44_);
	_tmp46_ = _tmp45_;
	_tmp47_ = ((ValaCCodeBaseModule*) self)->gsource_type;
	is_gsource = _tmp46_ == _tmp47_;
	_tmp48_ = cl;
	_tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
	_tmp50_ = _tmp49_;
	_tmp51_ = g_strdup_printf ("_%s", _tmp50_);
	_tmp52_ = _tmp51_;
	_tmp53_ = vala_ccode_struct_new (_tmp52_);
	_tmp54_ = _tmp53_;
	_g_free0 (_tmp52_);
	_g_free0 (_tmp50_);
	instance_struct = _tmp54_;
	_tmp55_ = cl;
	_tmp56_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp55_);
	_tmp57_ = _tmp56_;
	_tmp58_ = g_strdup_printf ("_%sClass", _tmp57_);
	_tmp59_ = _tmp58_;
	_tmp60_ = vala_ccode_struct_new (_tmp59_);
	_tmp61_ = _tmp60_;
	_g_free0 (_tmp59_);
	_g_free0 (_tmp57_);
	type_struct = _tmp61_;
	_tmp62_ = cl;
	_tmp63_ = vala_class_get_base_class (_tmp62_);
	_tmp64_ = _tmp63_;
	if (_tmp64_ != NULL) {
		ValaCCodeStruct* _tmp65_ = NULL;
		ValaClass* _tmp66_ = NULL;
		ValaClass* _tmp67_ = NULL;
		ValaClass* _tmp68_ = NULL;
		gchar* _tmp69_ = NULL;
		gchar* _tmp70_ = NULL;
		_tmp65_ = instance_struct;
		_tmp66_ = cl;
		_tmp67_ = vala_class_get_base_class (_tmp66_);
		_tmp68_ = _tmp67_;
		_tmp69_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp68_);
		_tmp70_ = _tmp69_;
		vala_ccode_struct_add_field (_tmp65_, _tmp70_, "parent_instance", NULL);
		_g_free0 (_tmp70_);
	} else {
		gboolean _tmp71_ = FALSE;
		_tmp71_ = is_fundamental;
		if (_tmp71_) {
			ValaCCodeFile* _tmp72_ = NULL;
			ValaCCodeStruct* _tmp73_ = NULL;
			ValaCCodeStruct* _tmp74_ = NULL;
			_tmp72_ = decl_space;
			vala_ccode_file_add_include (_tmp72_, "glib-object.h", FALSE);
			_tmp73_ = instance_struct;
			vala_ccode_struct_add_field (_tmp73_, "GTypeInstance", "parent_instance", NULL);
			_tmp74_ = instance_struct;
			vala_ccode_struct_add_field (_tmp74_, "volatile int", "ref_count", NULL);
		}
	}
	_tmp77_ = cl;
	_tmp78_ = vala_class_get_is_compact (_tmp77_);
	_tmp79_ = _tmp78_;
	if (_tmp79_) {
		ValaClass* _tmp80_ = NULL;
		ValaClass* _tmp81_ = NULL;
		ValaClass* _tmp82_ = NULL;
		_tmp80_ = cl;
		_tmp81_ = vala_class_get_base_class (_tmp80_);
		_tmp82_ = _tmp81_;
		_tmp76_ = _tmp82_ == NULL;
	} else {
		_tmp76_ = FALSE;
	}
	if (_tmp76_) {
		ValaClass* _tmp83_ = NULL;
		ValaList* _tmp84_ = NULL;
		ValaList* _tmp85_ = NULL;
		gint _tmp86_ = 0;
		gint _tmp87_ = 0;
		_tmp83_ = cl;
		_tmp84_ = vala_class_get_fields (_tmp83_);
		_tmp85_ = _tmp84_;
		_tmp86_ = vala_collection_get_size ((ValaCollection*) _tmp85_);
		_tmp87_ = _tmp86_;
		_tmp75_ = _tmp87_ == 0;
		_vala_iterable_unref0 (_tmp85_);
	} else {
		_tmp75_ = FALSE;
	}
	if (_tmp75_) {
		ValaCCodeStruct* _tmp88_ = NULL;
		_tmp88_ = instance_struct;
		vala_ccode_struct_add_field (_tmp88_, "int", "dummy", NULL);
	}
	_tmp89_ = is_gtypeinstance;
	if (_tmp89_) {
		ValaCCodeFile* _tmp90_ = NULL;
		ValaCCodeStruct* _tmp91_ = NULL;
		const gchar* _tmp92_ = NULL;
		const gchar* _tmp93_ = NULL;
		gchar* _tmp94_ = NULL;
		gchar* _tmp95_ = NULL;
		ValaClass* _tmp96_ = NULL;
		gchar* _tmp97_ = NULL;
		gchar* _tmp98_ = NULL;
		gchar* _tmp99_ = NULL;
		gchar* _tmp100_ = NULL;
		ValaCCodeVariableDeclarator* _tmp101_ = NULL;
		ValaCCodeVariableDeclarator* _tmp102_ = NULL;
		ValaCCodeTypeDefinition* _tmp103_ = NULL;
		ValaCCodeTypeDefinition* _tmp104_ = NULL;
		ValaCCodeStruct* _tmp105_ = NULL;
		ValaClass* _tmp106_ = NULL;
		gchar* _tmp107_ = NULL;
		gchar* _tmp108_ = NULL;
		gchar* _tmp109_ = NULL;
		gchar* _tmp110_ = NULL;
		gboolean _tmp111_ = FALSE;
		gboolean _tmp121_ = FALSE;
		_tmp90_ = decl_space;
		_tmp91_ = instance_struct;
		_tmp92_ = vala_ccode_struct_get_name (_tmp91_);
		_tmp93_ = _tmp92_;
		_tmp94_ = g_strdup_printf ("struct %sPrivate", _tmp93_);
		_tmp95_ = _tmp94_;
		_tmp96_ = cl;
		_tmp97_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp96_);
		_tmp98_ = _tmp97_;
		_tmp99_ = g_strdup_printf ("%sPrivate", _tmp98_);
		_tmp100_ = _tmp99_;
		_tmp101_ = vala_ccode_variable_declarator_new (_tmp100_, NULL, NULL);
		_tmp102_ = _tmp101_;
		_tmp103_ = vala_ccode_type_definition_new (_tmp95_, (ValaCCodeDeclarator*) _tmp102_);
		_tmp104_ = _tmp103_;
		vala_ccode_file_add_type_declaration (_tmp90_, (ValaCCodeNode*) _tmp104_);
		_vala_ccode_node_unref0 (_tmp104_);
		_vala_ccode_node_unref0 (_tmp102_);
		_g_free0 (_tmp100_);
		_g_free0 (_tmp98_);
		_g_free0 (_tmp95_);
		_tmp105_ = instance_struct;
		_tmp106_ = cl;
		_tmp107_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp106_);
		_tmp108_ = _tmp107_;
		_tmp109_ = g_strdup_printf ("%sPrivate *", _tmp108_);
		_tmp110_ = _tmp109_;
		vala_ccode_struct_add_field (_tmp105_, _tmp110_, "priv", NULL);
		_g_free0 (_tmp110_);
		_g_free0 (_tmp108_);
		_tmp111_ = is_fundamental;
		if (_tmp111_) {
			ValaCCodeStruct* _tmp112_ = NULL;
			_tmp112_ = type_struct;
			vala_ccode_struct_add_field (_tmp112_, "GTypeClass", "parent_class", NULL);
		} else {
			ValaCCodeStruct* _tmp113_ = NULL;
			ValaClass* _tmp114_ = NULL;
			ValaClass* _tmp115_ = NULL;
			ValaClass* _tmp116_ = NULL;
			gchar* _tmp117_ = NULL;
			gchar* _tmp118_ = NULL;
			gchar* _tmp119_ = NULL;
			gchar* _tmp120_ = NULL;
			_tmp113_ = type_struct;
			_tmp114_ = cl;
			_tmp115_ = vala_class_get_base_class (_tmp114_);
			_tmp116_ = _tmp115_;
			_tmp117_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp116_);
			_tmp118_ = _tmp117_;
			_tmp119_ = g_strdup_printf ("%sClass", _tmp118_);
			_tmp120_ = _tmp119_;
			vala_ccode_struct_add_field (_tmp113_, _tmp120_, "parent_class", NULL);
			_g_free0 (_tmp120_);
			_g_free0 (_tmp118_);
		}
		_tmp121_ = is_fundamental;
		if (_tmp121_) {
			ValaCCodeStruct* _tmp122_ = NULL;
			ValaClass* _tmp123_ = NULL;
			gchar* _tmp124_ = NULL;
			gchar* _tmp125_ = NULL;
			gchar* _tmp126_ = NULL;
			gchar* _tmp127_ = NULL;
			_tmp122_ = type_struct;
			_tmp123_ = cl;
			_tmp124_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp123_);
			_tmp125_ = _tmp124_;
			_tmp126_ = g_strdup_printf ("(*finalize) (%s *self)", _tmp125_);
			_tmp127_ = _tmp126_;
			vala_ccode_struct_add_field (_tmp122_, "void", _tmp127_, NULL);
			_g_free0 (_tmp127_);
			_g_free0 (_tmp125_);
		}
	}
	{
		ValaList* _m_list = NULL;
		ValaClass* _tmp128_ = NULL;
		ValaList* _tmp129_ = NULL;
		gint _m_size = 0;
		ValaList* _tmp130_ = NULL;
		gint _tmp131_ = 0;
		gint _tmp132_ = 0;
		gint _m_index = 0;
		_tmp128_ = cl;
		_tmp129_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp128_);
		_m_list = _tmp129_;
		_tmp130_ = _m_list;
		_tmp131_ = vala_collection_get_size ((ValaCollection*) _tmp130_);
		_tmp132_ = _tmp131_;
		_m_size = _tmp132_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp133_ = 0;
			gint _tmp134_ = 0;
			gint _tmp135_ = 0;
			ValaMethod* m = NULL;
			ValaList* _tmp136_ = NULL;
			gint _tmp137_ = 0;
			gpointer _tmp138_ = NULL;
			ValaMethod* _tmp139_ = NULL;
			ValaCCodeFile* _tmp140_ = NULL;
			ValaCCodeStruct* _tmp141_ = NULL;
			_tmp133_ = _m_index;
			_m_index = _tmp133_ + 1;
			_tmp134_ = _m_index;
			_tmp135_ = _m_size;
			if (!(_tmp134_ < _tmp135_)) {
				break;
			}
			_tmp136_ = _m_list;
			_tmp137_ = _m_index;
			_tmp138_ = vala_list_get (_tmp136_, _tmp137_);
			m = (ValaMethod*) _tmp138_;
			_tmp139_ = m;
			_tmp140_ = decl_space;
			_tmp141_ = type_struct;
			vala_gtype_module_generate_virtual_method_declaration (self, _tmp139_, _tmp140_, _tmp141_);
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _sig_list = NULL;
		ValaClass* _tmp142_ = NULL;
		ValaList* _tmp143_ = NULL;
		gint _sig_size = 0;
		ValaList* _tmp144_ = NULL;
		gint _tmp145_ = 0;
		gint _tmp146_ = 0;
		gint _sig_index = 0;
		_tmp142_ = cl;
		_tmp143_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp142_);
		_sig_list = _tmp143_;
		_tmp144_ = _sig_list;
		_tmp145_ = vala_collection_get_size ((ValaCollection*) _tmp144_);
		_tmp146_ = _tmp145_;
		_sig_size = _tmp146_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp147_ = 0;
			gint _tmp148_ = 0;
			gint _tmp149_ = 0;
			ValaSignal* sig = NULL;
			ValaList* _tmp150_ = NULL;
			gint _tmp151_ = 0;
			gpointer _tmp152_ = NULL;
			ValaSignal* _tmp153_ = NULL;
			ValaMethod* _tmp154_ = NULL;
			ValaMethod* _tmp155_ = NULL;
			_tmp147_ = _sig_index;
			_sig_index = _tmp147_ + 1;
			_tmp148_ = _sig_index;
			_tmp149_ = _sig_size;
			if (!(_tmp148_ < _tmp149_)) {
				break;
			}
			_tmp150_ = _sig_list;
			_tmp151_ = _sig_index;
			_tmp152_ = vala_list_get (_tmp150_, _tmp151_);
			sig = (ValaSignal*) _tmp152_;
			_tmp153_ = sig;
			_tmp154_ = vala_signal_get_default_handler (_tmp153_);
			_tmp155_ = _tmp154_;
			if (_tmp155_ != NULL) {
				ValaSignal* _tmp156_ = NULL;
				ValaMethod* _tmp157_ = NULL;
				ValaMethod* _tmp158_ = NULL;
				ValaCCodeFile* _tmp159_ = NULL;
				ValaCCodeStruct* _tmp160_ = NULL;
				_tmp156_ = sig;
				_tmp157_ = vala_signal_get_default_handler (_tmp156_);
				_tmp158_ = _tmp157_;
				_tmp159_ = decl_space;
				_tmp160_ = type_struct;
				vala_gtype_module_generate_virtual_method_declaration (self, _tmp158_, _tmp159_, _tmp160_);
			}
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp161_ = NULL;
		ValaList* _tmp162_ = NULL;
		gint _prop_size = 0;
		ValaList* _tmp163_ = NULL;
		gint _tmp164_ = 0;
		gint _tmp165_ = 0;
		gint _prop_index = 0;
		_tmp161_ = cl;
		_tmp162_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp161_);
		_prop_list = _tmp162_;
		_tmp163_ = _prop_list;
		_tmp164_ = vala_collection_get_size ((ValaCollection*) _tmp163_);
		_tmp165_ = _tmp164_;
		_prop_size = _tmp165_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp166_ = 0;
			gint _tmp167_ = 0;
			gint _tmp168_ = 0;
			ValaProperty* prop = NULL;
			ValaList* _tmp169_ = NULL;
			gint _tmp170_ = 0;
			gpointer _tmp171_ = NULL;
			gboolean _tmp172_ = FALSE;
			ValaProperty* _tmp173_ = NULL;
			gboolean _tmp174_ = FALSE;
			gboolean _tmp175_ = FALSE;
			ValaProperty* _tmp179_ = NULL;
			ValaDataType* _tmp180_ = NULL;
			ValaDataType* _tmp181_ = NULL;
			ValaCCodeFile* _tmp182_ = NULL;
			ValaObjectTypeSymbol* t = NULL;
			ValaProperty* _tmp183_ = NULL;
			ValaSymbol* _tmp184_ = NULL;
			ValaSymbol* _tmp185_ = NULL;
			ValaObjectTypeSymbol* _tmp186_ = NULL;
			ValaObjectType* this_type = NULL;
			ValaObjectTypeSymbol* _tmp187_ = NULL;
			ValaObjectType* _tmp188_ = NULL;
			ValaCCodeParameter* cselfparam = NULL;
			ValaObjectType* _tmp189_ = NULL;
			gchar* _tmp190_ = NULL;
			gchar* _tmp191_ = NULL;
			ValaCCodeParameter* _tmp192_ = NULL;
			ValaCCodeParameter* _tmp193_ = NULL;
			ValaProperty* _tmp194_ = NULL;
			ValaPropertyAccessor* _tmp195_ = NULL;
			ValaPropertyAccessor* _tmp196_ = NULL;
			ValaProperty* _tmp269_ = NULL;
			ValaPropertyAccessor* _tmp270_ = NULL;
			ValaPropertyAccessor* _tmp271_ = NULL;
			_tmp166_ = _prop_index;
			_prop_index = _tmp166_ + 1;
			_tmp167_ = _prop_index;
			_tmp168_ = _prop_size;
			if (!(_tmp167_ < _tmp168_)) {
				break;
			}
			_tmp169_ = _prop_list;
			_tmp170_ = _prop_index;
			_tmp171_ = vala_list_get (_tmp169_, _tmp170_);
			prop = (ValaProperty*) _tmp171_;
			_tmp173_ = prop;
			_tmp174_ = vala_property_get_is_abstract (_tmp173_);
			_tmp175_ = _tmp174_;
			if (!_tmp175_) {
				ValaProperty* _tmp176_ = NULL;
				gboolean _tmp177_ = FALSE;
				gboolean _tmp178_ = FALSE;
				_tmp176_ = prop;
				_tmp177_ = vala_property_get_is_virtual (_tmp176_);
				_tmp178_ = _tmp177_;
				_tmp172_ = !_tmp178_;
			} else {
				_tmp172_ = FALSE;
			}
			if (_tmp172_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp179_ = prop;
			_tmp180_ = vala_property_get_property_type (_tmp179_);
			_tmp181_ = _tmp180_;
			_tmp182_ = decl_space;
			vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp181_, _tmp182_);
			_tmp183_ = prop;
			_tmp184_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp183_);
			_tmp185_ = _tmp184_;
			_tmp186_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp185_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
			t = _tmp186_;
			_tmp187_ = t;
			_tmp188_ = vala_object_type_new (_tmp187_);
			this_type = _tmp188_;
			_tmp189_ = this_type;
			_tmp190_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp189_);
			_tmp191_ = _tmp190_;
			_tmp192_ = vala_ccode_parameter_new ("self", _tmp191_);
			_tmp193_ = _tmp192_;
			_g_free0 (_tmp191_);
			cselfparam = _tmp193_;
			_tmp194_ = prop;
			_tmp195_ = vala_property_get_get_accessor (_tmp194_);
			_tmp196_ = _tmp195_;
			if (_tmp196_ != NULL) {
				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
				ValaProperty* _tmp197_ = NULL;
				const gchar* _tmp198_ = NULL;
				const gchar* _tmp199_ = NULL;
				gchar* _tmp200_ = NULL;
				gchar* _tmp201_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp202_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp203_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp204_ = NULL;
				ValaCCodeParameter* _tmp205_ = NULL;
				gchar* creturn_type = NULL;
				ValaProperty* _tmp206_ = NULL;
				ValaDataType* _tmp207_ = NULL;
				ValaDataType* _tmp208_ = NULL;
				gboolean _tmp209_ = FALSE;
				ValaArrayType* array_type = NULL;
				ValaProperty* _tmp230_ = NULL;
				ValaDataType* _tmp231_ = NULL;
				ValaDataType* _tmp232_ = NULL;
				ValaArrayType* _tmp233_ = NULL;
				ValaArrayType* _tmp234_ = NULL;
				ValaCCodeDeclaration* vdecl = NULL;
				const gchar* _tmp263_ = NULL;
				ValaCCodeDeclaration* _tmp264_ = NULL;
				ValaCCodeDeclaration* _tmp265_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp266_ = NULL;
				ValaCCodeStruct* _tmp267_ = NULL;
				ValaCCodeDeclaration* _tmp268_ = NULL;
				_tmp197_ = prop;
				_tmp198_ = vala_symbol_get_name ((ValaSymbol*) _tmp197_);
				_tmp199_ = _tmp198_;
				_tmp200_ = g_strdup_printf ("get_%s", _tmp199_);
				_tmp201_ = _tmp200_;
				_tmp202_ = vala_ccode_function_declarator_new (_tmp201_);
				_tmp203_ = _tmp202_;
				_g_free0 (_tmp201_);
				vdeclarator = _tmp203_;
				_tmp204_ = vdeclarator;
				_tmp205_ = cselfparam;
				vala_ccode_function_declarator_add_parameter (_tmp204_, _tmp205_);
				_tmp206_ = prop;
				_tmp207_ = vala_property_get_property_type (_tmp206_);
				_tmp208_ = _tmp207_;
				_tmp209_ = vala_data_type_is_real_non_null_struct_type (_tmp208_);
				if (_tmp209_) {
					ValaCCodeParameter* cvalueparam = NULL;
					ValaProperty* _tmp210_ = NULL;
					ValaPropertyAccessor* _tmp211_ = NULL;
					ValaPropertyAccessor* _tmp212_ = NULL;
					ValaDataType* _tmp213_ = NULL;
					ValaDataType* _tmp214_ = NULL;
					gchar* _tmp215_ = NULL;
					gchar* _tmp216_ = NULL;
					gchar* _tmp217_ = NULL;
					gchar* _tmp218_ = NULL;
					ValaCCodeParameter* _tmp219_ = NULL;
					ValaCCodeParameter* _tmp220_ = NULL;
					ValaCCodeFunctionDeclarator* _tmp221_ = NULL;
					ValaCCodeParameter* _tmp222_ = NULL;
					gchar* _tmp223_ = NULL;
					_tmp210_ = prop;
					_tmp211_ = vala_property_get_get_accessor (_tmp210_);
					_tmp212_ = _tmp211_;
					_tmp213_ = vala_property_accessor_get_value_type (_tmp212_);
					_tmp214_ = _tmp213_;
					_tmp215_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp214_);
					_tmp216_ = _tmp215_;
					_tmp217_ = g_strconcat (_tmp216_, "*", NULL);
					_tmp218_ = _tmp217_;
					_tmp219_ = vala_ccode_parameter_new ("result", _tmp218_);
					_tmp220_ = _tmp219_;
					_g_free0 (_tmp218_);
					_g_free0 (_tmp216_);
					cvalueparam = _tmp220_;
					_tmp221_ = vdeclarator;
					_tmp222_ = cvalueparam;
					vala_ccode_function_declarator_add_parameter (_tmp221_, _tmp222_);
					_tmp223_ = g_strdup ("void");
					_g_free0 (creturn_type);
					creturn_type = _tmp223_;
					_vala_ccode_node_unref0 (cvalueparam);
				} else {
					ValaProperty* _tmp224_ = NULL;
					ValaPropertyAccessor* _tmp225_ = NULL;
					ValaPropertyAccessor* _tmp226_ = NULL;
					ValaDataType* _tmp227_ = NULL;
					ValaDataType* _tmp228_ = NULL;
					gchar* _tmp229_ = NULL;
					_tmp224_ = prop;
					_tmp225_ = vala_property_get_get_accessor (_tmp224_);
					_tmp226_ = _tmp225_;
					_tmp227_ = vala_property_accessor_get_value_type (_tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp228_);
					_g_free0 (creturn_type);
					creturn_type = _tmp229_;
				}
				_tmp230_ = prop;
				_tmp231_ = vala_property_get_property_type (_tmp230_);
				_tmp232_ = _tmp231_;
				_tmp233_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp232_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp232_) : NULL);
				array_type = _tmp233_;
				_tmp234_ = array_type;
				if (_tmp234_ != NULL) {
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp235_ = FALSE;
							_tmp235_ = TRUE;
							while (TRUE) {
								gint _tmp237_ = 0;
								ValaArrayType* _tmp238_ = NULL;
								gint _tmp239_ = 0;
								gint _tmp240_ = 0;
								ValaCCodeFunctionDeclarator* _tmp241_ = NULL;
								gint _tmp242_ = 0;
								gchar* _tmp243_ = NULL;
								gchar* _tmp244_ = NULL;
								ValaCCodeParameter* _tmp245_ = NULL;
								ValaCCodeParameter* _tmp246_ = NULL;
								if (!_tmp235_) {
									gint _tmp236_ = 0;
									_tmp236_ = dim;
									dim = _tmp236_ + 1;
								}
								_tmp235_ = FALSE;
								_tmp237_ = dim;
								_tmp238_ = array_type;
								_tmp239_ = vala_array_type_get_rank (_tmp238_);
								_tmp240_ = _tmp239_;
								if (!(_tmp237_ <= _tmp240_)) {
									break;
								}
								_tmp241_ = vdeclarator;
								_tmp242_ = dim;
								_tmp243_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp242_);
								_tmp244_ = _tmp243_;
								_tmp245_ = vala_ccode_parameter_new (_tmp244_, "int*");
								_tmp246_ = _tmp245_;
								vala_ccode_function_declarator_add_parameter (_tmp241_, _tmp246_);
								_vala_ccode_node_unref0 (_tmp246_);
								_g_free0 (_tmp244_);
							}
						}
					}
				} else {
					gboolean _tmp247_ = FALSE;
					ValaProperty* _tmp248_ = NULL;
					ValaDataType* _tmp249_ = NULL;
					ValaDataType* _tmp250_ = NULL;
					_tmp248_ = prop;
					_tmp249_ = vala_property_get_property_type (_tmp248_);
					_tmp250_ = _tmp249_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp250_, VALA_TYPE_DELEGATE_TYPE)) {
						ValaProperty* _tmp251_ = NULL;
						ValaDataType* _tmp252_ = NULL;
						ValaDataType* _tmp253_ = NULL;
						ValaDelegate* _tmp254_ = NULL;
						ValaDelegate* _tmp255_ = NULL;
						gboolean _tmp256_ = FALSE;
						gboolean _tmp257_ = FALSE;
						_tmp251_ = prop;
						_tmp252_ = vala_property_get_property_type (_tmp251_);
						_tmp253_ = _tmp252_;
						_tmp254_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp253_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
						_tmp255_ = _tmp254_;
						_tmp256_ = vala_delegate_get_has_target (_tmp255_);
						_tmp257_ = _tmp256_;
						_tmp247_ = _tmp257_;
					} else {
						_tmp247_ = FALSE;
					}
					if (_tmp247_) {
						ValaCCodeFunctionDeclarator* _tmp258_ = NULL;
						gchar* _tmp259_ = NULL;
						gchar* _tmp260_ = NULL;
						ValaCCodeParameter* _tmp261_ = NULL;
						ValaCCodeParameter* _tmp262_ = NULL;
						_tmp258_ = vdeclarator;
						_tmp259_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
						_tmp260_ = _tmp259_;
						_tmp261_ = vala_ccode_parameter_new (_tmp260_, "gpointer*");
						_tmp262_ = _tmp261_;
						vala_ccode_function_declarator_add_parameter (_tmp258_, _tmp262_);
						_vala_ccode_node_unref0 (_tmp262_);
						_g_free0 (_tmp260_);
					}
				}
				_tmp263_ = creturn_type;
				_tmp264_ = vala_ccode_declaration_new (_tmp263_);
				vdecl = _tmp264_;
				_tmp265_ = vdecl;
				_tmp266_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp265_, (ValaCCodeDeclarator*) _tmp266_);
				_tmp267_ = type_struct;
				_tmp268_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp267_, _tmp268_);
				_vala_ccode_node_unref0 (vdecl);
				_vala_code_node_unref0 (array_type);
				_g_free0 (creturn_type);
				_vala_ccode_node_unref0 (vdeclarator);
			}
			_tmp269_ = prop;
			_tmp270_ = vala_property_get_set_accessor (_tmp269_);
			_tmp271_ = _tmp270_;
			if (_tmp271_ != NULL) {
				ValaCCodeParameter* cvalueparam = NULL;
				ValaProperty* _tmp272_ = NULL;
				ValaDataType* _tmp273_ = NULL;
				ValaDataType* _tmp274_ = NULL;
				gboolean _tmp275_ = FALSE;
				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
				ValaProperty* _tmp294_ = NULL;
				const gchar* _tmp295_ = NULL;
				const gchar* _tmp296_ = NULL;
				gchar* _tmp297_ = NULL;
				gchar* _tmp298_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp299_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp300_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp301_ = NULL;
				ValaCCodeParameter* _tmp302_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp303_ = NULL;
				ValaCCodeParameter* _tmp304_ = NULL;
				ValaArrayType* array_type = NULL;
				ValaProperty* _tmp305_ = NULL;
				ValaDataType* _tmp306_ = NULL;
				ValaDataType* _tmp307_ = NULL;
				ValaArrayType* _tmp308_ = NULL;
				ValaArrayType* _tmp309_ = NULL;
				ValaCCodeDeclaration* vdecl = NULL;
				ValaCCodeDeclaration* _tmp338_ = NULL;
				ValaCCodeDeclaration* _tmp339_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp340_ = NULL;
				ValaCCodeStruct* _tmp341_ = NULL;
				ValaCCodeDeclaration* _tmp342_ = NULL;
				_tmp272_ = prop;
				_tmp273_ = vala_property_get_property_type (_tmp272_);
				_tmp274_ = _tmp273_;
				_tmp275_ = vala_data_type_is_real_non_null_struct_type (_tmp274_);
				if (_tmp275_) {
					ValaProperty* _tmp276_ = NULL;
					ValaPropertyAccessor* _tmp277_ = NULL;
					ValaPropertyAccessor* _tmp278_ = NULL;
					ValaDataType* _tmp279_ = NULL;
					ValaDataType* _tmp280_ = NULL;
					gchar* _tmp281_ = NULL;
					gchar* _tmp282_ = NULL;
					gchar* _tmp283_ = NULL;
					gchar* _tmp284_ = NULL;
					ValaCCodeParameter* _tmp285_ = NULL;
					_tmp276_ = prop;
					_tmp277_ = vala_property_get_set_accessor (_tmp276_);
					_tmp278_ = _tmp277_;
					_tmp279_ = vala_property_accessor_get_value_type (_tmp278_);
					_tmp280_ = _tmp279_;
					_tmp281_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp280_);
					_tmp282_ = _tmp281_;
					_tmp283_ = g_strconcat (_tmp282_, "*", NULL);
					_tmp284_ = _tmp283_;
					_tmp285_ = vala_ccode_parameter_new ("value", _tmp284_);
					_vala_ccode_node_unref0 (cvalueparam);
					cvalueparam = _tmp285_;
					_g_free0 (_tmp284_);
					_g_free0 (_tmp282_);
				} else {
					ValaProperty* _tmp286_ = NULL;
					ValaPropertyAccessor* _tmp287_ = NULL;
					ValaPropertyAccessor* _tmp288_ = NULL;
					ValaDataType* _tmp289_ = NULL;
					ValaDataType* _tmp290_ = NULL;
					gchar* _tmp291_ = NULL;
					gchar* _tmp292_ = NULL;
					ValaCCodeParameter* _tmp293_ = NULL;
					_tmp286_ = prop;
					_tmp287_ = vala_property_get_set_accessor (_tmp286_);
					_tmp288_ = _tmp287_;
					_tmp289_ = vala_property_accessor_get_value_type (_tmp288_);
					_tmp290_ = _tmp289_;
					_tmp291_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp290_);
					_tmp292_ = _tmp291_;
					_tmp293_ = vala_ccode_parameter_new ("value", _tmp292_);
					_vala_ccode_node_unref0 (cvalueparam);
					cvalueparam = _tmp293_;
					_g_free0 (_tmp292_);
				}
				_tmp294_ = prop;
				_tmp295_ = vala_symbol_get_name ((ValaSymbol*) _tmp294_);
				_tmp296_ = _tmp295_;
				_tmp297_ = g_strdup_printf ("set_%s", _tmp296_);
				_tmp298_ = _tmp297_;
				_tmp299_ = vala_ccode_function_declarator_new (_tmp298_);
				_tmp300_ = _tmp299_;
				_g_free0 (_tmp298_);
				vdeclarator = _tmp300_;
				_tmp301_ = vdeclarator;
				_tmp302_ = cselfparam;
				vala_ccode_function_declarator_add_parameter (_tmp301_, _tmp302_);
				_tmp303_ = vdeclarator;
				_tmp304_ = cvalueparam;
				vala_ccode_function_declarator_add_parameter (_tmp303_, _tmp304_);
				_tmp305_ = prop;
				_tmp306_ = vala_property_get_property_type (_tmp305_);
				_tmp307_ = _tmp306_;
				_tmp308_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp307_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp307_) : NULL);
				array_type = _tmp308_;
				_tmp309_ = array_type;
				if (_tmp309_ != NULL) {
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp310_ = FALSE;
							_tmp310_ = TRUE;
							while (TRUE) {
								gint _tmp312_ = 0;
								ValaArrayType* _tmp313_ = NULL;
								gint _tmp314_ = 0;
								gint _tmp315_ = 0;
								ValaCCodeFunctionDeclarator* _tmp316_ = NULL;
								gint _tmp317_ = 0;
								gchar* _tmp318_ = NULL;
								gchar* _tmp319_ = NULL;
								ValaCCodeParameter* _tmp320_ = NULL;
								ValaCCodeParameter* _tmp321_ = NULL;
								if (!_tmp310_) {
									gint _tmp311_ = 0;
									_tmp311_ = dim;
									dim = _tmp311_ + 1;
								}
								_tmp310_ = FALSE;
								_tmp312_ = dim;
								_tmp313_ = array_type;
								_tmp314_ = vala_array_type_get_rank (_tmp313_);
								_tmp315_ = _tmp314_;
								if (!(_tmp312_ <= _tmp315_)) {
									break;
								}
								_tmp316_ = vdeclarator;
								_tmp317_ = dim;
								_tmp318_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", _tmp317_);
								_tmp319_ = _tmp318_;
								_tmp320_ = vala_ccode_parameter_new (_tmp319_, "int");
								_tmp321_ = _tmp320_;
								vala_ccode_function_declarator_add_parameter (_tmp316_, _tmp321_);
								_vala_ccode_node_unref0 (_tmp321_);
								_g_free0 (_tmp319_);
							}
						}
					}
				} else {
					gboolean _tmp322_ = FALSE;
					ValaProperty* _tmp323_ = NULL;
					ValaDataType* _tmp324_ = NULL;
					ValaDataType* _tmp325_ = NULL;
					_tmp323_ = prop;
					_tmp324_ = vala_property_get_property_type (_tmp323_);
					_tmp325_ = _tmp324_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp325_, VALA_TYPE_DELEGATE_TYPE)) {
						ValaProperty* _tmp326_ = NULL;
						ValaDataType* _tmp327_ = NULL;
						ValaDataType* _tmp328_ = NULL;
						ValaDelegate* _tmp329_ = NULL;
						ValaDelegate* _tmp330_ = NULL;
						gboolean _tmp331_ = FALSE;
						gboolean _tmp332_ = FALSE;
						_tmp326_ = prop;
						_tmp327_ = vala_property_get_property_type (_tmp326_);
						_tmp328_ = _tmp327_;
						_tmp329_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp328_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
						_tmp330_ = _tmp329_;
						_tmp331_ = vala_delegate_get_has_target (_tmp330_);
						_tmp332_ = _tmp331_;
						_tmp322_ = _tmp332_;
					} else {
						_tmp322_ = FALSE;
					}
					if (_tmp322_) {
						ValaCCodeFunctionDeclarator* _tmp333_ = NULL;
						gchar* _tmp334_ = NULL;
						gchar* _tmp335_ = NULL;
						ValaCCodeParameter* _tmp336_ = NULL;
						ValaCCodeParameter* _tmp337_ = NULL;
						_tmp333_ = vdeclarator;
						_tmp334_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "value");
						_tmp335_ = _tmp334_;
						_tmp336_ = vala_ccode_parameter_new (_tmp335_, "gpointer");
						_tmp337_ = _tmp336_;
						vala_ccode_function_declarator_add_parameter (_tmp333_, _tmp337_);
						_vala_ccode_node_unref0 (_tmp337_);
						_g_free0 (_tmp335_);
					}
				}
				_tmp338_ = vala_ccode_declaration_new ("void");
				vdecl = _tmp338_;
				_tmp339_ = vdecl;
				_tmp340_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp339_, (ValaCCodeDeclarator*) _tmp340_);
				_tmp341_ = type_struct;
				_tmp342_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp341_, _tmp342_);
				_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* _f_list = NULL;
		ValaClass* _tmp343_ = NULL;
		ValaList* _tmp344_ = NULL;
		gint _f_size = 0;
		ValaList* _tmp345_ = NULL;
		gint _tmp346_ = 0;
		gint _tmp347_ = 0;
		gint _f_index = 0;
		_tmp343_ = cl;
		_tmp344_ = vala_class_get_fields (_tmp343_);
		_f_list = _tmp344_;
		_tmp345_ = _f_list;
		_tmp346_ = vala_collection_get_size ((ValaCollection*) _tmp345_);
		_tmp347_ = _tmp346_;
		_f_size = _tmp347_;
		_f_index = -1;
		while (TRUE) {
			gint _tmp348_ = 0;
			gint _tmp349_ = 0;
			gint _tmp350_ = 0;
			ValaField* f = NULL;
			ValaList* _tmp351_ = NULL;
			gint _tmp352_ = 0;
			gpointer _tmp353_ = NULL;
			gchar* field_ctype = NULL;
			ValaField* _tmp354_ = NULL;
			ValaDataType* _tmp355_ = NULL;
			ValaDataType* _tmp356_ = NULL;
			gchar* _tmp357_ = NULL;
			ValaField* _tmp358_ = NULL;
			gboolean _tmp359_ = FALSE;
			gboolean _tmp360_ = FALSE;
			ValaField* _tmp363_ = NULL;
			ValaSymbolAccessibility _tmp364_ = 0;
			ValaSymbolAccessibility _tmp365_ = 0;
			_tmp348_ = _f_index;
			_f_index = _tmp348_ + 1;
			_tmp349_ = _f_index;
			_tmp350_ = _f_size;
			if (!(_tmp349_ < _tmp350_)) {
				break;
			}
			_tmp351_ = _f_list;
			_tmp352_ = _f_index;
			_tmp353_ = vala_list_get (_tmp351_, _tmp352_);
			f = (ValaField*) _tmp353_;
			_tmp354_ = f;
			_tmp355_ = vala_variable_get_variable_type ((ValaVariable*) _tmp354_);
			_tmp356_ = _tmp355_;
			_tmp357_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp356_);
			field_ctype = _tmp357_;
			_tmp358_ = f;
			_tmp359_ = vala_field_get_is_volatile (_tmp358_);
			_tmp360_ = _tmp359_;
			if (_tmp360_) {
				const gchar* _tmp361_ = NULL;
				gchar* _tmp362_ = NULL;
				_tmp361_ = field_ctype;
				_tmp362_ = g_strconcat ("volatile ", _tmp361_, NULL);
				_g_free0 (field_ctype);
				field_ctype = _tmp362_;
			}
			_tmp363_ = f;
			_tmp364_ = vala_symbol_get_access ((ValaSymbol*) _tmp363_);
			_tmp365_ = _tmp364_;
			if (_tmp365_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
				ValaField* _tmp366_ = NULL;
				ValaMemberBinding _tmp367_ = 0;
				ValaMemberBinding _tmp368_ = 0;
				_tmp366_ = f;
				_tmp367_ = vala_field_get_binding (_tmp366_);
				_tmp368_ = _tmp367_;
				if (_tmp368_ == VALA_MEMBER_BINDING_INSTANCE) {
					ValaField* _tmp369_ = NULL;
					ValaDataType* _tmp370_ = NULL;
					ValaDataType* _tmp371_ = NULL;
					ValaCCodeFile* _tmp372_ = NULL;
					ValaCCodeStruct* _tmp373_ = NULL;
					const gchar* _tmp374_ = NULL;
					ValaField* _tmp375_ = NULL;
					gchar* _tmp376_ = NULL;
					gchar* _tmp377_ = NULL;
					ValaField* _tmp378_ = NULL;
					ValaDataType* _tmp379_ = NULL;
					ValaDataType* _tmp380_ = NULL;
					ValaCCodeDeclaratorSuffix* _tmp381_ = NULL;
					ValaCCodeDeclaratorSuffix* _tmp382_ = NULL;
					gboolean _tmp383_ = FALSE;
					ValaField* _tmp384_ = NULL;
					ValaDataType* _tmp385_ = NULL;
					ValaDataType* _tmp386_ = NULL;
					_tmp369_ = f;
					_tmp370_ = vala_variable_get_variable_type ((ValaVariable*) _tmp369_);
					_tmp371_ = _tmp370_;
					_tmp372_ = decl_space;
					vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp371_, _tmp372_);
					_tmp373_ = instance_struct;
					_tmp374_ = field_ctype;
					_tmp375_ = f;
					_tmp376_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp375_);
					_tmp377_ = _tmp376_;
					_tmp378_ = f;
					_tmp379_ = vala_variable_get_variable_type ((ValaVariable*) _tmp378_);
					_tmp380_ = _tmp379_;
					_tmp381_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp380_);
					_tmp382_ = _tmp381_;
					vala_ccode_struct_add_field (_tmp373_, _tmp374_, _tmp377_, _tmp382_);
					_vala_ccode_declarator_suffix_unref0 (_tmp382_);
					_g_free0 (_tmp377_);
					_tmp384_ = f;
					_tmp385_ = vala_variable_get_variable_type ((ValaVariable*) _tmp384_);
					_tmp386_ = _tmp385_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp386_, VALA_TYPE_ARRAY_TYPE)) {
						ValaField* _tmp387_ = NULL;
						gboolean _tmp388_ = FALSE;
						_tmp387_ = f;
						_tmp388_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp387_);
						_tmp383_ = _tmp388_;
					} else {
						_tmp383_ = FALSE;
					}
					if (_tmp383_) {
						ValaArrayType* array_type = NULL;
						ValaField* _tmp389_ = NULL;
						ValaDataType* _tmp390_ = NULL;
						ValaDataType* _tmp391_ = NULL;
						ValaArrayType* _tmp392_ = NULL;
						ValaArrayType* _tmp393_ = NULL;
						gboolean _tmp394_ = FALSE;
						gboolean _tmp395_ = FALSE;
						_tmp389_ = f;
						_tmp390_ = vala_variable_get_variable_type ((ValaVariable*) _tmp389_);
						_tmp391_ = _tmp390_;
						_tmp392_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp391_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
						array_type = _tmp392_;
						_tmp393_ = array_type;
						_tmp394_ = vala_array_type_get_fixed_length (_tmp393_);
						_tmp395_ = _tmp394_;
						if (!_tmp395_) {
							ValaDataType* len_type = NULL;
							ValaDataType* _tmp396_ = NULL;
							ValaDataType* _tmp397_ = NULL;
							gboolean _tmp420_ = FALSE;
							ValaArrayType* _tmp421_ = NULL;
							gint _tmp422_ = 0;
							gint _tmp423_ = 0;
							_tmp396_ = ((ValaCCodeBaseModule*) self)->int_type;
							_tmp397_ = vala_data_type_copy (_tmp396_);
							len_type = _tmp397_;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp398_ = FALSE;
									_tmp398_ = TRUE;
									while (TRUE) {
										gint _tmp400_ = 0;
										ValaArrayType* _tmp401_ = NULL;
										gint _tmp402_ = 0;
										gint _tmp403_ = 0;
										gchar* length_cname = NULL;
										ValaField* _tmp404_ = NULL;
										gchar* _tmp405_ = NULL;
										gchar* _tmp406_ = NULL;
										gboolean _tmp407_ = FALSE;
										ValaCCodeStruct* _tmp415_ = NULL;
										ValaDataType* _tmp416_ = NULL;
										gchar* _tmp417_ = NULL;
										gchar* _tmp418_ = NULL;
										const gchar* _tmp419_ = NULL;
										if (!_tmp398_) {
											gint _tmp399_ = 0;
											_tmp399_ = dim;
											dim = _tmp399_ + 1;
										}
										_tmp398_ = FALSE;
										_tmp400_ = dim;
										_tmp401_ = array_type;
										_tmp402_ = vala_array_type_get_rank (_tmp401_);
										_tmp403_ = _tmp402_;
										if (!(_tmp400_ <= _tmp403_)) {
											break;
										}
										_tmp404_ = f;
										_tmp405_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp404_);
										_tmp406_ = _tmp405_;
										_tmp407_ = _tmp406_ != NULL;
										_g_free0 (_tmp406_);
										if (_tmp407_) {
											ValaField* _tmp408_ = NULL;
											gchar* _tmp409_ = NULL;
											_tmp408_ = f;
											_tmp409_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp408_);
											_g_free0 (length_cname);
											length_cname = _tmp409_;
										} else {
											ValaField* _tmp410_ = NULL;
											const gchar* _tmp411_ = NULL;
											const gchar* _tmp412_ = NULL;
											gint _tmp413_ = 0;
											gchar* _tmp414_ = NULL;
											_tmp410_ = f;
											_tmp411_ = vala_symbol_get_name ((ValaSymbol*) _tmp410_);
											_tmp412_ = _tmp411_;
											_tmp413_ = dim;
											_tmp414_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp412_, _tmp413_);
											_g_free0 (length_cname);
											length_cname = _tmp414_;
										}
										_tmp415_ = instance_struct;
										_tmp416_ = len_type;
										_tmp417_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp416_);
										_tmp418_ = _tmp417_;
										_tmp419_ = length_cname;
										vala_ccode_struct_add_field (_tmp415_, _tmp418_, _tmp419_, NULL);
										_g_free0 (_tmp418_);
										_g_free0 (length_cname);
									}
								}
							}
							_tmp421_ = array_type;
							_tmp422_ = vala_array_type_get_rank (_tmp421_);
							_tmp423_ = _tmp422_;
							if (_tmp423_ == 1) {
								ValaField* _tmp424_ = NULL;
								gboolean _tmp425_ = FALSE;
								_tmp424_ = f;
								_tmp425_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp424_);
								_tmp420_ = _tmp425_;
							} else {
								_tmp420_ = FALSE;
							}
							if (_tmp420_) {
								ValaCCodeStruct* _tmp426_ = NULL;
								ValaDataType* _tmp427_ = NULL;
								gchar* _tmp428_ = NULL;
								gchar* _tmp429_ = NULL;
								ValaField* _tmp430_ = NULL;
								const gchar* _tmp431_ = NULL;
								const gchar* _tmp432_ = NULL;
								gchar* _tmp433_ = NULL;
								gchar* _tmp434_ = NULL;
								_tmp426_ = instance_struct;
								_tmp427_ = len_type;
								_tmp428_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp427_);
								_tmp429_ = _tmp428_;
								_tmp430_ = f;
								_tmp431_ = vala_symbol_get_name ((ValaSymbol*) _tmp430_);
								_tmp432_ = _tmp431_;
								_tmp433_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp432_);
								_tmp434_ = _tmp433_;
								vala_ccode_struct_add_field (_tmp426_, _tmp429_, _tmp434_, NULL);
								_g_free0 (_tmp434_);
								_g_free0 (_tmp429_);
							}
							_vala_code_node_unref0 (len_type);
						}
						_vala_code_node_unref0 (array_type);
					} else {
						ValaField* _tmp435_ = NULL;
						ValaDataType* _tmp436_ = NULL;
						ValaDataType* _tmp437_ = NULL;
						_tmp435_ = f;
						_tmp436_ = vala_variable_get_variable_type ((ValaVariable*) _tmp435_);
						_tmp437_ = _tmp436_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp437_, VALA_TYPE_DELEGATE_TYPE)) {
							ValaDelegateType* delegate_type = NULL;
							ValaField* _tmp438_ = NULL;
							ValaDataType* _tmp439_ = NULL;
							ValaDataType* _tmp440_ = NULL;
							ValaDelegateType* _tmp441_ = NULL;
							ValaDelegateType* _tmp442_ = NULL;
							ValaDelegate* _tmp443_ = NULL;
							ValaDelegate* _tmp444_ = NULL;
							gboolean _tmp445_ = FALSE;
							gboolean _tmp446_ = FALSE;
							_tmp438_ = f;
							_tmp439_ = vala_variable_get_variable_type ((ValaVariable*) _tmp438_);
							_tmp440_ = _tmp439_;
							_tmp441_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp440_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
							delegate_type = _tmp441_;
							_tmp442_ = delegate_type;
							_tmp443_ = vala_delegate_type_get_delegate_symbol (_tmp442_);
							_tmp444_ = _tmp443_;
							_tmp445_ = vala_delegate_get_has_target (_tmp444_);
							_tmp446_ = _tmp445_;
							if (_tmp446_) {
								ValaCCodeStruct* _tmp447_ = NULL;
								ValaField* _tmp448_ = NULL;
								gchar* _tmp449_ = NULL;
								gchar* _tmp450_ = NULL;
								ValaDelegateType* _tmp451_ = NULL;
								gboolean _tmp452_ = FALSE;
								_tmp447_ = instance_struct;
								_tmp448_ = f;
								_tmp449_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp448_);
								_tmp450_ = _tmp449_;
								vala_ccode_struct_add_field (_tmp447_, "gpointer", _tmp450_, NULL);
								_g_free0 (_tmp450_);
								_tmp451_ = delegate_type;
								_tmp452_ = vala_data_type_is_disposable ((ValaDataType*) _tmp451_);
								if (_tmp452_) {
									ValaCCodeStruct* _tmp453_ = NULL;
									ValaField* _tmp454_ = NULL;
									const gchar* _tmp455_ = NULL;
									const gchar* _tmp456_ = NULL;
									gchar* _tmp457_ = NULL;
									gchar* _tmp458_ = NULL;
									_tmp453_ = instance_struct;
									_tmp454_ = f;
									_tmp455_ = vala_symbol_get_name ((ValaSymbol*) _tmp454_);
									_tmp456_ = _tmp455_;
									_tmp457_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp456_);
									_tmp458_ = _tmp457_;
									vala_ccode_struct_add_field (_tmp453_, "GDestroyNotify", _tmp458_, NULL);
									_g_free0 (_tmp458_);
								}
							}
							_vala_code_node_unref0 (delegate_type);
						}
					}
				} else {
					ValaField* _tmp459_ = NULL;
					ValaMemberBinding _tmp460_ = 0;
					ValaMemberBinding _tmp461_ = 0;
					_tmp459_ = f;
					_tmp460_ = vala_field_get_binding (_tmp459_);
					_tmp461_ = _tmp460_;
					if (_tmp461_ == VALA_MEMBER_BINDING_CLASS) {
						ValaCCodeStruct* _tmp462_ = NULL;
						const gchar* _tmp463_ = NULL;
						ValaField* _tmp464_ = NULL;
						gchar* _tmp465_ = NULL;
						gchar* _tmp466_ = NULL;
						_tmp462_ = type_struct;
						_tmp463_ = field_ctype;
						_tmp464_ = f;
						_tmp465_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp464_);
						_tmp466_ = _tmp465_;
						vala_ccode_struct_add_field (_tmp462_, _tmp463_, _tmp466_, NULL);
						_g_free0 (_tmp466_);
					}
				}
			}
			_g_free0 (field_ctype);
			_vala_code_node_unref0 (f);
		}
		_vala_iterable_unref0 (_f_list);
	}
	_tmp469_ = cl;
	_tmp470_ = vala_class_get_is_compact (_tmp469_);
	_tmp471_ = _tmp470_;
	if (!_tmp471_) {
		_tmp468_ = TRUE;
	} else {
		ValaClass* _tmp472_ = NULL;
		ValaClass* _tmp473_ = NULL;
		ValaClass* _tmp474_ = NULL;
		_tmp472_ = cl;
		_tmp473_ = vala_class_get_base_class (_tmp472_);
		_tmp474_ = _tmp473_;
		_tmp468_ = _tmp474_ == NULL;
	}
	if (_tmp468_) {
		_tmp467_ = TRUE;
	} else {
		gboolean _tmp475_ = FALSE;
		_tmp475_ = is_gsource;
		_tmp467_ = _tmp475_;
	}
	if (_tmp467_) {
		ValaCCodeFile* _tmp476_ = NULL;
		ValaCCodeStruct* _tmp477_ = NULL;
		_tmp476_ = decl_space;
		_tmp477_ = instance_struct;
		vala_ccode_file_add_type_definition (_tmp476_, (ValaCCodeNode*) _tmp477_);
	}
	_tmp478_ = is_gtypeinstance;
	if (_tmp478_) {
		ValaCCodeFile* _tmp479_ = NULL;
		ValaCCodeStruct* _tmp480_ = NULL;
		_tmp479_ = decl_space;
		_tmp480_ = type_struct;
		vala_ccode_file_add_type_definition (_tmp479_, (ValaCCodeNode*) _tmp480_);
	}
	_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;
	ValaMethod* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	ValaDataType* creturn_type = NULL;
	ValaMethod* _tmp7_ = NULL;
	ValaDataType* _tmp8_ = NULL;
	ValaDataType* _tmp9_ = NULL;
	ValaDataType* _tmp10_ = NULL;
	ValaMethod* _tmp11_ = NULL;
	ValaDataType* _tmp12_ = NULL;
	ValaDataType* _tmp13_ = NULL;
	gboolean _tmp14_ = FALSE;
	ValaCCodeFunctionDeclarator* vdeclarator = NULL;
	ValaMethod* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp19_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp20_ = NULL;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp21_ = NULL;
	GEqualFunc _tmp22_ = NULL;
	GEqualFunc _tmp23_ = NULL;
	ValaHashMap* _tmp24_ = NULL;
	ValaMethod* _tmp25_ = NULL;
	ValaCCodeFile* _tmp26_ = NULL;
	ValaHashMap* _tmp27_ = NULL;
	ValaCCodeFunction* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp30_ = NULL;
	ValaCCodeDeclaration* vdecl = NULL;
	ValaDataType* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	ValaCCodeDeclaration* _tmp34_ = NULL;
	ValaCCodeDeclaration* _tmp35_ = NULL;
	ValaCCodeDeclaration* _tmp36_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp37_ = NULL;
	ValaCCodeStruct* _tmp38_ = NULL;
	ValaCCodeDeclaration* _tmp39_ = NULL;
	g_return_if_fail (m != NULL);
	g_return_if_fail (decl_space != NULL);
	g_return_if_fail (type_struct != NULL);
	_tmp1_ = m;
	_tmp2_ = vala_method_get_is_abstract (_tmp1_);
	_tmp3_ = _tmp2_;
	if (!_tmp3_) {
		ValaMethod* _tmp4_ = NULL;
		gboolean _tmp5_ = FALSE;
		gboolean _tmp6_ = FALSE;
		_tmp4_ = m;
		_tmp5_ = vala_method_get_is_virtual (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = !_tmp6_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		return;
	}
	_tmp7_ = m;
	_tmp8_ = vala_method_get_return_type (_tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = _vala_code_node_ref0 (_tmp9_);
	creturn_type = _tmp10_;
	_tmp11_ = m;
	_tmp12_ = vala_method_get_return_type (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_data_type_is_real_non_null_struct_type (_tmp13_);
	if (_tmp14_) {
		ValaVoidType* _tmp15_ = NULL;
		_tmp15_ = vala_void_type_new (NULL);
		_vala_code_node_unref0 (creturn_type);
		creturn_type = (ValaDataType*) _tmp15_;
	}
	_tmp16_ = m;
	_tmp17_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_function_declarator_new (_tmp18_);
	_tmp20_ = _tmp19_;
	_g_free0 (_tmp18_);
	vdeclarator = _tmp20_;
	_tmp21_ = g_direct_hash;
	_tmp22_ = g_direct_equal;
	_tmp23_ = g_direct_equal;
	_tmp24_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp21_, _tmp22_, _tmp23_);
	cparam_map = _tmp24_;
	_tmp25_ = m;
	_tmp26_ = decl_space;
	_tmp27_ = cparam_map;
	_tmp28_ = vala_ccode_function_new ("fake", "void");
	_tmp29_ = _tmp28_;
	_tmp30_ = vdeclarator;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp25_, _tmp26_, (ValaMap*) _tmp27_, _tmp29_, _tmp30_, NULL, NULL, 3);
	_vala_ccode_node_unref0 (_tmp29_);
	_tmp31_ = creturn_type;
	_tmp32_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_declaration_new (_tmp33_);
	_tmp35_ = _tmp34_;
	_g_free0 (_tmp33_);
	vdecl = _tmp35_;
	_tmp36_ = vdecl;
	_tmp37_ = vdeclarator;
	vala_ccode_declaration_add_declarator (_tmp36_, (ValaCCodeDeclarator*) _tmp37_);
	_tmp38_ = type_struct;
	_tmp39_ = vdecl;
	vala_ccode_struct_add_declaration (_tmp38_, _tmp39_);
	_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) {
	g_return_if_fail (self != NULL);
	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) {
	ValaCCodeFile* _tmp0_ = NULL;
	ValaClass* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp8_ = NULL;
	gboolean _tmp9_ = FALSE;
	gboolean _tmp10_ = FALSE;
	gboolean has_class_locks = FALSE;
	ValaCCodeStruct* instance_priv_struct = NULL;
	ValaClass* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	ValaCCodeStruct* _tmp16_ = NULL;
	ValaCCodeStruct* _tmp17_ = NULL;
	ValaCCodeStruct* type_priv_struct = NULL;
	ValaClass* _tmp18_ = NULL;
	gchar* _tmp19_ = NULL;
	gchar* _tmp20_ = NULL;
	gchar* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	ValaCCodeStruct* _tmp23_ = NULL;
	ValaCCodeStruct* _tmp24_ = NULL;
	gboolean _tmp25_ = FALSE;
	gboolean _tmp251_ = FALSE;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = cl;
	_tmp2_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strconcat (_tmp3_, "Private", NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_file_add_declaration (_tmp0_, _tmp5_);
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	if (_tmp7_) {
		return;
	}
	_tmp8_ = cl;
	_tmp9_ = vala_class_get_is_compact (_tmp8_);
	_tmp10_ = _tmp9_;
	is_gtypeinstance = !_tmp10_;
	has_class_locks = FALSE;
	_tmp11_ = cl;
	_tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strdup_printf ("_%sPrivate", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_struct_new (_tmp15_);
	_tmp17_ = _tmp16_;
	_g_free0 (_tmp15_);
	_g_free0 (_tmp13_);
	instance_priv_struct = _tmp17_;
	_tmp18_ = cl;
	_tmp19_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp18_);
	_tmp20_ = _tmp19_;
	_tmp21_ = g_strdup_printf ("_%sClassPrivate", _tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_struct_new (_tmp22_);
	_tmp24_ = _tmp23_;
	_g_free0 (_tmp22_);
	_g_free0 (_tmp20_);
	type_priv_struct = _tmp24_;
	_tmp25_ = is_gtypeinstance;
	if (_tmp25_) {
		{
			ValaList* _type_param_list = NULL;
			ValaClass* _tmp26_ = NULL;
			ValaList* _tmp27_ = NULL;
			gint _type_param_size = 0;
			ValaList* _tmp28_ = NULL;
			gint _tmp29_ = 0;
			gint _tmp30_ = 0;
			gint _type_param_index = 0;
			_tmp26_ = cl;
			_tmp27_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp26_);
			_type_param_list = _tmp27_;
			_tmp28_ = _type_param_list;
			_tmp29_ = vala_collection_get_size ((ValaCollection*) _tmp28_);
			_tmp30_ = _tmp29_;
			_type_param_size = _tmp30_;
			_type_param_index = -1;
			while (TRUE) {
				gint _tmp31_ = 0;
				gint _tmp32_ = 0;
				gint _tmp33_ = 0;
				ValaTypeParameter* type_param = NULL;
				ValaList* _tmp34_ = NULL;
				gint _tmp35_ = 0;
				gpointer _tmp36_ = NULL;
				gchar* func_name = NULL;
				ValaTypeParameter* _tmp37_ = NULL;
				const gchar* _tmp38_ = NULL;
				const gchar* _tmp39_ = NULL;
				gchar* _tmp40_ = NULL;
				gchar* _tmp41_ = NULL;
				gchar* _tmp42_ = NULL;
				ValaCCodeStruct* _tmp43_ = NULL;
				const gchar* _tmp44_ = NULL;
				ValaTypeParameter* _tmp45_ = NULL;
				const gchar* _tmp46_ = NULL;
				const gchar* _tmp47_ = NULL;
				gchar* _tmp48_ = NULL;
				gchar* _tmp49_ = NULL;
				gchar* _tmp50_ = NULL;
				ValaCCodeStruct* _tmp51_ = NULL;
				const gchar* _tmp52_ = NULL;
				ValaTypeParameter* _tmp53_ = NULL;
				const gchar* _tmp54_ = NULL;
				const gchar* _tmp55_ = NULL;
				gchar* _tmp56_ = NULL;
				gchar* _tmp57_ = NULL;
				gchar* _tmp58_ = NULL;
				ValaCCodeStruct* _tmp59_ = NULL;
				const gchar* _tmp60_ = NULL;
				_tmp31_ = _type_param_index;
				_type_param_index = _tmp31_ + 1;
				_tmp32_ = _type_param_index;
				_tmp33_ = _type_param_size;
				if (!(_tmp32_ < _tmp33_)) {
					break;
				}
				_tmp34_ = _type_param_list;
				_tmp35_ = _type_param_index;
				_tmp36_ = vala_list_get (_tmp34_, _tmp35_);
				type_param = (ValaTypeParameter*) _tmp36_;
				_tmp37_ = type_param;
				_tmp38_ = vala_symbol_get_name ((ValaSymbol*) _tmp37_);
				_tmp39_ = _tmp38_;
				_tmp40_ = g_utf8_strdown (_tmp39_, (gssize) -1);
				_tmp41_ = _tmp40_;
				_tmp42_ = g_strdup_printf ("%s_type", _tmp41_);
				_g_free0 (func_name);
				func_name = _tmp42_;
				_g_free0 (_tmp41_);
				_tmp43_ = instance_priv_struct;
				_tmp44_ = func_name;
				vala_ccode_struct_add_field (_tmp43_, "GType", _tmp44_, NULL);
				_tmp45_ = type_param;
				_tmp46_ = vala_symbol_get_name ((ValaSymbol*) _tmp45_);
				_tmp47_ = _tmp46_;
				_tmp48_ = g_utf8_strdown (_tmp47_, (gssize) -1);
				_tmp49_ = _tmp48_;
				_tmp50_ = g_strdup_printf ("%s_dup_func", _tmp49_);
				_g_free0 (func_name);
				func_name = _tmp50_;
				_g_free0 (_tmp49_);
				_tmp51_ = instance_priv_struct;
				_tmp52_ = func_name;
				vala_ccode_struct_add_field (_tmp51_, "GBoxedCopyFunc", _tmp52_, NULL);
				_tmp53_ = type_param;
				_tmp54_ = vala_symbol_get_name ((ValaSymbol*) _tmp53_);
				_tmp55_ = _tmp54_;
				_tmp56_ = g_utf8_strdown (_tmp55_, (gssize) -1);
				_tmp57_ = _tmp56_;
				_tmp58_ = g_strdup_printf ("%s_destroy_func", _tmp57_);
				_g_free0 (func_name);
				func_name = _tmp58_;
				_g_free0 (_tmp57_);
				_tmp59_ = instance_priv_struct;
				_tmp60_ = func_name;
				vala_ccode_struct_add_field (_tmp59_, "GDestroyNotify", _tmp60_, NULL);
				_g_free0 (func_name);
				_vala_code_node_unref0 (type_param);
			}
			_vala_iterable_unref0 (_type_param_list);
		}
	}
	{
		ValaList* _f_list = NULL;
		ValaClass* _tmp61_ = NULL;
		ValaList* _tmp62_ = NULL;
		gint _f_size = 0;
		ValaList* _tmp63_ = NULL;
		gint _tmp64_ = 0;
		gint _tmp65_ = 0;
		gint _f_index = 0;
		_tmp61_ = cl;
		_tmp62_ = vala_class_get_fields (_tmp61_);
		_f_list = _tmp62_;
		_tmp63_ = _f_list;
		_tmp64_ = vala_collection_get_size ((ValaCollection*) _tmp63_);
		_tmp65_ = _tmp64_;
		_f_size = _tmp65_;
		_f_index = -1;
		while (TRUE) {
			gint _tmp66_ = 0;
			gint _tmp67_ = 0;
			gint _tmp68_ = 0;
			ValaField* f = NULL;
			ValaList* _tmp69_ = NULL;
			gint _tmp70_ = 0;
			gpointer _tmp71_ = NULL;
			gchar* field_ctype = NULL;
			ValaField* _tmp72_ = NULL;
			ValaDataType* _tmp73_ = NULL;
			ValaDataType* _tmp74_ = NULL;
			gchar* _tmp75_ = NULL;
			ValaField* _tmp76_ = NULL;
			gboolean _tmp77_ = FALSE;
			gboolean _tmp78_ = FALSE;
			ValaField* _tmp81_ = NULL;
			ValaMemberBinding _tmp82_ = 0;
			ValaMemberBinding _tmp83_ = 0;
			_tmp66_ = _f_index;
			_f_index = _tmp66_ + 1;
			_tmp67_ = _f_index;
			_tmp68_ = _f_size;
			if (!(_tmp67_ < _tmp68_)) {
				break;
			}
			_tmp69_ = _f_list;
			_tmp70_ = _f_index;
			_tmp71_ = vala_list_get (_tmp69_, _tmp70_);
			f = (ValaField*) _tmp71_;
			_tmp72_ = f;
			_tmp73_ = vala_variable_get_variable_type ((ValaVariable*) _tmp72_);
			_tmp74_ = _tmp73_;
			_tmp75_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp74_);
			field_ctype = _tmp75_;
			_tmp76_ = f;
			_tmp77_ = vala_field_get_is_volatile (_tmp76_);
			_tmp78_ = _tmp77_;
			if (_tmp78_) {
				const gchar* _tmp79_ = NULL;
				gchar* _tmp80_ = NULL;
				_tmp79_ = field_ctype;
				_tmp80_ = g_strconcat ("volatile ", _tmp79_, NULL);
				_g_free0 (field_ctype);
				field_ctype = _tmp80_;
			}
			_tmp81_ = f;
			_tmp82_ = vala_field_get_binding (_tmp81_);
			_tmp83_ = _tmp82_;
			if (_tmp83_ == VALA_MEMBER_BINDING_INSTANCE) {
				ValaField* _tmp84_ = NULL;
				ValaSymbolAccessibility _tmp85_ = 0;
				ValaSymbolAccessibility _tmp86_ = 0;
				ValaField* _tmp177_ = NULL;
				gboolean _tmp178_ = FALSE;
				_tmp84_ = f;
				_tmp85_ = vala_symbol_get_access ((ValaSymbol*) _tmp84_);
				_tmp86_ = _tmp85_;
				if (_tmp86_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
					ValaField* _tmp87_ = NULL;
					ValaDataType* _tmp88_ = NULL;
					ValaDataType* _tmp89_ = NULL;
					ValaCCodeFile* _tmp90_ = NULL;
					ValaCCodeStruct* _tmp91_ = NULL;
					const gchar* _tmp92_ = NULL;
					ValaField* _tmp93_ = NULL;
					gchar* _tmp94_ = NULL;
					gchar* _tmp95_ = NULL;
					ValaField* _tmp96_ = NULL;
					ValaDataType* _tmp97_ = NULL;
					ValaDataType* _tmp98_ = NULL;
					ValaCCodeDeclaratorSuffix* _tmp99_ = NULL;
					ValaCCodeDeclaratorSuffix* _tmp100_ = NULL;
					gboolean _tmp101_ = FALSE;
					ValaField* _tmp102_ = NULL;
					ValaDataType* _tmp103_ = NULL;
					ValaDataType* _tmp104_ = NULL;
					_tmp87_ = f;
					_tmp88_ = vala_variable_get_variable_type ((ValaVariable*) _tmp87_);
					_tmp89_ = _tmp88_;
					_tmp90_ = decl_space;
					vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp89_, _tmp90_);
					_tmp91_ = instance_priv_struct;
					_tmp92_ = field_ctype;
					_tmp93_ = f;
					_tmp94_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp93_);
					_tmp95_ = _tmp94_;
					_tmp96_ = f;
					_tmp97_ = vala_variable_get_variable_type ((ValaVariable*) _tmp96_);
					_tmp98_ = _tmp97_;
					_tmp99_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp98_);
					_tmp100_ = _tmp99_;
					vala_ccode_struct_add_field (_tmp91_, _tmp92_, _tmp95_, _tmp100_);
					_vala_ccode_declarator_suffix_unref0 (_tmp100_);
					_g_free0 (_tmp95_);
					_tmp102_ = f;
					_tmp103_ = vala_variable_get_variable_type ((ValaVariable*) _tmp102_);
					_tmp104_ = _tmp103_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp104_, VALA_TYPE_ARRAY_TYPE)) {
						ValaField* _tmp105_ = NULL;
						gboolean _tmp106_ = FALSE;
						_tmp105_ = f;
						_tmp106_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp105_);
						_tmp101_ = _tmp106_;
					} else {
						_tmp101_ = FALSE;
					}
					if (_tmp101_) {
						ValaArrayType* array_type = NULL;
						ValaField* _tmp107_ = NULL;
						ValaDataType* _tmp108_ = NULL;
						ValaDataType* _tmp109_ = NULL;
						ValaArrayType* _tmp110_ = NULL;
						ValaDataType* len_type = NULL;
						ValaDataType* _tmp111_ = NULL;
						ValaDataType* _tmp112_ = NULL;
						ValaArrayType* _tmp113_ = NULL;
						gboolean _tmp114_ = FALSE;
						gboolean _tmp115_ = FALSE;
						_tmp107_ = f;
						_tmp108_ = vala_variable_get_variable_type ((ValaVariable*) _tmp107_);
						_tmp109_ = _tmp108_;
						_tmp110_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp109_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
						array_type = _tmp110_;
						_tmp111_ = ((ValaCCodeBaseModule*) self)->int_type;
						_tmp112_ = vala_data_type_copy (_tmp111_);
						len_type = _tmp112_;
						_tmp113_ = array_type;
						_tmp114_ = vala_array_type_get_fixed_length (_tmp113_);
						_tmp115_ = _tmp114_;
						if (!_tmp115_) {
							gboolean _tmp138_ = FALSE;
							ValaArrayType* _tmp139_ = NULL;
							gint _tmp140_ = 0;
							gint _tmp141_ = 0;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp116_ = FALSE;
									_tmp116_ = TRUE;
									while (TRUE) {
										gint _tmp118_ = 0;
										ValaArrayType* _tmp119_ = NULL;
										gint _tmp120_ = 0;
										gint _tmp121_ = 0;
										gchar* length_cname = NULL;
										ValaField* _tmp122_ = NULL;
										gchar* _tmp123_ = NULL;
										gchar* _tmp124_ = NULL;
										gboolean _tmp125_ = FALSE;
										ValaCCodeStruct* _tmp133_ = NULL;
										ValaDataType* _tmp134_ = NULL;
										gchar* _tmp135_ = NULL;
										gchar* _tmp136_ = NULL;
										const gchar* _tmp137_ = NULL;
										if (!_tmp116_) {
											gint _tmp117_ = 0;
											_tmp117_ = dim;
											dim = _tmp117_ + 1;
										}
										_tmp116_ = FALSE;
										_tmp118_ = dim;
										_tmp119_ = array_type;
										_tmp120_ = vala_array_type_get_rank (_tmp119_);
										_tmp121_ = _tmp120_;
										if (!(_tmp118_ <= _tmp121_)) {
											break;
										}
										_tmp122_ = f;
										_tmp123_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp122_);
										_tmp124_ = _tmp123_;
										_tmp125_ = _tmp124_ != NULL;
										_g_free0 (_tmp124_);
										if (_tmp125_) {
											ValaField* _tmp126_ = NULL;
											gchar* _tmp127_ = NULL;
											_tmp126_ = f;
											_tmp127_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp126_);
											_g_free0 (length_cname);
											length_cname = _tmp127_;
										} else {
											ValaField* _tmp128_ = NULL;
											const gchar* _tmp129_ = NULL;
											const gchar* _tmp130_ = NULL;
											gint _tmp131_ = 0;
											gchar* _tmp132_ = NULL;
											_tmp128_ = f;
											_tmp129_ = vala_symbol_get_name ((ValaSymbol*) _tmp128_);
											_tmp130_ = _tmp129_;
											_tmp131_ = dim;
											_tmp132_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp130_, _tmp131_);
											_g_free0 (length_cname);
											length_cname = _tmp132_;
										}
										_tmp133_ = instance_priv_struct;
										_tmp134_ = len_type;
										_tmp135_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp134_);
										_tmp136_ = _tmp135_;
										_tmp137_ = length_cname;
										vala_ccode_struct_add_field (_tmp133_, _tmp136_, _tmp137_, NULL);
										_g_free0 (_tmp136_);
										_g_free0 (length_cname);
									}
								}
							}
							_tmp139_ = array_type;
							_tmp140_ = vala_array_type_get_rank (_tmp139_);
							_tmp141_ = _tmp140_;
							if (_tmp141_ == 1) {
								ValaField* _tmp142_ = NULL;
								gboolean _tmp143_ = FALSE;
								_tmp142_ = f;
								_tmp143_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp142_);
								_tmp138_ = _tmp143_;
							} else {
								_tmp138_ = FALSE;
							}
							if (_tmp138_) {
								ValaCCodeStruct* _tmp144_ = NULL;
								ValaDataType* _tmp145_ = NULL;
								gchar* _tmp146_ = NULL;
								gchar* _tmp147_ = NULL;
								ValaField* _tmp148_ = NULL;
								const gchar* _tmp149_ = NULL;
								const gchar* _tmp150_ = NULL;
								gchar* _tmp151_ = NULL;
								gchar* _tmp152_ = NULL;
								_tmp144_ = instance_priv_struct;
								_tmp145_ = len_type;
								_tmp146_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp145_);
								_tmp147_ = _tmp146_;
								_tmp148_ = f;
								_tmp149_ = vala_symbol_get_name ((ValaSymbol*) _tmp148_);
								_tmp150_ = _tmp149_;
								_tmp151_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp150_);
								_tmp152_ = _tmp151_;
								vala_ccode_struct_add_field (_tmp144_, _tmp147_, _tmp152_, NULL);
								_g_free0 (_tmp152_);
								_g_free0 (_tmp147_);
							}
						}
						_vala_code_node_unref0 (len_type);
						_vala_code_node_unref0 (array_type);
					} else {
						ValaField* _tmp153_ = NULL;
						ValaDataType* _tmp154_ = NULL;
						ValaDataType* _tmp155_ = NULL;
						_tmp153_ = f;
						_tmp154_ = vala_variable_get_variable_type ((ValaVariable*) _tmp153_);
						_tmp155_ = _tmp154_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp155_, VALA_TYPE_DELEGATE_TYPE)) {
							ValaDelegateType* delegate_type = NULL;
							ValaField* _tmp156_ = NULL;
							ValaDataType* _tmp157_ = NULL;
							ValaDataType* _tmp158_ = NULL;
							ValaDelegateType* _tmp159_ = NULL;
							ValaDelegateType* _tmp160_ = NULL;
							ValaDelegate* _tmp161_ = NULL;
							ValaDelegate* _tmp162_ = NULL;
							gboolean _tmp163_ = FALSE;
							gboolean _tmp164_ = FALSE;
							_tmp156_ = f;
							_tmp157_ = vala_variable_get_variable_type ((ValaVariable*) _tmp156_);
							_tmp158_ = _tmp157_;
							_tmp159_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp158_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
							delegate_type = _tmp159_;
							_tmp160_ = delegate_type;
							_tmp161_ = vala_delegate_type_get_delegate_symbol (_tmp160_);
							_tmp162_ = _tmp161_;
							_tmp163_ = vala_delegate_get_has_target (_tmp162_);
							_tmp164_ = _tmp163_;
							if (_tmp164_) {
								ValaCCodeStruct* _tmp165_ = NULL;
								ValaField* _tmp166_ = NULL;
								gchar* _tmp167_ = NULL;
								gchar* _tmp168_ = NULL;
								ValaDelegateType* _tmp169_ = NULL;
								gboolean _tmp170_ = FALSE;
								_tmp165_ = instance_priv_struct;
								_tmp166_ = f;
								_tmp167_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp166_);
								_tmp168_ = _tmp167_;
								vala_ccode_struct_add_field (_tmp165_, "gpointer", _tmp168_, NULL);
								_g_free0 (_tmp168_);
								_tmp169_ = delegate_type;
								_tmp170_ = vala_data_type_is_disposable ((ValaDataType*) _tmp169_);
								if (_tmp170_) {
									ValaCCodeStruct* _tmp171_ = NULL;
									ValaField* _tmp172_ = NULL;
									const gchar* _tmp173_ = NULL;
									const gchar* _tmp174_ = NULL;
									gchar* _tmp175_ = NULL;
									gchar* _tmp176_ = NULL;
									_tmp171_ = instance_priv_struct;
									_tmp172_ = f;
									_tmp173_ = vala_symbol_get_name ((ValaSymbol*) _tmp172_);
									_tmp174_ = _tmp173_;
									_tmp175_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp174_);
									_tmp176_ = _tmp175_;
									vala_ccode_struct_add_field (_tmp171_, "GDestroyNotify", _tmp176_, NULL);
									_g_free0 (_tmp176_);
								}
							}
							_vala_code_node_unref0 (delegate_type);
						}
					}
				}
				_tmp177_ = f;
				_tmp178_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp177_);
				if (_tmp178_) {
					ValaClass* _tmp179_ = NULL;
					ValaCCodeStruct* _tmp180_ = NULL;
					ValaStruct* _tmp181_ = NULL;
					gchar* _tmp182_ = NULL;
					gchar* _tmp183_ = NULL;
					ValaField* _tmp184_ = NULL;
					const gchar* _tmp185_ = NULL;
					const gchar* _tmp186_ = NULL;
					gchar* _tmp187_ = NULL;
					gchar* _tmp188_ = NULL;
					_tmp179_ = cl;
					vala_class_set_has_private_fields (_tmp179_, TRUE);
					_tmp180_ = instance_priv_struct;
					_tmp181_ = ((ValaCCodeBaseModule*) self)->mutex_type;
					_tmp182_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp181_);
					_tmp183_ = _tmp182_;
					_tmp184_ = f;
					_tmp185_ = vala_symbol_get_name ((ValaSymbol*) _tmp184_);
					_tmp186_ = _tmp185_;
					_tmp187_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp186_);
					_tmp188_ = _tmp187_;
					vala_ccode_struct_add_field (_tmp180_, _tmp183_, _tmp188_, NULL);
					_g_free0 (_tmp188_);
					_g_free0 (_tmp183_);
				}
			} else {
				ValaField* _tmp189_ = NULL;
				ValaMemberBinding _tmp190_ = 0;
				ValaMemberBinding _tmp191_ = 0;
				_tmp189_ = f;
				_tmp190_ = vala_field_get_binding (_tmp189_);
				_tmp191_ = _tmp190_;
				if (_tmp191_ == VALA_MEMBER_BINDING_CLASS) {
					ValaField* _tmp192_ = NULL;
					ValaSymbolAccessibility _tmp193_ = 0;
					ValaSymbolAccessibility _tmp194_ = 0;
					ValaField* _tmp200_ = NULL;
					gboolean _tmp201_ = FALSE;
					_tmp192_ = f;
					_tmp193_ = vala_symbol_get_access ((ValaSymbol*) _tmp192_);
					_tmp194_ = _tmp193_;
					if (_tmp194_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
						ValaCCodeStruct* _tmp195_ = NULL;
						const gchar* _tmp196_ = NULL;
						ValaField* _tmp197_ = NULL;
						gchar* _tmp198_ = NULL;
						gchar* _tmp199_ = NULL;
						_tmp195_ = type_priv_struct;
						_tmp196_ = field_ctype;
						_tmp197_ = f;
						_tmp198_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp197_);
						_tmp199_ = _tmp198_;
						vala_ccode_struct_add_field (_tmp195_, _tmp196_, _tmp199_, NULL);
						_g_free0 (_tmp199_);
					}
					_tmp200_ = f;
					_tmp201_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp200_);
					if (_tmp201_) {
						ValaCCodeStruct* _tmp202_ = NULL;
						ValaStruct* _tmp203_ = NULL;
						gchar* _tmp204_ = NULL;
						gchar* _tmp205_ = NULL;
						ValaField* _tmp206_ = NULL;
						gchar* _tmp207_ = NULL;
						gchar* _tmp208_ = NULL;
						gchar* _tmp209_ = NULL;
						gchar* _tmp210_ = NULL;
						has_class_locks = TRUE;
						_tmp202_ = type_priv_struct;
						_tmp203_ = ((ValaCCodeBaseModule*) self)->mutex_type;
						_tmp204_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp203_);
						_tmp205_ = _tmp204_;
						_tmp206_ = f;
						_tmp207_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp206_);
						_tmp208_ = _tmp207_;
						_tmp209_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp208_);
						_tmp210_ = _tmp209_;
						vala_ccode_struct_add_field (_tmp202_, _tmp205_, _tmp210_, NULL);
						_g_free0 (_tmp210_);
						_g_free0 (_tmp208_);
						_g_free0 (_tmp205_);
					}
				}
			}
			_g_free0 (field_ctype);
			_vala_code_node_unref0 (f);
		}
		_vala_iterable_unref0 (_f_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp211_ = NULL;
		ValaList* _tmp212_ = NULL;
		gint _prop_size = 0;
		ValaList* _tmp213_ = NULL;
		gint _tmp214_ = 0;
		gint _tmp215_ = 0;
		gint _prop_index = 0;
		_tmp211_ = cl;
		_tmp212_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp211_);
		_prop_list = _tmp212_;
		_tmp213_ = _prop_list;
		_tmp214_ = vala_collection_get_size ((ValaCollection*) _tmp213_);
		_tmp215_ = _tmp214_;
		_prop_size = _tmp215_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp216_ = 0;
			gint _tmp217_ = 0;
			gint _tmp218_ = 0;
			ValaProperty* prop = NULL;
			ValaList* _tmp219_ = NULL;
			gint _tmp220_ = 0;
			gpointer _tmp221_ = NULL;
			ValaProperty* _tmp222_ = NULL;
			ValaMemberBinding _tmp223_ = 0;
			ValaMemberBinding _tmp224_ = 0;
			_tmp216_ = _prop_index;
			_prop_index = _tmp216_ + 1;
			_tmp217_ = _prop_index;
			_tmp218_ = _prop_size;
			if (!(_tmp217_ < _tmp218_)) {
				break;
			}
			_tmp219_ = _prop_list;
			_tmp220_ = _prop_index;
			_tmp221_ = vala_list_get (_tmp219_, _tmp220_);
			prop = (ValaProperty*) _tmp221_;
			_tmp222_ = prop;
			_tmp223_ = vala_property_get_binding (_tmp222_);
			_tmp224_ = _tmp223_;
			if (_tmp224_ == VALA_MEMBER_BINDING_INSTANCE) {
				ValaProperty* _tmp225_ = NULL;
				gboolean _tmp226_ = FALSE;
				_tmp225_ = prop;
				_tmp226_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp225_);
				if (_tmp226_) {
					ValaClass* _tmp227_ = NULL;
					ValaCCodeStruct* _tmp228_ = NULL;
					ValaStruct* _tmp229_ = NULL;
					gchar* _tmp230_ = NULL;
					gchar* _tmp231_ = NULL;
					ValaProperty* _tmp232_ = NULL;
					const gchar* _tmp233_ = NULL;
					const gchar* _tmp234_ = NULL;
					gchar* _tmp235_ = NULL;
					gchar* _tmp236_ = NULL;
					_tmp227_ = cl;
					vala_class_set_has_private_fields (_tmp227_, TRUE);
					_tmp228_ = instance_priv_struct;
					_tmp229_ = ((ValaCCodeBaseModule*) self)->mutex_type;
					_tmp230_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp229_);
					_tmp231_ = _tmp230_;
					_tmp232_ = prop;
					_tmp233_ = vala_symbol_get_name ((ValaSymbol*) _tmp232_);
					_tmp234_ = _tmp233_;
					_tmp235_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp234_);
					_tmp236_ = _tmp235_;
					vala_ccode_struct_add_field (_tmp228_, _tmp231_, _tmp236_, NULL);
					_g_free0 (_tmp236_);
					_g_free0 (_tmp231_);
				}
			} else {
				ValaProperty* _tmp237_ = NULL;
				ValaMemberBinding _tmp238_ = 0;
				ValaMemberBinding _tmp239_ = 0;
				_tmp237_ = prop;
				_tmp238_ = vala_property_get_binding (_tmp237_);
				_tmp239_ = _tmp238_;
				if (_tmp239_ == VALA_MEMBER_BINDING_CLASS) {
					ValaProperty* _tmp240_ = NULL;
					gboolean _tmp241_ = FALSE;
					_tmp240_ = prop;
					_tmp241_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp240_);
					if (_tmp241_) {
						ValaCCodeStruct* _tmp242_ = NULL;
						ValaStruct* _tmp243_ = NULL;
						gchar* _tmp244_ = NULL;
						gchar* _tmp245_ = NULL;
						ValaProperty* _tmp246_ = NULL;
						const gchar* _tmp247_ = NULL;
						const gchar* _tmp248_ = NULL;
						gchar* _tmp249_ = NULL;
						gchar* _tmp250_ = NULL;
						has_class_locks = TRUE;
						_tmp242_ = type_priv_struct;
						_tmp243_ = ((ValaCCodeBaseModule*) self)->mutex_type;
						_tmp244_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp243_);
						_tmp245_ = _tmp244_;
						_tmp246_ = prop;
						_tmp247_ = vala_symbol_get_name ((ValaSymbol*) _tmp246_);
						_tmp248_ = _tmp247_;
						_tmp249_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp248_);
						_tmp250_ = _tmp249_;
						vala_ccode_struct_add_field (_tmp242_, _tmp245_, _tmp250_, NULL);
						_g_free0 (_tmp250_);
						_g_free0 (_tmp245_);
					}
				}
			}
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp251_ = is_gtypeinstance;
	if (_tmp251_) {
		gboolean _tmp252_ = FALSE;
		ValaClass* _tmp253_ = NULL;
		gboolean _tmp254_ = FALSE;
		gboolean _tmp255_ = FALSE;
		gboolean _tmp272_ = FALSE;
		ValaClass* _tmp273_ = NULL;
		gboolean _tmp274_ = FALSE;
		gboolean _tmp275_ = FALSE;
		gboolean _tmp300_ = FALSE;
		ValaClass* _tmp301_ = NULL;
		gboolean _tmp302_ = FALSE;
		gboolean _tmp303_ = FALSE;
		ValaCCodeFile* _tmp324_ = NULL;
		ValaCCodeEnum* _tmp325_ = NULL;
		_tmp253_ = cl;
		_tmp254_ = vala_class_get_has_class_private_fields (_tmp253_);
		_tmp255_ = _tmp254_;
		if (_tmp255_) {
			_tmp252_ = TRUE;
		} else {
			gboolean _tmp256_ = FALSE;
			_tmp256_ = has_class_locks;
			_tmp252_ = _tmp256_;
		}
		if (_tmp252_) {
			ValaCCodeFile* _tmp257_ = NULL;
			ValaCCodeStruct* _tmp258_ = NULL;
			const gchar* _tmp259_ = NULL;
			const gchar* _tmp260_ = NULL;
			gchar* _tmp261_ = NULL;
			gchar* _tmp262_ = NULL;
			ValaClass* _tmp263_ = NULL;
			gchar* _tmp264_ = NULL;
			gchar* _tmp265_ = NULL;
			gchar* _tmp266_ = NULL;
			gchar* _tmp267_ = NULL;
			ValaCCodeVariableDeclarator* _tmp268_ = NULL;
			ValaCCodeVariableDeclarator* _tmp269_ = NULL;
			ValaCCodeTypeDefinition* _tmp270_ = NULL;
			ValaCCodeTypeDefinition* _tmp271_ = NULL;
			_tmp257_ = decl_space;
			_tmp258_ = type_priv_struct;
			_tmp259_ = vala_ccode_struct_get_name (_tmp258_);
			_tmp260_ = _tmp259_;
			_tmp261_ = g_strdup_printf ("struct %s", _tmp260_);
			_tmp262_ = _tmp261_;
			_tmp263_ = cl;
			_tmp264_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp263_);
			_tmp265_ = _tmp264_;
			_tmp266_ = g_strdup_printf ("%sClassPrivate", _tmp265_);
			_tmp267_ = _tmp266_;
			_tmp268_ = vala_ccode_variable_declarator_new (_tmp267_, NULL, NULL);
			_tmp269_ = _tmp268_;
			_tmp270_ = vala_ccode_type_definition_new (_tmp262_, (ValaCCodeDeclarator*) _tmp269_);
			_tmp271_ = _tmp270_;
			vala_ccode_file_add_type_declaration (_tmp257_, (ValaCCodeNode*) _tmp271_);
			_vala_ccode_node_unref0 (_tmp271_);
			_vala_ccode_node_unref0 (_tmp269_);
			_g_free0 (_tmp267_);
			_g_free0 (_tmp265_);
			_g_free0 (_tmp262_);
		}
		_tmp273_ = cl;
		_tmp274_ = vala_class_get_has_private_fields (_tmp273_);
		_tmp275_ = _tmp274_;
		if (_tmp275_) {
			_tmp272_ = TRUE;
		} else {
			ValaClass* _tmp276_ = NULL;
			ValaList* _tmp277_ = NULL;
			ValaList* _tmp278_ = NULL;
			gint _tmp279_ = 0;
			gint _tmp280_ = 0;
			_tmp276_ = cl;
			_tmp277_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp276_);
			_tmp278_ = _tmp277_;
			_tmp279_ = vala_collection_get_size ((ValaCollection*) _tmp278_);
			_tmp280_ = _tmp279_;
			_tmp272_ = _tmp280_ > 0;
			_vala_iterable_unref0 (_tmp278_);
		}
		if (_tmp272_) {
			ValaCCodeFile* _tmp281_ = NULL;
			ValaCCodeStruct* _tmp282_ = NULL;
			gchar* macro = NULL;
			ValaClass* _tmp283_ = NULL;
			gchar* _tmp284_ = NULL;
			gchar* _tmp285_ = NULL;
			ValaClass* _tmp286_ = NULL;
			gchar* _tmp287_ = NULL;
			gchar* _tmp288_ = NULL;
			gchar* _tmp289_ = NULL;
			gchar* _tmp290_ = NULL;
			ValaCCodeFile* _tmp291_ = NULL;
			ValaClass* _tmp292_ = NULL;
			gchar* _tmp293_ = NULL;
			gchar* _tmp294_ = NULL;
			gchar* _tmp295_ = NULL;
			gchar* _tmp296_ = NULL;
			const gchar* _tmp297_ = NULL;
			ValaCCodeMacroReplacement* _tmp298_ = NULL;
			ValaCCodeMacroReplacement* _tmp299_ = NULL;
			_tmp281_ = decl_space;
			_tmp282_ = instance_priv_struct;
			vala_ccode_file_add_type_definition (_tmp281_, (ValaCCodeNode*) _tmp282_);
			_tmp283_ = cl;
			_tmp284_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp283_);
			_tmp285_ = _tmp284_;
			_tmp286_ = cl;
			_tmp287_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp286_);
			_tmp288_ = _tmp287_;
			_tmp289_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_PRIVATE ((o), %s, %sPrivate))", _tmp285_, _tmp288_);
			_tmp290_ = _tmp289_;
			_g_free0 (_tmp288_);
			_g_free0 (_tmp285_);
			macro = _tmp290_;
			_tmp291_ = decl_space;
			_tmp292_ = cl;
			_tmp293_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp292_, NULL);
			_tmp294_ = _tmp293_;
			_tmp295_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp294_);
			_tmp296_ = _tmp295_;
			_tmp297_ = macro;
			_tmp298_ = vala_ccode_macro_replacement_new (_tmp296_, _tmp297_);
			_tmp299_ = _tmp298_;
			vala_ccode_file_add_type_member_declaration (_tmp291_, (ValaCCodeNode*) _tmp299_);
			_vala_ccode_node_unref0 (_tmp299_);
			_g_free0 (_tmp296_);
			_g_free0 (_tmp294_);
			_g_free0 (macro);
		}
		_tmp301_ = cl;
		_tmp302_ = vala_class_get_has_class_private_fields (_tmp301_);
		_tmp303_ = _tmp302_;
		if (_tmp303_) {
			_tmp300_ = TRUE;
		} else {
			gboolean _tmp304_ = FALSE;
			_tmp304_ = has_class_locks;
			_tmp300_ = _tmp304_;
		}
		if (_tmp300_) {
			ValaCCodeFile* _tmp305_ = NULL;
			ValaCCodeStruct* _tmp306_ = NULL;
			gchar* macro = NULL;
			ValaClass* _tmp307_ = NULL;
			gchar* _tmp308_ = NULL;
			gchar* _tmp309_ = NULL;
			ValaClass* _tmp310_ = NULL;
			gchar* _tmp311_ = NULL;
			gchar* _tmp312_ = NULL;
			gchar* _tmp313_ = NULL;
			gchar* _tmp314_ = NULL;
			ValaCCodeFile* _tmp315_ = NULL;
			ValaClass* _tmp316_ = NULL;
			gchar* _tmp317_ = NULL;
			gchar* _tmp318_ = NULL;
			gchar* _tmp319_ = NULL;
			gchar* _tmp320_ = NULL;
			const gchar* _tmp321_ = NULL;
			ValaCCodeMacroReplacement* _tmp322_ = NULL;
			ValaCCodeMacroReplacement* _tmp323_ = NULL;
			_tmp305_ = decl_space;
			_tmp306_ = type_priv_struct;
			vala_ccode_file_add_type_member_declaration (_tmp305_, (ValaCCodeNode*) _tmp306_);
			_tmp307_ = cl;
			_tmp308_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp307_);
			_tmp309_ = _tmp308_;
			_tmp310_ = cl;
			_tmp311_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp310_);
			_tmp312_ = _tmp311_;
			_tmp313_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))", _tmp309_, _tmp312_);
			_tmp314_ = _tmp313_;
			_g_free0 (_tmp312_);
			_g_free0 (_tmp309_);
			macro = _tmp314_;
			_tmp315_ = decl_space;
			_tmp316_ = cl;
			_tmp317_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp316_, NULL);
			_tmp318_ = _tmp317_;
			_tmp319_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE(klass)", _tmp318_);
			_tmp320_ = _tmp319_;
			_tmp321_ = macro;
			_tmp322_ = vala_ccode_macro_replacement_new (_tmp320_, _tmp321_);
			_tmp323_ = _tmp322_;
			vala_ccode_file_add_type_member_declaration (_tmp315_, (ValaCCodeNode*) _tmp323_);
			_vala_ccode_node_unref0 (_tmp323_);
			_g_free0 (_tmp320_);
			_g_free0 (_tmp318_);
			_g_free0 (macro);
		}
		_tmp324_ = decl_space;
		_tmp325_ = ((ValaCCodeBaseModule*) self)->prop_enum;
		vala_ccode_file_add_type_member_declaration (_tmp324_, (ValaCCodeNode*) _tmp325_);
	} else {
		ValaClass* _tmp326_ = NULL;
		gboolean _tmp327_ = FALSE;
		gboolean _tmp328_ = FALSE;
		_tmp326_ = cl;
		_tmp327_ = vala_class_get_has_private_fields (_tmp326_);
		_tmp328_ = _tmp327_;
		if (_tmp328_) {
			ValaClass* _tmp329_ = NULL;
			ValaSourceReference* _tmp330_ = NULL;
			ValaSourceReference* _tmp331_ = NULL;
			_tmp329_ = cl;
			_tmp330_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp329_);
			_tmp331_ = _tmp330_;
			vala_report_error (_tmp331_, "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;
	ValaClass* _tmp0_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp1_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp2_ = NULL;
	ValaClass* _tmp3_ = NULL;
	ValaSourceReference* _tmp4_ = NULL;
	ValaSourceReference* _tmp5_ = NULL;
	ValaCCodeStruct* old_param_spec_struct = NULL;
	ValaCCodeStruct* _tmp6_ = NULL;
	ValaCCodeStruct* _tmp7_ = NULL;
	ValaCCodeEnum* old_prop_enum = NULL;
	ValaCCodeEnum* _tmp8_ = NULL;
	ValaCCodeEnum* _tmp9_ = NULL;
	ValaCCodeBaseModuleEmitContext* old_class_init_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp10_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp11_ = NULL;
	ValaCCodeBaseModuleEmitContext* old_base_init_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp12_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp13_ = NULL;
	ValaCCodeBaseModuleEmitContext* old_class_finalize_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp14_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp15_ = NULL;
	ValaCCodeBaseModuleEmitContext* old_base_finalize_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp16_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp17_ = NULL;
	ValaCCodeBaseModuleEmitContext* old_instance_init_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp18_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp19_ = NULL;
	ValaCCodeBaseModuleEmitContext* old_instance_finalize_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp20_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp21_ = NULL;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp22_ = NULL;
	gboolean _tmp23_ = FALSE;
	gboolean _tmp24_ = FALSE;
	gboolean _tmp25_ = FALSE;
	gboolean _tmp26_ = FALSE;
	gboolean is_fundamental = FALSE;
	ValaClass* _tmp30_ = NULL;
	gchar* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gint _tmp33_ = 0;
	gint _tmp34_ = 0;
	gboolean _tmp35_ = FALSE;
	ValaCCodeEnum* _tmp45_ = NULL;
	ValaCCodeEnum* _tmp46_ = NULL;
	ValaClass* _tmp47_ = NULL;
	gchar* _tmp48_ = NULL;
	gchar* _tmp49_ = NULL;
	gchar* _tmp50_ = NULL;
	gchar* _tmp51_ = NULL;
	ValaCCodeEnumValue* _tmp52_ = NULL;
	ValaCCodeEnumValue* _tmp53_ = NULL;
	ValaClass* _tmp54_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp55_ = NULL;
	ValaClass* _tmp56_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp57_ = NULL;
	ValaClass* _tmp58_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp59_ = NULL;
	ValaClass* _tmp60_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp61_ = NULL;
	ValaClass* _tmp62_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp63_ = NULL;
	ValaClass* _tmp64_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp65_ = NULL;
	ValaClass* _tmp66_ = NULL;
	ValaCCodeFile* _tmp67_ = NULL;
	ValaClass* _tmp68_ = NULL;
	ValaCCodeFile* _tmp69_ = NULL;
	ValaClass* _tmp70_ = NULL;
	gboolean _tmp71_ = FALSE;
	ValaClass* _tmp74_ = NULL;
	gboolean _tmp75_ = FALSE;
	gboolean _tmp78_ = FALSE;
	ValaClass* _tmp95_ = NULL;
	gboolean _tmp96_ = FALSE;
	ValaCCodeStruct* _tmp387_ = NULL;
	ValaCCodeStruct* _tmp388_ = NULL;
	ValaCCodeEnum* _tmp389_ = NULL;
	ValaCCodeEnum* _tmp390_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp391_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp392_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp393_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp394_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp395_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp396_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp397_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp398_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp399_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp400_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp401_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp402_ = NULL;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp2_);
	_vala_ccode_base_module_emit_context_unref0 (_tmp2_);
	_tmp3_ = cl;
	_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
	_tmp5_ = _tmp4_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
	_tmp6_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
	_tmp7_ = _vala_ccode_node_ref0 (_tmp6_);
	old_param_spec_struct = _tmp7_;
	_tmp8_ = ((ValaCCodeBaseModule*) self)->prop_enum;
	_tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
	old_prop_enum = _tmp9_;
	_tmp10_ = ((ValaCCodeBaseModule*) self)->class_init_context;
	_tmp11_ = _vala_ccode_base_module_emit_context_ref0 (_tmp10_);
	old_class_init_context = _tmp11_;
	_tmp12_ = ((ValaCCodeBaseModule*) self)->base_init_context;
	_tmp13_ = _vala_ccode_base_module_emit_context_ref0 (_tmp12_);
	old_base_init_context = _tmp13_;
	_tmp14_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	_tmp15_ = _vala_ccode_base_module_emit_context_ref0 (_tmp14_);
	old_class_finalize_context = _tmp15_;
	_tmp16_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
	_tmp17_ = _vala_ccode_base_module_emit_context_ref0 (_tmp16_);
	old_base_finalize_context = _tmp17_;
	_tmp18_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	_tmp19_ = _vala_ccode_base_module_emit_context_ref0 (_tmp18_);
	old_instance_init_context = _tmp19_;
	_tmp20_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
	_tmp21_ = _vala_ccode_base_module_emit_context_ref0 (_tmp20_);
	old_instance_finalize_context = _tmp21_;
	_tmp22_ = cl;
	_tmp23_ = vala_class_get_is_compact (_tmp22_);
	_tmp24_ = _tmp23_;
	is_gtypeinstance = !_tmp24_;
	_tmp26_ = is_gtypeinstance;
	if (_tmp26_) {
		ValaClass* _tmp27_ = NULL;
		ValaClass* _tmp28_ = NULL;
		ValaClass* _tmp29_ = NULL;
		_tmp27_ = cl;
		_tmp28_ = vala_class_get_base_class (_tmp27_);
		_tmp29_ = _tmp28_;
		_tmp25_ = _tmp29_ == NULL;
	} else {
		_tmp25_ = FALSE;
	}
	is_fundamental = _tmp25_;
	_tmp30_ = cl;
	_tmp31_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp30_);
	_tmp32_ = _tmp31_;
	_tmp33_ = strlen (_tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = _tmp34_ < 3;
	_g_free0 (_tmp32_);
	if (_tmp35_) {
		ValaClass* _tmp36_ = NULL;
		ValaClass* _tmp37_ = NULL;
		ValaSourceReference* _tmp38_ = NULL;
		ValaSourceReference* _tmp39_ = NULL;
		ValaClass* _tmp40_ = NULL;
		gchar* _tmp41_ = NULL;
		gchar* _tmp42_ = NULL;
		gchar* _tmp43_ = NULL;
		gchar* _tmp44_ = NULL;
		_tmp36_ = cl;
		vala_code_node_set_error ((ValaCodeNode*) _tmp36_, TRUE);
		_tmp37_ = cl;
		_tmp38_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp37_);
		_tmp39_ = _tmp38_;
		_tmp40_ = cl;
		_tmp41_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp40_);
		_tmp42_ = _tmp41_;
		_tmp43_ = g_strdup_printf ("Class name `%s' is too short", _tmp42_);
		_tmp44_ = _tmp43_;
		vala_report_error (_tmp39_, _tmp44_);
		_g_free0 (_tmp44_);
		_g_free0 (_tmp42_);
		_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;
	}
	_tmp45_ = vala_ccode_enum_new (NULL);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
	((ValaCCodeBaseModule*) self)->prop_enum = _tmp45_;
	_tmp46_ = ((ValaCCodeBaseModule*) self)->prop_enum;
	_tmp47_ = cl;
	_tmp48_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp47_, NULL);
	_tmp49_ = _tmp48_;
	_tmp50_ = g_strdup_printf ("%s_DUMMY_PROPERTY", _tmp49_);
	_tmp51_ = _tmp50_;
	_tmp52_ = vala_ccode_enum_value_new (_tmp51_, NULL);
	_tmp53_ = _tmp52_;
	vala_ccode_enum_add_value (_tmp46_, _tmp53_);
	_vala_ccode_node_unref0 (_tmp53_);
	_g_free0 (_tmp51_);
	_g_free0 (_tmp49_);
	_tmp54_ = cl;
	_tmp55_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp54_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
	((ValaCCodeBaseModule*) self)->class_init_context = _tmp55_;
	_tmp56_ = cl;
	_tmp57_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp56_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
	((ValaCCodeBaseModule*) self)->base_init_context = _tmp57_;
	_tmp58_ = cl;
	_tmp59_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp58_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
	((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp59_;
	_tmp60_ = cl;
	_tmp61_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp60_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
	((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp61_;
	_tmp62_ = cl;
	_tmp63_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp62_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
	((ValaCCodeBaseModule*) self)->instance_init_context = _tmp63_;
	_tmp64_ = cl;
	_tmp65_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp64_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
	((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp65_;
	_tmp66_ = cl;
	_tmp67_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp66_, _tmp67_);
	_tmp68_ = cl;
	_tmp69_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_gtype_module_generate_class_private_declaration (self, _tmp68_, _tmp69_);
	_tmp70_ = cl;
	_tmp71_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp70_);
	if (!_tmp71_) {
		ValaClass* _tmp72_ = NULL;
		ValaCCodeFile* _tmp73_ = NULL;
		_tmp72_ = cl;
		_tmp73_ = ((ValaCCodeBaseModule*) self)->header_file;
		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp72_, _tmp73_);
	}
	_tmp74_ = cl;
	_tmp75_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp74_);
	if (!_tmp75_) {
		ValaClass* _tmp76_ = NULL;
		ValaCCodeFile* _tmp77_ = NULL;
		_tmp76_ = cl;
		_tmp77_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp76_, _tmp77_);
	}
	_tmp78_ = is_gtypeinstance;
	if (_tmp78_) {
		ValaClass* _tmp79_ = NULL;
		ValaClass* _tmp80_ = NULL;
		ValaClass* _tmp81_ = NULL;
		ValaClass* _tmp82_ = NULL;
		ValaClass* _tmp83_ = NULL;
		ValaClass* _tmp84_ = NULL;
		_tmp79_ = cl;
		vala_gtype_module_begin_base_init_function (self, _tmp79_);
		_tmp80_ = cl;
		vala_gtype_module_begin_class_init_function (self, _tmp80_);
		_tmp81_ = cl;
		vala_gtype_module_begin_instance_init_function (self, _tmp81_);
		_tmp82_ = cl;
		vala_gtype_module_begin_base_finalize_function (self, _tmp82_);
		_tmp83_ = cl;
		vala_gtype_module_begin_class_finalize_function (self, _tmp83_);
		_tmp84_ = cl;
		vala_gtype_module_begin_finalize_function (self, _tmp84_);
	} else {
		gboolean _tmp85_ = FALSE;
		ValaClass* _tmp86_ = NULL;
		ValaClass* _tmp87_ = NULL;
		ValaClass* _tmp88_ = NULL;
		_tmp86_ = cl;
		_tmp87_ = vala_class_get_base_class (_tmp86_);
		_tmp88_ = _tmp87_;
		if (_tmp88_ == NULL) {
			_tmp85_ = TRUE;
		} else {
			ValaClass* _tmp89_ = NULL;
			ValaClass* _tmp90_ = NULL;
			ValaClass* _tmp91_ = NULL;
			ValaClass* _tmp92_ = NULL;
			_tmp89_ = cl;
			_tmp90_ = vala_class_get_base_class (_tmp89_);
			_tmp91_ = _tmp90_;
			_tmp92_ = ((ValaCCodeBaseModule*) self)->gsource_type;
			_tmp85_ = _tmp91_ == _tmp92_;
		}
		if (_tmp85_) {
			ValaClass* _tmp93_ = NULL;
			ValaClass* _tmp94_ = NULL;
			_tmp93_ = cl;
			vala_gtype_module_begin_instance_init_function (self, _tmp93_);
			_tmp94_ = cl;
			vala_gtype_module_begin_finalize_function (self, _tmp94_);
		}
	}
	_tmp95_ = cl;
	vala_code_node_accept_children ((ValaCodeNode*) _tmp95_, (ValaCodeVisitor*) self);
	_tmp96_ = is_gtypeinstance;
	if (_tmp96_) {
		gboolean _tmp97_ = FALSE;
		ValaClass* _tmp154_ = NULL;
		ValaConstructor* _tmp155_ = NULL;
		ValaConstructor* _tmp156_ = NULL;
		ValaClass* _tmp158_ = NULL;
		ValaClass* _tmp159_ = NULL;
		ValaDestructor* _tmp160_ = NULL;
		ValaDestructor* _tmp161_ = NULL;
		ValaClass* _tmp163_ = NULL;
		ValaDestructor* _tmp164_ = NULL;
		ValaDestructor* _tmp165_ = NULL;
		ValaClass* _tmp185_ = NULL;
		gboolean _tmp186_ = FALSE;
		ValaClass* _tmp187_ = NULL;
		gboolean _tmp188_ = FALSE;
		gboolean _tmp189_ = FALSE;
		ValaClass* _tmp204_ = NULL;
		ValaComment* _tmp205_ = NULL;
		ValaComment* _tmp206_ = NULL;
		ValaClassRegisterFunction* type_fun = NULL;
		ValaClass* _tmp215_ = NULL;
		ValaCodeContext* _tmp216_ = NULL;
		ValaCodeContext* _tmp217_ = NULL;
		ValaClassRegisterFunction* _tmp218_ = NULL;
		ValaClassRegisterFunction* _tmp219_ = NULL;
		gboolean _tmp220_ = FALSE;
		ValaCCodeFile* _tmp221_ = NULL;
		ValaClassRegisterFunction* _tmp222_ = NULL;
		ValaCCodeFragment* _tmp223_ = NULL;
		ValaCCodeFragment* _tmp224_ = NULL;
		ValaCCodeFile* _tmp225_ = NULL;
		ValaClassRegisterFunction* _tmp226_ = NULL;
		ValaCCodeFragment* _tmp227_ = NULL;
		ValaCCodeFragment* _tmp228_ = NULL;
		gboolean _tmp229_ = FALSE;
		_tmp97_ = is_fundamental;
		if (_tmp97_) {
			ValaClass* _tmp98_ = NULL;
			ValaSymbol* _tmp99_ = NULL;
			ValaSymbol* _tmp100_ = NULL;
			gchar* _tmp101_ = NULL;
			gchar* _tmp102_ = NULL;
			ValaClass* _tmp103_ = NULL;
			const gchar* _tmp104_ = NULL;
			const gchar* _tmp105_ = NULL;
			gchar* _tmp106_ = NULL;
			gchar* _tmp107_ = NULL;
			ValaCCodeStruct* _tmp108_ = NULL;
			ValaCCodeStruct* _tmp109_ = NULL;
			ValaCCodeFile* _tmp110_ = NULL;
			ValaCCodeStruct* _tmp111_ = NULL;
			ValaCCodeFile* _tmp112_ = NULL;
			ValaCCodeStruct* _tmp113_ = NULL;
			const gchar* _tmp114_ = NULL;
			const gchar* _tmp115_ = NULL;
			gchar* _tmp116_ = NULL;
			gchar* _tmp117_ = NULL;
			ValaClass* _tmp118_ = NULL;
			ValaSymbol* _tmp119_ = NULL;
			ValaSymbol* _tmp120_ = NULL;
			gchar* _tmp121_ = NULL;
			gchar* _tmp122_ = NULL;
			ValaClass* _tmp123_ = NULL;
			const gchar* _tmp124_ = NULL;
			const gchar* _tmp125_ = NULL;
			gchar* _tmp126_ = NULL;
			gchar* _tmp127_ = NULL;
			ValaCCodeVariableDeclarator* _tmp128_ = NULL;
			ValaCCodeVariableDeclarator* _tmp129_ = NULL;
			ValaCCodeTypeDefinition* _tmp130_ = NULL;
			ValaCCodeTypeDefinition* _tmp131_ = NULL;
			ValaClass* _tmp132_ = NULL;
			ValaClass* _tmp133_ = NULL;
			ValaClass* _tmp134_ = NULL;
			ValaClass* _tmp135_ = NULL;
			ValaClass* _tmp136_ = NULL;
			ValaClass* _tmp137_ = NULL;
			ValaClass* _tmp138_ = NULL;
			ValaClass* _tmp139_ = NULL;
			ValaClass* _tmp140_ = NULL;
			ValaClass* _tmp141_ = NULL;
			ValaCCodeAssignment* ref_count = NULL;
			ValaCCodeIdentifier* _tmp142_ = NULL;
			ValaCCodeIdentifier* _tmp143_ = NULL;
			ValaCCodeMemberAccess* _tmp144_ = NULL;
			ValaCCodeMemberAccess* _tmp145_ = NULL;
			ValaCCodeConstant* _tmp146_ = NULL;
			ValaCCodeConstant* _tmp147_ = NULL;
			ValaCCodeAssignment* _tmp148_ = NULL;
			ValaCCodeAssignment* _tmp149_ = NULL;
			ValaCCodeBaseModuleEmitContext* _tmp150_ = NULL;
			ValaCCodeFunction* _tmp151_ = NULL;
			ValaCCodeFunction* _tmp152_ = NULL;
			ValaCCodeAssignment* _tmp153_ = NULL;
			_tmp98_ = cl;
			_tmp99_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp98_);
			_tmp100_ = _tmp99_;
			_tmp101_ = vala_ccode_base_module_get_ccode_prefix (_tmp100_);
			_tmp102_ = _tmp101_;
			_tmp103_ = cl;
			_tmp104_ = vala_symbol_get_name ((ValaSymbol*) _tmp103_);
			_tmp105_ = _tmp104_;
			_tmp106_ = g_strdup_printf ("_%sParamSpec%s", _tmp102_, _tmp105_);
			_tmp107_ = _tmp106_;
			_tmp108_ = vala_ccode_struct_new (_tmp107_);
			_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
			((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp108_;
			_g_free0 (_tmp107_);
			_g_free0 (_tmp102_);
			_tmp109_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
			vala_ccode_struct_add_field (_tmp109_, "GParamSpec", "parent_instance", NULL);
			_tmp110_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp111_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
			vala_ccode_file_add_type_definition (_tmp110_, (ValaCCodeNode*) _tmp111_);
			_tmp112_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp113_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
			_tmp114_ = vala_ccode_struct_get_name (_tmp113_);
			_tmp115_ = _tmp114_;
			_tmp116_ = g_strdup_printf ("struct %s", _tmp115_);
			_tmp117_ = _tmp116_;
			_tmp118_ = cl;
			_tmp119_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp118_);
			_tmp120_ = _tmp119_;
			_tmp121_ = vala_ccode_base_module_get_ccode_prefix (_tmp120_);
			_tmp122_ = _tmp121_;
			_tmp123_ = cl;
			_tmp124_ = vala_symbol_get_name ((ValaSymbol*) _tmp123_);
			_tmp125_ = _tmp124_;
			_tmp126_ = g_strdup_printf ("%sParamSpec%s", _tmp122_, _tmp125_);
			_tmp127_ = _tmp126_;
			_tmp128_ = vala_ccode_variable_declarator_new (_tmp127_, NULL, NULL);
			_tmp129_ = _tmp128_;
			_tmp130_ = vala_ccode_type_definition_new (_tmp117_, (ValaCCodeDeclarator*) _tmp129_);
			_tmp131_ = _tmp130_;
			vala_ccode_file_add_type_declaration (_tmp112_, (ValaCCodeNode*) _tmp131_);
			_vala_ccode_node_unref0 (_tmp131_);
			_vala_ccode_node_unref0 (_tmp129_);
			_g_free0 (_tmp127_);
			_g_free0 (_tmp122_);
			_g_free0 (_tmp117_);
			((ValaCCodeBaseModule*) self)->gvaluecollector_h_needed = TRUE;
			_tmp132_ = cl;
			vala_gtype_module_add_type_value_table_init_function (self, _tmp132_);
			_tmp133_ = cl;
			vala_gtype_module_add_type_value_table_free_function (self, _tmp133_);
			_tmp134_ = cl;
			vala_gtype_module_add_type_value_table_copy_function (self, _tmp134_);
			_tmp135_ = cl;
			vala_gtype_module_add_type_value_table_peek_pointer_function (self, _tmp135_);
			_tmp136_ = cl;
			vala_gtype_module_add_type_value_table_collect_value_function (self, _tmp136_);
			_tmp137_ = cl;
			vala_gtype_module_add_type_value_table_lcopy_value_function (self, _tmp137_);
			_tmp138_ = cl;
			vala_gtype_module_add_g_param_spec_type_function (self, _tmp138_);
			_tmp139_ = cl;
			vala_gtype_module_add_g_value_get_function (self, _tmp139_);
			_tmp140_ = cl;
			vala_gtype_module_add_g_value_set_function (self, _tmp140_);
			_tmp141_ = cl;
			vala_gtype_module_add_g_value_take_function (self, _tmp141_);
			_tmp142_ = vala_ccode_identifier_new ("self");
			_tmp143_ = _tmp142_;
			_tmp144_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp143_, "ref_count");
			_tmp145_ = _tmp144_;
			_tmp146_ = vala_ccode_constant_new ("1");
			_tmp147_ = _tmp146_;
			_tmp148_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp145_, (ValaCCodeExpression*) _tmp147_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
			_tmp149_ = _tmp148_;
			_vala_ccode_node_unref0 (_tmp147_);
			_vala_ccode_node_unref0 (_tmp145_);
			_vala_ccode_node_unref0 (_tmp143_);
			ref_count = _tmp149_;
			_tmp150_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp150_);
			_tmp151_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp152_ = _tmp151_;
			_tmp153_ = ref_count;
			vala_ccode_function_add_expression (_tmp152_, (ValaCCodeExpression*) _tmp153_);
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			_vala_ccode_node_unref0 (ref_count);
		}
		_tmp154_ = cl;
		_tmp155_ = vala_class_get_class_constructor (_tmp154_);
		_tmp156_ = _tmp155_;
		if (_tmp156_ != NULL) {
			ValaClass* _tmp157_ = NULL;
			_tmp157_ = cl;
			vala_gtype_module_add_base_init_function (self, _tmp157_);
		}
		_tmp158_ = cl;
		vala_gtype_module_add_class_init_function (self, _tmp158_);
		_tmp159_ = cl;
		_tmp160_ = vala_class_get_class_destructor (_tmp159_);
		_tmp161_ = _tmp160_;
		if (_tmp161_ != NULL) {
			ValaClass* _tmp162_ = NULL;
			_tmp162_ = cl;
			vala_gtype_module_add_base_finalize_function (self, _tmp162_);
		}
		_tmp163_ = cl;
		_tmp164_ = vala_class_get_static_destructor (_tmp163_);
		_tmp165_ = _tmp164_;
		if (_tmp165_ != NULL) {
			ValaClass* _tmp166_ = NULL;
			_tmp166_ = cl;
			vala_gtype_module_add_class_finalize_function (self, _tmp166_);
		}
		{
			ValaList* _base_type_list = NULL;
			ValaClass* _tmp167_ = NULL;
			ValaList* _tmp168_ = NULL;
			gint _base_type_size = 0;
			ValaList* _tmp169_ = NULL;
			gint _tmp170_ = 0;
			gint _tmp171_ = 0;
			gint _base_type_index = 0;
			_tmp167_ = cl;
			_tmp168_ = vala_class_get_base_types (_tmp167_);
			_base_type_list = _tmp168_;
			_tmp169_ = _base_type_list;
			_tmp170_ = vala_collection_get_size ((ValaCollection*) _tmp169_);
			_tmp171_ = _tmp170_;
			_base_type_size = _tmp171_;
			_base_type_index = -1;
			while (TRUE) {
				gint _tmp172_ = 0;
				gint _tmp173_ = 0;
				gint _tmp174_ = 0;
				ValaDataType* base_type = NULL;
				ValaList* _tmp175_ = NULL;
				gint _tmp176_ = 0;
				gpointer _tmp177_ = NULL;
				ValaDataType* _tmp178_ = NULL;
				ValaTypeSymbol* _tmp179_ = NULL;
				ValaTypeSymbol* _tmp180_ = NULL;
				_tmp172_ = _base_type_index;
				_base_type_index = _tmp172_ + 1;
				_tmp173_ = _base_type_index;
				_tmp174_ = _base_type_size;
				if (!(_tmp173_ < _tmp174_)) {
					break;
				}
				_tmp175_ = _base_type_list;
				_tmp176_ = _base_type_index;
				_tmp177_ = vala_list_get (_tmp175_, _tmp176_);
				base_type = (ValaDataType*) _tmp177_;
				_tmp178_ = base_type;
				_tmp179_ = vala_data_type_get_data_type (_tmp178_);
				_tmp180_ = _tmp179_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp180_, VALA_TYPE_INTERFACE)) {
					ValaClass* _tmp181_ = NULL;
					ValaDataType* _tmp182_ = NULL;
					ValaTypeSymbol* _tmp183_ = NULL;
					ValaTypeSymbol* _tmp184_ = NULL;
					_tmp181_ = cl;
					_tmp182_ = base_type;
					_tmp183_ = vala_data_type_get_data_type (_tmp182_);
					_tmp184_ = _tmp183_;
					vala_gtype_module_add_interface_init_function (self, _tmp181_, G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_INTERFACE, ValaInterface));
				}
				_vala_code_node_unref0 (base_type);
			}
			_vala_iterable_unref0 (_base_type_list);
		}
		_tmp185_ = cl;
		vala_gtype_module_add_instance_init_function (self, _tmp185_);
		_tmp187_ = cl;
		_tmp188_ = vala_class_get_is_compact (_tmp187_);
		_tmp189_ = _tmp188_;
		if (!_tmp189_) {
			gboolean _tmp190_ = FALSE;
			gboolean _tmp191_ = FALSE;
			ValaClass* _tmp192_ = NULL;
			ValaList* _tmp193_ = NULL;
			ValaList* _tmp194_ = NULL;
			gint _tmp195_ = 0;
			gint _tmp196_ = 0;
			gboolean _tmp197_ = FALSE;
			_tmp192_ = cl;
			_tmp193_ = vala_class_get_fields (_tmp192_);
			_tmp194_ = _tmp193_;
			_tmp195_ = vala_collection_get_size ((ValaCollection*) _tmp194_);
			_tmp196_ = _tmp195_;
			_tmp197_ = _tmp196_ > 0;
			_vala_iterable_unref0 (_tmp194_);
			if (_tmp197_) {
				_tmp191_ = TRUE;
			} else {
				ValaClass* _tmp198_ = NULL;
				ValaDestructor* _tmp199_ = NULL;
				ValaDestructor* _tmp200_ = NULL;
				_tmp198_ = cl;
				_tmp199_ = vala_class_get_destructor (_tmp198_);
				_tmp200_ = _tmp199_;
				_tmp191_ = _tmp200_ != NULL;
			}
			if (_tmp191_) {
				_tmp190_ = TRUE;
			} else {
				ValaClass* _tmp201_ = NULL;
				gboolean _tmp202_ = FALSE;
				_tmp201_ = cl;
				_tmp202_ = vala_class_is_fundamental (_tmp201_);
				_tmp190_ = _tmp202_;
			}
			_tmp186_ = _tmp190_;
		} else {
			_tmp186_ = FALSE;
		}
		if (_tmp186_) {
			ValaClass* _tmp203_ = NULL;
			_tmp203_ = cl;
			vala_gtype_module_add_finalize_function (self, _tmp203_);
		}
		_tmp204_ = cl;
		_tmp205_ = vala_symbol_get_comment ((ValaSymbol*) _tmp204_);
		_tmp206_ = _tmp205_;
		if (_tmp206_ != NULL) {
			ValaCCodeFile* _tmp207_ = NULL;
			ValaClass* _tmp208_ = NULL;
			ValaComment* _tmp209_ = NULL;
			ValaComment* _tmp210_ = NULL;
			const gchar* _tmp211_ = NULL;
			const gchar* _tmp212_ = NULL;
			ValaCCodeComment* _tmp213_ = NULL;
			ValaCCodeComment* _tmp214_ = NULL;
			_tmp207_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp208_ = cl;
			_tmp209_ = vala_symbol_get_comment ((ValaSymbol*) _tmp208_);
			_tmp210_ = _tmp209_;
			_tmp211_ = vala_comment_get_content (_tmp210_);
			_tmp212_ = _tmp211_;
			_tmp213_ = vala_ccode_comment_new (_tmp212_);
			_tmp214_ = _tmp213_;
			vala_ccode_file_add_type_member_definition (_tmp207_, (ValaCCodeNode*) _tmp214_);
			_vala_ccode_node_unref0 (_tmp214_);
		}
		_tmp215_ = cl;
		_tmp216_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp217_ = _tmp216_;
		_tmp218_ = vala_class_register_function_new (_tmp215_, _tmp217_);
		type_fun = _tmp218_;
		_tmp219_ = type_fun;
		_tmp220_ = ((ValaCCodeBaseModule*) self)->in_plugin;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp219_, _tmp220_, FALSE);
		_tmp221_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp222_ = type_fun;
		_tmp223_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp222_);
		_tmp224_ = _tmp223_;
		vala_ccode_file_add_type_member_declaration (_tmp221_, (ValaCCodeNode*) _tmp224_);
		_vala_ccode_node_unref0 (_tmp224_);
		_tmp225_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp226_ = type_fun;
		_tmp227_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp226_);
		_tmp228_ = _tmp227_;
		vala_ccode_file_add_type_member_definition (_tmp225_, (ValaCCodeNode*) _tmp228_);
		_vala_ccode_node_unref0 (_tmp228_);
		_tmp229_ = is_fundamental;
		if (_tmp229_) {
			ValaCCodeMemberAccess* ref_count = NULL;
			ValaCCodeIdentifier* _tmp230_ = NULL;
			ValaCCodeIdentifier* _tmp231_ = NULL;
			ValaCCodeMemberAccess* _tmp232_ = NULL;
			ValaCCodeMemberAccess* _tmp233_ = NULL;
			ValaCCodeFunction* ref_fun = NULL;
			ValaClass* _tmp234_ = NULL;
			gchar* _tmp235_ = NULL;
			gchar* _tmp236_ = NULL;
			gchar* _tmp237_ = NULL;
			gchar* _tmp238_ = NULL;
			ValaCCodeFunction* _tmp239_ = NULL;
			ValaCCodeFunction* _tmp240_ = NULL;
			ValaCCodeFunction* _tmp241_ = NULL;
			ValaCCodeParameter* _tmp242_ = NULL;
			ValaCCodeParameter* _tmp243_ = NULL;
			ValaClass* _tmp244_ = NULL;
			gboolean _tmp245_ = FALSE;
			ValaCCodeFunction* _tmp255_ = NULL;
			ValaCCodeFunction* _tmp256_ = NULL;
			ValaCCodeFunction* _tmp257_ = NULL;
			ValaClass* _tmp258_ = NULL;
			gchar* _tmp259_ = NULL;
			gchar* _tmp260_ = NULL;
			gchar* _tmp261_ = NULL;
			gchar* _tmp262_ = NULL;
			ValaCCodeIdentifier* _tmp263_ = NULL;
			ValaCCodeIdentifier* _tmp264_ = NULL;
			ValaCCodeVariableDeclarator* _tmp265_ = NULL;
			ValaCCodeVariableDeclarator* _tmp266_ = NULL;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp267_ = NULL;
			ValaCCodeIdentifier* _tmp268_ = NULL;
			ValaCCodeFunctionCall* _tmp269_ = NULL;
			ValaCCodeFunctionCall* _tmp270_ = NULL;
			ValaCCodeFunctionCall* _tmp271_ = NULL;
			ValaCCodeMemberAccess* _tmp272_ = NULL;
			ValaCCodeUnaryExpression* _tmp273_ = NULL;
			ValaCCodeUnaryExpression* _tmp274_ = NULL;
			ValaCCodeFunction* _tmp275_ = NULL;
			ValaCCodeFunction* _tmp276_ = NULL;
			ValaCCodeFunctionCall* _tmp277_ = NULL;
			ValaCCodeFunction* _tmp278_ = NULL;
			ValaCCodeFunction* _tmp279_ = NULL;
			ValaCCodeIdentifier* _tmp280_ = NULL;
			ValaCCodeIdentifier* _tmp281_ = NULL;
			ValaCCodeFile* _tmp282_ = NULL;
			ValaCCodeFunction* _tmp283_ = NULL;
			ValaCCodeFunction* unref_fun = NULL;
			ValaClass* _tmp284_ = NULL;
			gchar* _tmp285_ = NULL;
			gchar* _tmp286_ = NULL;
			gchar* _tmp287_ = NULL;
			gchar* _tmp288_ = NULL;
			ValaCCodeFunction* _tmp289_ = NULL;
			ValaCCodeFunction* _tmp290_ = NULL;
			ValaCCodeFunction* _tmp291_ = NULL;
			ValaCCodeParameter* _tmp292_ = NULL;
			ValaCCodeParameter* _tmp293_ = NULL;
			ValaClass* _tmp294_ = NULL;
			gboolean _tmp295_ = FALSE;
			ValaCCodeFunction* _tmp305_ = NULL;
			ValaCCodeFunction* _tmp306_ = NULL;
			ValaCCodeFunction* _tmp307_ = NULL;
			ValaClass* _tmp308_ = NULL;
			gchar* _tmp309_ = NULL;
			gchar* _tmp310_ = NULL;
			gchar* _tmp311_ = NULL;
			gchar* _tmp312_ = NULL;
			ValaCCodeIdentifier* _tmp313_ = NULL;
			ValaCCodeIdentifier* _tmp314_ = NULL;
			ValaCCodeVariableDeclarator* _tmp315_ = NULL;
			ValaCCodeVariableDeclarator* _tmp316_ = NULL;
			ValaCCodeIdentifier* _tmp317_ = NULL;
			ValaCCodeIdentifier* _tmp318_ = NULL;
			ValaCCodeFunctionCall* _tmp319_ = NULL;
			ValaCCodeFunctionCall* _tmp320_ = NULL;
			ValaCCodeMemberAccess* _tmp321_ = NULL;
			ValaCCodeUnaryExpression* _tmp322_ = NULL;
			ValaCCodeUnaryExpression* _tmp323_ = NULL;
			ValaCCodeFunction* _tmp324_ = NULL;
			ValaCCodeFunction* _tmp325_ = NULL;
			ValaCCodeFunctionCall* _tmp326_ = NULL;
			ValaCCodeFunctionCall* get_class = NULL;
			ValaClass* _tmp327_ = NULL;
			gchar* _tmp328_ = NULL;
			gchar* _tmp329_ = NULL;
			gchar* _tmp330_ = NULL;
			gchar* _tmp331_ = NULL;
			ValaCCodeIdentifier* _tmp332_ = NULL;
			ValaCCodeIdentifier* _tmp333_ = NULL;
			ValaCCodeFunctionCall* _tmp334_ = NULL;
			ValaCCodeFunctionCall* _tmp335_ = NULL;
			ValaCCodeFunctionCall* _tmp336_ = NULL;
			ValaCCodeIdentifier* _tmp337_ = NULL;
			ValaCCodeIdentifier* _tmp338_ = NULL;
			ValaCCodeFunctionCall* ccast = NULL;
			ValaClass* _tmp339_ = NULL;
			gchar* _tmp340_ = NULL;
			gchar* _tmp341_ = NULL;
			gchar* _tmp342_ = NULL;
			gchar* _tmp343_ = NULL;
			ValaCCodeIdentifier* _tmp344_ = NULL;
			ValaCCodeIdentifier* _tmp345_ = NULL;
			ValaCCodeFunctionCall* _tmp346_ = NULL;
			ValaCCodeFunctionCall* _tmp347_ = NULL;
			ValaCCodeFunctionCall* _tmp348_ = NULL;
			ValaCCodeIdentifier* _tmp349_ = NULL;
			ValaCCodeIdentifier* _tmp350_ = NULL;
			ValaCCodeFunctionCall* _tmp351_ = NULL;
			ValaCCodeMemberAccess* _tmp352_ = NULL;
			ValaCCodeMemberAccess* _tmp353_ = NULL;
			ValaCCodeFunctionCall* _tmp354_ = NULL;
			ValaCCodeFunctionCall* _tmp355_ = NULL;
			ValaCCodeIdentifier* _tmp356_ = NULL;
			ValaCCodeIdentifier* _tmp357_ = NULL;
			ValaCCodeFunction* _tmp358_ = NULL;
			ValaCCodeFunction* _tmp359_ = NULL;
			ValaCCodeFunctionCall* _tmp360_ = NULL;
			ValaCCodeFunctionCall* free = NULL;
			ValaCCodeIdentifier* _tmp361_ = NULL;
			ValaCCodeIdentifier* _tmp362_ = NULL;
			ValaCCodeFunctionCall* _tmp363_ = NULL;
			ValaCCodeFunctionCall* _tmp364_ = NULL;
			ValaCCodeFunctionCall* _tmp365_ = NULL;
			ValaCCodeIdentifier* _tmp366_ = NULL;
			ValaCCodeIdentifier* _tmp367_ = NULL;
			ValaCCodeCastExpression* _tmp368_ = NULL;
			ValaCCodeCastExpression* _tmp369_ = NULL;
			ValaCCodeFunction* _tmp370_ = NULL;
			ValaCCodeFunction* _tmp371_ = NULL;
			ValaCCodeFunctionCall* _tmp372_ = NULL;
			ValaCCodeFunction* _tmp373_ = NULL;
			ValaCCodeFunction* _tmp374_ = NULL;
			ValaCCodeFile* _tmp375_ = NULL;
			ValaCCodeFunction* _tmp376_ = NULL;
			_tmp230_ = vala_ccode_identifier_new ("self");
			_tmp231_ = _tmp230_;
			_tmp232_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp231_, "ref_count");
			_tmp233_ = _tmp232_;
			_vala_ccode_node_unref0 (_tmp231_);
			ref_count = _tmp233_;
			_tmp234_ = cl;
			_tmp235_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp234_);
			_tmp236_ = _tmp235_;
			_tmp237_ = g_strconcat (_tmp236_, "ref", NULL);
			_tmp238_ = _tmp237_;
			_tmp239_ = vala_ccode_function_new (_tmp238_, "gpointer");
			_tmp240_ = _tmp239_;
			_g_free0 (_tmp238_);
			_g_free0 (_tmp236_);
			ref_fun = _tmp240_;
			_tmp241_ = ref_fun;
			_tmp242_ = vala_ccode_parameter_new ("instance", "gpointer");
			_tmp243_ = _tmp242_;
			vala_ccode_function_add_parameter (_tmp241_, _tmp243_);
			_vala_ccode_node_unref0 (_tmp243_);
			_tmp244_ = cl;
			_tmp245_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp244_);
			if (_tmp245_) {
				ValaCCodeFunction* _tmp246_ = NULL;
				_tmp246_ = ref_fun;
				vala_ccode_function_set_modifiers (_tmp246_, VALA_CCODE_MODIFIERS_STATIC);
			} else {
				gboolean _tmp247_ = FALSE;
				ValaCodeContext* _tmp248_ = NULL;
				ValaCodeContext* _tmp249_ = NULL;
				gboolean _tmp250_ = FALSE;
				gboolean _tmp251_ = FALSE;
				_tmp248_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
				_tmp249_ = _tmp248_;
				_tmp250_ = vala_code_context_get_hide_internal (_tmp249_);
				_tmp251_ = _tmp250_;
				if (_tmp251_) {
					ValaClass* _tmp252_ = NULL;
					gboolean _tmp253_ = FALSE;
					_tmp252_ = cl;
					_tmp253_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp252_);
					_tmp247_ = _tmp253_;
				} else {
					_tmp247_ = FALSE;
				}
				if (_tmp247_) {
					ValaCCodeFunction* _tmp254_ = NULL;
					_tmp254_ = ref_fun;
					vala_ccode_function_set_modifiers (_tmp254_, VALA_CCODE_MODIFIERS_INTERNAL);
				}
			}
			_tmp255_ = ref_fun;
			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp255_);
			_tmp256_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp257_ = _tmp256_;
			_tmp258_ = cl;
			_tmp259_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp258_);
			_tmp260_ = _tmp259_;
			_tmp261_ = g_strconcat (_tmp260_, "*", NULL);
			_tmp262_ = _tmp261_;
			_tmp263_ = vala_ccode_identifier_new ("instance");
			_tmp264_ = _tmp263_;
			_tmp265_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp264_, NULL);
			_tmp266_ = _tmp265_;
			vala_ccode_function_add_declaration (_tmp257_, _tmp262_, (ValaCCodeDeclarator*) _tmp266_, 0);
			_vala_ccode_node_unref0 (_tmp266_);
			_vala_ccode_node_unref0 (_tmp264_);
			_g_free0 (_tmp262_);
			_g_free0 (_tmp260_);
			_tmp267_ = vala_ccode_identifier_new ("g_atomic_int_inc");
			_tmp268_ = _tmp267_;
			_tmp269_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp268_);
			_tmp270_ = _tmp269_;
			_vala_ccode_node_unref0 (_tmp268_);
			ccall = _tmp270_;
			_tmp271_ = ccall;
			_tmp272_ = ref_count;
			_tmp273_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp272_);
			_tmp274_ = _tmp273_;
			vala_ccode_function_call_add_argument (_tmp271_, (ValaCCodeExpression*) _tmp274_);
			_vala_ccode_node_unref0 (_tmp274_);
			_tmp275_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp276_ = _tmp275_;
			_tmp277_ = ccall;
			vala_ccode_function_add_expression (_tmp276_, (ValaCCodeExpression*) _tmp277_);
			_tmp278_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp279_ = _tmp278_;
			_tmp280_ = vala_ccode_identifier_new ("instance");
			_tmp281_ = _tmp280_;
			vala_ccode_function_add_return (_tmp279_, (ValaCCodeExpression*) _tmp281_);
			_vala_ccode_node_unref0 (_tmp281_);
			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
			_tmp282_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp283_ = ref_fun;
			vala_ccode_file_add_function (_tmp282_, _tmp283_);
			_tmp284_ = cl;
			_tmp285_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp284_);
			_tmp286_ = _tmp285_;
			_tmp287_ = g_strconcat (_tmp286_, "unref", NULL);
			_tmp288_ = _tmp287_;
			_tmp289_ = vala_ccode_function_new (_tmp288_, "void");
			_tmp290_ = _tmp289_;
			_g_free0 (_tmp288_);
			_g_free0 (_tmp286_);
			unref_fun = _tmp290_;
			_tmp291_ = unref_fun;
			_tmp292_ = vala_ccode_parameter_new ("instance", "gpointer");
			_tmp293_ = _tmp292_;
			vala_ccode_function_add_parameter (_tmp291_, _tmp293_);
			_vala_ccode_node_unref0 (_tmp293_);
			_tmp294_ = cl;
			_tmp295_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp294_);
			if (_tmp295_) {
				ValaCCodeFunction* _tmp296_ = NULL;
				_tmp296_ = unref_fun;
				vala_ccode_function_set_modifiers (_tmp296_, VALA_CCODE_MODIFIERS_STATIC);
			} else {
				gboolean _tmp297_ = FALSE;
				ValaCodeContext* _tmp298_ = NULL;
				ValaCodeContext* _tmp299_ = NULL;
				gboolean _tmp300_ = FALSE;
				gboolean _tmp301_ = FALSE;
				_tmp298_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
				_tmp299_ = _tmp298_;
				_tmp300_ = vala_code_context_get_hide_internal (_tmp299_);
				_tmp301_ = _tmp300_;
				if (_tmp301_) {
					ValaClass* _tmp302_ = NULL;
					gboolean _tmp303_ = FALSE;
					_tmp302_ = cl;
					_tmp303_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp302_);
					_tmp297_ = _tmp303_;
				} else {
					_tmp297_ = FALSE;
				}
				if (_tmp297_) {
					ValaCCodeFunction* _tmp304_ = NULL;
					_tmp304_ = unref_fun;
					vala_ccode_function_set_modifiers (_tmp304_, VALA_CCODE_MODIFIERS_INTERNAL);
				}
			}
			_tmp305_ = unref_fun;
			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp305_);
			_tmp306_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp307_ = _tmp306_;
			_tmp308_ = cl;
			_tmp309_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp308_);
			_tmp310_ = _tmp309_;
			_tmp311_ = g_strconcat (_tmp310_, "*", NULL);
			_tmp312_ = _tmp311_;
			_tmp313_ = vala_ccode_identifier_new ("instance");
			_tmp314_ = _tmp313_;
			_tmp315_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp314_, NULL);
			_tmp316_ = _tmp315_;
			vala_ccode_function_add_declaration (_tmp307_, _tmp312_, (ValaCCodeDeclarator*) _tmp316_, 0);
			_vala_ccode_node_unref0 (_tmp316_);
			_vala_ccode_node_unref0 (_tmp314_);
			_g_free0 (_tmp312_);
			_g_free0 (_tmp310_);
			_tmp317_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
			_tmp318_ = _tmp317_;
			_tmp319_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp318_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp319_;
			_vala_ccode_node_unref0 (_tmp318_);
			_tmp320_ = ccall;
			_tmp321_ = ref_count;
			_tmp322_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp321_);
			_tmp323_ = _tmp322_;
			vala_ccode_function_call_add_argument (_tmp320_, (ValaCCodeExpression*) _tmp323_);
			_vala_ccode_node_unref0 (_tmp323_);
			_tmp324_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp325_ = _tmp324_;
			_tmp326_ = ccall;
			vala_ccode_function_open_if (_tmp325_, (ValaCCodeExpression*) _tmp326_);
			_tmp327_ = cl;
			_tmp328_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp327_, NULL);
			_tmp329_ = _tmp328_;
			_tmp330_ = g_strdup_printf ("%s_GET_CLASS", _tmp329_);
			_tmp331_ = _tmp330_;
			_tmp332_ = vala_ccode_identifier_new (_tmp331_);
			_tmp333_ = _tmp332_;
			_tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
			_tmp335_ = _tmp334_;
			_vala_ccode_node_unref0 (_tmp333_);
			_g_free0 (_tmp331_);
			_g_free0 (_tmp329_);
			get_class = _tmp335_;
			_tmp336_ = get_class;
			_tmp337_ = vala_ccode_identifier_new ("self");
			_tmp338_ = _tmp337_;
			vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp338_);
			_vala_ccode_node_unref0 (_tmp338_);
			_tmp339_ = cl;
			_tmp340_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp339_, NULL);
			_tmp341_ = _tmp340_;
			_tmp342_ = g_strdup_printf ("%s_GET_CLASS", _tmp341_);
			_tmp343_ = _tmp342_;
			_tmp344_ = vala_ccode_identifier_new (_tmp343_);
			_tmp345_ = _tmp344_;
			_tmp346_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp345_);
			_tmp347_ = _tmp346_;
			_vala_ccode_node_unref0 (_tmp345_);
			_g_free0 (_tmp343_);
			_g_free0 (_tmp341_);
			ccast = _tmp347_;
			_tmp348_ = ccast;
			_tmp349_ = vala_ccode_identifier_new ("self");
			_tmp350_ = _tmp349_;
			vala_ccode_function_call_add_argument (_tmp348_, (ValaCCodeExpression*) _tmp350_);
			_vala_ccode_node_unref0 (_tmp350_);
			_tmp351_ = ccast;
			_tmp352_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp351_, "finalize");
			_tmp353_ = _tmp352_;
			_tmp354_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp353_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp354_;
			_vala_ccode_node_unref0 (_tmp353_);
			_tmp355_ = ccall;
			_tmp356_ = vala_ccode_identifier_new ("self");
			_tmp357_ = _tmp356_;
			vala_ccode_function_call_add_argument (_tmp355_, (ValaCCodeExpression*) _tmp357_);
			_vala_ccode_node_unref0 (_tmp357_);
			_tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp359_ = _tmp358_;
			_tmp360_ = ccall;
			vala_ccode_function_add_expression (_tmp359_, (ValaCCodeExpression*) _tmp360_);
			_tmp361_ = vala_ccode_identifier_new ("g_type_free_instance");
			_tmp362_ = _tmp361_;
			_tmp363_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp362_);
			_tmp364_ = _tmp363_;
			_vala_ccode_node_unref0 (_tmp362_);
			free = _tmp364_;
			_tmp365_ = free;
			_tmp366_ = vala_ccode_identifier_new ("self");
			_tmp367_ = _tmp366_;
			_tmp368_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp367_, "GTypeInstance *");
			_tmp369_ = _tmp368_;
			vala_ccode_function_call_add_argument (_tmp365_, (ValaCCodeExpression*) _tmp369_);
			_vala_ccode_node_unref0 (_tmp369_);
			_vala_ccode_node_unref0 (_tmp367_);
			_tmp370_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp371_ = _tmp370_;
			_tmp372_ = free;
			vala_ccode_function_add_expression (_tmp371_, (ValaCCodeExpression*) _tmp372_);
			_tmp373_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp374_ = _tmp373_;
			vala_ccode_function_close (_tmp374_);
			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
			_tmp375_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp376_ = unref_fun;
			vala_ccode_file_add_function (_tmp375_, _tmp376_);
			_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 {
		gboolean _tmp377_ = FALSE;
		ValaClass* _tmp378_ = NULL;
		ValaClass* _tmp379_ = NULL;
		ValaClass* _tmp380_ = NULL;
		_tmp378_ = cl;
		_tmp379_ = vala_class_get_base_class (_tmp378_);
		_tmp380_ = _tmp379_;
		if (_tmp380_ == NULL) {
			_tmp377_ = TRUE;
		} else {
			ValaClass* _tmp381_ = NULL;
			ValaClass* _tmp382_ = NULL;
			ValaClass* _tmp383_ = NULL;
			ValaClass* _tmp384_ = NULL;
			_tmp381_ = cl;
			_tmp382_ = vala_class_get_base_class (_tmp381_);
			_tmp383_ = _tmp382_;
			_tmp384_ = ((ValaCCodeBaseModule*) self)->gsource_type;
			_tmp377_ = _tmp383_ == _tmp384_;
		}
		if (_tmp377_) {
			ValaClass* _tmp385_ = NULL;
			ValaClass* _tmp386_ = NULL;
			_tmp385_ = cl;
			vala_gtype_module_add_instance_init_function (self, _tmp385_);
			_tmp386_ = cl;
			vala_gtype_module_add_finalize_function (self, _tmp386_);
		}
	}
	_tmp387_ = old_param_spec_struct;
	_tmp388_ = _vala_ccode_node_ref0 (_tmp387_);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
	((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp388_;
	_tmp389_ = old_prop_enum;
	_tmp390_ = _vala_ccode_node_ref0 (_tmp389_);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
	((ValaCCodeBaseModule*) self)->prop_enum = _tmp390_;
	_tmp391_ = old_class_init_context;
	_tmp392_ = _vala_ccode_base_module_emit_context_ref0 (_tmp391_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
	((ValaCCodeBaseModule*) self)->class_init_context = _tmp392_;
	_tmp393_ = old_base_init_context;
	_tmp394_ = _vala_ccode_base_module_emit_context_ref0 (_tmp393_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
	((ValaCCodeBaseModule*) self)->base_init_context = _tmp394_;
	_tmp395_ = old_class_finalize_context;
	_tmp396_ = _vala_ccode_base_module_emit_context_ref0 (_tmp395_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
	((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp396_;
	_tmp397_ = old_base_finalize_context;
	_tmp398_ = _vala_ccode_base_module_emit_context_ref0 (_tmp397_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
	((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp398_;
	_tmp399_ = old_instance_init_context;
	_tmp400_ = _vala_ccode_base_module_emit_context_ref0 (_tmp399_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
	((ValaCCodeBaseModule*) self)->instance_init_context = _tmp400_;
	_tmp401_ = old_instance_finalize_context;
	_tmp402_ = _vala_ccode_base_module_emit_context_ref0 (_tmp401_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
	((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp402_;
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeFunction* _tmp9_ = NULL;
	ValaCCodeFunction* _tmp10_ = NULL;
	ValaCCodeIdentifier* _tmp11_ = NULL;
	ValaCCodeIdentifier* _tmp12_ = NULL;
	ValaCCodeMemberAccess* _tmp13_ = NULL;
	ValaCCodeMemberAccess* _tmp14_ = NULL;
	ValaCCodeMemberAccess* _tmp15_ = NULL;
	ValaCCodeMemberAccess* _tmp16_ = NULL;
	ValaCCodeConstant* _tmp17_ = NULL;
	ValaCCodeConstant* _tmp18_ = NULL;
	ValaCCodeFile* _tmp19_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_init", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp9_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_identifier_new ("value");
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp12_, "data[0]");
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp14_, "v_pointer", FALSE);
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_constant_new ("NULL");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_assignment (_tmp10_, (ValaCCodeExpression*) _tmp16_, (ValaCCodeExpression*) _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_vala_ccode_node_unref0 (_tmp16_);
	_vala_ccode_node_unref0 (_tmp14_);
	_vala_ccode_node_unref0 (_tmp12_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp19_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp19_, function);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp9_ = NULL;
	ValaCCodeIdentifier* _tmp10_ = NULL;
	ValaCCodeMemberAccess* _tmp11_ = NULL;
	ValaCCodeMemberAccess* _tmp12_ = NULL;
	ValaCCodeMemberAccess* _tmp13_ = NULL;
	ValaCCodeMemberAccess* _tmp14_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaClass* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	gchar* _tmp19_ = NULL;
	ValaCCodeIdentifier* _tmp20_ = NULL;
	ValaCCodeIdentifier* _tmp21_ = NULL;
	ValaCCodeFunctionCall* _tmp22_ = NULL;
	ValaCCodeFunctionCall* _tmp23_ = NULL;
	ValaCCodeFunction* _tmp24_ = NULL;
	ValaCCodeFunction* _tmp25_ = NULL;
	ValaCCodeFunction* _tmp26_ = NULL;
	ValaCCodeFunction* _tmp27_ = NULL;
	ValaCCodeFunction* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeFile* _tmp30_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_free_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_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_;
	_tmp15_ = cl;
	_tmp16_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp15_);
	_tmp17_ = _tmp16_;
	_tmp18_ = g_strconcat (_tmp17_, "unref", NULL);
	_tmp19_ = _tmp18_;
	_tmp20_ = vala_ccode_identifier_new (_tmp19_);
	_tmp21_ = _tmp20_;
	_tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
	_tmp23_ = _tmp22_;
	_vala_ccode_node_unref0 (_tmp21_);
	_g_free0 (_tmp19_);
	_g_free0 (_tmp17_);
	ccall = _tmp23_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) vpointer);
	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp25_ = _tmp24_;
	vala_ccode_function_open_if (_tmp25_, (ValaCCodeExpression*) vpointer);
	_tmp26_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp27_ = _tmp26_;
	vala_ccode_function_add_expression (_tmp27_, (ValaCCodeExpression*) ccall);
	_tmp28_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp29_ = _tmp28_;
	vala_ccode_function_close (_tmp29_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp30_, 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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeParameter* _tmp9_ = NULL;
	ValaCCodeParameter* _tmp10_ = NULL;
	ValaCCodeMemberAccess* dest_vpointer = NULL;
	ValaCCodeIdentifier* _tmp11_ = NULL;
	ValaCCodeIdentifier* _tmp12_ = NULL;
	ValaCCodeMemberAccess* _tmp13_ = NULL;
	ValaCCodeMemberAccess* _tmp14_ = NULL;
	ValaCCodeMemberAccess* _tmp15_ = NULL;
	ValaCCodeMemberAccess* _tmp16_ = NULL;
	ValaCCodeMemberAccess* src_vpointer = NULL;
	ValaCCodeIdentifier* _tmp17_ = NULL;
	ValaCCodeIdentifier* _tmp18_ = NULL;
	ValaCCodeMemberAccess* _tmp19_ = NULL;
	ValaCCodeMemberAccess* _tmp20_ = NULL;
	ValaCCodeMemberAccess* _tmp21_ = NULL;
	ValaCCodeMemberAccess* _tmp22_ = NULL;
	ValaCCodeFunctionCall* ref_ccall = NULL;
	ValaClass* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	gchar* _tmp25_ = NULL;
	gchar* _tmp26_ = NULL;
	gchar* _tmp27_ = NULL;
	ValaCCodeIdentifier* _tmp28_ = NULL;
	ValaCCodeIdentifier* _tmp29_ = NULL;
	ValaCCodeFunctionCall* _tmp30_ = NULL;
	ValaCCodeFunctionCall* _tmp31_ = NULL;
	ValaCCodeFunction* _tmp32_ = NULL;
	ValaCCodeFunction* _tmp33_ = NULL;
	ValaCCodeFunction* _tmp34_ = NULL;
	ValaCCodeFunction* _tmp35_ = NULL;
	ValaCCodeFunction* _tmp36_ = NULL;
	ValaCCodeFunction* _tmp37_ = NULL;
	ValaCCodeFunction* _tmp38_ = NULL;
	ValaCCodeFunction* _tmp39_ = NULL;
	ValaCCodeConstant* _tmp40_ = NULL;
	ValaCCodeConstant* _tmp41_ = NULL;
	ValaCCodeFunction* _tmp42_ = NULL;
	ValaCCodeFunction* _tmp43_ = NULL;
	ValaCCodeFile* _tmp44_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_copy_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("src_value", "const GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_parameter_new ("dest_value", "GValue*");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (function, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp11_ = vala_ccode_identifier_new ("dest_value");
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp12_, "data[0]");
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp14_, "v_pointer", FALSE);
	_tmp16_ = _tmp15_;
	_vala_ccode_node_unref0 (_tmp14_);
	_vala_ccode_node_unref0 (_tmp12_);
	dest_vpointer = _tmp16_;
	_tmp17_ = vala_ccode_identifier_new ("src_value");
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "data[0]");
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp20_, "v_pointer", FALSE);
	_tmp22_ = _tmp21_;
	_vala_ccode_node_unref0 (_tmp20_);
	_vala_ccode_node_unref0 (_tmp18_);
	src_vpointer = _tmp22_;
	_tmp23_ = cl;
	_tmp24_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = g_strconcat (_tmp25_, "ref", NULL);
	_tmp27_ = _tmp26_;
	_tmp28_ = vala_ccode_identifier_new (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
	_tmp31_ = _tmp30_;
	_vala_ccode_node_unref0 (_tmp29_);
	_g_free0 (_tmp27_);
	_g_free0 (_tmp25_);
	ref_ccall = _tmp31_;
	vala_ccode_function_call_add_argument (ref_ccall, (ValaCCodeExpression*) src_vpointer);
	_tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp33_ = _tmp32_;
	vala_ccode_function_open_if (_tmp33_, (ValaCCodeExpression*) src_vpointer);
	_tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_assignment (_tmp35_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) ref_ccall);
	_tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp37_ = _tmp36_;
	vala_ccode_function_add_else (_tmp37_);
	_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_constant_new ("NULL");
	_tmp41_ = _tmp40_;
	vala_ccode_function_add_assignment (_tmp39_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp43_ = _tmp42_;
	vala_ccode_function_close (_tmp43_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp44_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp44_, 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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp9_ = NULL;
	ValaCCodeIdentifier* _tmp10_ = NULL;
	ValaCCodeMemberAccess* _tmp11_ = NULL;
	ValaCCodeMemberAccess* _tmp12_ = NULL;
	ValaCCodeMemberAccess* _tmp13_ = NULL;
	ValaCCodeMemberAccess* _tmp14_ = NULL;
	ValaCCodeFunction* _tmp15_ = NULL;
	ValaCCodeFunction* _tmp16_ = NULL;
	ValaCCodeFile* _tmp17_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_peek_pointer", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "gpointer");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "const GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_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_;
	_tmp15_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_return (_tmp16_, (ValaCCodeExpression*) vpointer);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp17_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp17_, 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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeParameter* _tmp9_ = NULL;
	ValaCCodeParameter* _tmp10_ = NULL;
	ValaCCodeParameter* _tmp11_ = NULL;
	ValaCCodeParameter* _tmp12_ = NULL;
	ValaCCodeParameter* _tmp13_ = NULL;
	ValaCCodeParameter* _tmp14_ = NULL;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp15_ = NULL;
	ValaCCodeIdentifier* _tmp16_ = NULL;
	ValaCCodeMemberAccess* _tmp17_ = NULL;
	ValaCCodeMemberAccess* _tmp18_ = NULL;
	ValaCCodeMemberAccess* _tmp19_ = NULL;
	ValaCCodeMemberAccess* _tmp20_ = NULL;
	ValaCCodeIdentifier* object_p_ptr = NULL;
	ValaCCodeIdentifier* _tmp21_ = NULL;
	ValaCCodeConstant* null_ = NULL;
	ValaCCodeConstant* _tmp22_ = NULL;
	ValaCCodeFunction* _tmp23_ = NULL;
	ValaCCodeFunction* _tmp24_ = NULL;
	ValaClass* _tmp25_ = NULL;
	gchar* _tmp26_ = NULL;
	gchar* _tmp27_ = NULL;
	gchar* _tmp28_ = NULL;
	gchar* _tmp29_ = NULL;
	ValaCCodeIdentifier* _tmp30_ = NULL;
	ValaCCodeIdentifier* _tmp31_ = NULL;
	ValaCCodeMemberAccess* _tmp32_ = NULL;
	ValaCCodeMemberAccess* _tmp33_ = NULL;
	ValaCCodeVariableDeclarator* _tmp34_ = NULL;
	ValaCCodeVariableDeclarator* _tmp35_ = NULL;
	ValaCCodeFunctionCall* value_type_name_fct = NULL;
	ValaCCodeIdentifier* _tmp36_ = NULL;
	ValaCCodeIdentifier* _tmp37_ = NULL;
	ValaCCodeFunctionCall* _tmp38_ = NULL;
	ValaCCodeFunctionCall* _tmp39_ = NULL;
	ValaCCodeConstant* _tmp40_ = NULL;
	ValaCCodeConstant* _tmp41_ = NULL;
	ValaCCodeUnaryExpression* assert_condition = NULL;
	ValaCCodeIdentifier* _tmp42_ = NULL;
	ValaCCodeIdentifier* _tmp43_ = NULL;
	ValaCCodeUnaryExpression* _tmp44_ = NULL;
	ValaCCodeUnaryExpression* _tmp45_ = NULL;
	ValaCCodeFunction* _tmp46_ = NULL;
	ValaCCodeFunction* _tmp47_ = NULL;
	ValaCCodeFunctionCall* assert_printf = NULL;
	ValaCCodeIdentifier* _tmp48_ = NULL;
	ValaCCodeIdentifier* _tmp49_ = NULL;
	ValaCCodeFunctionCall* _tmp50_ = NULL;
	ValaCCodeFunctionCall* _tmp51_ = NULL;
	ValaCCodeConstant* _tmp52_ = NULL;
	ValaCCodeConstant* _tmp53_ = NULL;
	ValaCCodeFunction* _tmp54_ = NULL;
	ValaCCodeFunction* _tmp55_ = NULL;
	ValaCCodeFunction* _tmp56_ = NULL;
	ValaCCodeFunction* _tmp57_ = NULL;
	ValaCCodeUnaryExpression* main_condition = NULL;
	ValaCCodeUnaryExpression* _tmp58_ = NULL;
	ValaCCodeBinaryExpression* main_else_if_condition = NULL;
	ValaCCodeIdentifier* _tmp59_ = NULL;
	ValaCCodeIdentifier* _tmp60_ = NULL;
	ValaCCodeIdentifier* _tmp61_ = NULL;
	ValaCCodeIdentifier* _tmp62_ = NULL;
	ValaCCodeBinaryExpression* _tmp63_ = NULL;
	ValaCCodeBinaryExpression* _tmp64_ = NULL;
	ValaCCodeFunctionCall* ref_fct = NULL;
	ValaClass* _tmp65_ = NULL;
	gchar* _tmp66_ = NULL;
	gchar* _tmp67_ = NULL;
	ValaCCodeIdentifier* _tmp68_ = NULL;
	ValaCCodeIdentifier* _tmp69_ = NULL;
	ValaCCodeFunctionCall* _tmp70_ = NULL;
	ValaCCodeFunctionCall* _tmp71_ = NULL;
	ValaCCodeFunction* _tmp72_ = NULL;
	ValaCCodeFunction* _tmp73_ = NULL;
	ValaCCodeFunction* _tmp74_ = NULL;
	ValaCCodeFunction* _tmp75_ = NULL;
	ValaCCodeFunction* _tmp76_ = NULL;
	ValaCCodeFunction* _tmp77_ = NULL;
	ValaCCodeFunction* _tmp78_ = NULL;
	ValaCCodeFunction* _tmp79_ = NULL;
	ValaCCodeFunction* _tmp80_ = NULL;
	ValaCCodeFunction* _tmp81_ = NULL;
	ValaCCodeFunction* _tmp82_ = NULL;
	ValaCCodeFunction* _tmp83_ = NULL;
	ValaCCodeFunction* _tmp84_ = NULL;
	ValaCCodeFunction* _tmp85_ = NULL;
	ValaCCodeFunction* _tmp86_ = NULL;
	ValaCCodeFunction* _tmp87_ = NULL;
	ValaCCodeFile* _tmp88_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_lcopy_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "const GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (function, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (function, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (function, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp15_ = vala_ccode_identifier_new ("value");
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
	_tmp20_ = _tmp19_;
	_vala_ccode_node_unref0 (_tmp18_);
	_vala_ccode_node_unref0 (_tmp16_);
	vpointer = _tmp20_;
	_tmp21_ = vala_ccode_identifier_new ("*object_p");
	object_p_ptr = _tmp21_;
	_tmp22_ = vala_ccode_constant_new ("NULL");
	null_ = _tmp22_;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp23_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp24_ = _tmp23_;
	_tmp25_ = cl;
	_tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = g_strconcat (_tmp27_, "**", NULL);
	_tmp29_ = _tmp28_;
	_tmp30_ = vala_ccode_identifier_new ("collect_values[0]");
	_tmp31_ = _tmp30_;
	_tmp32_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp31_, "v_pointer", FALSE);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_variable_declarator_new ("object_p", (ValaCCodeExpression*) _tmp33_, NULL);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_declaration (_tmp24_, _tmp29_, (ValaCCodeDeclarator*) _tmp35_, 0);
	_vala_ccode_node_unref0 (_tmp35_);
	_vala_ccode_node_unref0 (_tmp33_);
	_vala_ccode_node_unref0 (_tmp31_);
	_g_free0 (_tmp29_);
	_g_free0 (_tmp27_);
	_tmp36_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
	_tmp37_ = _tmp36_;
	_tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
	_tmp39_ = _tmp38_;
	_vala_ccode_node_unref0 (_tmp37_);
	value_type_name_fct = _tmp39_;
	_tmp40_ = vala_ccode_constant_new ("value");
	_tmp41_ = _tmp40_;
	vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = vala_ccode_identifier_new ("object_p");
	_tmp43_ = _tmp42_;
	_tmp44_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp43_);
	_tmp45_ = _tmp44_;
	_vala_ccode_node_unref0 (_tmp43_);
	assert_condition = _tmp45_;
	_tmp46_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp47_ = _tmp46_;
	vala_ccode_function_open_if (_tmp47_, (ValaCCodeExpression*) assert_condition);
	_tmp48_ = vala_ccode_identifier_new ("g_strdup_printf");
	_tmp49_ = _tmp48_;
	_tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_);
	_tmp51_ = _tmp50_;
	_vala_ccode_node_unref0 (_tmp49_);
	assert_printf = _tmp51_;
	_tmp52_ = vala_ccode_constant_new ("\"value location for `%s' passed as NULL\"");
	_tmp53_ = _tmp52_;
	vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) _tmp53_);
	_vala_ccode_node_unref0 (_tmp53_);
	vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) value_type_name_fct);
	_tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp55_ = _tmp54_;
	vala_ccode_function_add_return (_tmp55_, (ValaCCodeExpression*) assert_printf);
	_tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp57_ = _tmp56_;
	vala_ccode_function_close (_tmp57_);
	_tmp58_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) vpointer);
	main_condition = _tmp58_;
	_tmp59_ = vala_ccode_identifier_new ("collect_flags");
	_tmp60_ = _tmp59_;
	_tmp61_ = vala_ccode_identifier_new ("G_VALUE_NOCOPY_CONTENTS");
	_tmp62_ = _tmp61_;
	_tmp63_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, (ValaCCodeExpression*) _tmp60_, (ValaCCodeExpression*) _tmp62_);
	_tmp64_ = _tmp63_;
	_vala_ccode_node_unref0 (_tmp62_);
	_vala_ccode_node_unref0 (_tmp60_);
	main_else_if_condition = _tmp64_;
	_tmp65_ = cl;
	_tmp66_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp65_);
	_tmp67_ = _tmp66_;
	_tmp68_ = vala_ccode_identifier_new (_tmp67_);
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_tmp71_ = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_g_free0 (_tmp67_);
	ref_fct = _tmp71_;
	vala_ccode_function_call_add_argument (ref_fct, (ValaCCodeExpression*) vpointer);
	_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp73_ = _tmp72_;
	vala_ccode_function_open_if (_tmp73_, (ValaCCodeExpression*) main_condition);
	_tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp75_ = _tmp74_;
	vala_ccode_function_add_assignment (_tmp75_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) null_);
	_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp77_ = _tmp76_;
	vala_ccode_function_else_if (_tmp77_, (ValaCCodeExpression*) main_else_if_condition);
	_tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp79_ = _tmp78_;
	vala_ccode_function_add_assignment (_tmp79_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) vpointer);
	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp81_ = _tmp80_;
	vala_ccode_function_add_else (_tmp81_);
	_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp83_ = _tmp82_;
	vala_ccode_function_add_assignment (_tmp83_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) ref_fct);
	_tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp85_ = _tmp84_;
	vala_ccode_function_close (_tmp85_);
	_tmp86_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp87_ = _tmp86_;
	vala_ccode_function_add_return (_tmp87_, (ValaCCodeExpression*) null_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp88_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp88_, 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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeParameter* _tmp9_ = NULL;
	ValaCCodeParameter* _tmp10_ = NULL;
	ValaCCodeParameter* _tmp11_ = NULL;
	ValaCCodeParameter* _tmp12_ = NULL;
	ValaCCodeParameter* _tmp13_ = NULL;
	ValaCCodeParameter* _tmp14_ = NULL;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp15_ = NULL;
	ValaCCodeIdentifier* _tmp16_ = NULL;
	ValaCCodeMemberAccess* _tmp17_ = NULL;
	ValaCCodeMemberAccess* _tmp18_ = NULL;
	ValaCCodeMemberAccess* _tmp19_ = NULL;
	ValaCCodeMemberAccess* _tmp20_ = NULL;
	ValaCCodeMemberAccess* collect_vpointer = NULL;
	ValaCCodeIdentifier* _tmp21_ = NULL;
	ValaCCodeIdentifier* _tmp22_ = NULL;
	ValaCCodeMemberAccess* _tmp23_ = NULL;
	ValaCCodeMemberAccess* _tmp24_ = NULL;
	ValaCCodeFunction* _tmp25_ = NULL;
	ValaCCodeFunction* _tmp26_ = NULL;
	ValaCCodeFunction* _tmp27_ = NULL;
	ValaCCodeFunction* _tmp28_ = NULL;
	ValaClass* _tmp29_ = NULL;
	gchar* _tmp30_ = NULL;
	gchar* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	ValaCCodeVariableDeclarator* _tmp34_ = NULL;
	ValaCCodeVariableDeclarator* _tmp35_ = NULL;
	ValaCCodeIdentifier* obj_identifier = NULL;
	ValaCCodeIdentifier* _tmp36_ = NULL;
	ValaCCodeMemberAccess* l_expression = NULL;
	ValaCCodeMemberAccess* _tmp37_ = NULL;
	ValaCCodeMemberAccess* _tmp38_ = NULL;
	ValaCCodeMemberAccess* _tmp39_ = NULL;
	ValaCCodeMemberAccess* _tmp40_ = NULL;
	ValaCCodeBinaryExpression* sub_condition = NULL;
	ValaCCodeConstant* _tmp41_ = NULL;
	ValaCCodeConstant* _tmp42_ = NULL;
	ValaCCodeBinaryExpression* _tmp43_ = NULL;
	ValaCCodeBinaryExpression* _tmp44_ = NULL;
	ValaCCodeFunctionCall* value_type_name_fct = NULL;
	ValaCCodeIdentifier* _tmp45_ = NULL;
	ValaCCodeIdentifier* _tmp46_ = NULL;
	ValaCCodeFunctionCall* _tmp47_ = NULL;
	ValaCCodeFunctionCall* _tmp48_ = NULL;
	ValaCCodeConstant* _tmp49_ = NULL;
	ValaCCodeConstant* _tmp50_ = NULL;
	ValaCCodeFunction* _tmp51_ = NULL;
	ValaCCodeFunction* _tmp52_ = NULL;
	ValaCCodeFunctionCall* true_return = NULL;
	ValaCCodeIdentifier* _tmp53_ = NULL;
	ValaCCodeIdentifier* _tmp54_ = NULL;
	ValaCCodeFunctionCall* _tmp55_ = NULL;
	ValaCCodeFunctionCall* _tmp56_ = NULL;
	ValaCCodeConstant* _tmp57_ = NULL;
	ValaCCodeConstant* _tmp58_ = NULL;
	ValaCCodeConstant* _tmp59_ = NULL;
	ValaCCodeConstant* _tmp60_ = NULL;
	ValaCCodeConstant* _tmp61_ = NULL;
	ValaCCodeConstant* _tmp62_ = NULL;
	ValaCCodeFunction* _tmp63_ = NULL;
	ValaCCodeFunction* _tmp64_ = NULL;
	ValaCCodeFunctionCall* reg_call = NULL;
	ValaCCodeIdentifier* _tmp65_ = NULL;
	ValaCCodeIdentifier* _tmp66_ = NULL;
	ValaCCodeFunctionCall* _tmp67_ = NULL;
	ValaCCodeFunctionCall* _tmp68_ = NULL;
	ValaCCodeFunctionCall* type_check = NULL;
	ValaCCodeIdentifier* _tmp69_ = NULL;
	ValaCCodeIdentifier* _tmp70_ = NULL;
	ValaCCodeFunctionCall* _tmp71_ = NULL;
	ValaCCodeFunctionCall* _tmp72_ = NULL;
	ValaCCodeIdentifier* _tmp73_ = NULL;
	ValaCCodeIdentifier* _tmp74_ = NULL;
	ValaCCodeFunctionCall* stored_type = NULL;
	ValaCCodeIdentifier* _tmp75_ = NULL;
	ValaCCodeIdentifier* _tmp76_ = NULL;
	ValaCCodeFunctionCall* _tmp77_ = NULL;
	ValaCCodeFunctionCall* _tmp78_ = NULL;
	ValaCCodeIdentifier* _tmp79_ = NULL;
	ValaCCodeIdentifier* _tmp80_ = NULL;
	ValaCCodeFunction* _tmp81_ = NULL;
	ValaCCodeFunction* _tmp82_ = NULL;
	ValaCCodeUnaryExpression* _tmp83_ = NULL;
	ValaCCodeUnaryExpression* _tmp84_ = NULL;
	ValaCCodeFunctionCall* false_return = NULL;
	ValaCCodeIdentifier* _tmp85_ = NULL;
	ValaCCodeIdentifier* _tmp86_ = NULL;
	ValaCCodeFunctionCall* _tmp87_ = NULL;
	ValaCCodeFunctionCall* _tmp88_ = NULL;
	ValaCCodeFunctionCall* type_name_fct = NULL;
	ValaCCodeIdentifier* _tmp89_ = NULL;
	ValaCCodeIdentifier* _tmp90_ = NULL;
	ValaCCodeFunctionCall* _tmp91_ = NULL;
	ValaCCodeFunctionCall* _tmp92_ = NULL;
	ValaCCodeConstant* _tmp93_ = NULL;
	ValaCCodeConstant* _tmp94_ = NULL;
	ValaCCodeConstant* _tmp95_ = NULL;
	ValaCCodeConstant* _tmp96_ = NULL;
	ValaCCodeConstant* _tmp97_ = NULL;
	ValaCCodeConstant* _tmp98_ = NULL;
	ValaCCodeConstant* _tmp99_ = NULL;
	ValaCCodeConstant* _tmp100_ = NULL;
	ValaCCodeFunction* _tmp101_ = NULL;
	ValaCCodeFunction* _tmp102_ = NULL;
	ValaCCodeFunction* _tmp103_ = NULL;
	ValaCCodeFunction* _tmp104_ = NULL;
	ValaCCodeFunctionCall* ref_call = NULL;
	ValaClass* _tmp105_ = NULL;
	gchar* _tmp106_ = NULL;
	gchar* _tmp107_ = NULL;
	ValaCCodeIdentifier* _tmp108_ = NULL;
	ValaCCodeIdentifier* _tmp109_ = NULL;
	ValaCCodeFunctionCall* _tmp110_ = NULL;
	ValaCCodeFunctionCall* _tmp111_ = NULL;
	ValaCCodeIdentifier* _tmp112_ = NULL;
	ValaCCodeIdentifier* _tmp113_ = NULL;
	ValaCCodeFunction* _tmp114_ = NULL;
	ValaCCodeFunction* _tmp115_ = NULL;
	ValaCCodeFunction* _tmp116_ = NULL;
	ValaCCodeFunction* _tmp117_ = NULL;
	ValaCCodeFunction* _tmp118_ = NULL;
	ValaCCodeFunction* _tmp119_ = NULL;
	ValaCCodeConstant* _tmp120_ = NULL;
	ValaCCodeConstant* _tmp121_ = NULL;
	ValaCCodeFunction* _tmp122_ = NULL;
	ValaCCodeFunction* _tmp123_ = NULL;
	ValaCCodeFunction* _tmp124_ = NULL;
	ValaCCodeFunction* _tmp125_ = NULL;
	ValaCCodeConstant* _tmp126_ = NULL;
	ValaCCodeConstant* _tmp127_ = NULL;
	ValaCCodeFile* _tmp128_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_collect_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (function, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (function, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (function, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp15_ = vala_ccode_identifier_new ("value");
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
	_tmp20_ = _tmp19_;
	_vala_ccode_node_unref0 (_tmp18_);
	_vala_ccode_node_unref0 (_tmp16_);
	vpointer = _tmp20_;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp21_ = vala_ccode_identifier_new ("collect_values[0]");
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
	_tmp24_ = _tmp23_;
	_vala_ccode_node_unref0 (_tmp22_);
	collect_vpointer = _tmp24_;
	_tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp26_ = _tmp25_;
	vala_ccode_function_open_if (_tmp26_, (ValaCCodeExpression*) collect_vpointer);
	_tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp28_ = _tmp27_;
	_tmp29_ = cl;
	_tmp30_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp29_);
	_tmp31_ = _tmp30_;
	_tmp32_ = g_strconcat (_tmp31_, "*", NULL);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) collect_vpointer, NULL);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_declaration (_tmp28_, _tmp33_, (ValaCCodeDeclarator*) _tmp35_, 0);
	_vala_ccode_node_unref0 (_tmp35_);
	_g_free0 (_tmp33_);
	_g_free0 (_tmp31_);
	_tmp36_ = vala_ccode_identifier_new ("object");
	obj_identifier = _tmp36_;
	_tmp37_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) obj_identifier, "parent_instance");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp38_, "g_class", FALSE);
	_tmp40_ = _tmp39_;
	_vala_ccode_node_unref0 (_tmp38_);
	l_expression = _tmp40_;
	_tmp41_ = vala_ccode_constant_new ("NULL");
	_tmp42_ = _tmp41_;
	_tmp43_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) l_expression, (ValaCCodeExpression*) _tmp42_);
	_tmp44_ = _tmp43_;
	_vala_ccode_node_unref0 (_tmp42_);
	sub_condition = _tmp44_;
	_tmp45_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
	_tmp48_ = _tmp47_;
	_vala_ccode_node_unref0 (_tmp46_);
	value_type_name_fct = _tmp48_;
	_tmp49_ = vala_ccode_constant_new ("value");
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp52_ = _tmp51_;
	vala_ccode_function_open_if (_tmp52_, (ValaCCodeExpression*) sub_condition);
	_tmp53_ = vala_ccode_identifier_new ("g_strconcat");
	_tmp54_ = _tmp53_;
	_tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
	_tmp56_ = _tmp55_;
	_vala_ccode_node_unref0 (_tmp54_);
	true_return = _tmp56_;
	_tmp57_ = vala_ccode_constant_new ("\"invalid unclassed object pointer for value type `\"");
	_tmp58_ = _tmp57_;
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp58_);
	_vala_ccode_node_unref0 (_tmp58_);
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) value_type_name_fct);
	_tmp59_ = vala_ccode_constant_new ("\"'\"");
	_tmp60_ = _tmp59_;
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp60_);
	_vala_ccode_node_unref0 (_tmp60_);
	_tmp61_ = vala_ccode_constant_new ("NULL");
	_tmp62_ = _tmp61_;
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp62_);
	_vala_ccode_node_unref0 (_tmp62_);
	_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp64_ = _tmp63_;
	vala_ccode_function_add_return (_tmp64_, (ValaCCodeExpression*) true_return);
	_tmp65_ = vala_ccode_identifier_new ("g_value_type_compatible");
	_tmp66_ = _tmp65_;
	_tmp67_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp66_);
	_tmp68_ = _tmp67_;
	_vala_ccode_node_unref0 (_tmp66_);
	reg_call = _tmp68_;
	_tmp69_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
	_tmp70_ = _tmp69_;
	_tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
	_tmp72_ = _tmp71_;
	_vala_ccode_node_unref0 (_tmp70_);
	type_check = _tmp72_;
	_tmp73_ = vala_ccode_identifier_new ("object");
	_tmp74_ = _tmp73_;
	vala_ccode_function_call_add_argument (type_check, (ValaCCodeExpression*) _tmp74_);
	_vala_ccode_node_unref0 (_tmp74_);
	vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) type_check);
	_tmp75_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
	_tmp76_ = _tmp75_;
	_tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
	_tmp78_ = _tmp77_;
	_vala_ccode_node_unref0 (_tmp76_);
	stored_type = _tmp78_;
	_tmp79_ = vala_ccode_identifier_new ("value");
	_tmp80_ = _tmp79_;
	vala_ccode_function_call_add_argument (stored_type, (ValaCCodeExpression*) _tmp80_);
	_vala_ccode_node_unref0 (_tmp80_);
	vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) stored_type);
	_tmp81_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp82_ = _tmp81_;
	_tmp83_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) reg_call);
	_tmp84_ = _tmp83_;
	vala_ccode_function_else_if (_tmp82_, (ValaCCodeExpression*) _tmp84_);
	_vala_ccode_node_unref0 (_tmp84_);
	_tmp85_ = vala_ccode_identifier_new ("g_strconcat");
	_tmp86_ = _tmp85_;
	_tmp87_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp86_);
	_tmp88_ = _tmp87_;
	_vala_ccode_node_unref0 (_tmp86_);
	false_return = _tmp88_;
	_tmp89_ = vala_ccode_identifier_new ("g_type_name");
	_tmp90_ = _tmp89_;
	_tmp91_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp90_);
	_tmp92_ = _tmp91_;
	_vala_ccode_node_unref0 (_tmp90_);
	type_name_fct = _tmp92_;
	vala_ccode_function_call_add_argument (type_name_fct, (ValaCCodeExpression*) type_check);
	_tmp93_ = vala_ccode_constant_new ("\"invalid object type `\"");
	_tmp94_ = _tmp93_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp94_);
	_vala_ccode_node_unref0 (_tmp94_);
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) type_name_fct);
	_tmp95_ = vala_ccode_constant_new ("\"' for value type `\"");
	_tmp96_ = _tmp95_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp96_);
	_vala_ccode_node_unref0 (_tmp96_);
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) value_type_name_fct);
	_tmp97_ = vala_ccode_constant_new ("\"'\"");
	_tmp98_ = _tmp97_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp98_);
	_vala_ccode_node_unref0 (_tmp98_);
	_tmp99_ = vala_ccode_constant_new ("NULL");
	_tmp100_ = _tmp99_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp100_);
	_vala_ccode_node_unref0 (_tmp100_);
	_tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp102_ = _tmp101_;
	vala_ccode_function_add_return (_tmp102_, (ValaCCodeExpression*) false_return);
	_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp104_ = _tmp103_;
	vala_ccode_function_close (_tmp104_);
	_tmp105_ = cl;
	_tmp106_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp105_);
	_tmp107_ = _tmp106_;
	_tmp108_ = vala_ccode_identifier_new (_tmp107_);
	_tmp109_ = _tmp108_;
	_tmp110_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp109_);
	_tmp111_ = _tmp110_;
	_vala_ccode_node_unref0 (_tmp109_);
	_g_free0 (_tmp107_);
	ref_call = _tmp111_;
	_tmp112_ = vala_ccode_identifier_new ("object");
	_tmp113_ = _tmp112_;
	vala_ccode_function_call_add_argument (ref_call, (ValaCCodeExpression*) _tmp113_);
	_vala_ccode_node_unref0 (_tmp113_);
	_tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp115_ = _tmp114_;
	vala_ccode_function_add_assignment (_tmp115_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) ref_call);
	_tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp117_ = _tmp116_;
	vala_ccode_function_add_else (_tmp117_);
	_tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp119_ = _tmp118_;
	_tmp120_ = vala_ccode_constant_new ("NULL");
	_tmp121_ = _tmp120_;
	vala_ccode_function_add_assignment (_tmp119_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp121_);
	_vala_ccode_node_unref0 (_tmp121_);
	_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp123_ = _tmp122_;
	vala_ccode_function_close (_tmp123_);
	_tmp124_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp125_ = _tmp124_;
	_tmp126_ = vala_ccode_constant_new ("NULL");
	_tmp127_ = _tmp126_;
	vala_ccode_function_add_return (_tmp125_, (ValaCCodeExpression*) _tmp127_);
	_vala_ccode_node_unref0 (_tmp127_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp128_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp128_, 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* function_name = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp2_ = NULL;
	ValaCCodeFunction* _tmp3_ = NULL;
	ValaCCodeFunction* _tmp4_ = NULL;
	ValaCCodeParameter* _tmp5_ = NULL;
	ValaCCodeParameter* _tmp6_ = NULL;
	ValaCCodeFunction* _tmp7_ = NULL;
	ValaCCodeParameter* _tmp8_ = NULL;
	ValaCCodeParameter* _tmp9_ = NULL;
	ValaCCodeFunction* _tmp10_ = NULL;
	ValaCCodeParameter* _tmp11_ = NULL;
	ValaCCodeParameter* _tmp12_ = NULL;
	ValaCCodeFunction* _tmp13_ = NULL;
	ValaCCodeParameter* _tmp14_ = NULL;
	ValaCCodeParameter* _tmp15_ = NULL;
	ValaCCodeFunction* _tmp16_ = NULL;
	ValaCCodeParameter* _tmp17_ = NULL;
	ValaCCodeParameter* _tmp18_ = NULL;
	ValaClass* _tmp19_ = NULL;
	gboolean _tmp20_ = FALSE;
	ValaCCodeFunction* _tmp30_ = NULL;
	ValaCCodeFunction* _tmp31_ = NULL;
	ValaCCodeFunction* _tmp32_ = NULL;
	ValaClass* _tmp33_ = NULL;
	ValaSymbol* _tmp34_ = NULL;
	ValaSymbol* _tmp35_ = NULL;
	gchar* _tmp36_ = NULL;
	gchar* _tmp37_ = NULL;
	ValaClass* _tmp38_ = NULL;
	const gchar* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	gchar* _tmp41_ = NULL;
	gchar* _tmp42_ = NULL;
	ValaCCodeVariableDeclarator* _tmp43_ = NULL;
	ValaCCodeVariableDeclarator* _tmp44_ = NULL;
	ValaCCodeFunctionCall* subccall = NULL;
	ValaCCodeIdentifier* _tmp45_ = NULL;
	ValaCCodeIdentifier* _tmp46_ = NULL;
	ValaCCodeFunctionCall* _tmp47_ = NULL;
	ValaCCodeFunctionCall* _tmp48_ = NULL;
	ValaCCodeIdentifier* _tmp49_ = NULL;
	ValaCCodeIdentifier* _tmp50_ = NULL;
	ValaClass* _tmp51_ = NULL;
	gchar* _tmp52_ = NULL;
	gchar* _tmp53_ = NULL;
	ValaCCodeIdentifier* _tmp54_ = NULL;
	ValaCCodeIdentifier* _tmp55_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp56_ = NULL;
	ValaCCodeIdentifier* _tmp57_ = NULL;
	ValaCCodeFunctionCall* _tmp58_ = NULL;
	ValaCCodeFunctionCall* _tmp59_ = NULL;
	ValaCCodeFunctionCall* _tmp60_ = NULL;
	ValaCCodeFunctionCall* _tmp61_ = NULL;
	ValaCCodeIdentifier* _tmp62_ = NULL;
	ValaCCodeIdentifier* _tmp63_ = NULL;
	ValaCCodeFunction* _tmp64_ = NULL;
	ValaCCodeFunction* _tmp65_ = NULL;
	ValaCCodeFunctionCall* _tmp66_ = NULL;
	ValaCCodeIdentifier* _tmp67_ = NULL;
	ValaCCodeIdentifier* _tmp68_ = NULL;
	ValaCCodeFunctionCall* _tmp69_ = NULL;
	ValaCCodeFunctionCall* _tmp70_ = NULL;
	ValaCCodeIdentifier* _tmp71_ = NULL;
	ValaCCodeIdentifier* _tmp72_ = NULL;
	ValaCCodeFunctionCall* _tmp73_ = NULL;
	ValaCCodeIdentifier* _tmp74_ = NULL;
	ValaCCodeIdentifier* _tmp75_ = NULL;
	ValaCCodeFunctionCall* _tmp76_ = NULL;
	ValaCCodeIdentifier* _tmp77_ = NULL;
	ValaCCodeIdentifier* _tmp78_ = NULL;
	ValaCCodeFunctionCall* _tmp79_ = NULL;
	ValaCCodeIdentifier* _tmp80_ = NULL;
	ValaCCodeIdentifier* _tmp81_ = NULL;
	ValaCCodeFunctionCall* _tmp82_ = NULL;
	ValaCCodeIdentifier* _tmp83_ = NULL;
	ValaCCodeIdentifier* _tmp84_ = NULL;
	ValaCCodeFunction* _tmp85_ = NULL;
	ValaCCodeFunction* _tmp86_ = NULL;
	ValaCCodeIdentifier* _tmp87_ = NULL;
	ValaCCodeIdentifier* _tmp88_ = NULL;
	ValaCCodeFunctionCall* _tmp89_ = NULL;
	ValaCCodeIdentifier* _tmp90_ = NULL;
	ValaCCodeIdentifier* _tmp91_ = NULL;
	ValaCCodeFunctionCall* _tmp92_ = NULL;
	ValaCCodeFunctionCall* _tmp93_ = NULL;
	ValaCCodeIdentifier* _tmp94_ = NULL;
	ValaCCodeIdentifier* _tmp95_ = NULL;
	ValaCCodeFunction* _tmp96_ = NULL;
	ValaCCodeFunction* _tmp97_ = NULL;
	ValaCCodeFunctionCall* _tmp98_ = NULL;
	ValaCCodeMemberAccess* _tmp99_ = NULL;
	ValaCCodeMemberAccess* _tmp100_ = NULL;
	ValaCCodeIdentifier* _tmp101_ = NULL;
	ValaCCodeIdentifier* _tmp102_ = NULL;
	ValaCCodeFunction* _tmp103_ = NULL;
	ValaCCodeFunction* _tmp104_ = NULL;
	ValaCCodeFunctionCall* _tmp105_ = NULL;
	ValaCCodeFile* _tmp106_ = NULL;
	ValaCCodeFunction* _tmp107_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "param_spec_");
	function_name = _tmp1_;
	_tmp2_ = function_name;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "GParamSpec*");
	function = _tmp3_;
	_tmp4_ = function;
	_tmp5_ = vala_ccode_parameter_new ("name", "const gchar*");
	_tmp6_ = _tmp5_;
	vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
	_vala_ccode_node_unref0 (_tmp6_);
	_tmp7_ = function;
	_tmp8_ = vala_ccode_parameter_new ("nick", "const gchar*");
	_tmp9_ = _tmp8_;
	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
	_vala_ccode_node_unref0 (_tmp9_);
	_tmp10_ = function;
	_tmp11_ = vala_ccode_parameter_new ("blurb", "const gchar*");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = function;
	_tmp14_ = vala_ccode_parameter_new ("object_type", "GType");
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_tmp16_ = function;
	_tmp17_ = vala_ccode_parameter_new ("flags", "GParamFlags");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_tmp19_ = cl;
	_tmp20_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp19_);
	if (_tmp20_) {
		ValaCCodeFunction* _tmp21_ = NULL;
		_tmp21_ = function;
		vala_ccode_function_set_modifiers (_tmp21_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp22_ = FALSE;
		ValaCodeContext* _tmp23_ = NULL;
		ValaCodeContext* _tmp24_ = NULL;
		gboolean _tmp25_ = FALSE;
		gboolean _tmp26_ = FALSE;
		_tmp23_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp24_ = _tmp23_;
		_tmp25_ = vala_code_context_get_hide_internal (_tmp24_);
		_tmp26_ = _tmp25_;
		if (_tmp26_) {
			ValaClass* _tmp27_ = NULL;
			gboolean _tmp28_ = FALSE;
			_tmp27_ = cl;
			_tmp28_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp27_);
			_tmp22_ = _tmp28_;
		} else {
			_tmp22_ = FALSE;
		}
		if (_tmp22_) {
			ValaCCodeFunction* _tmp29_ = NULL;
			_tmp29_ = function;
			vala_ccode_function_set_modifiers (_tmp29_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp30_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp30_);
	_tmp31_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp32_ = _tmp31_;
	_tmp33_ = cl;
	_tmp34_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp33_);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_base_module_get_ccode_prefix (_tmp35_);
	_tmp37_ = _tmp36_;
	_tmp38_ = cl;
	_tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_);
	_tmp40_ = _tmp39_;
	_tmp41_ = g_strdup_printf ("%sParamSpec%s*", _tmp37_, _tmp40_);
	_tmp42_ = _tmp41_;
	_tmp43_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
	_tmp44_ = _tmp43_;
	vala_ccode_function_add_declaration (_tmp32_, _tmp42_, (ValaCCodeDeclarator*) _tmp44_, 0);
	_vala_ccode_node_unref0 (_tmp44_);
	_g_free0 (_tmp42_);
	_g_free0 (_tmp37_);
	_tmp45_ = vala_ccode_identifier_new ("g_type_is_a");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
	_tmp48_ = _tmp47_;
	_vala_ccode_node_unref0 (_tmp46_);
	subccall = _tmp48_;
	_tmp49_ = vala_ccode_identifier_new ("object_type");
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp51_ = cl;
	_tmp52_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp51_);
	_tmp53_ = _tmp52_;
	_tmp54_ = vala_ccode_identifier_new (_tmp53_);
	_tmp55_ = _tmp54_;
	vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp55_);
	_vala_ccode_node_unref0 (_tmp55_);
	_g_free0 (_tmp53_);
	_tmp56_ = vala_ccode_identifier_new ("g_return_val_if_fail");
	_tmp57_ = _tmp56_;
	_tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
	_tmp59_ = _tmp58_;
	_vala_ccode_node_unref0 (_tmp57_);
	ccall = _tmp59_;
	_tmp60_ = ccall;
	vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) subccall);
	_tmp61_ = ccall;
	_tmp62_ = vala_ccode_identifier_new ("NULL");
	_tmp63_ = _tmp62_;
	vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp63_);
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp65_ = _tmp64_;
	_tmp66_ = ccall;
	vala_ccode_function_add_expression (_tmp65_, (ValaCCodeExpression*) _tmp66_);
	_tmp67_ = vala_ccode_identifier_new ("g_param_spec_internal");
	_tmp68_ = _tmp67_;
	_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp69_;
	_vala_ccode_node_unref0 (_tmp68_);
	_tmp70_ = ccall;
	_tmp71_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
	_tmp72_ = _tmp71_;
	vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp72_);
	_vala_ccode_node_unref0 (_tmp72_);
	_tmp73_ = ccall;
	_tmp74_ = vala_ccode_identifier_new ("name");
	_tmp75_ = _tmp74_;
	vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_);
	_vala_ccode_node_unref0 (_tmp75_);
	_tmp76_ = ccall;
	_tmp77_ = vala_ccode_identifier_new ("nick");
	_tmp78_ = _tmp77_;
	vala_ccode_function_call_add_argument (_tmp76_, (ValaCCodeExpression*) _tmp78_);
	_vala_ccode_node_unref0 (_tmp78_);
	_tmp79_ = ccall;
	_tmp80_ = vala_ccode_identifier_new ("blurb");
	_tmp81_ = _tmp80_;
	vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (_tmp81_);
	_tmp82_ = ccall;
	_tmp83_ = vala_ccode_identifier_new ("flags");
	_tmp84_ = _tmp83_;
	vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp84_);
	_vala_ccode_node_unref0 (_tmp84_);
	_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp86_ = _tmp85_;
	_tmp87_ = vala_ccode_identifier_new ("spec");
	_tmp88_ = _tmp87_;
	_tmp89_ = ccall;
	vala_ccode_function_add_assignment (_tmp86_, (ValaCCodeExpression*) _tmp88_, (ValaCCodeExpression*) _tmp89_);
	_vala_ccode_node_unref0 (_tmp88_);
	_tmp90_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
	_tmp91_ = _tmp90_;
	_tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp92_;
	_vala_ccode_node_unref0 (_tmp91_);
	_tmp93_ = ccall;
	_tmp94_ = vala_ccode_identifier_new ("spec");
	_tmp95_ = _tmp94_;
	vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_);
	_vala_ccode_node_unref0 (_tmp95_);
	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp97_ = _tmp96_;
	_tmp98_ = ccall;
	_tmp99_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp98_, "value_type");
	_tmp100_ = _tmp99_;
	_tmp101_ = vala_ccode_identifier_new ("object_type");
	_tmp102_ = _tmp101_;
	vala_ccode_function_add_assignment (_tmp97_, (ValaCCodeExpression*) _tmp100_, (ValaCCodeExpression*) _tmp102_);
	_vala_ccode_node_unref0 (_tmp102_);
	_vala_ccode_node_unref0 (_tmp100_);
	_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp104_ = _tmp103_;
	_tmp105_ = ccall;
	vala_ccode_function_add_return (_tmp104_, (ValaCCodeExpression*) _tmp105_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp106_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp107_ = function;
	vala_ccode_file_add_function (_tmp106_, _tmp107_);
	_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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	ValaCCodeFunction* _tmp3_ = NULL;
	ValaCCodeFunction* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeParameter* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaCCodeParameter* _tmp9_ = NULL;
	ValaCCodeParameter* _tmp10_ = NULL;
	ValaClass* _tmp11_ = NULL;
	gboolean _tmp12_ = FALSE;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp22_ = NULL;
	ValaCCodeIdentifier* _tmp23_ = NULL;
	ValaCCodeMemberAccess* _tmp24_ = NULL;
	ValaCCodeMemberAccess* _tmp25_ = NULL;
	ValaCCodeMemberAccess* _tmp26_ = NULL;
	ValaCCodeMemberAccess* _tmp27_ = NULL;
	ValaCCodeFunction* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeFunction* _tmp30_ = NULL;
	ValaClass* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	ValaCCodeVariableDeclarator* _tmp36_ = NULL;
	ValaCCodeVariableDeclarator* _tmp37_ = NULL;
	ValaCCodeFunctionCall* ccall_typecheck = NULL;
	ValaCCodeIdentifier* _tmp38_ = NULL;
	ValaCCodeIdentifier* _tmp39_ = NULL;
	ValaCCodeFunctionCall* _tmp40_ = NULL;
	ValaCCodeFunctionCall* _tmp41_ = NULL;
	ValaCCodeFunctionCall* _tmp42_ = NULL;
	ValaCCodeIdentifier* _tmp43_ = NULL;
	ValaCCodeIdentifier* _tmp44_ = NULL;
	ValaCCodeFunctionCall* _tmp45_ = NULL;
	ValaClass* _tmp46_ = NULL;
	gchar* _tmp47_ = NULL;
	gchar* _tmp48_ = NULL;
	ValaCCodeIdentifier* _tmp49_ = NULL;
	ValaCCodeIdentifier* _tmp50_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp51_ = NULL;
	ValaCCodeIdentifier* _tmp52_ = NULL;
	ValaCCodeFunctionCall* _tmp53_ = NULL;
	ValaCCodeFunctionCall* _tmp54_ = NULL;
	ValaCCodeFunctionCall* _tmp55_ = NULL;
	ValaCCodeFunctionCall* _tmp56_ = NULL;
	ValaCCodeFunction* _tmp57_ = NULL;
	ValaCCodeFunction* _tmp58_ = NULL;
	ValaCCodeFunctionCall* _tmp59_ = NULL;
	ValaCCodeFunction* _tmp60_ = NULL;
	ValaCCodeFunction* _tmp61_ = NULL;
	ValaCCodeConstant* _tmp62_ = NULL;
	ValaCCodeConstant* _tmp63_ = NULL;
	ValaCCodeFunction* _tmp64_ = NULL;
	ValaCCodeFunction* _tmp65_ = NULL;
	ValaCCodeIdentifier* _tmp66_ = NULL;
	ValaCCodeIdentifier* _tmp67_ = NULL;
	ValaCCodeIdentifier* _tmp68_ = NULL;
	ValaCCodeIdentifier* _tmp69_ = NULL;
	ValaCCodeFunctionCall* _tmp70_ = NULL;
	ValaCCodeFunctionCall* _tmp71_ = NULL;
	ValaCCodeIdentifier* _tmp72_ = NULL;
	ValaCCodeIdentifier* _tmp73_ = NULL;
	ValaCCodeFunctionCall* _tmp74_ = NULL;
	ValaClass* _tmp75_ = NULL;
	gchar* _tmp76_ = NULL;
	gchar* _tmp77_ = NULL;
	ValaCCodeIdentifier* _tmp78_ = NULL;
	ValaCCodeIdentifier* _tmp79_ = NULL;
	ValaCCodeIdentifier* _tmp80_ = NULL;
	ValaCCodeIdentifier* _tmp81_ = NULL;
	ValaCCodeFunctionCall* _tmp82_ = NULL;
	ValaCCodeFunctionCall* _tmp83_ = NULL;
	ValaCCodeFunctionCall* _tmp84_ = NULL;
	ValaCCodeFunction* _tmp85_ = NULL;
	ValaCCodeFunction* _tmp86_ = NULL;
	ValaCCodeFunctionCall* _tmp87_ = NULL;
	ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
	ValaCCodeIdentifier* _tmp88_ = NULL;
	ValaCCodeIdentifier* _tmp89_ = NULL;
	ValaCCodeFunctionCall* _tmp90_ = NULL;
	ValaCCodeFunctionCall* _tmp91_ = NULL;
	ValaCCodeIdentifier* _tmp92_ = NULL;
	ValaCCodeIdentifier* _tmp93_ = NULL;
	ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
	ValaCCodeIdentifier* _tmp94_ = NULL;
	ValaCCodeIdentifier* _tmp95_ = NULL;
	ValaCCodeFunctionCall* _tmp96_ = NULL;
	ValaCCodeFunctionCall* _tmp97_ = NULL;
	ValaCCodeIdentifier* _tmp98_ = NULL;
	ValaCCodeIdentifier* _tmp99_ = NULL;
	ValaCCodeFunctionCall* ccall_typecompatible = NULL;
	ValaCCodeIdentifier* _tmp100_ = NULL;
	ValaCCodeIdentifier* _tmp101_ = NULL;
	ValaCCodeFunctionCall* _tmp102_ = NULL;
	ValaCCodeFunctionCall* _tmp103_ = NULL;
	ValaCCodeIdentifier* _tmp104_ = NULL;
	ValaCCodeIdentifier* _tmp105_ = NULL;
	ValaCCodeFunctionCall* _tmp106_ = NULL;
	ValaCCodeFunctionCall* _tmp107_ = NULL;
	ValaCCodeFunction* _tmp108_ = NULL;
	ValaCCodeFunction* _tmp109_ = NULL;
	ValaCCodeFunctionCall* _tmp110_ = NULL;
	ValaCCodeFunction* _tmp111_ = NULL;
	ValaCCodeFunction* _tmp112_ = NULL;
	ValaCCodeConstant* _tmp113_ = NULL;
	ValaCCodeConstant* _tmp114_ = NULL;
	ValaClass* _tmp115_ = NULL;
	gchar* _tmp116_ = NULL;
	gchar* _tmp117_ = NULL;
	ValaCCodeIdentifier* _tmp118_ = NULL;
	ValaCCodeIdentifier* _tmp119_ = NULL;
	ValaCCodeFunctionCall* _tmp120_ = NULL;
	ValaCCodeFunctionCall* _tmp121_ = NULL;
	ValaCCodeFunction* _tmp122_ = NULL;
	ValaCCodeFunction* _tmp123_ = NULL;
	ValaCCodeFunctionCall* _tmp124_ = NULL;
	ValaCCodeFunction* _tmp125_ = NULL;
	ValaCCodeFunction* _tmp126_ = NULL;
	ValaCCodeFunction* _tmp127_ = NULL;
	ValaCCodeFunction* _tmp128_ = NULL;
	ValaCCodeConstant* _tmp129_ = NULL;
	ValaCCodeConstant* _tmp130_ = NULL;
	ValaCCodeFunction* _tmp131_ = NULL;
	ValaCCodeFunction* _tmp132_ = NULL;
	ValaCCodeFunction* _tmp133_ = NULL;
	ValaCCodeFunction* _tmp134_ = NULL;
	ValaCCodeIdentifier* _tmp135_ = NULL;
	ValaCCodeIdentifier* _tmp136_ = NULL;
	ValaClass* _tmp137_ = NULL;
	gchar* _tmp138_ = NULL;
	gchar* _tmp139_ = NULL;
	ValaCCodeIdentifier* _tmp140_ = NULL;
	ValaCCodeIdentifier* _tmp141_ = NULL;
	ValaCCodeFunctionCall* _tmp142_ = NULL;
	ValaCCodeFunctionCall* _tmp143_ = NULL;
	ValaCCodeIdentifier* _tmp144_ = NULL;
	ValaCCodeIdentifier* _tmp145_ = NULL;
	ValaCCodeFunction* _tmp146_ = NULL;
	ValaCCodeFunction* _tmp147_ = NULL;
	ValaCCodeFunctionCall* _tmp148_ = NULL;
	ValaCCodeFunction* _tmp149_ = NULL;
	ValaCCodeFunction* _tmp150_ = NULL;
	ValaCCodeFile* _tmp151_ = NULL;
	ValaCCodeFunction* _tmp152_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "void");
	_tmp4_ = _tmp3_;
	_g_free0 (_tmp2_);
	function = _tmp4_;
	_tmp5_ = function;
	_tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp7_ = _tmp6_;
	vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = function;
	_tmp9_ = vala_ccode_parameter_new ("v_object", "gpointer");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = cl;
	_tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp11_);
	if (_tmp12_) {
		ValaCCodeFunction* _tmp13_ = NULL;
		_tmp13_ = function;
		vala_ccode_function_set_modifiers (_tmp13_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp14_ = FALSE;
		ValaCodeContext* _tmp15_ = NULL;
		ValaCodeContext* _tmp16_ = NULL;
		gboolean _tmp17_ = FALSE;
		gboolean _tmp18_ = FALSE;
		_tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp16_ = _tmp15_;
		_tmp17_ = vala_code_context_get_hide_internal (_tmp16_);
		_tmp18_ = _tmp17_;
		if (_tmp18_) {
			ValaClass* _tmp19_ = NULL;
			gboolean _tmp20_ = FALSE;
			_tmp19_ = cl;
			_tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp19_);
			_tmp14_ = _tmp20_;
		} else {
			_tmp14_ = FALSE;
		}
		if (_tmp14_) {
			ValaCCodeFunction* _tmp21_ = NULL;
			_tmp21_ = function;
			vala_ccode_function_set_modifiers (_tmp21_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp22_ = vala_ccode_identifier_new ("value");
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "data[0]");
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp25_, "v_pointer", FALSE);
	_tmp27_ = _tmp26_;
	_vala_ccode_node_unref0 (_tmp25_);
	_vala_ccode_node_unref0 (_tmp23_);
	vpointer = _tmp27_;
	_tmp28_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = cl;
	_tmp32_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = g_strconcat (_tmp33_, "*", NULL);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
	_tmp37_ = _tmp36_;
	vala_ccode_function_add_declaration (_tmp30_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
	_vala_ccode_node_unref0 (_tmp37_);
	_g_free0 (_tmp35_);
	_g_free0 (_tmp33_);
	_tmp38_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
	_tmp41_ = _tmp40_;
	_vala_ccode_node_unref0 (_tmp39_);
	ccall_typecheck = _tmp41_;
	_tmp42_ = ccall_typecheck;
	_tmp43_ = vala_ccode_identifier_new ("value");
	_tmp44_ = _tmp43_;
	vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
	_vala_ccode_node_unref0 (_tmp44_);
	_tmp45_ = ccall_typecheck;
	_tmp46_ = cl;
	_tmp47_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_identifier_new (_tmp48_);
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_g_free0 (_tmp48_);
	_tmp51_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp52_ = _tmp51_;
	_tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
	_tmp54_ = _tmp53_;
	_vala_ccode_node_unref0 (_tmp52_);
	ccall = _tmp54_;
	_tmp55_ = ccall;
	_tmp56_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp56_);
	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp58_ = _tmp57_;
	_tmp59_ = ccall;
	vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
	_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp61_ = _tmp60_;
	_tmp62_ = vala_ccode_constant_new ("old");
	_tmp63_ = _tmp62_;
	vala_ccode_function_add_assignment (_tmp61_, (ValaCCodeExpression*) _tmp63_, (ValaCCodeExpression*) vpointer);
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp65_ = _tmp64_;
	_tmp66_ = vala_ccode_identifier_new ("v_object");
	_tmp67_ = _tmp66_;
	vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) _tmp67_);
	_vala_ccode_node_unref0 (_tmp67_);
	_tmp68_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_vala_ccode_node_unref0 (ccall_typecheck);
	ccall_typecheck = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_tmp71_ = ccall_typecheck;
	_tmp72_ = vala_ccode_identifier_new ("v_object");
	_tmp73_ = _tmp72_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
	_vala_ccode_node_unref0 (_tmp73_);
	_tmp74_ = ccall_typecheck;
	_tmp75_ = cl;
	_tmp76_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = vala_ccode_identifier_new (_tmp77_);
	_tmp79_ = _tmp78_;
	vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp79_);
	_vala_ccode_node_unref0 (_tmp79_);
	_g_free0 (_tmp77_);
	_tmp80_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp82_;
	_vala_ccode_node_unref0 (_tmp81_);
	_tmp83_ = ccall;
	_tmp84_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp84_);
	_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp86_ = _tmp85_;
	_tmp87_ = ccall;
	vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
	_tmp88_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
	_tmp89_ = _tmp88_;
	_tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
	_tmp91_ = _tmp90_;
	_vala_ccode_node_unref0 (_tmp89_);
	ccall_typefrominstance = _tmp91_;
	_tmp92_ = vala_ccode_identifier_new ("v_object");
	_tmp93_ = _tmp92_;
	vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp93_);
	_vala_ccode_node_unref0 (_tmp93_);
	_tmp94_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
	_tmp95_ = _tmp94_;
	_tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
	_tmp97_ = _tmp96_;
	_vala_ccode_node_unref0 (_tmp95_);
	ccall_gvaluetype = _tmp97_;
	_tmp98_ = vala_ccode_identifier_new ("value");
	_tmp99_ = _tmp98_;
	vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp99_);
	_vala_ccode_node_unref0 (_tmp99_);
	_tmp100_ = vala_ccode_identifier_new ("g_value_type_compatible");
	_tmp101_ = _tmp100_;
	_tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
	_tmp103_ = _tmp102_;
	_vala_ccode_node_unref0 (_tmp101_);
	ccall_typecompatible = _tmp103_;
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
	_tmp104_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp105_ = _tmp104_;
	_tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp106_;
	_vala_ccode_node_unref0 (_tmp105_);
	_tmp107_ = ccall;
	vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) ccall_typecompatible);
	_tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp109_ = _tmp108_;
	_tmp110_ = ccall;
	vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
	_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_constant_new ("v_object");
	_tmp114_ = _tmp113_;
	vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_tmp115_ = cl;
	_tmp116_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp115_);
	_tmp117_ = _tmp116_;
	_tmp118_ = vala_ccode_identifier_new (_tmp117_);
	_tmp119_ = _tmp118_;
	_tmp120_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp119_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp120_;
	_vala_ccode_node_unref0 (_tmp119_);
	_g_free0 (_tmp117_);
	_tmp121_ = ccall;
	vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) vpointer);
	_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp123_ = _tmp122_;
	_tmp124_ = ccall;
	vala_ccode_function_add_expression (_tmp123_, (ValaCCodeExpression*) _tmp124_);
	_tmp125_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp126_ = _tmp125_;
	vala_ccode_function_add_else (_tmp126_);
	_tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp128_ = _tmp127_;
	_tmp129_ = vala_ccode_constant_new ("NULL");
	_tmp130_ = _tmp129_;
	vala_ccode_function_add_assignment (_tmp128_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp130_);
	_vala_ccode_node_unref0 (_tmp130_);
	_tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp132_ = _tmp131_;
	vala_ccode_function_close (_tmp132_);
	_tmp133_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp134_ = _tmp133_;
	_tmp135_ = vala_ccode_identifier_new ("old");
	_tmp136_ = _tmp135_;
	vala_ccode_function_open_if (_tmp134_, (ValaCCodeExpression*) _tmp136_);
	_vala_ccode_node_unref0 (_tmp136_);
	_tmp137_ = cl;
	_tmp138_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp137_);
	_tmp139_ = _tmp138_;
	_tmp140_ = vala_ccode_identifier_new (_tmp139_);
	_tmp141_ = _tmp140_;
	_tmp142_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp141_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp142_;
	_vala_ccode_node_unref0 (_tmp141_);
	_g_free0 (_tmp139_);
	_tmp143_ = ccall;
	_tmp144_ = vala_ccode_identifier_new ("old");
	_tmp145_ = _tmp144_;
	vala_ccode_function_call_add_argument (_tmp143_, (ValaCCodeExpression*) _tmp145_);
	_vala_ccode_node_unref0 (_tmp145_);
	_tmp146_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp147_ = _tmp146_;
	_tmp148_ = ccall;
	vala_ccode_function_add_expression (_tmp147_, (ValaCCodeExpression*) _tmp148_);
	_tmp149_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp150_ = _tmp149_;
	vala_ccode_function_close (_tmp150_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp151_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp152_ = function;
	vala_ccode_file_add_function (_tmp151_, _tmp152_);
	_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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	ValaCCodeFunction* _tmp3_ = NULL;
	ValaCCodeFunction* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeParameter* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaCCodeParameter* _tmp9_ = NULL;
	ValaCCodeParameter* _tmp10_ = NULL;
	ValaClass* _tmp11_ = NULL;
	gboolean _tmp12_ = FALSE;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp22_ = NULL;
	ValaCCodeIdentifier* _tmp23_ = NULL;
	ValaCCodeMemberAccess* _tmp24_ = NULL;
	ValaCCodeMemberAccess* _tmp25_ = NULL;
	ValaCCodeMemberAccess* _tmp26_ = NULL;
	ValaCCodeMemberAccess* _tmp27_ = NULL;
	ValaCCodeFunction* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeFunction* _tmp30_ = NULL;
	ValaClass* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	ValaCCodeVariableDeclarator* _tmp36_ = NULL;
	ValaCCodeVariableDeclarator* _tmp37_ = NULL;
	ValaCCodeFunctionCall* ccall_typecheck = NULL;
	ValaCCodeIdentifier* _tmp38_ = NULL;
	ValaCCodeIdentifier* _tmp39_ = NULL;
	ValaCCodeFunctionCall* _tmp40_ = NULL;
	ValaCCodeFunctionCall* _tmp41_ = NULL;
	ValaCCodeFunctionCall* _tmp42_ = NULL;
	ValaCCodeIdentifier* _tmp43_ = NULL;
	ValaCCodeIdentifier* _tmp44_ = NULL;
	ValaCCodeFunctionCall* _tmp45_ = NULL;
	ValaClass* _tmp46_ = NULL;
	gchar* _tmp47_ = NULL;
	gchar* _tmp48_ = NULL;
	ValaCCodeIdentifier* _tmp49_ = NULL;
	ValaCCodeIdentifier* _tmp50_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp51_ = NULL;
	ValaCCodeIdentifier* _tmp52_ = NULL;
	ValaCCodeFunctionCall* _tmp53_ = NULL;
	ValaCCodeFunctionCall* _tmp54_ = NULL;
	ValaCCodeFunctionCall* _tmp55_ = NULL;
	ValaCCodeFunctionCall* _tmp56_ = NULL;
	ValaCCodeFunction* _tmp57_ = NULL;
	ValaCCodeFunction* _tmp58_ = NULL;
	ValaCCodeFunctionCall* _tmp59_ = NULL;
	ValaCCodeFunction* _tmp60_ = NULL;
	ValaCCodeFunction* _tmp61_ = NULL;
	ValaCCodeConstant* _tmp62_ = NULL;
	ValaCCodeConstant* _tmp63_ = NULL;
	ValaCCodeFunction* _tmp64_ = NULL;
	ValaCCodeFunction* _tmp65_ = NULL;
	ValaCCodeIdentifier* _tmp66_ = NULL;
	ValaCCodeIdentifier* _tmp67_ = NULL;
	ValaCCodeIdentifier* _tmp68_ = NULL;
	ValaCCodeIdentifier* _tmp69_ = NULL;
	ValaCCodeFunctionCall* _tmp70_ = NULL;
	ValaCCodeFunctionCall* _tmp71_ = NULL;
	ValaCCodeIdentifier* _tmp72_ = NULL;
	ValaCCodeIdentifier* _tmp73_ = NULL;
	ValaCCodeFunctionCall* _tmp74_ = NULL;
	ValaClass* _tmp75_ = NULL;
	gchar* _tmp76_ = NULL;
	gchar* _tmp77_ = NULL;
	ValaCCodeIdentifier* _tmp78_ = NULL;
	ValaCCodeIdentifier* _tmp79_ = NULL;
	ValaCCodeIdentifier* _tmp80_ = NULL;
	ValaCCodeIdentifier* _tmp81_ = NULL;
	ValaCCodeFunctionCall* _tmp82_ = NULL;
	ValaCCodeFunctionCall* _tmp83_ = NULL;
	ValaCCodeFunctionCall* _tmp84_ = NULL;
	ValaCCodeFunction* _tmp85_ = NULL;
	ValaCCodeFunction* _tmp86_ = NULL;
	ValaCCodeFunctionCall* _tmp87_ = NULL;
	ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
	ValaCCodeIdentifier* _tmp88_ = NULL;
	ValaCCodeIdentifier* _tmp89_ = NULL;
	ValaCCodeFunctionCall* _tmp90_ = NULL;
	ValaCCodeFunctionCall* _tmp91_ = NULL;
	ValaCCodeIdentifier* _tmp92_ = NULL;
	ValaCCodeIdentifier* _tmp93_ = NULL;
	ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
	ValaCCodeIdentifier* _tmp94_ = NULL;
	ValaCCodeIdentifier* _tmp95_ = NULL;
	ValaCCodeFunctionCall* _tmp96_ = NULL;
	ValaCCodeFunctionCall* _tmp97_ = NULL;
	ValaCCodeIdentifier* _tmp98_ = NULL;
	ValaCCodeIdentifier* _tmp99_ = NULL;
	ValaCCodeFunctionCall* ccall_typecompatible = NULL;
	ValaCCodeIdentifier* _tmp100_ = NULL;
	ValaCCodeIdentifier* _tmp101_ = NULL;
	ValaCCodeFunctionCall* _tmp102_ = NULL;
	ValaCCodeFunctionCall* _tmp103_ = NULL;
	ValaCCodeIdentifier* _tmp104_ = NULL;
	ValaCCodeIdentifier* _tmp105_ = NULL;
	ValaCCodeFunctionCall* _tmp106_ = NULL;
	ValaCCodeFunctionCall* _tmp107_ = NULL;
	ValaCCodeFunction* _tmp108_ = NULL;
	ValaCCodeFunction* _tmp109_ = NULL;
	ValaCCodeFunctionCall* _tmp110_ = NULL;
	ValaCCodeFunction* _tmp111_ = NULL;
	ValaCCodeFunction* _tmp112_ = NULL;
	ValaCCodeConstant* _tmp113_ = NULL;
	ValaCCodeConstant* _tmp114_ = NULL;
	ValaCCodeFunction* _tmp115_ = NULL;
	ValaCCodeFunction* _tmp116_ = NULL;
	ValaCCodeFunction* _tmp117_ = NULL;
	ValaCCodeFunction* _tmp118_ = NULL;
	ValaCCodeConstant* _tmp119_ = NULL;
	ValaCCodeConstant* _tmp120_ = NULL;
	ValaCCodeFunction* _tmp121_ = NULL;
	ValaCCodeFunction* _tmp122_ = NULL;
	ValaCCodeFunction* _tmp123_ = NULL;
	ValaCCodeFunction* _tmp124_ = NULL;
	ValaCCodeIdentifier* _tmp125_ = NULL;
	ValaCCodeIdentifier* _tmp126_ = NULL;
	ValaClass* _tmp127_ = NULL;
	gchar* _tmp128_ = NULL;
	gchar* _tmp129_ = NULL;
	ValaCCodeIdentifier* _tmp130_ = NULL;
	ValaCCodeIdentifier* _tmp131_ = NULL;
	ValaCCodeFunctionCall* _tmp132_ = NULL;
	ValaCCodeFunctionCall* _tmp133_ = NULL;
	ValaCCodeIdentifier* _tmp134_ = NULL;
	ValaCCodeIdentifier* _tmp135_ = NULL;
	ValaCCodeFunction* _tmp136_ = NULL;
	ValaCCodeFunction* _tmp137_ = NULL;
	ValaCCodeFunctionCall* _tmp138_ = NULL;
	ValaCCodeFunction* _tmp139_ = NULL;
	ValaCCodeFunction* _tmp140_ = NULL;
	ValaCCodeFile* _tmp141_ = NULL;
	ValaCCodeFunction* _tmp142_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_take_value_function ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "void");
	_tmp4_ = _tmp3_;
	_g_free0 (_tmp2_);
	function = _tmp4_;
	_tmp5_ = function;
	_tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp7_ = _tmp6_;
	vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = function;
	_tmp9_ = vala_ccode_parameter_new ("v_object", "gpointer");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = cl;
	_tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp11_);
	if (_tmp12_) {
		ValaCCodeFunction* _tmp13_ = NULL;
		_tmp13_ = function;
		vala_ccode_function_set_modifiers (_tmp13_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp14_ = FALSE;
		ValaCodeContext* _tmp15_ = NULL;
		ValaCodeContext* _tmp16_ = NULL;
		gboolean _tmp17_ = FALSE;
		gboolean _tmp18_ = FALSE;
		_tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp16_ = _tmp15_;
		_tmp17_ = vala_code_context_get_hide_internal (_tmp16_);
		_tmp18_ = _tmp17_;
		if (_tmp18_) {
			ValaClass* _tmp19_ = NULL;
			gboolean _tmp20_ = FALSE;
			_tmp19_ = cl;
			_tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp19_);
			_tmp14_ = _tmp20_;
		} else {
			_tmp14_ = FALSE;
		}
		if (_tmp14_) {
			ValaCCodeFunction* _tmp21_ = NULL;
			_tmp21_ = function;
			vala_ccode_function_set_modifiers (_tmp21_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp22_ = vala_ccode_identifier_new ("value");
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "data[0]");
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp25_, "v_pointer", FALSE);
	_tmp27_ = _tmp26_;
	_vala_ccode_node_unref0 (_tmp25_);
	_vala_ccode_node_unref0 (_tmp23_);
	vpointer = _tmp27_;
	_tmp28_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = cl;
	_tmp32_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = g_strconcat (_tmp33_, "*", NULL);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
	_tmp37_ = _tmp36_;
	vala_ccode_function_add_declaration (_tmp30_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
	_vala_ccode_node_unref0 (_tmp37_);
	_g_free0 (_tmp35_);
	_g_free0 (_tmp33_);
	_tmp38_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
	_tmp41_ = _tmp40_;
	_vala_ccode_node_unref0 (_tmp39_);
	ccall_typecheck = _tmp41_;
	_tmp42_ = ccall_typecheck;
	_tmp43_ = vala_ccode_identifier_new ("value");
	_tmp44_ = _tmp43_;
	vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
	_vala_ccode_node_unref0 (_tmp44_);
	_tmp45_ = ccall_typecheck;
	_tmp46_ = cl;
	_tmp47_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_identifier_new (_tmp48_);
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_g_free0 (_tmp48_);
	_tmp51_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp52_ = _tmp51_;
	_tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
	_tmp54_ = _tmp53_;
	_vala_ccode_node_unref0 (_tmp52_);
	ccall = _tmp54_;
	_tmp55_ = ccall;
	_tmp56_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp56_);
	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp58_ = _tmp57_;
	_tmp59_ = ccall;
	vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
	_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp61_ = _tmp60_;
	_tmp62_ = vala_ccode_constant_new ("old");
	_tmp63_ = _tmp62_;
	vala_ccode_function_add_assignment (_tmp61_, (ValaCCodeExpression*) _tmp63_, (ValaCCodeExpression*) vpointer);
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp65_ = _tmp64_;
	_tmp66_ = vala_ccode_identifier_new ("v_object");
	_tmp67_ = _tmp66_;
	vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) _tmp67_);
	_vala_ccode_node_unref0 (_tmp67_);
	_tmp68_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_vala_ccode_node_unref0 (ccall_typecheck);
	ccall_typecheck = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_tmp71_ = ccall_typecheck;
	_tmp72_ = vala_ccode_identifier_new ("v_object");
	_tmp73_ = _tmp72_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
	_vala_ccode_node_unref0 (_tmp73_);
	_tmp74_ = ccall_typecheck;
	_tmp75_ = cl;
	_tmp76_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = vala_ccode_identifier_new (_tmp77_);
	_tmp79_ = _tmp78_;
	vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp79_);
	_vala_ccode_node_unref0 (_tmp79_);
	_g_free0 (_tmp77_);
	_tmp80_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp82_;
	_vala_ccode_node_unref0 (_tmp81_);
	_tmp83_ = ccall;
	_tmp84_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp84_);
	_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp86_ = _tmp85_;
	_tmp87_ = ccall;
	vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
	_tmp88_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
	_tmp89_ = _tmp88_;
	_tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
	_tmp91_ = _tmp90_;
	_vala_ccode_node_unref0 (_tmp89_);
	ccall_typefrominstance = _tmp91_;
	_tmp92_ = vala_ccode_identifier_new ("v_object");
	_tmp93_ = _tmp92_;
	vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp93_);
	_vala_ccode_node_unref0 (_tmp93_);
	_tmp94_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
	_tmp95_ = _tmp94_;
	_tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
	_tmp97_ = _tmp96_;
	_vala_ccode_node_unref0 (_tmp95_);
	ccall_gvaluetype = _tmp97_;
	_tmp98_ = vala_ccode_identifier_new ("value");
	_tmp99_ = _tmp98_;
	vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp99_);
	_vala_ccode_node_unref0 (_tmp99_);
	_tmp100_ = vala_ccode_identifier_new ("g_value_type_compatible");
	_tmp101_ = _tmp100_;
	_tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
	_tmp103_ = _tmp102_;
	_vala_ccode_node_unref0 (_tmp101_);
	ccall_typecompatible = _tmp103_;
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
	_tmp104_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp105_ = _tmp104_;
	_tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp106_;
	_vala_ccode_node_unref0 (_tmp105_);
	_tmp107_ = ccall;
	vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) ccall_typecompatible);
	_tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp109_ = _tmp108_;
	_tmp110_ = ccall;
	vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
	_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_constant_new ("v_object");
	_tmp114_ = _tmp113_;
	vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp116_ = _tmp115_;
	vala_ccode_function_add_else (_tmp116_);
	_tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp118_ = _tmp117_;
	_tmp119_ = vala_ccode_constant_new ("NULL");
	_tmp120_ = _tmp119_;
	vala_ccode_function_add_assignment (_tmp118_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp120_);
	_vala_ccode_node_unref0 (_tmp120_);
	_tmp121_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp122_ = _tmp121_;
	vala_ccode_function_close (_tmp122_);
	_tmp123_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp124_ = _tmp123_;
	_tmp125_ = vala_ccode_identifier_new ("old");
	_tmp126_ = _tmp125_;
	vala_ccode_function_open_if (_tmp124_, (ValaCCodeExpression*) _tmp126_);
	_vala_ccode_node_unref0 (_tmp126_);
	_tmp127_ = cl;
	_tmp128_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp127_);
	_tmp129_ = _tmp128_;
	_tmp130_ = vala_ccode_identifier_new (_tmp129_);
	_tmp131_ = _tmp130_;
	_tmp132_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp131_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp132_;
	_vala_ccode_node_unref0 (_tmp131_);
	_g_free0 (_tmp129_);
	_tmp133_ = ccall;
	_tmp134_ = vala_ccode_identifier_new ("old");
	_tmp135_ = _tmp134_;
	vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
	_vala_ccode_node_unref0 (_tmp135_);
	_tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp137_ = _tmp136_;
	_tmp138_ = ccall;
	vala_ccode_function_add_expression (_tmp137_, (ValaCCodeExpression*) _tmp138_);
	_tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp140_ = _tmp139_;
	vala_ccode_function_close (_tmp140_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp141_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp142_ = function;
	vala_ccode_file_add_function (_tmp141_, _tmp142_);
	_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) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	ValaCCodeFunction* _tmp3_ = NULL;
	ValaCCodeFunction* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeParameter* _tmp6_ = NULL;
	ValaCCodeParameter* _tmp7_ = NULL;
	ValaClass* _tmp8_ = NULL;
	gboolean _tmp9_ = FALSE;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp19_ = NULL;
	ValaCCodeIdentifier* _tmp20_ = NULL;
	ValaCCodeMemberAccess* _tmp21_ = NULL;
	ValaCCodeMemberAccess* _tmp22_ = NULL;
	ValaCCodeMemberAccess* _tmp23_ = NULL;
	ValaCCodeMemberAccess* _tmp24_ = NULL;
	ValaCCodeFunction* _tmp25_ = NULL;
	ValaCCodeFunctionCall* ccall_typecheck = NULL;
	ValaCCodeIdentifier* _tmp26_ = NULL;
	ValaCCodeIdentifier* _tmp27_ = NULL;
	ValaCCodeFunctionCall* _tmp28_ = NULL;
	ValaCCodeFunctionCall* _tmp29_ = NULL;
	ValaCCodeIdentifier* _tmp30_ = NULL;
	ValaCCodeIdentifier* _tmp31_ = NULL;
	ValaClass* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	ValaCCodeIdentifier* _tmp35_ = NULL;
	ValaCCodeIdentifier* _tmp36_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp37_ = NULL;
	ValaCCodeIdentifier* _tmp38_ = NULL;
	ValaCCodeFunctionCall* _tmp39_ = NULL;
	ValaCCodeFunctionCall* _tmp40_ = NULL;
	ValaCCodeIdentifier* _tmp41_ = NULL;
	ValaCCodeIdentifier* _tmp42_ = NULL;
	ValaCCodeFunction* _tmp43_ = NULL;
	ValaCCodeFunction* _tmp44_ = NULL;
	ValaCCodeFunction* _tmp45_ = NULL;
	ValaCCodeFunction* _tmp46_ = NULL;
	ValaCCodeFile* _tmp47_ = NULL;
	ValaCCodeFunction* _tmp48_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "gpointer");
	_tmp4_ = _tmp3_;
	_g_free0 (_tmp2_);
	function = _tmp4_;
	_tmp5_ = function;
	_tmp6_ = vala_ccode_parameter_new ("value", "const GValue*");
	_tmp7_ = _tmp6_;
	vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = cl;
	_tmp9_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp8_);
	if (_tmp9_) {
		ValaCCodeFunction* _tmp10_ = NULL;
		_tmp10_ = function;
		vala_ccode_function_set_modifiers (_tmp10_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp11_ = FALSE;
		ValaCodeContext* _tmp12_ = NULL;
		ValaCodeContext* _tmp13_ = NULL;
		gboolean _tmp14_ = FALSE;
		gboolean _tmp15_ = FALSE;
		_tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp13_ = _tmp12_;
		_tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
		_tmp15_ = _tmp14_;
		if (_tmp15_) {
			ValaClass* _tmp16_ = NULL;
			gboolean _tmp17_ = FALSE;
			_tmp16_ = cl;
			_tmp17_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp16_);
			_tmp11_ = _tmp17_;
		} else {
			_tmp11_ = FALSE;
		}
		if (_tmp11_) {
			ValaCCodeFunction* _tmp18_ = NULL;
			_tmp18_ = function;
			vala_ccode_function_set_modifiers (_tmp18_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp19_ = vala_ccode_identifier_new ("value");
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp20_, "data[0]");
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
	_tmp24_ = _tmp23_;
	_vala_ccode_node_unref0 (_tmp22_);
	_vala_ccode_node_unref0 (_tmp20_);
	vpointer = _tmp24_;
	_tmp25_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp25_);
	_tmp26_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
	_tmp27_ = _tmp26_;
	_tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
	_tmp29_ = _tmp28_;
	_vala_ccode_node_unref0 (_tmp27_);
	ccall_typecheck = _tmp29_;
	_tmp30_ = vala_ccode_identifier_new ("value");
	_tmp31_ = _tmp30_;
	vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp31_);
	_vala_ccode_node_unref0 (_tmp31_);
	_tmp32_ = cl;
	_tmp33_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = vala_ccode_identifier_new (_tmp34_);
	_tmp36_ = _tmp35_;
	vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp36_);
	_vala_ccode_node_unref0 (_tmp36_);
	_g_free0 (_tmp34_);
	_tmp37_ = vala_ccode_identifier_new ("g_return_val_if_fail");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
	_tmp40_ = _tmp39_;
	_vala_ccode_node_unref0 (_tmp38_);
	ccall = _tmp40_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
	_tmp41_ = vala_ccode_identifier_new ("NULL");
	_tmp42_ = _tmp41_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp42_);
	_vala_ccode_node_unref0 (_tmp42_);
	_tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp44_ = _tmp43_;
	vala_ccode_function_add_expression (_tmp44_, (ValaCCodeExpression*) ccall);
	_tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp46_ = _tmp45_;
	vala_ccode_function_add_return (_tmp46_, (ValaCCodeExpression*) vpointer);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp47_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp48_ = function;
	vala_ccode_file_add_function (_tmp47_, _tmp48_);
	_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) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaCCodeFunction* base_init = NULL;
	ValaClass* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeFunction* _tmp7_ = NULL;
	ValaClass* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	ValaCCodeParameter* _tmp13_ = NULL;
	ValaCCodeParameter* _tmp14_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, 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_ = cl;
	_tmp9_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = g_strdup_printf ("%sClass *", _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (base_init, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_g_free0 (_tmp12_);
	_g_free0 (_tmp10_);
	vala_ccode_function_set_modifiers (base_init, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
	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) {
	ValaCCodeFile* _tmp0_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp1_ = NULL;
	ValaCCodeFunction* _tmp2_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp1_ = ((ValaCCodeBaseModule*) self)->base_init_context;
	_tmp2_ = _tmp1_->ccode;
	vala_ccode_file_add_function (_tmp0_, _tmp2_);
}


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


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


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


void vala_gtype_module_end_instance_init (ValaGTypeModule* self, ValaClass* cl) {
	g_return_if_fail (self != NULL);
	VALA_GTYPE_MODULE_GET_CLASS (self)->end_instance_init (self, cl);
}


static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaCCodeFunction* func = NULL;
	ValaClass* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeFunction* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaClass* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	ValaCCodeParameter* _tmp14_ = NULL;
	ValaCCodeParameter* _tmp15_ = NULL;
	ValaCCodeFunction* _tmp16_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeDeclaration* parent_decl = NULL;
	ValaCCodeDeclaration* _tmp17_ = NULL;
	ValaCCodeVariableDeclarator* parent_var_decl = NULL;
	ValaClass* _tmp18_ = NULL;
	gchar* _tmp19_ = NULL;
	gchar* _tmp20_ = NULL;
	gchar* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	ValaCCodeVariableDeclarator* _tmp23_ = NULL;
	ValaCCodeVariableDeclarator* _tmp24_ = NULL;
	ValaCCodeVariableDeclarator* _tmp25_ = NULL;
	ValaCCodeConstant* _tmp26_ = NULL;
	ValaCCodeConstant* _tmp27_ = NULL;
	ValaCCodeDeclaration* _tmp28_ = NULL;
	ValaCCodeVariableDeclarator* _tmp29_ = NULL;
	ValaCCodeDeclaration* _tmp30_ = NULL;
	ValaCCodeFile* _tmp31_ = NULL;
	ValaCCodeDeclaration* _tmp32_ = NULL;
	ValaCCodeFunction* _tmp33_ = NULL;
	ValaCCodeIdentifier* _tmp34_ = NULL;
	ValaCCodeIdentifier* _tmp35_ = NULL;
	ValaCCodeFunctionCall* _tmp36_ = NULL;
	ValaCCodeFunctionCall* _tmp37_ = NULL;
	ValaCCodeIdentifier* _tmp38_ = NULL;
	ValaCCodeIdentifier* _tmp39_ = NULL;
	ValaCCodeAssignment* parent_assignment = NULL;
	ValaClass* _tmp40_ = NULL;
	gchar* _tmp41_ = NULL;
	gchar* _tmp42_ = NULL;
	gchar* _tmp43_ = NULL;
	gchar* _tmp44_ = NULL;
	ValaCCodeIdentifier* _tmp45_ = NULL;
	ValaCCodeIdentifier* _tmp46_ = NULL;
	ValaCCodeFunctionCall* _tmp47_ = NULL;
	ValaCCodeAssignment* _tmp48_ = NULL;
	ValaCCodeAssignment* _tmp49_ = NULL;
	ValaCCodeFunction* _tmp50_ = NULL;
	ValaCCodeFunction* _tmp51_ = NULL;
	ValaCCodeAssignment* _tmp52_ = NULL;
	gboolean _tmp53_ = FALSE;
	gboolean _tmp54_ = FALSE;
	ValaClass* _tmp55_ = NULL;
	gboolean _tmp56_ = FALSE;
	gboolean _tmp57_ = FALSE;
	gboolean _tmp107_ = FALSE;
	ValaClass* _tmp108_ = NULL;
	gboolean _tmp109_ = FALSE;
	gboolean _tmp110_ = FALSE;
	ValaClass* _tmp323_ = NULL;
	ValaClass* _tmp324_ = NULL;
	gboolean _tmp325_ = FALSE;
	gboolean _tmp326_ = FALSE;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->class_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_class_init", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	func = _tmp7_;
	_tmp8_ = func;
	_tmp9_ = cl;
	_tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strdup_printf ("%sClass *", _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_parameter_new ("klass", _tmp13_);
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_g_free0 (_tmp13_);
	_g_free0 (_tmp11_);
	_tmp16_ = func;
	vala_ccode_function_set_modifiers (_tmp16_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp17_ = vala_ccode_declaration_new ("gpointer");
	parent_decl = _tmp17_;
	_tmp18_ = cl;
	_tmp19_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp18_, NULL);
	_tmp20_ = _tmp19_;
	_tmp21_ = g_strdup_printf ("%s_parent_class", _tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_variable_declarator_new (_tmp22_, NULL, NULL);
	_tmp24_ = _tmp23_;
	_g_free0 (_tmp22_);
	_g_free0 (_tmp20_);
	parent_var_decl = _tmp24_;
	_tmp25_ = parent_var_decl;
	_tmp26_ = vala_ccode_constant_new ("NULL");
	_tmp27_ = _tmp26_;
	vala_ccode_variable_declarator_set_initializer (_tmp25_, (ValaCCodeExpression*) _tmp27_);
	_vala_ccode_node_unref0 (_tmp27_);
	_tmp28_ = parent_decl;
	_tmp29_ = parent_var_decl;
	vala_ccode_declaration_add_declarator (_tmp28_, (ValaCCodeDeclarator*) _tmp29_);
	_tmp30_ = parent_decl;
	vala_ccode_declaration_set_modifiers (_tmp30_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp31_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp32_ = parent_decl;
	vala_ccode_file_add_type_member_declaration (_tmp31_, (ValaCCodeNode*) _tmp32_);
	_tmp33_ = func;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
	_tmp34_ = vala_ccode_identifier_new ("g_type_class_peek_parent");
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp36_;
	_vala_ccode_node_unref0 (_tmp35_);
	_tmp37_ = ccall;
	_tmp38_ = vala_ccode_identifier_new ("klass");
	_tmp39_ = _tmp38_;
	vala_ccode_function_call_add_argument (_tmp37_, (ValaCCodeExpression*) _tmp39_);
	_vala_ccode_node_unref0 (_tmp39_);
	_tmp40_ = cl;
	_tmp41_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp40_, NULL);
	_tmp42_ = _tmp41_;
	_tmp43_ = g_strdup_printf ("%s_parent_class", _tmp42_);
	_tmp44_ = _tmp43_;
	_tmp45_ = vala_ccode_identifier_new (_tmp44_);
	_tmp46_ = _tmp45_;
	_tmp47_ = ccall;
	_tmp48_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp46_, (ValaCCodeExpression*) _tmp47_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
	_tmp49_ = _tmp48_;
	_vala_ccode_node_unref0 (_tmp46_);
	_g_free0 (_tmp44_);
	_g_free0 (_tmp42_);
	parent_assignment = _tmp49_;
	_tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp51_ = _tmp50_;
	_tmp52_ = parent_assignment;
	vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
	_tmp55_ = cl;
	_tmp56_ = vala_class_get_is_compact (_tmp55_);
	_tmp57_ = _tmp56_;
	if (!_tmp57_) {
		ValaClass* _tmp58_ = NULL;
		ValaTypeSymbol* _tmp59_ = NULL;
		gboolean _tmp60_ = FALSE;
		_tmp58_ = cl;
		_tmp59_ = ((ValaCCodeBaseModule*) self)->gobject_type;
		_tmp60_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp58_, _tmp59_);
		_tmp54_ = !_tmp60_;
	} else {
		_tmp54_ = FALSE;
	}
	if (_tmp54_) {
		gboolean _tmp61_ = FALSE;
		gboolean _tmp62_ = FALSE;
		ValaClass* _tmp63_ = NULL;
		ValaList* _tmp64_ = NULL;
		ValaList* _tmp65_ = NULL;
		gint _tmp66_ = 0;
		gint _tmp67_ = 0;
		gboolean _tmp68_ = FALSE;
		_tmp63_ = cl;
		_tmp64_ = vala_class_get_fields (_tmp63_);
		_tmp65_ = _tmp64_;
		_tmp66_ = vala_collection_get_size ((ValaCollection*) _tmp65_);
		_tmp67_ = _tmp66_;
		_tmp68_ = _tmp67_ > 0;
		_vala_iterable_unref0 (_tmp65_);
		if (_tmp68_) {
			_tmp62_ = TRUE;
		} else {
			ValaClass* _tmp69_ = NULL;
			ValaDestructor* _tmp70_ = NULL;
			ValaDestructor* _tmp71_ = NULL;
			_tmp69_ = cl;
			_tmp70_ = vala_class_get_destructor (_tmp69_);
			_tmp71_ = _tmp70_;
			_tmp62_ = _tmp71_ != NULL;
		}
		if (_tmp62_) {
			_tmp61_ = TRUE;
		} else {
			ValaClass* _tmp72_ = NULL;
			gboolean _tmp73_ = FALSE;
			_tmp72_ = cl;
			_tmp73_ = vala_class_is_fundamental (_tmp72_);
			_tmp61_ = _tmp73_;
		}
		_tmp53_ = _tmp61_;
	} else {
		_tmp53_ = FALSE;
	}
	if (_tmp53_) {
		ValaClass* fundamental_class = NULL;
		ValaClass* _tmp74_ = NULL;
		ValaClass* _tmp75_ = NULL;
		ValaCCodeCastExpression* ccast = NULL;
		ValaCCodeIdentifier* _tmp83_ = NULL;
		ValaCCodeIdentifier* _tmp84_ = NULL;
		ValaClass* _tmp85_ = NULL;
		gchar* _tmp86_ = NULL;
		gchar* _tmp87_ = NULL;
		gchar* _tmp88_ = NULL;
		gchar* _tmp89_ = NULL;
		ValaCCodeCastExpression* _tmp90_ = NULL;
		ValaCCodeCastExpression* _tmp91_ = NULL;
		ValaCCodeAssignment* finalize_assignment = NULL;
		ValaCCodeCastExpression* _tmp92_ = NULL;
		ValaCCodeMemberAccess* _tmp93_ = NULL;
		ValaCCodeMemberAccess* _tmp94_ = NULL;
		ValaClass* _tmp95_ = NULL;
		gchar* _tmp96_ = NULL;
		gchar* _tmp97_ = NULL;
		gchar* _tmp98_ = NULL;
		gchar* _tmp99_ = NULL;
		ValaCCodeIdentifier* _tmp100_ = NULL;
		ValaCCodeIdentifier* _tmp101_ = NULL;
		ValaCCodeAssignment* _tmp102_ = NULL;
		ValaCCodeAssignment* _tmp103_ = NULL;
		ValaCCodeFunction* _tmp104_ = NULL;
		ValaCCodeFunction* _tmp105_ = NULL;
		ValaCCodeAssignment* _tmp106_ = NULL;
		_tmp74_ = cl;
		_tmp75_ = _vala_code_node_ref0 (_tmp74_);
		fundamental_class = _tmp75_;
		while (TRUE) {
			ValaClass* _tmp76_ = NULL;
			ValaClass* _tmp77_ = NULL;
			ValaClass* _tmp78_ = NULL;
			ValaClass* _tmp79_ = NULL;
			ValaClass* _tmp80_ = NULL;
			ValaClass* _tmp81_ = NULL;
			ValaClass* _tmp82_ = NULL;
			_tmp76_ = fundamental_class;
			_tmp77_ = vala_class_get_base_class (_tmp76_);
			_tmp78_ = _tmp77_;
			if (!(_tmp78_ != NULL)) {
				break;
			}
			_tmp79_ = fundamental_class;
			_tmp80_ = vala_class_get_base_class (_tmp79_);
			_tmp81_ = _tmp80_;
			_tmp82_ = _vala_code_node_ref0 (_tmp81_);
			_vala_code_node_unref0 (fundamental_class);
			fundamental_class = _tmp82_;
		}
		_tmp83_ = vala_ccode_identifier_new ("klass");
		_tmp84_ = _tmp83_;
		_tmp85_ = fundamental_class;
		_tmp86_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp85_);
		_tmp87_ = _tmp86_;
		_tmp88_ = g_strconcat (_tmp87_, "Class *", NULL);
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp84_, _tmp89_);
		_tmp91_ = _tmp90_;
		_g_free0 (_tmp89_);
		_g_free0 (_tmp87_);
		_vala_ccode_node_unref0 (_tmp84_);
		ccast = _tmp91_;
		_tmp92_ = ccast;
		_tmp93_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp92_, "finalize");
		_tmp94_ = _tmp93_;
		_tmp95_ = cl;
		_tmp96_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp95_);
		_tmp97_ = _tmp96_;
		_tmp98_ = g_strconcat (_tmp97_, "finalize", NULL);
		_tmp99_ = _tmp98_;
		_tmp100_ = vala_ccode_identifier_new (_tmp99_);
		_tmp101_ = _tmp100_;
		_tmp102_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp94_, (ValaCCodeExpression*) _tmp101_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
		_tmp103_ = _tmp102_;
		_vala_ccode_node_unref0 (_tmp101_);
		_g_free0 (_tmp99_);
		_g_free0 (_tmp97_);
		_vala_ccode_node_unref0 (_tmp94_);
		finalize_assignment = _tmp103_;
		_tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp105_ = _tmp104_;
		_tmp106_ = finalize_assignment;
		vala_ccode_function_add_expression (_tmp105_, (ValaCCodeExpression*) _tmp106_);
		_vala_ccode_node_unref0 (finalize_assignment);
		_vala_ccode_node_unref0 (ccast);
		_vala_code_node_unref0 (fundamental_class);
	}
	_tmp108_ = cl;
	_tmp109_ = vala_class_get_has_private_fields (_tmp108_);
	_tmp110_ = _tmp109_;
	if (_tmp110_) {
		_tmp107_ = TRUE;
	} else {
		ValaClass* _tmp111_ = NULL;
		ValaList* _tmp112_ = NULL;
		ValaList* _tmp113_ = NULL;
		gint _tmp114_ = 0;
		gint _tmp115_ = 0;
		_tmp111_ = cl;
		_tmp112_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp111_);
		_tmp113_ = _tmp112_;
		_tmp114_ = vala_collection_get_size ((ValaCollection*) _tmp113_);
		_tmp115_ = _tmp114_;
		_tmp107_ = _tmp115_ > 0;
		_vala_iterable_unref0 (_tmp113_);
	}
	if (_tmp107_) {
		ValaCCodeIdentifier* _tmp116_ = NULL;
		ValaCCodeIdentifier* _tmp117_ = NULL;
		ValaCCodeFunctionCall* _tmp118_ = NULL;
		ValaCCodeFunctionCall* _tmp119_ = NULL;
		ValaCCodeIdentifier* _tmp120_ = NULL;
		ValaCCodeIdentifier* _tmp121_ = NULL;
		ValaCCodeFunctionCall* _tmp122_ = NULL;
		ValaClass* _tmp123_ = NULL;
		gchar* _tmp124_ = NULL;
		gchar* _tmp125_ = NULL;
		gchar* _tmp126_ = NULL;
		gchar* _tmp127_ = NULL;
		ValaCCodeConstant* _tmp128_ = NULL;
		ValaCCodeConstant* _tmp129_ = NULL;
		ValaCCodeFunction* _tmp130_ = NULL;
		ValaCCodeFunction* _tmp131_ = NULL;
		ValaCCodeFunctionCall* _tmp132_ = NULL;
		_tmp116_ = vala_ccode_identifier_new ("g_type_class_add_private");
		_tmp117_ = _tmp116_;
		_tmp118_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp117_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp118_;
		_vala_ccode_node_unref0 (_tmp117_);
		_tmp119_ = ccall;
		_tmp120_ = vala_ccode_identifier_new ("klass");
		_tmp121_ = _tmp120_;
		vala_ccode_function_call_add_argument (_tmp119_, (ValaCCodeExpression*) _tmp121_);
		_vala_ccode_node_unref0 (_tmp121_);
		_tmp122_ = ccall;
		_tmp123_ = cl;
		_tmp124_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp123_);
		_tmp125_ = _tmp124_;
		_tmp126_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp125_);
		_tmp127_ = _tmp126_;
		_tmp128_ = vala_ccode_constant_new (_tmp127_);
		_tmp129_ = _tmp128_;
		vala_ccode_function_call_add_argument (_tmp122_, (ValaCCodeExpression*) _tmp129_);
		_vala_ccode_node_unref0 (_tmp129_);
		_g_free0 (_tmp127_);
		_g_free0 (_tmp125_);
		_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp131_ = _tmp130_;
		_tmp132_ = ccall;
		vala_ccode_function_add_expression (_tmp131_, (ValaCCodeExpression*) _tmp132_);
	}
	{
		ValaList* _m_list = NULL;
		ValaClass* _tmp133_ = NULL;
		ValaList* _tmp134_ = NULL;
		gint _m_size = 0;
		ValaList* _tmp135_ = NULL;
		gint _tmp136_ = 0;
		gint _tmp137_ = 0;
		gint _m_index = 0;
		_tmp133_ = cl;
		_tmp134_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp133_);
		_m_list = _tmp134_;
		_tmp135_ = _m_list;
		_tmp136_ = vala_collection_get_size ((ValaCollection*) _tmp135_);
		_tmp137_ = _tmp136_;
		_m_size = _tmp137_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp138_ = 0;
			gint _tmp139_ = 0;
			gint _tmp140_ = 0;
			ValaMethod* m = NULL;
			ValaList* _tmp141_ = NULL;
			gint _tmp142_ = 0;
			gpointer _tmp143_ = NULL;
			ValaMethod* _tmp144_ = NULL;
			ValaMethod* _tmp145_ = NULL;
			ValaMethod* _tmp146_ = NULL;
			ValaSymbol* base_type = NULL;
			ValaMethod* _tmp147_ = NULL;
			ValaMethod* _tmp148_ = NULL;
			ValaMethod* _tmp149_ = NULL;
			ValaSymbol* _tmp150_ = NULL;
			ValaSymbol* _tmp151_ = NULL;
			ValaSymbol* _tmp152_ = NULL;
			gboolean _tmp153_ = FALSE;
			ValaMethod* _tmp154_ = NULL;
			gboolean _tmp155_ = FALSE;
			gboolean _tmp156_ = FALSE;
			_tmp138_ = _m_index;
			_m_index = _tmp138_ + 1;
			_tmp139_ = _m_index;
			_tmp140_ = _m_size;
			if (!(_tmp139_ < _tmp140_)) {
				break;
			}
			_tmp141_ = _m_list;
			_tmp142_ = _m_index;
			_tmp143_ = vala_list_get (_tmp141_, _tmp142_);
			m = (ValaMethod*) _tmp143_;
			_tmp144_ = m;
			_tmp145_ = vala_method_get_base_method (_tmp144_);
			_tmp146_ = _tmp145_;
			if (_tmp146_ == NULL) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp147_ = m;
			_tmp148_ = vala_method_get_base_method (_tmp147_);
			_tmp149_ = _tmp148_;
			_tmp150_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp149_);
			_tmp151_ = _tmp150_;
			_tmp152_ = _vala_code_node_ref0 (_tmp151_);
			base_type = _tmp152_;
			_tmp154_ = m;
			_tmp155_ = vala_method_get_is_abstract (_tmp154_);
			_tmp156_ = _tmp155_;
			if (!_tmp156_) {
				_tmp153_ = TRUE;
			} else {
				ValaMethod* _tmp157_ = NULL;
				gboolean _tmp158_ = FALSE;
				gboolean _tmp159_ = FALSE;
				_tmp157_ = m;
				_tmp158_ = vala_method_get_coroutine (_tmp157_);
				_tmp159_ = _tmp158_;
				_tmp153_ = !_tmp159_;
			}
			if (_tmp153_) {
				ValaCCodeCastExpression* ccast = NULL;
				ValaCCodeIdentifier* _tmp160_ = NULL;
				ValaCCodeIdentifier* _tmp161_ = NULL;
				ValaSymbol* _tmp162_ = NULL;
				gchar* _tmp163_ = NULL;
				gchar* _tmp164_ = NULL;
				gchar* _tmp165_ = NULL;
				gchar* _tmp166_ = NULL;
				ValaCCodeCastExpression* _tmp167_ = NULL;
				ValaCCodeCastExpression* _tmp168_ = NULL;
				ValaCCodeFunction* _tmp169_ = NULL;
				ValaCCodeFunction* _tmp170_ = NULL;
				ValaCCodeCastExpression* _tmp171_ = NULL;
				ValaMethod* _tmp172_ = NULL;
				ValaMethod* _tmp173_ = NULL;
				ValaMethod* _tmp174_ = NULL;
				gchar* _tmp175_ = NULL;
				gchar* _tmp176_ = NULL;
				ValaCCodeMemberAccess* _tmp177_ = NULL;
				ValaCCodeMemberAccess* _tmp178_ = NULL;
				ValaMethod* _tmp179_ = NULL;
				gchar* _tmp180_ = NULL;
				gchar* _tmp181_ = NULL;
				ValaCCodeIdentifier* _tmp182_ = NULL;
				ValaCCodeIdentifier* _tmp183_ = NULL;
				ValaMethod* _tmp184_ = NULL;
				gboolean _tmp185_ = FALSE;
				gboolean _tmp186_ = FALSE;
				_tmp160_ = vala_ccode_identifier_new ("klass");
				_tmp161_ = _tmp160_;
				_tmp162_ = base_type;
				_tmp163_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp162_);
				_tmp164_ = _tmp163_;
				_tmp165_ = g_strconcat (_tmp164_, "Class *", NULL);
				_tmp166_ = _tmp165_;
				_tmp167_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp161_, _tmp166_);
				_tmp168_ = _tmp167_;
				_g_free0 (_tmp166_);
				_g_free0 (_tmp164_);
				_vala_ccode_node_unref0 (_tmp161_);
				ccast = _tmp168_;
				_tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp170_ = _tmp169_;
				_tmp171_ = ccast;
				_tmp172_ = m;
				_tmp173_ = vala_method_get_base_method (_tmp172_);
				_tmp174_ = _tmp173_;
				_tmp175_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp174_);
				_tmp176_ = _tmp175_;
				_tmp177_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp171_, _tmp176_);
				_tmp178_ = _tmp177_;
				_tmp179_ = m;
				_tmp180_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp179_);
				_tmp181_ = _tmp180_;
				_tmp182_ = vala_ccode_identifier_new (_tmp181_);
				_tmp183_ = _tmp182_;
				vala_ccode_function_add_assignment (_tmp170_, (ValaCCodeExpression*) _tmp178_, (ValaCCodeExpression*) _tmp183_);
				_vala_ccode_node_unref0 (_tmp183_);
				_g_free0 (_tmp181_);
				_vala_ccode_node_unref0 (_tmp178_);
				_g_free0 (_tmp176_);
				_tmp184_ = m;
				_tmp185_ = vala_method_get_coroutine (_tmp184_);
				_tmp186_ = _tmp185_;
				if (_tmp186_) {
					ValaCCodeFunction* _tmp187_ = NULL;
					ValaCCodeFunction* _tmp188_ = NULL;
					ValaCCodeCastExpression* _tmp189_ = NULL;
					ValaMethod* _tmp190_ = NULL;
					ValaMethod* _tmp191_ = NULL;
					ValaMethod* _tmp192_ = NULL;
					gchar* _tmp193_ = NULL;
					gchar* _tmp194_ = NULL;
					ValaCCodeMemberAccess* _tmp195_ = NULL;
					ValaCCodeMemberAccess* _tmp196_ = NULL;
					ValaMethod* _tmp197_ = NULL;
					gchar* _tmp198_ = NULL;
					gchar* _tmp199_ = NULL;
					ValaCCodeIdentifier* _tmp200_ = NULL;
					ValaCCodeIdentifier* _tmp201_ = NULL;
					_tmp187_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp188_ = _tmp187_;
					_tmp189_ = ccast;
					_tmp190_ = m;
					_tmp191_ = vala_method_get_base_method (_tmp190_);
					_tmp192_ = _tmp191_;
					_tmp193_ = vala_ccode_base_module_get_ccode_finish_vfunc_name (_tmp192_);
					_tmp194_ = _tmp193_;
					_tmp195_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp189_, _tmp194_);
					_tmp196_ = _tmp195_;
					_tmp197_ = m;
					_tmp198_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp197_);
					_tmp199_ = _tmp198_;
					_tmp200_ = vala_ccode_identifier_new (_tmp199_);
					_tmp201_ = _tmp200_;
					vala_ccode_function_add_assignment (_tmp188_, (ValaCCodeExpression*) _tmp196_, (ValaCCodeExpression*) _tmp201_);
					_vala_ccode_node_unref0 (_tmp201_);
					_g_free0 (_tmp199_);
					_vala_ccode_node_unref0 (_tmp196_);
					_g_free0 (_tmp194_);
				}
				_vala_ccode_node_unref0 (ccast);
			}
			_vala_code_node_unref0 (base_type);
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _sig_list = NULL;
		ValaClass* _tmp202_ = NULL;
		ValaList* _tmp203_ = NULL;
		gint _sig_size = 0;
		ValaList* _tmp204_ = NULL;
		gint _tmp205_ = 0;
		gint _tmp206_ = 0;
		gint _sig_index = 0;
		_tmp202_ = cl;
		_tmp203_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp202_);
		_sig_list = _tmp203_;
		_tmp204_ = _sig_list;
		_tmp205_ = vala_collection_get_size ((ValaCollection*) _tmp204_);
		_tmp206_ = _tmp205_;
		_sig_size = _tmp206_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp207_ = 0;
			gint _tmp208_ = 0;
			gint _tmp209_ = 0;
			ValaSignal* sig = NULL;
			ValaList* _tmp210_ = NULL;
			gint _tmp211_ = 0;
			gpointer _tmp212_ = NULL;
			ValaSignal* _tmp213_ = NULL;
			ValaMethod* _tmp214_ = NULL;
			ValaMethod* _tmp215_ = NULL;
			ValaCCodeCastExpression* ccast = NULL;
			ValaCCodeIdentifier* _tmp216_ = NULL;
			ValaCCodeIdentifier* _tmp217_ = NULL;
			ValaClass* _tmp218_ = NULL;
			gchar* _tmp219_ = NULL;
			gchar* _tmp220_ = NULL;
			gchar* _tmp221_ = NULL;
			gchar* _tmp222_ = NULL;
			ValaCCodeCastExpression* _tmp223_ = NULL;
			ValaCCodeCastExpression* _tmp224_ = NULL;
			ValaCCodeFunction* _tmp225_ = NULL;
			ValaCCodeFunction* _tmp226_ = NULL;
			ValaCCodeCastExpression* _tmp227_ = NULL;
			ValaSignal* _tmp228_ = NULL;
			ValaMethod* _tmp229_ = NULL;
			ValaMethod* _tmp230_ = NULL;
			gchar* _tmp231_ = NULL;
			gchar* _tmp232_ = NULL;
			ValaCCodeMemberAccess* _tmp233_ = NULL;
			ValaCCodeMemberAccess* _tmp234_ = NULL;
			ValaSignal* _tmp235_ = NULL;
			ValaMethod* _tmp236_ = NULL;
			ValaMethod* _tmp237_ = NULL;
			gchar* _tmp238_ = NULL;
			gchar* _tmp239_ = NULL;
			ValaCCodeIdentifier* _tmp240_ = NULL;
			ValaCCodeIdentifier* _tmp241_ = NULL;
			_tmp207_ = _sig_index;
			_sig_index = _tmp207_ + 1;
			_tmp208_ = _sig_index;
			_tmp209_ = _sig_size;
			if (!(_tmp208_ < _tmp209_)) {
				break;
			}
			_tmp210_ = _sig_list;
			_tmp211_ = _sig_index;
			_tmp212_ = vala_list_get (_tmp210_, _tmp211_);
			sig = (ValaSignal*) _tmp212_;
			_tmp213_ = sig;
			_tmp214_ = vala_signal_get_default_handler (_tmp213_);
			_tmp215_ = _tmp214_;
			if (_tmp215_ == NULL) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			_tmp216_ = vala_ccode_identifier_new ("klass");
			_tmp217_ = _tmp216_;
			_tmp218_ = cl;
			_tmp219_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp218_);
			_tmp220_ = _tmp219_;
			_tmp221_ = g_strconcat (_tmp220_, "Class *", NULL);
			_tmp222_ = _tmp221_;
			_tmp223_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp217_, _tmp222_);
			_tmp224_ = _tmp223_;
			_g_free0 (_tmp222_);
			_g_free0 (_tmp220_);
			_vala_ccode_node_unref0 (_tmp217_);
			ccast = _tmp224_;
			_tmp225_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp226_ = _tmp225_;
			_tmp227_ = ccast;
			_tmp228_ = sig;
			_tmp229_ = vala_signal_get_default_handler (_tmp228_);
			_tmp230_ = _tmp229_;
			_tmp231_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp230_);
			_tmp232_ = _tmp231_;
			_tmp233_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp227_, _tmp232_);
			_tmp234_ = _tmp233_;
			_tmp235_ = sig;
			_tmp236_ = vala_signal_get_default_handler (_tmp235_);
			_tmp237_ = _tmp236_;
			_tmp238_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp237_);
			_tmp239_ = _tmp238_;
			_tmp240_ = vala_ccode_identifier_new (_tmp239_);
			_tmp241_ = _tmp240_;
			vala_ccode_function_add_assignment (_tmp226_, (ValaCCodeExpression*) _tmp234_, (ValaCCodeExpression*) _tmp241_);
			_vala_ccode_node_unref0 (_tmp241_);
			_g_free0 (_tmp239_);
			_vala_ccode_node_unref0 (_tmp234_);
			_g_free0 (_tmp232_);
			_vala_ccode_node_unref0 (ccast);
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp242_ = NULL;
		ValaList* _tmp243_ = NULL;
		gint _prop_size = 0;
		ValaList* _tmp244_ = NULL;
		gint _tmp245_ = 0;
		gint _tmp246_ = 0;
		gint _prop_index = 0;
		_tmp242_ = cl;
		_tmp243_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp242_);
		_prop_list = _tmp243_;
		_tmp244_ = _prop_list;
		_tmp245_ = vala_collection_get_size ((ValaCollection*) _tmp244_);
		_tmp246_ = _tmp245_;
		_prop_size = _tmp246_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp247_ = 0;
			gint _tmp248_ = 0;
			gint _tmp249_ = 0;
			ValaProperty* prop = NULL;
			ValaList* _tmp250_ = NULL;
			gint _tmp251_ = 0;
			gpointer _tmp252_ = NULL;
			ValaProperty* _tmp253_ = NULL;
			ValaProperty* _tmp254_ = NULL;
			ValaProperty* _tmp255_ = NULL;
			ValaSymbol* base_type = NULL;
			ValaProperty* _tmp256_ = NULL;
			ValaProperty* _tmp257_ = NULL;
			ValaProperty* _tmp258_ = NULL;
			ValaSymbol* _tmp259_ = NULL;
			ValaSymbol* _tmp260_ = NULL;
			ValaSymbol* _tmp261_ = NULL;
			ValaCCodeFunctionCall* ccast = NULL;
			ValaSymbol* _tmp262_ = NULL;
			gchar* _tmp263_ = NULL;
			gchar* _tmp264_ = NULL;
			gchar* _tmp265_ = NULL;
			gchar* _tmp266_ = NULL;
			ValaCCodeIdentifier* _tmp267_ = NULL;
			ValaCCodeIdentifier* _tmp268_ = NULL;
			ValaCCodeFunctionCall* _tmp269_ = NULL;
			ValaCCodeFunctionCall* _tmp270_ = NULL;
			ValaCCodeFunctionCall* _tmp271_ = NULL;
			ValaCCodeIdentifier* _tmp272_ = NULL;
			ValaCCodeIdentifier* _tmp273_ = NULL;
			gboolean _tmp274_ = FALSE;
			ValaProperty* _tmp275_ = NULL;
			ValaProperty* _tmp276_ = NULL;
			ValaProperty* _tmp277_ = NULL;
			gboolean _tmp278_ = FALSE;
			_tmp247_ = _prop_index;
			_prop_index = _tmp247_ + 1;
			_tmp248_ = _prop_index;
			_tmp249_ = _prop_size;
			if (!(_tmp248_ < _tmp249_)) {
				break;
			}
			_tmp250_ = _prop_list;
			_tmp251_ = _prop_index;
			_tmp252_ = vala_list_get (_tmp250_, _tmp251_);
			prop = (ValaProperty*) _tmp252_;
			_tmp253_ = prop;
			_tmp254_ = vala_property_get_base_property (_tmp253_);
			_tmp255_ = _tmp254_;
			if (_tmp255_ == NULL) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp256_ = prop;
			_tmp257_ = vala_property_get_base_property (_tmp256_);
			_tmp258_ = _tmp257_;
			_tmp259_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp258_);
			_tmp260_ = _tmp259_;
			_tmp261_ = _vala_code_node_ref0 (_tmp260_);
			base_type = _tmp261_;
			_tmp262_ = base_type;
			_tmp263_ = vala_ccode_base_module_get_ccode_upper_case_name (_tmp262_, NULL);
			_tmp264_ = _tmp263_;
			_tmp265_ = g_strdup_printf ("%s_CLASS", _tmp264_);
			_tmp266_ = _tmp265_;
			_tmp267_ = vala_ccode_identifier_new (_tmp266_);
			_tmp268_ = _tmp267_;
			_tmp269_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp268_);
			_tmp270_ = _tmp269_;
			_vala_ccode_node_unref0 (_tmp268_);
			_g_free0 (_tmp266_);
			_g_free0 (_tmp264_);
			ccast = _tmp270_;
			_tmp271_ = ccast;
			_tmp272_ = vala_ccode_identifier_new ("klass");
			_tmp273_ = _tmp272_;
			vala_ccode_function_call_add_argument (_tmp271_, (ValaCCodeExpression*) _tmp273_);
			_vala_ccode_node_unref0 (_tmp273_);
			_tmp275_ = prop;
			_tmp276_ = vala_property_get_base_property (_tmp275_);
			_tmp277_ = _tmp276_;
			_tmp278_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp277_);
			if (!_tmp278_) {
				ValaProperty* _tmp279_ = NULL;
				ValaProperty* _tmp280_ = NULL;
				ValaProperty* _tmp281_ = NULL;
				gboolean _tmp282_ = FALSE;
				_tmp279_ = prop;
				_tmp280_ = vala_property_get_base_property (_tmp279_);
				_tmp281_ = _tmp280_;
				_tmp282_ = vala_ccode_base_module_get_ccode_concrete_accessor (_tmp281_);
				_tmp274_ = !_tmp282_;
			} else {
				_tmp274_ = FALSE;
			}
			if (_tmp274_) {
				ValaProperty* _tmp283_ = NULL;
				ValaPropertyAccessor* _tmp284_ = NULL;
				ValaPropertyAccessor* _tmp285_ = NULL;
				ValaProperty* _tmp303_ = NULL;
				ValaPropertyAccessor* _tmp304_ = NULL;
				ValaPropertyAccessor* _tmp305_ = NULL;
				_tmp283_ = prop;
				_tmp284_ = vala_property_get_get_accessor (_tmp283_);
				_tmp285_ = _tmp284_;
				if (_tmp285_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp286_ = NULL;
					ValaPropertyAccessor* _tmp287_ = NULL;
					ValaPropertyAccessor* _tmp288_ = NULL;
					gchar* _tmp289_ = NULL;
					ValaCCodeFunction* _tmp290_ = NULL;
					ValaCCodeFunction* _tmp291_ = NULL;
					ValaCCodeFunctionCall* _tmp292_ = NULL;
					ValaProperty* _tmp293_ = NULL;
					const gchar* _tmp294_ = NULL;
					const gchar* _tmp295_ = NULL;
					gchar* _tmp296_ = NULL;
					gchar* _tmp297_ = NULL;
					ValaCCodeMemberAccess* _tmp298_ = NULL;
					ValaCCodeMemberAccess* _tmp299_ = NULL;
					const gchar* _tmp300_ = NULL;
					ValaCCodeIdentifier* _tmp301_ = NULL;
					ValaCCodeIdentifier* _tmp302_ = NULL;
					_tmp286_ = prop;
					_tmp287_ = vala_property_get_get_accessor (_tmp286_);
					_tmp288_ = _tmp287_;
					_tmp289_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp288_);
					cname = _tmp289_;
					_tmp290_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp291_ = _tmp290_;
					_tmp292_ = ccast;
					_tmp293_ = prop;
					_tmp294_ = vala_symbol_get_name ((ValaSymbol*) _tmp293_);
					_tmp295_ = _tmp294_;
					_tmp296_ = g_strdup_printf ("get_%s", _tmp295_);
					_tmp297_ = _tmp296_;
					_tmp298_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp292_, _tmp297_);
					_tmp299_ = _tmp298_;
					_tmp300_ = cname;
					_tmp301_ = vala_ccode_identifier_new (_tmp300_);
					_tmp302_ = _tmp301_;
					vala_ccode_function_add_assignment (_tmp291_, (ValaCCodeExpression*) _tmp299_, (ValaCCodeExpression*) _tmp302_);
					_vala_ccode_node_unref0 (_tmp302_);
					_vala_ccode_node_unref0 (_tmp299_);
					_g_free0 (_tmp297_);
					_g_free0 (cname);
				}
				_tmp303_ = prop;
				_tmp304_ = vala_property_get_set_accessor (_tmp303_);
				_tmp305_ = _tmp304_;
				if (_tmp305_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp306_ = NULL;
					ValaPropertyAccessor* _tmp307_ = NULL;
					ValaPropertyAccessor* _tmp308_ = NULL;
					gchar* _tmp309_ = NULL;
					ValaCCodeFunction* _tmp310_ = NULL;
					ValaCCodeFunction* _tmp311_ = NULL;
					ValaCCodeFunctionCall* _tmp312_ = NULL;
					ValaProperty* _tmp313_ = NULL;
					const gchar* _tmp314_ = NULL;
					const gchar* _tmp315_ = NULL;
					gchar* _tmp316_ = NULL;
					gchar* _tmp317_ = NULL;
					ValaCCodeMemberAccess* _tmp318_ = NULL;
					ValaCCodeMemberAccess* _tmp319_ = NULL;
					const gchar* _tmp320_ = NULL;
					ValaCCodeIdentifier* _tmp321_ = NULL;
					ValaCCodeIdentifier* _tmp322_ = NULL;
					_tmp306_ = prop;
					_tmp307_ = vala_property_get_set_accessor (_tmp306_);
					_tmp308_ = _tmp307_;
					_tmp309_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp308_);
					cname = _tmp309_;
					_tmp310_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp311_ = _tmp310_;
					_tmp312_ = ccast;
					_tmp313_ = prop;
					_tmp314_ = vala_symbol_get_name ((ValaSymbol*) _tmp313_);
					_tmp315_ = _tmp314_;
					_tmp316_ = g_strdup_printf ("set_%s", _tmp315_);
					_tmp317_ = _tmp316_;
					_tmp318_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp312_, _tmp317_);
					_tmp319_ = _tmp318_;
					_tmp320_ = cname;
					_tmp321_ = vala_ccode_identifier_new (_tmp320_);
					_tmp322_ = _tmp321_;
					vala_ccode_function_add_assignment (_tmp311_, (ValaCCodeExpression*) _tmp319_, (ValaCCodeExpression*) _tmp322_);
					_vala_ccode_node_unref0 (_tmp322_);
					_vala_ccode_node_unref0 (_tmp319_);
					_g_free0 (_tmp317_);
					_g_free0 (cname);
				}
			}
			_vala_ccode_node_unref0 (ccast);
			_vala_code_node_unref0 (base_type);
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp323_ = cl;
	vala_gtype_module_generate_class_init (self, _tmp323_);
	_tmp324_ = cl;
	_tmp325_ = vala_class_get_is_compact (_tmp324_);
	_tmp326_ = _tmp325_;
	if (!_tmp326_) {
		{
			ValaList* _sig_list = NULL;
			ValaClass* _tmp327_ = NULL;
			ValaList* _tmp328_ = NULL;
			gint _sig_size = 0;
			ValaList* _tmp329_ = NULL;
			gint _tmp330_ = 0;
			gint _tmp331_ = 0;
			gint _sig_index = 0;
			_tmp327_ = cl;
			_tmp328_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp327_);
			_sig_list = _tmp328_;
			_tmp329_ = _sig_list;
			_tmp330_ = vala_collection_get_size ((ValaCollection*) _tmp329_);
			_tmp331_ = _tmp330_;
			_sig_size = _tmp331_;
			_sig_index = -1;
			while (TRUE) {
				gint _tmp332_ = 0;
				gint _tmp333_ = 0;
				gint _tmp334_ = 0;
				ValaSignal* sig = NULL;
				ValaList* _tmp335_ = NULL;
				gint _tmp336_ = 0;
				gpointer _tmp337_ = NULL;
				ValaSignal* _tmp338_ = NULL;
				ValaComment* _tmp339_ = NULL;
				ValaComment* _tmp340_ = NULL;
				ValaCCodeFunction* _tmp350_ = NULL;
				ValaCCodeFunction* _tmp351_ = NULL;
				ValaSignal* _tmp352_ = NULL;
				ValaClass* _tmp353_ = NULL;
				ValaCCodeFunctionCall* _tmp354_ = NULL;
				ValaCCodeFunctionCall* _tmp355_ = NULL;
				_tmp332_ = _sig_index;
				_sig_index = _tmp332_ + 1;
				_tmp333_ = _sig_index;
				_tmp334_ = _sig_size;
				if (!(_tmp333_ < _tmp334_)) {
					break;
				}
				_tmp335_ = _sig_list;
				_tmp336_ = _sig_index;
				_tmp337_ = vala_list_get (_tmp335_, _tmp336_);
				sig = (ValaSignal*) _tmp337_;
				_tmp338_ = sig;
				_tmp339_ = vala_symbol_get_comment ((ValaSymbol*) _tmp338_);
				_tmp340_ = _tmp339_;
				if (_tmp340_ != NULL) {
					ValaCCodeFunction* _tmp341_ = NULL;
					ValaCCodeFunction* _tmp342_ = NULL;
					ValaSignal* _tmp343_ = NULL;
					ValaComment* _tmp344_ = NULL;
					ValaComment* _tmp345_ = NULL;
					const gchar* _tmp346_ = NULL;
					const gchar* _tmp347_ = NULL;
					ValaCCodeComment* _tmp348_ = NULL;
					ValaCCodeComment* _tmp349_ = NULL;
					_tmp341_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp342_ = _tmp341_;
					_tmp343_ = sig;
					_tmp344_ = vala_symbol_get_comment ((ValaSymbol*) _tmp343_);
					_tmp345_ = _tmp344_;
					_tmp346_ = vala_comment_get_content (_tmp345_);
					_tmp347_ = _tmp346_;
					_tmp348_ = vala_ccode_comment_new (_tmp347_);
					_tmp349_ = _tmp348_;
					vala_ccode_function_add_statement (_tmp342_, (ValaCCodeNode*) _tmp349_);
					_vala_ccode_node_unref0 (_tmp349_);
				}
				_tmp350_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp351_ = _tmp350_;
				_tmp352_ = sig;
				_tmp353_ = cl;
				_tmp354_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp352_, (ValaTypeSymbol*) _tmp353_);
				_tmp355_ = _tmp354_;
				vala_ccode_function_add_expression (_tmp351_, (ValaCCodeExpression*) _tmp355_);
				_vala_ccode_node_unref0 (_tmp355_);
				_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) {
	ValaCCodeFile* _tmp0_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp1_ = NULL;
	ValaCCodeFunction* _tmp2_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp1_ = ((ValaCCodeBaseModule*) self)->class_init_context;
	_tmp2_ = _tmp1_->ccode;
	vala_ccode_file_add_function (_tmp0_, _tmp2_);
}


static void vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self, const gchar* base_name, const gchar* return_type, ValaCCodeExpression* expression, ValaTypeParameter* p, ValaClass* cl, ValaInterface* iface) {
	gchar* name = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	ValaInterface* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp9_ = NULL;
	ValaCCodeFunction* _tmp10_ = NULL;
	ValaDataType* this_type = NULL;
	ValaClass* _tmp11_ = NULL;
	ValaDataType* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	ValaCCodeParameter* _tmp15_ = NULL;
	ValaCCodeParameter* _tmp16_ = NULL;
	ValaCCodeFunction* _tmp17_ = NULL;
	ValaCCodeFunction* _tmp18_ = NULL;
	ValaCCodeExpression* _tmp19_ = NULL;
	ValaCCodeFile* _tmp20_ = NULL;
	ValaCCodeExpression* cfunc = NULL;
	const gchar* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	ValaCCodeIdentifier* _tmp23_ = NULL;
	gchar* cast = NULL;
	const gchar* _tmp24_ = NULL;
	gchar* _tmp25_ = NULL;
	gchar* cast_args = NULL;
	ValaInterface* _tmp26_ = NULL;
	gchar* _tmp27_ = NULL;
	gchar* _tmp28_ = NULL;
	gchar* _tmp29_ = NULL;
	gchar* _tmp30_ = NULL;
	const gchar* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	gchar* _tmp36_ = NULL;
	ValaCCodeExpression* _tmp37_ = NULL;
	const gchar* _tmp38_ = NULL;
	ValaCCodeCastExpression* _tmp39_ = NULL;
	ValaCCodeIdentifier* ciface = NULL;
	ValaCCodeIdentifier* _tmp40_ = NULL;
	ValaCCodeFunction* _tmp41_ = NULL;
	ValaCCodeFunction* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	ValaCCodeMemberAccess* _tmp44_ = NULL;
	ValaCCodeMemberAccess* _tmp45_ = NULL;
	ValaCCodeExpression* _tmp46_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (base_name != NULL);
	g_return_if_fail (return_type != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (cl != NULL);
	g_return_if_fail (iface != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, NULL);
	_tmp2_ = _tmp1_;
	_tmp3_ = iface;
	_tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = base_name;
	_tmp7_ = g_strdup_printf ("%s_%s_%s", _tmp2_, _tmp5_, _tmp6_);
	_tmp8_ = _tmp7_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp2_);
	name = _tmp8_;
	_tmp9_ = return_type;
	_tmp10_ = vala_ccode_function_new (name, _tmp9_);
	function = _tmp10_;
	vala_ccode_function_set_modifiers (function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp11_ = cl;
	_tmp12_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp11_);
	this_type = _tmp12_;
	_tmp13_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) this_type);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_parameter_new ("self", _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_parameter (function, _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_g_free0 (_tmp14_);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp17_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp18_ = _tmp17_;
	_tmp19_ = expression;
	vala_ccode_function_add_return (_tmp18_, _tmp19_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp20_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp20_, function);
	_tmp21_ = vala_ccode_function_get_name (function);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_identifier_new (_tmp22_);
	cfunc = (ValaCCodeExpression*) _tmp23_;
	_tmp24_ = return_type;
	_tmp25_ = g_strconcat (_tmp24_, "(*)", NULL);
	cast = _tmp25_;
	_tmp26_ = iface;
	_tmp27_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp26_);
	_tmp28_ = _tmp27_;
	_tmp29_ = g_strconcat (_tmp28_, "*", NULL);
	_tmp30_ = _tmp29_;
	_g_free0 (_tmp28_);
	cast_args = _tmp30_;
	_tmp31_ = cast;
	_tmp32_ = g_strconcat ("(", cast_args, NULL);
	_tmp33_ = _tmp32_;
	_tmp34_ = g_strconcat (_tmp33_, ")", NULL);
	_tmp35_ = _tmp34_;
	_tmp36_ = g_strconcat (_tmp31_, _tmp35_, NULL);
	_g_free0 (cast);
	cast = _tmp36_;
	_g_free0 (_tmp35_);
	_g_free0 (_tmp33_);
	_tmp37_ = cfunc;
	_tmp38_ = cast;
	_tmp39_ = vala_ccode_cast_expression_new (_tmp37_, _tmp38_);
	_vala_ccode_node_unref0 (cfunc);
	cfunc = (ValaCCodeExpression*) _tmp39_;
	_tmp40_ = vala_ccode_identifier_new ("iface");
	ciface = _tmp40_;
	_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp42_ = _tmp41_;
	_tmp43_ = base_name;
	_tmp44_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp43_);
	_tmp45_ = _tmp44_;
	_tmp46_ = cfunc;
	vala_ccode_function_add_assignment (_tmp42_, (ValaCCodeExpression*) _tmp45_, _tmp46_);
	_vala_ccode_node_unref0 (_tmp45_);
	_vala_ccode_node_unref0 (ciface);
	_g_free0 (cast_args);
	_g_free0 (cast);
	_vala_ccode_node_unref0 (cfunc);
	_vala_code_node_unref0 (this_type);
	_vala_ccode_node_unref0 (function);
	_g_free0 (name);
}


static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self, ValaClass* cl, ValaInterface* iface) {
	ValaCCodeFunction* iface_init = NULL;
	ValaClass* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	ValaInterface* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaCCodeFunction* _tmp9_ = NULL;
	ValaCCodeFunction* _tmp10_ = NULL;
	ValaInterface* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	ValaCCodeParameter* _tmp16_ = NULL;
	ValaCCodeParameter* _tmp17_ = NULL;
	ValaCCodeFunction* _tmp18_ = NULL;
	ValaCCodeFunction* _tmp19_ = NULL;
	ValaCCodeFunctionCall* ccall = NULL;
	gchar* parent_iface_var = NULL;
	ValaClass* _tmp20_ = NULL;
	gchar* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	ValaInterface* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	gchar* _tmp25_ = NULL;
	gchar* _tmp26_ = NULL;
	gchar* _tmp27_ = NULL;
	ValaCCodeDeclaration* parent_decl = NULL;
	ValaInterface* _tmp28_ = NULL;
	gchar* _tmp29_ = NULL;
	gchar* _tmp30_ = NULL;
	gchar* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	ValaCCodeDeclaration* _tmp33_ = NULL;
	ValaCCodeDeclaration* _tmp34_ = NULL;
	ValaCCodeVariableDeclarator* parent_var_decl = NULL;
	const gchar* _tmp35_ = NULL;
	ValaCCodeVariableDeclarator* _tmp36_ = NULL;
	ValaCCodeVariableDeclarator* _tmp37_ = NULL;
	ValaCCodeConstant* _tmp38_ = NULL;
	ValaCCodeConstant* _tmp39_ = NULL;
	ValaCCodeDeclaration* _tmp40_ = NULL;
	ValaCCodeVariableDeclarator* _tmp41_ = NULL;
	ValaCCodeDeclaration* _tmp42_ = NULL;
	ValaCCodeFile* _tmp43_ = NULL;
	ValaCCodeDeclaration* _tmp44_ = NULL;
	ValaCCodeIdentifier* _tmp45_ = NULL;
	ValaCCodeIdentifier* _tmp46_ = NULL;
	ValaCCodeFunctionCall* _tmp47_ = NULL;
	ValaCCodeFunctionCall* _tmp48_ = NULL;
	ValaCCodeIdentifier* _tmp49_ = NULL;
	ValaCCodeIdentifier* _tmp50_ = NULL;
	ValaCCodeFunction* _tmp51_ = NULL;
	ValaCCodeFunction* _tmp52_ = NULL;
	const gchar* _tmp53_ = NULL;
	ValaCCodeIdentifier* _tmp54_ = NULL;
	ValaCCodeIdentifier* _tmp55_ = NULL;
	ValaCCodeFunctionCall* _tmp56_ = NULL;
	ValaInterface* _tmp141_ = NULL;
	ValaAttribute* _tmp142_ = NULL;
	ValaAttribute* _tmp143_ = NULL;
	gboolean _tmp144_ = FALSE;
	ValaCCodeFile* _tmp512_ = NULL;
	ValaCCodeFunction* _tmp513_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	g_return_if_fail (iface != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, NULL);
	_tmp2_ = _tmp1_;
	_tmp3_ = iface;
	_tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strdup_printf ("%s_%s_interface_init", _tmp2_, _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = vala_ccode_function_new (_tmp7_, "void");
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	_g_free0 (_tmp5_);
	_g_free0 (_tmp2_);
	iface_init = _tmp9_;
	_tmp10_ = iface_init;
	_tmp11_ = iface;
	_tmp12_ = vala_ccode_base_module_get_ccode_type_name (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strdup_printf ("%s *", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_parameter_new ("iface", _tmp15_);
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_g_free0 (_tmp15_);
	_g_free0 (_tmp13_);
	_tmp18_ = iface_init;
	vala_ccode_function_set_modifiers (_tmp18_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp19_ = iface_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = cl;
	_tmp21_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp20_, NULL);
	_tmp22_ = _tmp21_;
	_tmp23_ = iface;
	_tmp24_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp23_, NULL);
	_tmp25_ = _tmp24_;
	_tmp26_ = g_strdup_printf ("%s_%s_parent_iface", _tmp22_, _tmp25_);
	_tmp27_ = _tmp26_;
	_g_free0 (_tmp25_);
	_g_free0 (_tmp22_);
	parent_iface_var = _tmp27_;
	_tmp28_ = iface;
	_tmp29_ = vala_ccode_base_module_get_ccode_type_name (_tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = g_strconcat (_tmp30_, "*", NULL);
	_tmp32_ = _tmp31_;
	_tmp33_ = vala_ccode_declaration_new (_tmp32_);
	_tmp34_ = _tmp33_;
	_g_free0 (_tmp32_);
	_g_free0 (_tmp30_);
	parent_decl = _tmp34_;
	_tmp35_ = parent_iface_var;
	_tmp36_ = vala_ccode_variable_declarator_new (_tmp35_, NULL, NULL);
	parent_var_decl = _tmp36_;
	_tmp37_ = parent_var_decl;
	_tmp38_ = vala_ccode_constant_new ("NULL");
	_tmp39_ = _tmp38_;
	vala_ccode_variable_declarator_set_initializer (_tmp37_, (ValaCCodeExpression*) _tmp39_);
	_vala_ccode_node_unref0 (_tmp39_);
	_tmp40_ = parent_decl;
	_tmp41_ = parent_var_decl;
	vala_ccode_declaration_add_declarator (_tmp40_, (ValaCCodeDeclarator*) _tmp41_);
	_tmp42_ = parent_decl;
	vala_ccode_declaration_set_modifiers (_tmp42_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp43_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp44_ = parent_decl;
	vala_ccode_file_add_type_member_declaration (_tmp43_, (ValaCCodeNode*) _tmp44_);
	_tmp45_ = vala_ccode_identifier_new ("g_type_interface_peek_parent");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp47_;
	_vala_ccode_node_unref0 (_tmp46_);
	_tmp48_ = ccall;
	_tmp49_ = vala_ccode_identifier_new ("iface");
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp52_ = _tmp51_;
	_tmp53_ = parent_iface_var;
	_tmp54_ = vala_ccode_identifier_new (_tmp53_);
	_tmp55_ = _tmp54_;
	_tmp56_ = ccall;
	vala_ccode_function_add_assignment (_tmp52_, (ValaCCodeExpression*) _tmp55_, (ValaCCodeExpression*) _tmp56_);
	_vala_ccode_node_unref0 (_tmp55_);
	{
		ValaList* _m_list = NULL;
		ValaClass* _tmp57_ = NULL;
		ValaList* _tmp58_ = NULL;
		gint _m_size = 0;
		ValaList* _tmp59_ = NULL;
		gint _tmp60_ = 0;
		gint _tmp61_ = 0;
		gint _m_index = 0;
		_tmp57_ = cl;
		_tmp58_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp57_);
		_m_list = _tmp58_;
		_tmp59_ = _m_list;
		_tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
		_tmp61_ = _tmp60_;
		_m_size = _tmp61_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp62_ = 0;
			gint _tmp63_ = 0;
			gint _tmp64_ = 0;
			ValaMethod* m = NULL;
			ValaList* _tmp65_ = NULL;
			gint _tmp66_ = 0;
			gpointer _tmp67_ = NULL;
			ValaMethod* _tmp68_ = NULL;
			ValaMethod* _tmp69_ = NULL;
			ValaMethod* _tmp70_ = NULL;
			ValaSymbol* base_type = NULL;
			ValaMethod* _tmp71_ = NULL;
			ValaMethod* _tmp72_ = NULL;
			ValaMethod* _tmp73_ = NULL;
			ValaSymbol* _tmp74_ = NULL;
			ValaSymbol* _tmp75_ = NULL;
			ValaSymbol* _tmp76_ = NULL;
			ValaSymbol* _tmp77_ = NULL;
			ValaInterface* _tmp78_ = NULL;
			ValaCCodeIdentifier* ciface = NULL;
			ValaCCodeIdentifier* _tmp79_ = NULL;
			ValaCCodeExpression* cfunc = NULL;
			gboolean _tmp80_ = FALSE;
			ValaMethod* _tmp81_ = NULL;
			gboolean _tmp82_ = FALSE;
			gboolean _tmp83_ = FALSE;
			ValaMethod* _tmp95_ = NULL;
			ValaMethod* _tmp96_ = NULL;
			ValaMethod* _tmp97_ = NULL;
			ValaCCodeExpression* _tmp98_ = NULL;
			ValaInterface* _tmp99_ = NULL;
			ValaCCodeExpression* _tmp100_ = NULL;
			ValaCCodeFunction* _tmp101_ = NULL;
			ValaCCodeFunction* _tmp102_ = NULL;
			ValaCCodeIdentifier* _tmp103_ = NULL;
			ValaMethod* _tmp104_ = NULL;
			ValaMethod* _tmp105_ = NULL;
			ValaMethod* _tmp106_ = NULL;
			gchar* _tmp107_ = NULL;
			gchar* _tmp108_ = NULL;
			ValaCCodeMemberAccess* _tmp109_ = NULL;
			ValaCCodeMemberAccess* _tmp110_ = NULL;
			ValaCCodeExpression* _tmp111_ = NULL;
			ValaMethod* _tmp112_ = NULL;
			gboolean _tmp113_ = FALSE;
			gboolean _tmp114_ = FALSE;
			_tmp62_ = _m_index;
			_m_index = _tmp62_ + 1;
			_tmp63_ = _m_index;
			_tmp64_ = _m_size;
			if (!(_tmp63_ < _tmp64_)) {
				break;
			}
			_tmp65_ = _m_list;
			_tmp66_ = _m_index;
			_tmp67_ = vala_list_get (_tmp65_, _tmp66_);
			m = (ValaMethod*) _tmp67_;
			_tmp68_ = m;
			_tmp69_ = vala_method_get_base_interface_method (_tmp68_);
			_tmp70_ = _tmp69_;
			if (_tmp70_ == NULL) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp71_ = m;
			_tmp72_ = vala_method_get_base_interface_method (_tmp71_);
			_tmp73_ = _tmp72_;
			_tmp74_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp73_);
			_tmp75_ = _tmp74_;
			_tmp76_ = _vala_code_node_ref0 (_tmp75_);
			base_type = _tmp76_;
			_tmp77_ = base_type;
			_tmp78_ = iface;
			if (_tmp77_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_SYMBOL, ValaSymbol)) {
				_vala_code_node_unref0 (base_type);
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp79_ = vala_ccode_identifier_new ("iface");
			ciface = _tmp79_;
			_tmp81_ = m;
			_tmp82_ = vala_method_get_is_abstract (_tmp81_);
			_tmp83_ = _tmp82_;
			if (_tmp83_) {
				_tmp80_ = TRUE;
			} else {
				ValaMethod* _tmp84_ = NULL;
				gboolean _tmp85_ = FALSE;
				gboolean _tmp86_ = FALSE;
				_tmp84_ = m;
				_tmp85_ = vala_method_get_is_virtual (_tmp84_);
				_tmp86_ = _tmp85_;
				_tmp80_ = _tmp86_;
			}
			if (_tmp80_) {
				ValaMethod* _tmp87_ = NULL;
				gchar* _tmp88_ = NULL;
				gchar* _tmp89_ = NULL;
				ValaCCodeIdentifier* _tmp90_ = NULL;
				_tmp87_ = m;
				_tmp88_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp87_);
				_tmp89_ = _tmp88_;
				_tmp90_ = vala_ccode_identifier_new (_tmp89_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp90_;
				_g_free0 (_tmp89_);
			} else {
				ValaMethod* _tmp91_ = NULL;
				gchar* _tmp92_ = NULL;
				gchar* _tmp93_ = NULL;
				ValaCCodeIdentifier* _tmp94_ = NULL;
				_tmp91_ = m;
				_tmp92_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp91_);
				_tmp93_ = _tmp92_;
				_tmp94_ = vala_ccode_identifier_new (_tmp93_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp94_;
				_g_free0 (_tmp93_);
			}
			_tmp95_ = m;
			_tmp96_ = vala_method_get_base_interface_method (_tmp95_);
			_tmp97_ = _tmp96_;
			_tmp98_ = cfunc;
			_tmp99_ = iface;
			_tmp100_ = vala_gtype_module_cast_method_pointer (self, _tmp97_, _tmp98_, (ValaObjectTypeSymbol*) _tmp99_);
			_vala_ccode_node_unref0 (cfunc);
			cfunc = _tmp100_;
			_tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp102_ = _tmp101_;
			_tmp103_ = ciface;
			_tmp104_ = m;
			_tmp105_ = vala_method_get_base_interface_method (_tmp104_);
			_tmp106_ = _tmp105_;
			_tmp107_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp106_);
			_tmp108_ = _tmp107_;
			_tmp109_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp103_, _tmp108_);
			_tmp110_ = _tmp109_;
			_tmp111_ = cfunc;
			vala_ccode_function_add_assignment (_tmp102_, (ValaCCodeExpression*) _tmp110_, _tmp111_);
			_vala_ccode_node_unref0 (_tmp110_);
			_g_free0 (_tmp108_);
			_tmp112_ = m;
			_tmp113_ = vala_method_get_coroutine (_tmp112_);
			_tmp114_ = _tmp113_;
			if (_tmp114_) {
				gboolean _tmp115_ = FALSE;
				ValaMethod* _tmp116_ = NULL;
				gboolean _tmp117_ = FALSE;
				gboolean _tmp118_ = FALSE;
				ValaCCodeFunction* _tmp130_ = NULL;
				ValaCCodeFunction* _tmp131_ = NULL;
				ValaCCodeIdentifier* _tmp132_ = NULL;
				ValaMethod* _tmp133_ = NULL;
				ValaMethod* _tmp134_ = NULL;
				ValaMethod* _tmp135_ = NULL;
				gchar* _tmp136_ = NULL;
				gchar* _tmp137_ = NULL;
				ValaCCodeMemberAccess* _tmp138_ = NULL;
				ValaCCodeMemberAccess* _tmp139_ = NULL;
				ValaCCodeExpression* _tmp140_ = NULL;
				_tmp116_ = m;
				_tmp117_ = vala_method_get_is_abstract (_tmp116_);
				_tmp118_ = _tmp117_;
				if (_tmp118_) {
					_tmp115_ = TRUE;
				} else {
					ValaMethod* _tmp119_ = NULL;
					gboolean _tmp120_ = FALSE;
					gboolean _tmp121_ = FALSE;
					_tmp119_ = m;
					_tmp120_ = vala_method_get_is_virtual (_tmp119_);
					_tmp121_ = _tmp120_;
					_tmp115_ = _tmp121_;
				}
				if (_tmp115_) {
					ValaMethod* _tmp122_ = NULL;
					gchar* _tmp123_ = NULL;
					gchar* _tmp124_ = NULL;
					ValaCCodeIdentifier* _tmp125_ = NULL;
					_tmp122_ = m;
					_tmp123_ = vala_ccode_base_module_get_ccode_finish_name (_tmp122_);
					_tmp124_ = _tmp123_;
					_tmp125_ = vala_ccode_identifier_new (_tmp124_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = (ValaCCodeExpression*) _tmp125_;
					_g_free0 (_tmp124_);
				} else {
					ValaMethod* _tmp126_ = NULL;
					gchar* _tmp127_ = NULL;
					gchar* _tmp128_ = NULL;
					ValaCCodeIdentifier* _tmp129_ = NULL;
					_tmp126_ = m;
					_tmp127_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp126_);
					_tmp128_ = _tmp127_;
					_tmp129_ = vala_ccode_identifier_new (_tmp128_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = (ValaCCodeExpression*) _tmp129_;
					_g_free0 (_tmp128_);
				}
				_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp131_ = _tmp130_;
				_tmp132_ = ciface;
				_tmp133_ = m;
				_tmp134_ = vala_method_get_base_interface_method (_tmp133_);
				_tmp135_ = _tmp134_;
				_tmp136_ = vala_ccode_base_module_get_ccode_finish_vfunc_name (_tmp135_);
				_tmp137_ = _tmp136_;
				_tmp138_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp132_, _tmp137_);
				_tmp139_ = _tmp138_;
				_tmp140_ = cfunc;
				vala_ccode_function_add_assignment (_tmp131_, (ValaCCodeExpression*) _tmp139_, _tmp140_);
				_vala_ccode_node_unref0 (_tmp139_);
				_g_free0 (_tmp137_);
			}
			_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);
	}
	_tmp141_ = iface;
	_tmp142_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp141_, "GenericAccessors");
	_tmp143_ = _tmp142_;
	_tmp144_ = _tmp143_ != NULL;
	_vala_code_node_unref0 (_tmp143_);
	if (_tmp144_) {
		{
			ValaList* _p_list = NULL;
			ValaInterface* _tmp145_ = NULL;
			ValaList* _tmp146_ = NULL;
			gint _p_size = 0;
			ValaList* _tmp147_ = NULL;
			gint _tmp148_ = 0;
			gint _tmp149_ = 0;
			gint _p_index = 0;
			_tmp145_ = iface;
			_tmp146_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp145_);
			_p_list = _tmp146_;
			_tmp147_ = _p_list;
			_tmp148_ = vala_collection_get_size ((ValaCollection*) _tmp147_);
			_tmp149_ = _tmp148_;
			_p_size = _tmp149_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp150_ = 0;
				gint _tmp151_ = 0;
				gint _tmp152_ = 0;
				ValaTypeParameter* p = NULL;
				ValaList* _tmp153_ = NULL;
				gint _tmp154_ = 0;
				gpointer _tmp155_ = NULL;
				ValaGenericType* p_type = NULL;
				ValaTypeParameter* _tmp156_ = NULL;
				ValaGenericType* _tmp157_ = NULL;
				ValaDataType* p_data_type = NULL;
				ValaGenericType* _tmp158_ = NULL;
				ValaClass* _tmp159_ = NULL;
				ValaDataType* _tmp160_ = NULL;
				ValaDataType* _tmp161_ = NULL;
				ValaClass* _tmp162_ = NULL;
				ValaDataType* _tmp163_ = NULL;
				ValaDataType* _tmp164_ = NULL;
				ValaTypeParameter* _tmp165_ = NULL;
				const gchar* _tmp166_ = NULL;
				const gchar* _tmp167_ = NULL;
				gchar* _tmp168_ = NULL;
				gchar* _tmp169_ = NULL;
				gchar* _tmp170_ = NULL;
				gchar* _tmp171_ = NULL;
				ValaDataType* _tmp172_ = NULL;
				ValaCCodeExpression* _tmp173_ = NULL;
				ValaCCodeExpression* _tmp174_ = NULL;
				ValaTypeParameter* _tmp175_ = NULL;
				ValaClass* _tmp176_ = NULL;
				ValaInterface* _tmp177_ = NULL;
				ValaTypeParameter* _tmp178_ = NULL;
				const gchar* _tmp179_ = NULL;
				const gchar* _tmp180_ = NULL;
				gchar* _tmp181_ = NULL;
				gchar* _tmp182_ = NULL;
				gchar* _tmp183_ = NULL;
				gchar* _tmp184_ = NULL;
				ValaDataType* _tmp185_ = NULL;
				ValaCCodeExpression* _tmp186_ = NULL;
				ValaCCodeExpression* _tmp187_ = NULL;
				ValaTypeParameter* _tmp188_ = NULL;
				ValaClass* _tmp189_ = NULL;
				ValaInterface* _tmp190_ = NULL;
				ValaTypeParameter* _tmp191_ = NULL;
				const gchar* _tmp192_ = NULL;
				const gchar* _tmp193_ = NULL;
				gchar* _tmp194_ = NULL;
				gchar* _tmp195_ = NULL;
				gchar* _tmp196_ = NULL;
				gchar* _tmp197_ = NULL;
				ValaDataType* _tmp198_ = NULL;
				ValaCCodeExpression* _tmp199_ = NULL;
				ValaCCodeExpression* _tmp200_ = NULL;
				ValaTypeParameter* _tmp201_ = NULL;
				ValaClass* _tmp202_ = NULL;
				ValaInterface* _tmp203_ = NULL;
				_tmp150_ = _p_index;
				_p_index = _tmp150_ + 1;
				_tmp151_ = _p_index;
				_tmp152_ = _p_size;
				if (!(_tmp151_ < _tmp152_)) {
					break;
				}
				_tmp153_ = _p_list;
				_tmp154_ = _p_index;
				_tmp155_ = vala_list_get (_tmp153_, _tmp154_);
				p = (ValaTypeParameter*) _tmp155_;
				_tmp156_ = p;
				_tmp157_ = vala_generic_type_new (_tmp156_);
				p_type = _tmp157_;
				_tmp158_ = p_type;
				_tmp159_ = cl;
				_tmp160_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp159_);
				_tmp161_ = _tmp160_;
				_tmp162_ = cl;
				_tmp163_ = vala_data_type_get_actual_type ((ValaDataType*) _tmp158_, _tmp161_, NULL, (ValaCodeNode*) _tmp162_);
				_tmp164_ = _tmp163_;
				_vala_code_node_unref0 (_tmp161_);
				p_data_type = _tmp164_;
				_tmp165_ = p;
				_tmp166_ = vala_symbol_get_name ((ValaSymbol*) _tmp165_);
				_tmp167_ = _tmp166_;
				_tmp168_ = g_utf8_strdown (_tmp167_, (gssize) -1);
				_tmp169_ = _tmp168_;
				_tmp170_ = g_strdup_printf ("get_%s_type", _tmp169_);
				_tmp171_ = _tmp170_;
				_tmp172_ = p_data_type;
				_tmp173_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp172_, FALSE);
				_tmp174_ = _tmp173_;
				_tmp175_ = p;
				_tmp176_ = cl;
				_tmp177_ = iface;
				vala_gtype_module_add_generic_accessor_function (self, _tmp171_, "GType", _tmp174_, _tmp175_, _tmp176_, _tmp177_);
				_vala_ccode_node_unref0 (_tmp174_);
				_g_free0 (_tmp171_);
				_g_free0 (_tmp169_);
				_tmp178_ = p;
				_tmp179_ = vala_symbol_get_name ((ValaSymbol*) _tmp178_);
				_tmp180_ = _tmp179_;
				_tmp181_ = g_utf8_strdown (_tmp180_, (gssize) -1);
				_tmp182_ = _tmp181_;
				_tmp183_ = g_strdup_printf ("get_%s_dup_func", _tmp182_);
				_tmp184_ = _tmp183_;
				_tmp185_ = p_data_type;
				_tmp186_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp185_, NULL, FALSE);
				_tmp187_ = _tmp186_;
				_tmp188_ = p;
				_tmp189_ = cl;
				_tmp190_ = iface;
				vala_gtype_module_add_generic_accessor_function (self, _tmp184_, "GBoxedCopyFunc", _tmp187_, _tmp188_, _tmp189_, _tmp190_);
				_vala_ccode_node_unref0 (_tmp187_);
				_g_free0 (_tmp184_);
				_g_free0 (_tmp182_);
				_tmp191_ = p;
				_tmp192_ = vala_symbol_get_name ((ValaSymbol*) _tmp191_);
				_tmp193_ = _tmp192_;
				_tmp194_ = g_utf8_strdown (_tmp193_, (gssize) -1);
				_tmp195_ = _tmp194_;
				_tmp196_ = g_strdup_printf ("get_%s_destroy_func", _tmp195_);
				_tmp197_ = _tmp196_;
				_tmp198_ = p_data_type;
				_tmp199_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp198_, FALSE);
				_tmp200_ = _tmp199_;
				_tmp201_ = p;
				_tmp202_ = cl;
				_tmp203_ = iface;
				vala_gtype_module_add_generic_accessor_function (self, _tmp197_, "GDestroyNotify", _tmp200_, _tmp201_, _tmp202_, _tmp203_);
				_vala_ccode_node_unref0 (_tmp200_);
				_g_free0 (_tmp197_);
				_g_free0 (_tmp195_);
				_vala_code_node_unref0 (p_data_type);
				_vala_code_node_unref0 (p_type);
				_vala_code_node_unref0 (p);
			}
			_vala_iterable_unref0 (_p_list);
		}
	}
	{
		ValaList* _m_list = NULL;
		ValaInterface* _tmp204_ = NULL;
		ValaList* _tmp205_ = NULL;
		gint _m_size = 0;
		ValaList* _tmp206_ = NULL;
		gint _tmp207_ = 0;
		gint _tmp208_ = 0;
		gint _m_index = 0;
		_tmp204_ = iface;
		_tmp205_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp204_);
		_m_list = _tmp205_;
		_tmp206_ = _m_list;
		_tmp207_ = vala_collection_get_size ((ValaCollection*) _tmp206_);
		_tmp208_ = _tmp207_;
		_m_size = _tmp208_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp209_ = 0;
			gint _tmp210_ = 0;
			gint _tmp211_ = 0;
			ValaMethod* m = NULL;
			ValaList* _tmp212_ = NULL;
			gint _tmp213_ = 0;
			gpointer _tmp214_ = NULL;
			ValaMethod* _tmp215_ = NULL;
			gboolean _tmp216_ = FALSE;
			gboolean _tmp217_ = FALSE;
			_tmp209_ = _m_index;
			_m_index = _tmp209_ + 1;
			_tmp210_ = _m_index;
			_tmp211_ = _m_size;
			if (!(_tmp210_ < _tmp211_)) {
				break;
			}
			_tmp212_ = _m_list;
			_tmp213_ = _m_index;
			_tmp214_ = vala_list_get (_tmp212_, _tmp213_);
			m = (ValaMethod*) _tmp214_;
			_tmp215_ = m;
			_tmp216_ = vala_method_get_is_abstract (_tmp215_);
			_tmp217_ = _tmp216_;
			if (_tmp217_) {
				ValaMethod* cl_method = NULL;
				ValaClass* base_class = NULL;
				ValaClass* _tmp218_ = NULL;
				ValaClass* _tmp219_ = NULL;
				gboolean _tmp235_ = FALSE;
				ValaClass* _tmp236_ = NULL;
				cl_method = NULL;
				_tmp218_ = cl;
				_tmp219_ = _vala_code_node_ref0 (_tmp218_);
				base_class = _tmp219_;
				while (TRUE) {
					gboolean _tmp220_ = FALSE;
					ValaClass* _tmp221_ = NULL;
					ValaClass* _tmp223_ = NULL;
					ValaScope* _tmp224_ = NULL;
					ValaScope* _tmp225_ = NULL;
					ValaMethod* _tmp226_ = NULL;
					const gchar* _tmp227_ = NULL;
					const gchar* _tmp228_ = NULL;
					ValaSymbol* _tmp229_ = NULL;
					ValaMethod* _tmp230_ = NULL;
					ValaClass* _tmp231_ = NULL;
					ValaClass* _tmp232_ = NULL;
					ValaClass* _tmp233_ = NULL;
					ValaClass* _tmp234_ = NULL;
					_tmp221_ = base_class;
					if (_tmp221_ != NULL) {
						ValaMethod* _tmp222_ = NULL;
						_tmp222_ = cl_method;
						_tmp220_ = _tmp222_ == NULL;
					} else {
						_tmp220_ = FALSE;
					}
					if (!_tmp220_) {
						break;
					}
					_tmp223_ = base_class;
					_tmp224_ = vala_symbol_get_scope ((ValaSymbol*) _tmp223_);
					_tmp225_ = _tmp224_;
					_tmp226_ = m;
					_tmp227_ = vala_symbol_get_name ((ValaSymbol*) _tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = vala_scope_lookup (_tmp225_, _tmp228_);
					_tmp230_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp229_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp229_) : NULL;
					if (_tmp230_ == NULL) {
						_vala_code_node_unref0 (_tmp229_);
					}
					_vala_code_node_unref0 (cl_method);
					cl_method = _tmp230_;
					_tmp231_ = base_class;
					_tmp232_ = vala_class_get_base_class (_tmp231_);
					_tmp233_ = _tmp232_;
					_tmp234_ = _vala_code_node_ref0 (_tmp233_);
					_vala_code_node_unref0 (base_class);
					base_class = _tmp234_;
				}
				_tmp236_ = base_class;
				if (_tmp236_ != NULL) {
					ValaMethod* _tmp237_ = NULL;
					ValaSymbol* _tmp238_ = NULL;
					ValaSymbol* _tmp239_ = NULL;
					ValaClass* _tmp240_ = NULL;
					_tmp237_ = cl_method;
					_tmp238_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp237_);
					_tmp239_ = _tmp238_;
					_tmp240_ = cl;
					_tmp235_ = _tmp239_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp240_, VALA_TYPE_SYMBOL, ValaSymbol);
				} else {
					_tmp235_ = FALSE;
				}
				if (_tmp235_) {
					ValaMethod* base_method = NULL;
					ValaMethod* _tmp241_ = NULL;
					ValaMethod* _tmp242_ = NULL;
					ValaMethod* _tmp243_ = NULL;
					ValaMethod* _tmp244_ = NULL;
					ValaMethod* _tmp245_ = NULL;
					ValaMethod* _tmp257_ = NULL;
					ValaCCodeFile* _tmp258_ = NULL;
					ValaCCodeExpression* cfunc = NULL;
					ValaMethod* _tmp259_ = NULL;
					gchar* _tmp260_ = NULL;
					gchar* _tmp261_ = NULL;
					ValaCCodeIdentifier* _tmp262_ = NULL;
					ValaCCodeExpression* _tmp263_ = NULL;
					ValaMethod* _tmp264_ = NULL;
					ValaCCodeExpression* _tmp265_ = NULL;
					ValaInterface* _tmp266_ = NULL;
					ValaCCodeExpression* _tmp267_ = NULL;
					ValaCCodeIdentifier* ciface = NULL;
					ValaCCodeIdentifier* _tmp268_ = NULL;
					ValaCCodeFunction* _tmp269_ = NULL;
					ValaCCodeFunction* _tmp270_ = NULL;
					ValaCCodeIdentifier* _tmp271_ = NULL;
					ValaMethod* _tmp272_ = NULL;
					gchar* _tmp273_ = NULL;
					gchar* _tmp274_ = NULL;
					ValaCCodeMemberAccess* _tmp275_ = NULL;
					ValaCCodeMemberAccess* _tmp276_ = NULL;
					ValaCCodeExpression* _tmp277_ = NULL;
					_tmp241_ = cl_method;
					_tmp242_ = _vala_code_node_ref0 (_tmp241_);
					base_method = _tmp242_;
					_tmp243_ = cl_method;
					_tmp244_ = vala_method_get_base_method (_tmp243_);
					_tmp245_ = _tmp244_;
					if (_tmp245_ != NULL) {
						ValaMethod* _tmp246_ = NULL;
						ValaMethod* _tmp247_ = NULL;
						ValaMethod* _tmp248_ = NULL;
						ValaMethod* _tmp249_ = NULL;
						_tmp246_ = cl_method;
						_tmp247_ = vala_method_get_base_method (_tmp246_);
						_tmp248_ = _tmp247_;
						_tmp249_ = _vala_code_node_ref0 (_tmp248_);
						_vala_code_node_unref0 (base_method);
						base_method = _tmp249_;
					} else {
						ValaMethod* _tmp250_ = NULL;
						ValaMethod* _tmp251_ = NULL;
						ValaMethod* _tmp252_ = NULL;
						_tmp250_ = cl_method;
						_tmp251_ = vala_method_get_base_interface_method (_tmp250_);
						_tmp252_ = _tmp251_;
						if (_tmp252_ != NULL) {
							ValaMethod* _tmp253_ = NULL;
							ValaMethod* _tmp254_ = NULL;
							ValaMethod* _tmp255_ = NULL;
							ValaMethod* _tmp256_ = NULL;
							_tmp253_ = cl_method;
							_tmp254_ = vala_method_get_base_interface_method (_tmp253_);
							_tmp255_ = _tmp254_;
							_tmp256_ = _vala_code_node_ref0 (_tmp255_);
							_vala_code_node_unref0 (base_method);
							base_method = _tmp256_;
						}
					}
					_tmp257_ = base_method;
					_tmp258_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp257_, _tmp258_);
					_tmp259_ = base_method;
					_tmp260_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp259_);
					_tmp261_ = _tmp260_;
					_tmp262_ = vala_ccode_identifier_new (_tmp261_);
					_tmp263_ = (ValaCCodeExpression*) _tmp262_;
					_g_free0 (_tmp261_);
					cfunc = _tmp263_;
					_tmp264_ = base_method;
					_tmp265_ = cfunc;
					_tmp266_ = iface;
					_tmp267_ = vala_gtype_module_cast_method_pointer (self, _tmp264_, _tmp265_, (ValaObjectTypeSymbol*) _tmp266_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp267_;
					_tmp268_ = vala_ccode_identifier_new ("iface");
					ciface = _tmp268_;
					_tmp269_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp270_ = _tmp269_;
					_tmp271_ = ciface;
					_tmp272_ = m;
					_tmp273_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp272_);
					_tmp274_ = _tmp273_;
					_tmp275_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp271_, _tmp274_);
					_tmp276_ = _tmp275_;
					_tmp277_ = cfunc;
					vala_ccode_function_add_assignment (_tmp270_, (ValaCCodeExpression*) _tmp276_, _tmp277_);
					_vala_ccode_node_unref0 (_tmp276_);
					_g_free0 (_tmp274_);
					_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* _prop_list = NULL;
		ValaClass* _tmp278_ = NULL;
		ValaList* _tmp279_ = NULL;
		gint _prop_size = 0;
		ValaList* _tmp280_ = NULL;
		gint _tmp281_ = 0;
		gint _tmp282_ = 0;
		gint _prop_index = 0;
		_tmp278_ = cl;
		_tmp279_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp278_);
		_prop_list = _tmp279_;
		_tmp280_ = _prop_list;
		_tmp281_ = vala_collection_get_size ((ValaCollection*) _tmp280_);
		_tmp282_ = _tmp281_;
		_prop_size = _tmp282_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp283_ = 0;
			gint _tmp284_ = 0;
			gint _tmp285_ = 0;
			ValaProperty* prop = NULL;
			ValaList* _tmp286_ = NULL;
			gint _tmp287_ = 0;
			gpointer _tmp288_ = NULL;
			ValaProperty* _tmp289_ = NULL;
			ValaProperty* _tmp290_ = NULL;
			ValaProperty* _tmp291_ = NULL;
			ValaObjectTypeSymbol* base_type = NULL;
			ValaProperty* _tmp292_ = NULL;
			ValaProperty* _tmp293_ = NULL;
			ValaProperty* _tmp294_ = NULL;
			ValaSymbol* _tmp295_ = NULL;
			ValaSymbol* _tmp296_ = NULL;
			ValaObjectTypeSymbol* _tmp297_ = NULL;
			ValaObjectTypeSymbol* _tmp298_ = NULL;
			ValaInterface* _tmp299_ = NULL;
			ValaCCodeIdentifier* ciface = NULL;
			ValaCCodeIdentifier* _tmp300_ = NULL;
			gboolean _tmp301_ = FALSE;
			ValaProperty* _tmp302_ = NULL;
			ValaProperty* _tmp303_ = NULL;
			ValaProperty* _tmp304_ = NULL;
			gboolean _tmp305_ = FALSE;
			_tmp283_ = _prop_index;
			_prop_index = _tmp283_ + 1;
			_tmp284_ = _prop_index;
			_tmp285_ = _prop_size;
			if (!(_tmp284_ < _tmp285_)) {
				break;
			}
			_tmp286_ = _prop_list;
			_tmp287_ = _prop_index;
			_tmp288_ = vala_list_get (_tmp286_, _tmp287_);
			prop = (ValaProperty*) _tmp288_;
			_tmp289_ = prop;
			_tmp290_ = vala_property_get_base_interface_property (_tmp289_);
			_tmp291_ = _tmp290_;
			if (_tmp291_ == NULL) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp292_ = prop;
			_tmp293_ = vala_property_get_base_interface_property (_tmp292_);
			_tmp294_ = _tmp293_;
			_tmp295_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp294_);
			_tmp296_ = _tmp295_;
			_tmp297_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp296_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
			base_type = _tmp297_;
			_tmp298_ = base_type;
			_tmp299_ = iface;
			if (_tmp298_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp299_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol)) {
				_vala_code_node_unref0 (base_type);
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp300_ = vala_ccode_identifier_new ("iface");
			ciface = _tmp300_;
			_tmp302_ = prop;
			_tmp303_ = vala_property_get_base_interface_property (_tmp302_);
			_tmp304_ = _tmp303_;
			_tmp305_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp304_);
			if (!_tmp305_) {
				ValaProperty* _tmp306_ = NULL;
				ValaProperty* _tmp307_ = NULL;
				ValaProperty* _tmp308_ = NULL;
				gboolean _tmp309_ = FALSE;
				_tmp306_ = prop;
				_tmp307_ = vala_property_get_base_interface_property (_tmp306_);
				_tmp308_ = _tmp307_;
				_tmp309_ = vala_ccode_base_module_get_ccode_concrete_accessor (_tmp308_);
				_tmp301_ = !_tmp309_;
			} else {
				_tmp301_ = FALSE;
			}
			if (_tmp301_) {
				ValaProperty* _tmp310_ = NULL;
				ValaPropertyAccessor* _tmp311_ = NULL;
				ValaPropertyAccessor* _tmp312_ = NULL;
				ValaProperty* _tmp354_ = NULL;
				ValaPropertyAccessor* _tmp355_ = NULL;
				ValaPropertyAccessor* _tmp356_ = NULL;
				_tmp310_ = prop;
				_tmp311_ = vala_property_get_get_accessor (_tmp310_);
				_tmp312_ = _tmp311_;
				if (_tmp312_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp313_ = NULL;
					ValaPropertyAccessor* _tmp314_ = NULL;
					ValaPropertyAccessor* _tmp315_ = NULL;
					gchar* _tmp316_ = NULL;
					gboolean _tmp317_ = FALSE;
					ValaProperty* _tmp318_ = NULL;
					gboolean _tmp319_ = FALSE;
					gboolean _tmp320_ = FALSE;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp328_ = NULL;
					ValaCCodeIdentifier* _tmp329_ = NULL;
					gboolean _tmp330_ = FALSE;
					ValaProperty* _tmp331_ = NULL;
					gboolean _tmp332_ = FALSE;
					gboolean _tmp333_ = FALSE;
					ValaCCodeFunction* _tmp343_ = NULL;
					ValaCCodeFunction* _tmp344_ = NULL;
					ValaCCodeIdentifier* _tmp345_ = NULL;
					ValaProperty* _tmp346_ = NULL;
					const gchar* _tmp347_ = NULL;
					const gchar* _tmp348_ = NULL;
					gchar* _tmp349_ = NULL;
					gchar* _tmp350_ = NULL;
					ValaCCodeMemberAccess* _tmp351_ = NULL;
					ValaCCodeMemberAccess* _tmp352_ = NULL;
					ValaCCodeExpression* _tmp353_ = NULL;
					_tmp313_ = prop;
					_tmp314_ = vala_property_get_get_accessor (_tmp313_);
					_tmp315_ = _tmp314_;
					_tmp316_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp315_);
					cname = _tmp316_;
					_tmp318_ = prop;
					_tmp319_ = vala_property_get_is_abstract (_tmp318_);
					_tmp320_ = _tmp319_;
					if (_tmp320_) {
						_tmp317_ = TRUE;
					} else {
						ValaProperty* _tmp321_ = NULL;
						gboolean _tmp322_ = FALSE;
						gboolean _tmp323_ = FALSE;
						_tmp321_ = prop;
						_tmp322_ = vala_property_get_is_virtual (_tmp321_);
						_tmp323_ = _tmp322_;
						_tmp317_ = _tmp323_;
					}
					if (_tmp317_) {
						ValaProperty* _tmp324_ = NULL;
						ValaPropertyAccessor* _tmp325_ = NULL;
						ValaPropertyAccessor* _tmp326_ = NULL;
						gchar* _tmp327_ = NULL;
						_tmp324_ = prop;
						_tmp325_ = vala_property_get_get_accessor (_tmp324_);
						_tmp326_ = _tmp325_;
						_tmp327_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp326_);
						_g_free0 (cname);
						cname = _tmp327_;
					}
					_tmp328_ = cname;
					_tmp329_ = vala_ccode_identifier_new (_tmp328_);
					cfunc = (ValaCCodeExpression*) _tmp329_;
					_tmp331_ = prop;
					_tmp332_ = vala_property_get_is_abstract (_tmp331_);
					_tmp333_ = _tmp332_;
					if (_tmp333_) {
						_tmp330_ = TRUE;
					} else {
						ValaProperty* _tmp334_ = NULL;
						gboolean _tmp335_ = FALSE;
						gboolean _tmp336_ = FALSE;
						_tmp334_ = prop;
						_tmp335_ = vala_property_get_is_virtual (_tmp334_);
						_tmp336_ = _tmp335_;
						_tmp330_ = _tmp336_;
					}
					if (_tmp330_) {
						ValaProperty* _tmp337_ = NULL;
						ValaPropertyAccessor* _tmp338_ = NULL;
						ValaPropertyAccessor* _tmp339_ = NULL;
						ValaCCodeExpression* _tmp340_ = NULL;
						ValaObjectTypeSymbol* _tmp341_ = NULL;
						ValaCCodeExpression* _tmp342_ = NULL;
						_tmp337_ = prop;
						_tmp338_ = vala_property_get_get_accessor (_tmp337_);
						_tmp339_ = _tmp338_;
						_tmp340_ = cfunc;
						_tmp341_ = base_type;
						_tmp342_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp339_, _tmp340_, _tmp341_);
						_vala_ccode_node_unref0 (cfunc);
						cfunc = _tmp342_;
					}
					_tmp343_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp344_ = _tmp343_;
					_tmp345_ = ciface;
					_tmp346_ = prop;
					_tmp347_ = vala_symbol_get_name ((ValaSymbol*) _tmp346_);
					_tmp348_ = _tmp347_;
					_tmp349_ = g_strdup_printf ("get_%s", _tmp348_);
					_tmp350_ = _tmp349_;
					_tmp351_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp345_, _tmp350_);
					_tmp352_ = _tmp351_;
					_tmp353_ = cfunc;
					vala_ccode_function_add_assignment (_tmp344_, (ValaCCodeExpression*) _tmp352_, _tmp353_);
					_vala_ccode_node_unref0 (_tmp352_);
					_g_free0 (_tmp350_);
					_vala_ccode_node_unref0 (cfunc);
					_g_free0 (cname);
				}
				_tmp354_ = prop;
				_tmp355_ = vala_property_get_set_accessor (_tmp354_);
				_tmp356_ = _tmp355_;
				if (_tmp356_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp357_ = NULL;
					ValaPropertyAccessor* _tmp358_ = NULL;
					ValaPropertyAccessor* _tmp359_ = NULL;
					gchar* _tmp360_ = NULL;
					gboolean _tmp361_ = FALSE;
					ValaProperty* _tmp362_ = NULL;
					gboolean _tmp363_ = FALSE;
					gboolean _tmp364_ = FALSE;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp372_ = NULL;
					ValaCCodeIdentifier* _tmp373_ = NULL;
					gboolean _tmp374_ = FALSE;
					ValaProperty* _tmp375_ = NULL;
					gboolean _tmp376_ = FALSE;
					gboolean _tmp377_ = FALSE;
					ValaCCodeFunction* _tmp387_ = NULL;
					ValaCCodeFunction* _tmp388_ = NULL;
					ValaCCodeIdentifier* _tmp389_ = NULL;
					ValaProperty* _tmp390_ = NULL;
					const gchar* _tmp391_ = NULL;
					const gchar* _tmp392_ = NULL;
					gchar* _tmp393_ = NULL;
					gchar* _tmp394_ = NULL;
					ValaCCodeMemberAccess* _tmp395_ = NULL;
					ValaCCodeMemberAccess* _tmp396_ = NULL;
					ValaCCodeExpression* _tmp397_ = NULL;
					_tmp357_ = prop;
					_tmp358_ = vala_property_get_set_accessor (_tmp357_);
					_tmp359_ = _tmp358_;
					_tmp360_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp359_);
					cname = _tmp360_;
					_tmp362_ = prop;
					_tmp363_ = vala_property_get_is_abstract (_tmp362_);
					_tmp364_ = _tmp363_;
					if (_tmp364_) {
						_tmp361_ = TRUE;
					} else {
						ValaProperty* _tmp365_ = NULL;
						gboolean _tmp366_ = FALSE;
						gboolean _tmp367_ = FALSE;
						_tmp365_ = prop;
						_tmp366_ = vala_property_get_is_virtual (_tmp365_);
						_tmp367_ = _tmp366_;
						_tmp361_ = _tmp367_;
					}
					if (_tmp361_) {
						ValaProperty* _tmp368_ = NULL;
						ValaPropertyAccessor* _tmp369_ = NULL;
						ValaPropertyAccessor* _tmp370_ = NULL;
						gchar* _tmp371_ = NULL;
						_tmp368_ = prop;
						_tmp369_ = vala_property_get_set_accessor (_tmp368_);
						_tmp370_ = _tmp369_;
						_tmp371_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp370_);
						_g_free0 (cname);
						cname = _tmp371_;
					}
					_tmp372_ = cname;
					_tmp373_ = vala_ccode_identifier_new (_tmp372_);
					cfunc = (ValaCCodeExpression*) _tmp373_;
					_tmp375_ = prop;
					_tmp376_ = vala_property_get_is_abstract (_tmp375_);
					_tmp377_ = _tmp376_;
					if (_tmp377_) {
						_tmp374_ = TRUE;
					} else {
						ValaProperty* _tmp378_ = NULL;
						gboolean _tmp379_ = FALSE;
						gboolean _tmp380_ = FALSE;
						_tmp378_ = prop;
						_tmp379_ = vala_property_get_is_virtual (_tmp378_);
						_tmp380_ = _tmp379_;
						_tmp374_ = _tmp380_;
					}
					if (_tmp374_) {
						ValaProperty* _tmp381_ = NULL;
						ValaPropertyAccessor* _tmp382_ = NULL;
						ValaPropertyAccessor* _tmp383_ = NULL;
						ValaCCodeExpression* _tmp384_ = NULL;
						ValaObjectTypeSymbol* _tmp385_ = NULL;
						ValaCCodeExpression* _tmp386_ = NULL;
						_tmp381_ = prop;
						_tmp382_ = vala_property_get_set_accessor (_tmp381_);
						_tmp383_ = _tmp382_;
						_tmp384_ = cfunc;
						_tmp385_ = base_type;
						_tmp386_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp383_, _tmp384_, _tmp385_);
						_vala_ccode_node_unref0 (cfunc);
						cfunc = _tmp386_;
					}
					_tmp387_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp388_ = _tmp387_;
					_tmp389_ = ciface;
					_tmp390_ = prop;
					_tmp391_ = vala_symbol_get_name ((ValaSymbol*) _tmp390_);
					_tmp392_ = _tmp391_;
					_tmp393_ = g_strdup_printf ("set_%s", _tmp392_);
					_tmp394_ = _tmp393_;
					_tmp395_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp389_, _tmp394_);
					_tmp396_ = _tmp395_;
					_tmp397_ = cfunc;
					vala_ccode_function_add_assignment (_tmp388_, (ValaCCodeExpression*) _tmp396_, _tmp397_);
					_vala_ccode_node_unref0 (_tmp396_);
					_g_free0 (_tmp394_);
					_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* _prop_list = NULL;
		ValaInterface* _tmp398_ = NULL;
		ValaList* _tmp399_ = NULL;
		gint _prop_size = 0;
		ValaList* _tmp400_ = NULL;
		gint _tmp401_ = 0;
		gint _tmp402_ = 0;
		gint _prop_index = 0;
		_tmp398_ = iface;
		_tmp399_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp398_);
		_prop_list = _tmp399_;
		_tmp400_ = _prop_list;
		_tmp401_ = vala_collection_get_size ((ValaCollection*) _tmp400_);
		_tmp402_ = _tmp401_;
		_prop_size = _tmp402_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp403_ = 0;
			gint _tmp404_ = 0;
			gint _tmp405_ = 0;
			ValaProperty* prop = NULL;
			ValaList* _tmp406_ = NULL;
			gint _tmp407_ = 0;
			gpointer _tmp408_ = NULL;
			ValaProperty* _tmp409_ = NULL;
			gboolean _tmp410_ = FALSE;
			gboolean _tmp411_ = FALSE;
			ValaProperty* cl_prop = NULL;
			ValaClass* base_class = NULL;
			ValaClass* _tmp412_ = NULL;
			ValaClass* _tmp413_ = NULL;
			gboolean _tmp429_ = FALSE;
			ValaClass* _tmp430_ = NULL;
			_tmp403_ = _prop_index;
			_prop_index = _tmp403_ + 1;
			_tmp404_ = _prop_index;
			_tmp405_ = _prop_size;
			if (!(_tmp404_ < _tmp405_)) {
				break;
			}
			_tmp406_ = _prop_list;
			_tmp407_ = _prop_index;
			_tmp408_ = vala_list_get (_tmp406_, _tmp407_);
			prop = (ValaProperty*) _tmp408_;
			_tmp409_ = prop;
			_tmp410_ = vala_property_get_is_abstract (_tmp409_);
			_tmp411_ = _tmp410_;
			if (!_tmp411_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			cl_prop = NULL;
			_tmp412_ = cl;
			_tmp413_ = _vala_code_node_ref0 (_tmp412_);
			base_class = _tmp413_;
			while (TRUE) {
				gboolean _tmp414_ = FALSE;
				ValaClass* _tmp415_ = NULL;
				ValaClass* _tmp417_ = NULL;
				ValaScope* _tmp418_ = NULL;
				ValaScope* _tmp419_ = NULL;
				ValaProperty* _tmp420_ = NULL;
				const gchar* _tmp421_ = NULL;
				const gchar* _tmp422_ = NULL;
				ValaSymbol* _tmp423_ = NULL;
				ValaProperty* _tmp424_ = NULL;
				ValaClass* _tmp425_ = NULL;
				ValaClass* _tmp426_ = NULL;
				ValaClass* _tmp427_ = NULL;
				ValaClass* _tmp428_ = NULL;
				_tmp415_ = base_class;
				if (_tmp415_ != NULL) {
					ValaProperty* _tmp416_ = NULL;
					_tmp416_ = cl_prop;
					_tmp414_ = _tmp416_ == NULL;
				} else {
					_tmp414_ = FALSE;
				}
				if (!_tmp414_) {
					break;
				}
				_tmp417_ = base_class;
				_tmp418_ = vala_symbol_get_scope ((ValaSymbol*) _tmp417_);
				_tmp419_ = _tmp418_;
				_tmp420_ = prop;
				_tmp421_ = vala_symbol_get_name ((ValaSymbol*) _tmp420_);
				_tmp422_ = _tmp421_;
				_tmp423_ = vala_scope_lookup (_tmp419_, _tmp422_);
				_tmp424_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp423_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp423_) : NULL;
				if (_tmp424_ == NULL) {
					_vala_code_node_unref0 (_tmp423_);
				}
				_vala_code_node_unref0 (cl_prop);
				cl_prop = _tmp424_;
				_tmp425_ = base_class;
				_tmp426_ = vala_class_get_base_class (_tmp425_);
				_tmp427_ = _tmp426_;
				_tmp428_ = _vala_code_node_ref0 (_tmp427_);
				_vala_code_node_unref0 (base_class);
				base_class = _tmp428_;
			}
			_tmp430_ = base_class;
			if (_tmp430_ != NULL) {
				ValaProperty* _tmp431_ = NULL;
				ValaSymbol* _tmp432_ = NULL;
				ValaSymbol* _tmp433_ = NULL;
				ValaClass* _tmp434_ = NULL;
				_tmp431_ = cl_prop;
				_tmp432_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp431_);
				_tmp433_ = _tmp432_;
				_tmp434_ = cl;
				_tmp429_ = _tmp433_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp434_, VALA_TYPE_SYMBOL, ValaSymbol);
			} else {
				_tmp429_ = FALSE;
			}
			if (_tmp429_) {
				ValaProperty* base_property = NULL;
				ValaProperty* _tmp435_ = NULL;
				ValaProperty* _tmp436_ = NULL;
				ValaProperty* _tmp437_ = NULL;
				ValaProperty* _tmp438_ = NULL;
				ValaProperty* _tmp439_ = NULL;
				ValaCCodeIdentifier* ciface = NULL;
				ValaCCodeIdentifier* _tmp451_ = NULL;
				ValaProperty* _tmp452_ = NULL;
				ValaPropertyAccessor* _tmp453_ = NULL;
				ValaPropertyAccessor* _tmp454_ = NULL;
				ValaProperty* _tmp482_ = NULL;
				ValaPropertyAccessor* _tmp483_ = NULL;
				ValaPropertyAccessor* _tmp484_ = NULL;
				_tmp435_ = cl_prop;
				_tmp436_ = _vala_code_node_ref0 (_tmp435_);
				base_property = _tmp436_;
				_tmp437_ = cl_prop;
				_tmp438_ = vala_property_get_base_property (_tmp437_);
				_tmp439_ = _tmp438_;
				if (_tmp439_ != NULL) {
					ValaProperty* _tmp440_ = NULL;
					ValaProperty* _tmp441_ = NULL;
					ValaProperty* _tmp442_ = NULL;
					ValaProperty* _tmp443_ = NULL;
					_tmp440_ = cl_prop;
					_tmp441_ = vala_property_get_base_property (_tmp440_);
					_tmp442_ = _tmp441_;
					_tmp443_ = _vala_code_node_ref0 (_tmp442_);
					_vala_code_node_unref0 (base_property);
					base_property = _tmp443_;
				} else {
					ValaProperty* _tmp444_ = NULL;
					ValaProperty* _tmp445_ = NULL;
					ValaProperty* _tmp446_ = NULL;
					_tmp444_ = cl_prop;
					_tmp445_ = vala_property_get_base_interface_property (_tmp444_);
					_tmp446_ = _tmp445_;
					if (_tmp446_ != NULL) {
						ValaProperty* _tmp447_ = NULL;
						ValaProperty* _tmp448_ = NULL;
						ValaProperty* _tmp449_ = NULL;
						ValaProperty* _tmp450_ = NULL;
						_tmp447_ = cl_prop;
						_tmp448_ = vala_property_get_base_interface_property (_tmp447_);
						_tmp449_ = _tmp448_;
						_tmp450_ = _vala_code_node_ref0 (_tmp449_);
						_vala_code_node_unref0 (base_property);
						base_property = _tmp450_;
					}
				}
				_tmp451_ = vala_ccode_identifier_new ("iface");
				ciface = _tmp451_;
				_tmp452_ = base_property;
				_tmp453_ = vala_property_get_get_accessor (_tmp452_);
				_tmp454_ = _tmp453_;
				if (_tmp454_ != NULL) {
					ValaProperty* _tmp455_ = NULL;
					ValaPropertyAccessor* _tmp456_ = NULL;
					ValaPropertyAccessor* _tmp457_ = NULL;
					ValaCCodeFile* _tmp458_ = NULL;
					gchar* cname = NULL;
					ValaProperty* _tmp459_ = NULL;
					ValaPropertyAccessor* _tmp460_ = NULL;
					ValaPropertyAccessor* _tmp461_ = NULL;
					gchar* _tmp462_ = NULL;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp463_ = NULL;
					ValaCCodeIdentifier* _tmp464_ = NULL;
					ValaProperty* _tmp465_ = NULL;
					ValaPropertyAccessor* _tmp466_ = NULL;
					ValaPropertyAccessor* _tmp467_ = NULL;
					ValaCCodeExpression* _tmp468_ = NULL;
					ValaInterface* _tmp469_ = NULL;
					ValaCCodeExpression* _tmp470_ = NULL;
					ValaCCodeFunction* _tmp471_ = NULL;
					ValaCCodeFunction* _tmp472_ = NULL;
					ValaCCodeIdentifier* _tmp473_ = NULL;
					ValaProperty* _tmp474_ = NULL;
					const gchar* _tmp475_ = NULL;
					const gchar* _tmp476_ = NULL;
					gchar* _tmp477_ = NULL;
					gchar* _tmp478_ = NULL;
					ValaCCodeMemberAccess* _tmp479_ = NULL;
					ValaCCodeMemberAccess* _tmp480_ = NULL;
					ValaCCodeExpression* _tmp481_ = NULL;
					_tmp455_ = base_property;
					_tmp456_ = vala_property_get_get_accessor (_tmp455_);
					_tmp457_ = _tmp456_;
					_tmp458_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp457_, _tmp458_);
					_tmp459_ = base_property;
					_tmp460_ = vala_property_get_get_accessor (_tmp459_);
					_tmp461_ = _tmp460_;
					_tmp462_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp461_);
					cname = _tmp462_;
					_tmp463_ = cname;
					_tmp464_ = vala_ccode_identifier_new (_tmp463_);
					cfunc = (ValaCCodeExpression*) _tmp464_;
					_tmp465_ = prop;
					_tmp466_ = vala_property_get_get_accessor (_tmp465_);
					_tmp467_ = _tmp466_;
					_tmp468_ = cfunc;
					_tmp469_ = iface;
					_tmp470_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp467_, _tmp468_, (ValaObjectTypeSymbol*) _tmp469_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp470_;
					_tmp471_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp472_ = _tmp471_;
					_tmp473_ = ciface;
					_tmp474_ = prop;
					_tmp475_ = vala_symbol_get_name ((ValaSymbol*) _tmp474_);
					_tmp476_ = _tmp475_;
					_tmp477_ = g_strdup_printf ("get_%s", _tmp476_);
					_tmp478_ = _tmp477_;
					_tmp479_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp473_, _tmp478_);
					_tmp480_ = _tmp479_;
					_tmp481_ = cfunc;
					vala_ccode_function_add_assignment (_tmp472_, (ValaCCodeExpression*) _tmp480_, _tmp481_);
					_vala_ccode_node_unref0 (_tmp480_);
					_g_free0 (_tmp478_);
					_vala_ccode_node_unref0 (cfunc);
					_g_free0 (cname);
				}
				_tmp482_ = base_property;
				_tmp483_ = vala_property_get_set_accessor (_tmp482_);
				_tmp484_ = _tmp483_;
				if (_tmp484_ != NULL) {
					ValaProperty* _tmp485_ = NULL;
					ValaPropertyAccessor* _tmp486_ = NULL;
					ValaPropertyAccessor* _tmp487_ = NULL;
					ValaCCodeFile* _tmp488_ = NULL;
					gchar* cname = NULL;
					ValaProperty* _tmp489_ = NULL;
					ValaPropertyAccessor* _tmp490_ = NULL;
					ValaPropertyAccessor* _tmp491_ = NULL;
					gchar* _tmp492_ = NULL;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp493_ = NULL;
					ValaCCodeIdentifier* _tmp494_ = NULL;
					ValaProperty* _tmp495_ = NULL;
					ValaPropertyAccessor* _tmp496_ = NULL;
					ValaPropertyAccessor* _tmp497_ = NULL;
					ValaCCodeExpression* _tmp498_ = NULL;
					ValaInterface* _tmp499_ = NULL;
					ValaCCodeExpression* _tmp500_ = NULL;
					ValaCCodeFunction* _tmp501_ = NULL;
					ValaCCodeFunction* _tmp502_ = NULL;
					ValaCCodeIdentifier* _tmp503_ = NULL;
					ValaProperty* _tmp504_ = NULL;
					const gchar* _tmp505_ = NULL;
					const gchar* _tmp506_ = NULL;
					gchar* _tmp507_ = NULL;
					gchar* _tmp508_ = NULL;
					ValaCCodeMemberAccess* _tmp509_ = NULL;
					ValaCCodeMemberAccess* _tmp510_ = NULL;
					ValaCCodeExpression* _tmp511_ = NULL;
					_tmp485_ = base_property;
					_tmp486_ = vala_property_get_set_accessor (_tmp485_);
					_tmp487_ = _tmp486_;
					_tmp488_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp487_, _tmp488_);
					_tmp489_ = base_property;
					_tmp490_ = vala_property_get_set_accessor (_tmp489_);
					_tmp491_ = _tmp490_;
					_tmp492_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp491_);
					cname = _tmp492_;
					_tmp493_ = cname;
					_tmp494_ = vala_ccode_identifier_new (_tmp493_);
					cfunc = (ValaCCodeExpression*) _tmp494_;
					_tmp495_ = prop;
					_tmp496_ = vala_property_get_set_accessor (_tmp495_);
					_tmp497_ = _tmp496_;
					_tmp498_ = cfunc;
					_tmp499_ = iface;
					_tmp500_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp497_, _tmp498_, (ValaObjectTypeSymbol*) _tmp499_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp500_;
					_tmp501_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp502_ = _tmp501_;
					_tmp503_ = ciface;
					_tmp504_ = prop;
					_tmp505_ = vala_symbol_get_name ((ValaSymbol*) _tmp504_);
					_tmp506_ = _tmp505_;
					_tmp507_ = g_strdup_printf ("set_%s", _tmp506_);
					_tmp508_ = _tmp507_;
					_tmp509_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp503_, _tmp508_);
					_tmp510_ = _tmp509_;
					_tmp511_ = cfunc;
					vala_ccode_function_add_assignment (_tmp502_, (ValaCCodeExpression*) _tmp510_, _tmp511_);
					_vala_ccode_node_unref0 (_tmp510_);
					_g_free0 (_tmp508_);
					_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);
	_tmp512_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp513_ = iface_init;
	vala_ccode_file_add_function (_tmp512_, _tmp513_);
	_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;
	ValaPropertyAccessor* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	ValaCCodeExpression* _tmp51_ = NULL;
	const gchar* _tmp52_ = NULL;
	ValaCCodeCastExpression* _tmp53_ = 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_ = acc;
	_tmp2_ = vala_property_accessor_get_readable (_tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_) {
		ValaPropertyAccessor* _tmp4_ = NULL;
		ValaDataType* _tmp5_ = NULL;
		ValaDataType* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp4_ = acc;
		_tmp5_ = vala_property_accessor_get_value_type (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp7_ = vala_data_type_is_real_non_null_struct_type (_tmp6_);
		_tmp0_ = _tmp7_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		ValaObjectTypeSymbol* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
		gchar* _tmp10_ = NULL;
		ValaPropertyAccessor* _tmp11_ = NULL;
		ValaDataType* _tmp12_ = NULL;
		ValaDataType* _tmp13_ = NULL;
		gchar* _tmp14_ = NULL;
		gchar* _tmp15_ = NULL;
		gchar* _tmp16_ = NULL;
		_tmp8_ = base_type;
		_tmp9_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = acc;
		_tmp12_ = vala_property_accessor_get_value_type (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp10_, _tmp15_);
		_g_free0 (cast);
		cast = _tmp16_;
		_g_free0 (_tmp15_);
		_g_free0 (_tmp10_);
	} else {
		ValaPropertyAccessor* _tmp17_ = NULL;
		gboolean _tmp18_ = FALSE;
		gboolean _tmp19_ = FALSE;
		_tmp17_ = acc;
		_tmp18_ = vala_property_accessor_get_readable (_tmp17_);
		_tmp19_ = _tmp18_;
		if (_tmp19_) {
			ValaPropertyAccessor* _tmp20_ = NULL;
			ValaDataType* _tmp21_ = NULL;
			ValaDataType* _tmp22_ = NULL;
			gchar* _tmp23_ = NULL;
			gchar* _tmp24_ = NULL;
			ValaObjectTypeSymbol* _tmp25_ = NULL;
			gchar* _tmp26_ = NULL;
			gchar* _tmp27_ = NULL;
			gchar* _tmp28_ = NULL;
			_tmp20_ = acc;
			_tmp21_ = vala_property_accessor_get_value_type (_tmp20_);
			_tmp22_ = _tmp21_;
			_tmp23_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp22_);
			_tmp24_ = _tmp23_;
			_tmp25_ = base_type;
			_tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = g_strdup_printf ("%s (*) (%s *)", _tmp24_, _tmp27_);
			_g_free0 (cast);
			cast = _tmp28_;
			_g_free0 (_tmp27_);
			_g_free0 (_tmp24_);
		} else {
			ValaPropertyAccessor* _tmp29_ = NULL;
			ValaDataType* _tmp30_ = NULL;
			ValaDataType* _tmp31_ = NULL;
			gboolean _tmp32_ = FALSE;
			_tmp29_ = acc;
			_tmp30_ = vala_property_accessor_get_value_type (_tmp29_);
			_tmp31_ = _tmp30_;
			_tmp32_ = vala_data_type_is_real_non_null_struct_type (_tmp31_);
			if (_tmp32_) {
				ValaObjectTypeSymbol* _tmp33_ = NULL;
				gchar* _tmp34_ = NULL;
				gchar* _tmp35_ = NULL;
				ValaPropertyAccessor* _tmp36_ = NULL;
				ValaDataType* _tmp37_ = NULL;
				ValaDataType* _tmp38_ = NULL;
				gchar* _tmp39_ = NULL;
				gchar* _tmp40_ = NULL;
				gchar* _tmp41_ = NULL;
				_tmp33_ = base_type;
				_tmp34_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp33_);
				_tmp35_ = _tmp34_;
				_tmp36_ = acc;
				_tmp37_ = vala_property_accessor_get_value_type (_tmp36_);
				_tmp38_ = _tmp37_;
				_tmp39_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp38_);
				_tmp40_ = _tmp39_;
				_tmp41_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp35_, _tmp40_);
				_g_free0 (cast);
				cast = _tmp41_;
				_g_free0 (_tmp40_);
				_g_free0 (_tmp35_);
			} else {
				ValaObjectTypeSymbol* _tmp42_ = NULL;
				gchar* _tmp43_ = NULL;
				gchar* _tmp44_ = NULL;
				ValaPropertyAccessor* _tmp45_ = NULL;
				ValaDataType* _tmp46_ = NULL;
				ValaDataType* _tmp47_ = NULL;
				gchar* _tmp48_ = NULL;
				gchar* _tmp49_ = NULL;
				gchar* _tmp50_ = NULL;
				_tmp42_ = base_type;
				_tmp43_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp42_);
				_tmp44_ = _tmp43_;
				_tmp45_ = acc;
				_tmp46_ = vala_property_accessor_get_value_type (_tmp45_);
				_tmp47_ = _tmp46_;
				_tmp48_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp47_);
				_tmp49_ = _tmp48_;
				_tmp50_ = g_strdup_printf ("void (*) (%s *, %s)", _tmp44_, _tmp49_);
				_g_free0 (cast);
				cast = _tmp50_;
				_g_free0 (_tmp49_);
				_g_free0 (_tmp44_);
			}
		}
	}
	_tmp51_ = cfunc;
	_tmp52_ = cast;
	_tmp53_ = vala_ccode_cast_expression_new (_tmp51_, _tmp52_);
	result = (ValaCCodeExpression*) _tmp53_;
	_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;
	gchar* cast = NULL;
	ValaMethod* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	ValaDataType* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	gchar* cast_args = NULL;
	ValaObjectTypeSymbol* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	ValaCCodeFunctionDeclarator* vdeclarator = NULL;
	ValaMethod* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp19_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp20_ = NULL;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp21_ = NULL;
	GEqualFunc _tmp22_ = NULL;
	GEqualFunc _tmp23_ = NULL;
	ValaHashMap* _tmp24_ = NULL;
	ValaMethod* _tmp25_ = NULL;
	ValaCCodeFile* _tmp26_ = NULL;
	ValaHashMap* _tmp27_ = NULL;
	ValaCCodeFunction* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeFunctionDeclarator* _tmp30_ = NULL;
	gint last_pos = 0;
	gint min_pos = 0;
	const gchar* _tmp66_ = NULL;
	const gchar* _tmp67_ = NULL;
	gchar* _tmp68_ = NULL;
	gchar* _tmp69_ = NULL;
	gchar* _tmp70_ = NULL;
	gchar* _tmp71_ = NULL;
	gchar* _tmp72_ = NULL;
	ValaCCodeExpression* _tmp73_ = NULL;
	const gchar* _tmp74_ = NULL;
	ValaCCodeCastExpression* _tmp75_ = 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_ = m;
	_tmp1_ = vala_method_get_return_type (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_is_real_non_null_struct_type (_tmp2_);
	if (_tmp3_) {
		gchar* _tmp4_ = NULL;
		_tmp4_ = g_strdup ("void (*)");
		_g_free0 (cast);
		cast = _tmp4_;
	} else {
		ValaMethod* _tmp5_ = NULL;
		ValaDataType* _tmp6_ = NULL;
		ValaDataType* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
		gchar* _tmp10_ = NULL;
		_tmp5_ = m;
		_tmp6_ = vala_method_get_return_type (_tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = g_strconcat (_tmp9_, " (*)", NULL);
		_g_free0 (cast);
		cast = _tmp10_;
		_g_free0 (_tmp9_);
	}
	_tmp11_ = base_type;
	_tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strconcat (_tmp13_, "*", NULL);
	_tmp15_ = _tmp14_;
	_g_free0 (_tmp13_);
	cast_args = _tmp15_;
	_tmp16_ = m;
	_tmp17_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_function_declarator_new (_tmp18_);
	_tmp20_ = _tmp19_;
	_g_free0 (_tmp18_);
	vdeclarator = _tmp20_;
	_tmp21_ = g_direct_hash;
	_tmp22_ = g_direct_equal;
	_tmp23_ = g_direct_equal;
	_tmp24_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp21_, _tmp22_, _tmp23_);
	cparam_map = _tmp24_;
	_tmp25_ = m;
	_tmp26_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp27_ = cparam_map;
	_tmp28_ = vala_ccode_function_new ("fake", "void");
	_tmp29_ = _tmp28_;
	_tmp30_ = vdeclarator;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp25_, _tmp26_, (ValaMap*) _tmp27_, _tmp29_, _tmp30_, NULL, NULL, 3);
	_vala_ccode_node_unref0 (_tmp29_);
	last_pos = -1;
	while (TRUE) {
		gint _tmp48_ = 0;
		gint _tmp65_ = 0;
		min_pos = -1;
		{
			ValaIterator* _pos_it = NULL;
			ValaHashMap* _tmp31_ = NULL;
			ValaSet* _tmp32_ = NULL;
			ValaSet* _tmp33_ = NULL;
			ValaIterator* _tmp34_ = NULL;
			ValaIterator* _tmp35_ = NULL;
			_tmp31_ = cparam_map;
			_tmp32_ = vala_map_get_keys ((ValaMap*) _tmp31_);
			_tmp33_ = _tmp32_;
			_tmp34_ = vala_iterable_iterator ((ValaIterable*) _tmp33_);
			_tmp35_ = _tmp34_;
			_vala_iterable_unref0 (_tmp33_);
			_pos_it = _tmp35_;
			while (TRUE) {
				ValaIterator* _tmp36_ = NULL;
				gboolean _tmp37_ = FALSE;
				gint pos = 0;
				ValaIterator* _tmp38_ = NULL;
				gpointer _tmp39_ = NULL;
				gboolean _tmp40_ = FALSE;
				gint _tmp41_ = 0;
				gint _tmp42_ = 0;
				_tmp36_ = _pos_it;
				_tmp37_ = vala_iterator_next (_tmp36_);
				if (!_tmp37_) {
					break;
				}
				_tmp38_ = _pos_it;
				_tmp39_ = vala_iterator_get (_tmp38_);
				pos = (gint) ((gintptr) _tmp39_);
				_tmp41_ = pos;
				_tmp42_ = last_pos;
				if (_tmp41_ > _tmp42_) {
					gboolean _tmp43_ = FALSE;
					gint _tmp44_ = 0;
					_tmp44_ = min_pos;
					if (_tmp44_ == -1) {
						_tmp43_ = TRUE;
					} else {
						gint _tmp45_ = 0;
						gint _tmp46_ = 0;
						_tmp45_ = pos;
						_tmp46_ = min_pos;
						_tmp43_ = _tmp45_ < _tmp46_;
					}
					_tmp40_ = _tmp43_;
				} else {
					_tmp40_ = FALSE;
				}
				if (_tmp40_) {
					gint _tmp47_ = 0;
					_tmp47_ = pos;
					min_pos = _tmp47_;
				}
			}
			_vala_iterator_unref0 (_pos_it);
		}
		_tmp48_ = last_pos;
		if (_tmp48_ != -1) {
			gint _tmp49_ = 0;
			ValaCCodeParameter* tmp = NULL;
			ValaHashMap* _tmp50_ = NULL;
			gint _tmp51_ = 0;
			gpointer _tmp52_ = NULL;
			ValaCCodeParameter* _tmp53_ = NULL;
			gboolean _tmp54_ = FALSE;
			gboolean _tmp55_ = FALSE;
			_tmp49_ = min_pos;
			if (_tmp49_ == -1) {
				break;
			}
			_tmp50_ = cparam_map;
			_tmp51_ = min_pos;
			_tmp52_ = vala_map_get ((ValaMap*) _tmp50_, (gpointer) ((gintptr) _tmp51_));
			tmp = (ValaCCodeParameter*) _tmp52_;
			_tmp53_ = tmp;
			_tmp54_ = vala_ccode_parameter_get_ellipsis (_tmp53_);
			_tmp55_ = _tmp54_;
			if (_tmp55_) {
				const gchar* _tmp56_ = NULL;
				gchar* _tmp57_ = NULL;
				_tmp56_ = cast_args;
				_tmp57_ = g_strconcat (_tmp56_, ", " " ...", NULL);
				_g_free0 (cast_args);
				cast_args = _tmp57_;
			} else {
				const gchar* _tmp58_ = NULL;
				ValaCCodeParameter* _tmp59_ = NULL;
				const gchar* _tmp60_ = NULL;
				const gchar* _tmp61_ = NULL;
				gchar* _tmp62_ = NULL;
				gchar* _tmp63_ = NULL;
				gchar* _tmp64_ = NULL;
				_tmp58_ = cast_args;
				_tmp59_ = tmp;
				_tmp60_ = vala_ccode_parameter_get_type_name (_tmp59_);
				_tmp61_ = _tmp60_;
				_tmp62_ = g_strconcat (", ", _tmp61_, NULL);
				_tmp63_ = _tmp62_;
				_tmp64_ = g_strconcat (_tmp58_, _tmp63_, NULL);
				_g_free0 (cast_args);
				cast_args = _tmp64_;
				_g_free0 (_tmp63_);
			}
			_vala_ccode_node_unref0 (tmp);
		}
		_tmp65_ = min_pos;
		last_pos = _tmp65_;
	}
	_tmp66_ = cast;
	_tmp67_ = cast_args;
	_tmp68_ = g_strconcat ("(", _tmp67_, NULL);
	_tmp69_ = _tmp68_;
	_tmp70_ = g_strconcat (_tmp69_, ")", NULL);
	_tmp71_ = _tmp70_;
	_tmp72_ = g_strconcat (_tmp66_, _tmp71_, NULL);
	_g_free0 (cast);
	cast = _tmp72_;
	_g_free0 (_tmp71_);
	_g_free0 (_tmp69_);
	_tmp73_ = cfunc;
	_tmp74_ = cast;
	_tmp75_ = vala_ccode_cast_expression_new (_tmp73_, _tmp74_);
	result = (ValaCCodeExpression*) _tmp75_;
	_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) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaCCodeFunction* func = NULL;
	ValaClass* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeFunction* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaClass* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	ValaCCodeParameter* _tmp14_ = NULL;
	ValaCCodeParameter* _tmp15_ = NULL;
	ValaCCodeFunction* _tmp16_ = NULL;
	ValaCCodeFunction* _tmp17_ = NULL;
	ValaClass* _tmp18_ = NULL;
	gboolean _tmp19_ = FALSE;
	gboolean _tmp20_ = FALSE;
	gboolean _tmp23_ = FALSE;
	ValaClass* _tmp24_ = NULL;
	gboolean _tmp25_ = FALSE;
	gboolean _tmp26_ = FALSE;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_instance_init", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	func = _tmp7_;
	_tmp8_ = func;
	_tmp9_ = cl;
	_tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strdup_printf ("%s *", _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_g_free0 (_tmp13_);
	_g_free0 (_tmp11_);
	_tmp16_ = func;
	vala_ccode_function_set_modifiers (_tmp16_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp17_ = func;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	_tmp18_ = cl;
	_tmp19_ = vala_class_get_is_compact (_tmp18_);
	_tmp20_ = _tmp19_;
	if (_tmp20_) {
		ValaCCodeFile* _tmp21_ = NULL;
		ValaCCodeFunction* _tmp22_ = NULL;
		_tmp21_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp22_ = func;
		vala_ccode_file_add_function_declaration (_tmp21_, _tmp22_);
	}
	_tmp24_ = cl;
	_tmp25_ = vala_class_get_is_compact (_tmp24_);
	_tmp26_ = _tmp25_;
	if (!_tmp26_) {
		gboolean _tmp27_ = FALSE;
		ValaClass* _tmp28_ = NULL;
		gboolean _tmp29_ = FALSE;
		gboolean _tmp30_ = FALSE;
		_tmp28_ = cl;
		_tmp29_ = vala_class_get_has_private_fields (_tmp28_);
		_tmp30_ = _tmp29_;
		if (_tmp30_) {
			_tmp27_ = TRUE;
		} else {
			ValaClass* _tmp31_ = NULL;
			ValaList* _tmp32_ = NULL;
			ValaList* _tmp33_ = NULL;
			gint _tmp34_ = 0;
			gint _tmp35_ = 0;
			_tmp31_ = cl;
			_tmp32_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp31_);
			_tmp33_ = _tmp32_;
			_tmp34_ = vala_collection_get_size ((ValaCollection*) _tmp33_);
			_tmp35_ = _tmp34_;
			_tmp27_ = _tmp35_ > 0;
			_vala_iterable_unref0 (_tmp33_);
		}
		_tmp23_ = _tmp27_;
	} else {
		_tmp23_ = FALSE;
	}
	if (_tmp23_) {
		ValaCCodeFunctionCall* ccall = NULL;
		ValaClass* _tmp36_ = NULL;
		gchar* _tmp37_ = NULL;
		gchar* _tmp38_ = NULL;
		gchar* _tmp39_ = NULL;
		gchar* _tmp40_ = NULL;
		ValaCCodeIdentifier* _tmp41_ = NULL;
		ValaCCodeIdentifier* _tmp42_ = NULL;
		ValaCCodeFunctionCall* _tmp43_ = NULL;
		ValaCCodeFunctionCall* _tmp44_ = NULL;
		ValaCCodeFunctionCall* _tmp45_ = NULL;
		ValaCCodeIdentifier* _tmp46_ = NULL;
		ValaCCodeIdentifier* _tmp47_ = NULL;
		ValaCCodeFunction* _tmp48_ = NULL;
		ValaCCodeIdentifier* _tmp49_ = NULL;
		ValaCCodeIdentifier* _tmp50_ = NULL;
		ValaCCodeMemberAccess* _tmp51_ = NULL;
		ValaCCodeMemberAccess* _tmp52_ = NULL;
		ValaCCodeFunctionCall* _tmp53_ = NULL;
		_tmp36_ = cl;
		_tmp37_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp36_, NULL);
		_tmp38_ = _tmp37_;
		_tmp39_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp38_);
		_tmp40_ = _tmp39_;
		_tmp41_ = vala_ccode_identifier_new (_tmp40_);
		_tmp42_ = _tmp41_;
		_tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
		_tmp44_ = _tmp43_;
		_vala_ccode_node_unref0 (_tmp42_);
		_g_free0 (_tmp40_);
		_g_free0 (_tmp38_);
		ccall = _tmp44_;
		_tmp45_ = ccall;
		_tmp46_ = vala_ccode_identifier_new ("self");
		_tmp47_ = _tmp46_;
		vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp47_);
		_vala_ccode_node_unref0 (_tmp47_);
		_tmp48_ = func;
		_tmp49_ = vala_ccode_identifier_new ("self");
		_tmp50_ = _tmp49_;
		_tmp51_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp50_, "priv");
		_tmp52_ = _tmp51_;
		_tmp53_ = ccall;
		vala_ccode_function_add_assignment (_tmp48_, (ValaCCodeExpression*) _tmp52_, (ValaCCodeExpression*) _tmp53_);
		_vala_ccode_node_unref0 (_tmp52_);
		_vala_ccode_node_unref0 (_tmp50_);
		_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) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaClass* _tmp1_ = NULL;
	ValaCCodeFile* _tmp2_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp3_ = NULL;
	ValaCCodeFunction* _tmp4_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	vala_gtype_module_end_instance_init (self, _tmp1_);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_tmp2_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp3_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	_tmp4_ = _tmp3_->ccode;
	vala_ccode_file_add_function (_tmp2_, _tmp4_);
}


static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeFunction* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaCCodeFunction* _tmp9_ = NULL;
	ValaClass* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	ValaCCodeParameter* _tmp15_ = NULL;
	ValaCCodeParameter* _tmp16_ = NULL;
	ValaCCodeFunction* _tmp17_ = NULL;
	ValaClass* _tmp18_ = NULL;
	ValaDestructor* _tmp19_ = NULL;
	ValaDestructor* _tmp20_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_class_finalize", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_function_set_modifiers (_tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = cl;
	_tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strconcat (_tmp12_, "Class *", NULL);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_parameter_new ("klass", _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_g_free0 (_tmp14_);
	_g_free0 (_tmp12_);
	_tmp17_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	_tmp18_ = cl;
	_tmp19_ = vala_class_get_static_destructor (_tmp18_);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		ValaClass* _tmp21_ = NULL;
		ValaDestructor* _tmp22_ = NULL;
		ValaDestructor* _tmp23_ = NULL;
		ValaBlock* _tmp24_ = NULL;
		ValaBlock* _tmp25_ = NULL;
		_tmp21_ = cl;
		_tmp22_ = vala_class_get_static_destructor (_tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp23_);
		_tmp25_ = _tmp24_;
		vala_code_node_emit ((ValaCodeNode*) _tmp25_, (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) {
	ValaCCodeFile* _tmp0_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp1_ = NULL;
	ValaCCodeFunction* _tmp2_ = NULL;
	ValaCCodeFile* _tmp3_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp1_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	_tmp2_ = _tmp1_->ccode;
	vala_ccode_file_add_function_declaration (_tmp0_, _tmp2_);
	_tmp3_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp4_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	_tmp5_ = _tmp4_->ccode;
	vala_ccode_file_add_function (_tmp3_, _tmp5_);
}


static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	ValaCCodeFunction* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaCCodeFunction* _tmp9_ = NULL;
	ValaClass* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	ValaCCodeParameter* _tmp15_ = NULL;
	ValaCCodeParameter* _tmp16_ = NULL;
	ValaCCodeFunction* _tmp17_ = NULL;
	ValaClass* _tmp18_ = NULL;
	ValaDestructor* _tmp19_ = NULL;
	ValaDestructor* _tmp20_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_base_finalize", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_function_set_modifiers (_tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = cl;
	_tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strconcat (_tmp12_, "Class *", NULL);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_parameter_new ("klass", _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_g_free0 (_tmp14_);
	_g_free0 (_tmp12_);
	_tmp17_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	_tmp18_ = cl;
	_tmp19_ = vala_class_get_class_destructor (_tmp18_);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		ValaClass* _tmp21_ = NULL;
		ValaDestructor* _tmp22_ = NULL;
		ValaDestructor* _tmp23_ = NULL;
		ValaBlock* _tmp24_ = NULL;
		ValaBlock* _tmp25_ = NULL;
		_tmp21_ = cl;
		_tmp22_ = vala_class_get_class_destructor (_tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp23_);
		_tmp25_ = _tmp24_;
		vala_code_node_emit ((ValaCodeNode*) _tmp25_, (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) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	ValaCCodeFile* _tmp1_ = NULL;
	ValaCCodeFunction* _tmp2_ = NULL;
	ValaCCodeFunction* _tmp3_ = NULL;
	ValaCCodeFile* _tmp4_ = NULL;
	ValaCCodeFunction* _tmp5_ = NULL;
	ValaCCodeFunction* _tmp6_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp2_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp3_ = _tmp2_;
	vala_ccode_file_add_function_declaration (_tmp1_, _tmp3_);
	_tmp4_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp6_ = _tmp5_;
	vala_ccode_file_add_function (_tmp4_, _tmp6_);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
}


static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
	gboolean is_gsource = FALSE;
	ValaClass* _tmp1_ = NULL;
	ValaClass* _tmp2_ = NULL;
	ValaClass* _tmp3_ = NULL;
	ValaClass* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	ValaClass* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	ValaClass* _tmp112_ = NULL;
	ValaDestructor* _tmp113_ = NULL;
	ValaDestructor* _tmp114_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_class_get_base_class (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = ((ValaCCodeBaseModule*) self)->gsource_type;
	is_gsource = _tmp3_ == _tmp4_;
	_tmp6_ = cl;
	_tmp7_ = vala_class_get_is_compact (_tmp6_);
	_tmp8_ = _tmp7_;
	if (!_tmp8_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp9_ = FALSE;
		_tmp9_ = is_gsource;
		_tmp5_ = _tmp9_;
	}
	if (_tmp5_) {
		ValaClass* fundamental_class = NULL;
		ValaClass* _tmp10_ = NULL;
		ValaClass* _tmp11_ = NULL;
		ValaCCodeFunction* func = NULL;
		ValaClass* _tmp19_ = NULL;
		gchar* _tmp20_ = NULL;
		gchar* _tmp21_ = NULL;
		gchar* _tmp22_ = NULL;
		gchar* _tmp23_ = NULL;
		ValaCCodeFunction* _tmp24_ = NULL;
		ValaCCodeFunction* _tmp25_ = NULL;
		ValaCCodeFunction* _tmp26_ = NULL;
		ValaClass* _tmp27_ = NULL;
		gchar* _tmp28_ = NULL;
		gchar* _tmp29_ = NULL;
		gchar* _tmp30_ = NULL;
		gchar* _tmp31_ = NULL;
		ValaCCodeParameter* _tmp32_ = NULL;
		ValaCCodeParameter* _tmp33_ = NULL;
		ValaCCodeFunction* _tmp34_ = NULL;
		ValaCCodeFunction* _tmp35_ = NULL;
		gboolean _tmp36_ = FALSE;
		ValaCCodeExpression* ccast = NULL;
		ValaClass* _tmp39_ = NULL;
		gboolean _tmp40_ = FALSE;
		gboolean _tmp41_ = FALSE;
		ValaCCodeFunction* _tmp54_ = NULL;
		ValaCCodeFunction* _tmp55_ = NULL;
		ValaClass* _tmp56_ = NULL;
		gchar* _tmp57_ = NULL;
		gchar* _tmp58_ = NULL;
		gchar* _tmp59_ = NULL;
		gchar* _tmp60_ = NULL;
		ValaCCodeVariableDeclarator* _tmp61_ = NULL;
		ValaCCodeVariableDeclarator* _tmp62_ = NULL;
		ValaCCodeFunction* _tmp63_ = NULL;
		ValaCCodeFunction* _tmp64_ = NULL;
		ValaCCodeIdentifier* _tmp65_ = NULL;
		ValaCCodeIdentifier* _tmp66_ = NULL;
		ValaCCodeExpression* _tmp67_ = NULL;
		gboolean _tmp68_ = FALSE;
		ValaClass* _tmp69_ = NULL;
		gboolean _tmp70_ = FALSE;
		gboolean _tmp71_ = FALSE;
		_tmp10_ = cl;
		_tmp11_ = _vala_code_node_ref0 (_tmp10_);
		fundamental_class = _tmp11_;
		while (TRUE) {
			ValaClass* _tmp12_ = NULL;
			ValaClass* _tmp13_ = NULL;
			ValaClass* _tmp14_ = NULL;
			ValaClass* _tmp15_ = NULL;
			ValaClass* _tmp16_ = NULL;
			ValaClass* _tmp17_ = NULL;
			ValaClass* _tmp18_ = NULL;
			_tmp12_ = fundamental_class;
			_tmp13_ = vala_class_get_base_class (_tmp12_);
			_tmp14_ = _tmp13_;
			if (!(_tmp14_ != NULL)) {
				break;
			}
			_tmp15_ = fundamental_class;
			_tmp16_ = vala_class_get_base_class (_tmp15_);
			_tmp17_ = _tmp16_;
			_tmp18_ = _vala_code_node_ref0 (_tmp17_);
			_vala_code_node_unref0 (fundamental_class);
			fundamental_class = _tmp18_;
		}
		_tmp19_ = cl;
		_tmp20_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp19_, NULL);
		_tmp21_ = _tmp20_;
		_tmp22_ = g_strdup_printf ("%s_finalize", _tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_ccode_function_new (_tmp23_, "void");
		_tmp25_ = _tmp24_;
		_g_free0 (_tmp23_);
		_g_free0 (_tmp21_);
		func = _tmp25_;
		_tmp26_ = func;
		_tmp27_ = fundamental_class;
		_tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = g_strconcat (_tmp29_, "*", NULL);
		_tmp31_ = _tmp30_;
		_tmp32_ = vala_ccode_parameter_new ("obj", _tmp31_);
		_tmp33_ = _tmp32_;
		vala_ccode_function_add_parameter (_tmp26_, _tmp33_);
		_vala_ccode_node_unref0 (_tmp33_);
		_g_free0 (_tmp31_);
		_g_free0 (_tmp29_);
		_tmp34_ = func;
		vala_ccode_function_set_modifiers (_tmp34_, VALA_CCODE_MODIFIERS_STATIC);
		_tmp35_ = func;
		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp35_);
		_tmp36_ = is_gsource;
		if (_tmp36_) {
			ValaCCodeFile* _tmp37_ = NULL;
			ValaCCodeFunction* _tmp38_ = NULL;
			_tmp37_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp38_ = func;
			vala_ccode_file_add_function_declaration (_tmp37_, _tmp38_);
		}
		_tmp39_ = cl;
		_tmp40_ = vala_class_get_is_compact (_tmp39_);
		_tmp41_ = _tmp40_;
		if (!_tmp41_) {
			ValaCCodeIdentifier* _tmp42_ = NULL;
			ValaCCodeIdentifier* _tmp43_ = NULL;
			ValaClass* _tmp44_ = NULL;
			ValaCCodeFunctionCall* _tmp45_ = NULL;
			_tmp42_ = vala_ccode_identifier_new ("obj");
			_tmp43_ = _tmp42_;
			_tmp44_ = cl;
			_tmp45_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp43_, (ValaTypeSymbol*) _tmp44_);
			_vala_ccode_node_unref0 (ccast);
			ccast = (ValaCCodeExpression*) _tmp45_;
			_vala_ccode_node_unref0 (_tmp43_);
		} else {
			ValaCCodeIdentifier* _tmp46_ = NULL;
			ValaCCodeIdentifier* _tmp47_ = NULL;
			ValaClass* _tmp48_ = NULL;
			gchar* _tmp49_ = NULL;
			gchar* _tmp50_ = NULL;
			gchar* _tmp51_ = NULL;
			gchar* _tmp52_ = NULL;
			ValaCCodeCastExpression* _tmp53_ = NULL;
			_tmp46_ = vala_ccode_identifier_new ("obj");
			_tmp47_ = _tmp46_;
			_tmp48_ = cl;
			_tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
			_tmp50_ = _tmp49_;
			_tmp51_ = g_strconcat (_tmp50_, "*", NULL);
			_tmp52_ = _tmp51_;
			_tmp53_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp47_, _tmp52_);
			_vala_ccode_node_unref0 (ccast);
			ccast = (ValaCCodeExpression*) _tmp53_;
			_g_free0 (_tmp52_);
			_g_free0 (_tmp50_);
			_vala_ccode_node_unref0 (_tmp47_);
		}
		_tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp55_ = _tmp54_;
		_tmp56_ = cl;
		_tmp57_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp56_);
		_tmp58_ = _tmp57_;
		_tmp59_ = g_strdup_printf ("%s *", _tmp58_);
		_tmp60_ = _tmp59_;
		_tmp61_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
		_tmp62_ = _tmp61_;
		vala_ccode_function_add_declaration (_tmp55_, _tmp60_, (ValaCCodeDeclarator*) _tmp62_, 0);
		_vala_ccode_node_unref0 (_tmp62_);
		_g_free0 (_tmp60_);
		_g_free0 (_tmp58_);
		_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp64_ = _tmp63_;
		_tmp65_ = vala_ccode_identifier_new ("self");
		_tmp66_ = _tmp65_;
		_tmp67_ = ccast;
		vala_ccode_function_add_assignment (_tmp64_, (ValaCCodeExpression*) _tmp66_, _tmp67_);
		_vala_ccode_node_unref0 (_tmp66_);
		_tmp69_ = cl;
		_tmp70_ = vala_class_get_is_compact (_tmp69_);
		_tmp71_ = _tmp70_;
		if (!_tmp71_) {
			ValaClass* _tmp72_ = NULL;
			ValaClass* _tmp73_ = NULL;
			ValaClass* _tmp74_ = NULL;
			_tmp72_ = cl;
			_tmp73_ = vala_class_get_base_class (_tmp72_);
			_tmp74_ = _tmp73_;
			_tmp68_ = _tmp74_ == NULL;
		} else {
			_tmp68_ = FALSE;
		}
		if (_tmp68_) {
			ValaCCodeFunctionCall* call = NULL;
			ValaCCodeIdentifier* _tmp75_ = NULL;
			ValaCCodeIdentifier* _tmp76_ = NULL;
			ValaCCodeFunctionCall* _tmp77_ = NULL;
			ValaCCodeFunctionCall* _tmp78_ = NULL;
			ValaCCodeFunctionCall* _tmp79_ = NULL;
			ValaCCodeIdentifier* _tmp80_ = NULL;
			ValaCCodeIdentifier* _tmp81_ = NULL;
			ValaCCodeFunction* _tmp82_ = NULL;
			ValaCCodeFunction* _tmp83_ = NULL;
			ValaCCodeFunctionCall* _tmp84_ = NULL;
			_tmp75_ = vala_ccode_identifier_new ("g_signal_handlers_destroy");
			_tmp76_ = _tmp75_;
			_tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
			_tmp78_ = _tmp77_;
			_vala_ccode_node_unref0 (_tmp76_);
			call = _tmp78_;
			_tmp79_ = call;
			_tmp80_ = vala_ccode_identifier_new ("self");
			_tmp81_ = _tmp80_;
			vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
			_vala_ccode_node_unref0 (_tmp81_);
			_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp83_ = _tmp82_;
			_tmp84_ = call;
			vala_ccode_function_add_expression (_tmp83_, (ValaCCodeExpression*) _tmp84_);
			_vala_ccode_node_unref0 (call);
		}
		_vala_ccode_node_unref0 (ccast);
		_vala_ccode_node_unref0 (func);
		_vala_code_node_unref0 (fundamental_class);
	} else {
		ValaCCodeFunction* function = NULL;
		ValaClass* _tmp85_ = NULL;
		gchar* _tmp86_ = NULL;
		gchar* _tmp87_ = NULL;
		gchar* _tmp88_ = NULL;
		gchar* _tmp89_ = NULL;
		ValaCCodeFunction* _tmp90_ = NULL;
		ValaCCodeFunction* _tmp91_ = NULL;
		ValaClass* _tmp92_ = NULL;
		gboolean _tmp93_ = FALSE;
		ValaCCodeFunction* _tmp103_ = NULL;
		ValaClass* _tmp104_ = NULL;
		gchar* _tmp105_ = NULL;
		gchar* _tmp106_ = NULL;
		gchar* _tmp107_ = NULL;
		gchar* _tmp108_ = NULL;
		ValaCCodeParameter* _tmp109_ = NULL;
		ValaCCodeParameter* _tmp110_ = NULL;
		ValaCCodeFunction* _tmp111_ = NULL;
		_tmp85_ = cl;
		_tmp86_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp85_);
		_tmp87_ = _tmp86_;
		_tmp88_ = g_strconcat (_tmp87_, "free", NULL);
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_function_new (_tmp89_, "void");
		_tmp91_ = _tmp90_;
		_g_free0 (_tmp89_);
		_g_free0 (_tmp87_);
		function = _tmp91_;
		_tmp92_ = cl;
		_tmp93_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp92_);
		if (_tmp93_) {
			ValaCCodeFunction* _tmp94_ = NULL;
			_tmp94_ = function;
			vala_ccode_function_set_modifiers (_tmp94_, VALA_CCODE_MODIFIERS_STATIC);
		} else {
			gboolean _tmp95_ = FALSE;
			ValaCodeContext* _tmp96_ = NULL;
			ValaCodeContext* _tmp97_ = NULL;
			gboolean _tmp98_ = FALSE;
			gboolean _tmp99_ = FALSE;
			_tmp96_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp97_ = _tmp96_;
			_tmp98_ = vala_code_context_get_hide_internal (_tmp97_);
			_tmp99_ = _tmp98_;
			if (_tmp99_) {
				ValaClass* _tmp100_ = NULL;
				gboolean _tmp101_ = FALSE;
				_tmp100_ = cl;
				_tmp101_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp100_);
				_tmp95_ = _tmp101_;
			} else {
				_tmp95_ = FALSE;
			}
			if (_tmp95_) {
				ValaCCodeFunction* _tmp102_ = NULL;
				_tmp102_ = function;
				vala_ccode_function_set_modifiers (_tmp102_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp103_ = function;
		_tmp104_ = cl;
		_tmp105_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp104_);
		_tmp106_ = _tmp105_;
		_tmp107_ = g_strconcat (_tmp106_, "*", NULL);
		_tmp108_ = _tmp107_;
		_tmp109_ = vala_ccode_parameter_new ("self", _tmp108_);
		_tmp110_ = _tmp109_;
		vala_ccode_function_add_parameter (_tmp103_, _tmp110_);
		_vala_ccode_node_unref0 (_tmp110_);
		_g_free0 (_tmp108_);
		_g_free0 (_tmp106_);
		_tmp111_ = function;
		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp111_);
		_vala_ccode_node_unref0 (function);
	}
	_tmp112_ = cl;
	_tmp113_ = vala_class_get_destructor (_tmp112_);
	_tmp114_ = _tmp113_;
	if (_tmp114_ != NULL) {
		ValaClass* _tmp115_ = NULL;
		ValaDestructor* _tmp116_ = NULL;
		ValaDestructor* _tmp117_ = NULL;
		ValaBlock* _tmp118_ = NULL;
		ValaBlock* _tmp119_ = NULL;
		gboolean _tmp120_ = FALSE;
		gboolean _tmp121_ = FALSE;
		gboolean _tmp128_ = FALSE;
		gboolean _tmp129_ = FALSE;
		_tmp115_ = cl;
		_tmp116_ = vala_class_get_destructor (_tmp115_);
		_tmp117_ = _tmp116_;
		_tmp118_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp117_);
		_tmp119_ = _tmp118_;
		vala_code_node_emit ((ValaCodeNode*) _tmp119_, (ValaCodeGenerator*) self);
		_tmp120_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
		_tmp121_ = _tmp120_;
		if (_tmp121_) {
			ValaCCodeFunction* _tmp122_ = NULL;
			ValaCCodeFunction* _tmp123_ = NULL;
			ValaCCodeConstant* _tmp124_ = NULL;
			ValaCCodeConstant* _tmp125_ = NULL;
			ValaCCodeVariableDeclarator* _tmp126_ = NULL;
			ValaCCodeVariableDeclarator* _tmp127_ = NULL;
			_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp123_ = _tmp122_;
			_tmp124_ = vala_ccode_constant_new ("NULL");
			_tmp125_ = _tmp124_;
			_tmp126_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp125_, NULL);
			_tmp127_ = _tmp126_;
			vala_ccode_function_add_declaration (_tmp123_, "GError *", (ValaCCodeDeclarator*) _tmp127_, 0);
			_vala_ccode_node_unref0 (_tmp127_);
			_vala_ccode_node_unref0 (_tmp125_);
		}
		_tmp128_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
		_tmp129_ = _tmp128_;
		if (_tmp129_) {
			ValaCCodeFunction* _tmp130_ = NULL;
			ValaCCodeFunction* _tmp131_ = NULL;
			_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp131_ = _tmp130_;
			vala_ccode_function_add_label (_tmp131_, "_return");
		}
	}
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
}


static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaClass* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	ValaCCodeFile* _tmp67_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp68_ = NULL;
	ValaCCodeFunction* _tmp69_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_class_get_is_compact (_tmp0_);
	_tmp2_ = _tmp1_;
	if (!_tmp2_) {
		ValaClass* fundamental_class = NULL;
		ValaClass* _tmp3_ = NULL;
		ValaClass* _tmp4_ = NULL;
		ValaClass* _tmp12_ = NULL;
		ValaClass* _tmp13_ = NULL;
		ValaClass* _tmp14_ = NULL;
		ValaCCodeFile* _tmp44_ = NULL;
		ValaCCodeBaseModuleEmitContext* _tmp45_ = NULL;
		ValaCCodeFunction* _tmp46_ = NULL;
		_tmp3_ = cl;
		_tmp4_ = _vala_code_node_ref0 (_tmp3_);
		fundamental_class = _tmp4_;
		while (TRUE) {
			ValaClass* _tmp5_ = NULL;
			ValaClass* _tmp6_ = NULL;
			ValaClass* _tmp7_ = NULL;
			ValaClass* _tmp8_ = NULL;
			ValaClass* _tmp9_ = NULL;
			ValaClass* _tmp10_ = NULL;
			ValaClass* _tmp11_ = NULL;
			_tmp5_ = fundamental_class;
			_tmp6_ = vala_class_get_base_class (_tmp5_);
			_tmp7_ = _tmp6_;
			if (!(_tmp7_ != NULL)) {
				break;
			}
			_tmp8_ = fundamental_class;
			_tmp9_ = vala_class_get_base_class (_tmp8_);
			_tmp10_ = _tmp9_;
			_tmp11_ = _vala_code_node_ref0 (_tmp10_);
			_vala_code_node_unref0 (fundamental_class);
			fundamental_class = _tmp11_;
		}
		_tmp12_ = cl;
		_tmp13_ = vala_class_get_base_class (_tmp12_);
		_tmp14_ = _tmp13_;
		if (_tmp14_ != NULL) {
			ValaCCodeFunctionCall* ccast = NULL;
			ValaClass* _tmp15_ = NULL;
			gchar* _tmp16_ = NULL;
			gchar* _tmp17_ = NULL;
			gchar* _tmp18_ = NULL;
			gchar* _tmp19_ = NULL;
			ValaCCodeIdentifier* _tmp20_ = NULL;
			ValaCCodeIdentifier* _tmp21_ = NULL;
			ValaCCodeFunctionCall* _tmp22_ = NULL;
			ValaCCodeFunctionCall* _tmp23_ = NULL;
			ValaCCodeFunctionCall* _tmp24_ = NULL;
			ValaClass* _tmp25_ = NULL;
			gchar* _tmp26_ = NULL;
			gchar* _tmp27_ = NULL;
			gchar* _tmp28_ = NULL;
			gchar* _tmp29_ = NULL;
			ValaCCodeIdentifier* _tmp30_ = NULL;
			ValaCCodeIdentifier* _tmp31_ = NULL;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeFunctionCall* _tmp32_ = NULL;
			ValaCCodeMemberAccess* _tmp33_ = NULL;
			ValaCCodeMemberAccess* _tmp34_ = NULL;
			ValaCCodeFunctionCall* _tmp35_ = NULL;
			ValaCCodeFunctionCall* _tmp36_ = NULL;
			ValaCCodeFunctionCall* _tmp37_ = NULL;
			ValaCCodeIdentifier* _tmp38_ = NULL;
			ValaCCodeIdentifier* _tmp39_ = NULL;
			ValaCCodeBaseModuleEmitContext* _tmp40_ = NULL;
			ValaCCodeFunction* _tmp41_ = NULL;
			ValaCCodeFunction* _tmp42_ = NULL;
			ValaCCodeFunctionCall* _tmp43_ = NULL;
			_tmp15_ = fundamental_class;
			_tmp16_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp15_, NULL);
			_tmp17_ = _tmp16_;
			_tmp18_ = g_strdup_printf ("%s_CLASS", _tmp17_);
			_tmp19_ = _tmp18_;
			_tmp20_ = vala_ccode_identifier_new (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
			_tmp23_ = _tmp22_;
			_vala_ccode_node_unref0 (_tmp21_);
			_g_free0 (_tmp19_);
			_g_free0 (_tmp17_);
			ccast = _tmp23_;
			_tmp24_ = ccast;
			_tmp25_ = cl;
			_tmp26_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp25_, NULL);
			_tmp27_ = _tmp26_;
			_tmp28_ = g_strdup_printf ("%s_parent_class", _tmp27_);
			_tmp29_ = _tmp28_;
			_tmp30_ = vala_ccode_identifier_new (_tmp29_);
			_tmp31_ = _tmp30_;
			vala_ccode_function_call_add_argument (_tmp24_, (ValaCCodeExpression*) _tmp31_);
			_vala_ccode_node_unref0 (_tmp31_);
			_g_free0 (_tmp29_);
			_g_free0 (_tmp27_);
			_tmp32_ = ccast;
			_tmp33_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp32_, "finalize");
			_tmp34_ = _tmp33_;
			_tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
			_tmp36_ = _tmp35_;
			_vala_ccode_node_unref0 (_tmp34_);
			ccall = _tmp36_;
			_tmp37_ = ccall;
			_tmp38_ = vala_ccode_identifier_new ("obj");
			_tmp39_ = _tmp38_;
			vala_ccode_function_call_add_argument (_tmp37_, (ValaCCodeExpression*) _tmp39_);
			_vala_ccode_node_unref0 (_tmp39_);
			_tmp40_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp40_);
			_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp42_ = _tmp41_;
			_tmp43_ = ccall;
			vala_ccode_function_add_expression (_tmp42_, (ValaCCodeExpression*) _tmp43_);
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (ccast);
		}
		_tmp44_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp45_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
		_tmp46_ = _tmp45_->ccode;
		vala_ccode_file_add_function_declaration (_tmp44_, _tmp46_);
		_vala_code_node_unref0 (fundamental_class);
	} else {
		ValaClass* _tmp47_ = NULL;
		ValaClass* _tmp48_ = NULL;
		ValaClass* _tmp49_ = NULL;
		_tmp47_ = cl;
		_tmp48_ = vala_class_get_base_class (_tmp47_);
		_tmp49_ = _tmp48_;
		if (_tmp49_ == NULL) {
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp50_ = NULL;
			ValaCCodeIdentifier* _tmp51_ = NULL;
			ValaCCodeFunctionCall* _tmp52_ = NULL;
			ValaCCodeFunctionCall* _tmp53_ = NULL;
			ValaCCodeFunctionCall* _tmp54_ = NULL;
			ValaClass* _tmp55_ = NULL;
			gchar* _tmp56_ = NULL;
			gchar* _tmp57_ = NULL;
			ValaCCodeIdentifier* _tmp58_ = NULL;
			ValaCCodeIdentifier* _tmp59_ = NULL;
			ValaCCodeFunctionCall* _tmp60_ = NULL;
			ValaCCodeIdentifier* _tmp61_ = NULL;
			ValaCCodeIdentifier* _tmp62_ = NULL;
			ValaCCodeBaseModuleEmitContext* _tmp63_ = NULL;
			ValaCCodeFunction* _tmp64_ = NULL;
			ValaCCodeFunction* _tmp65_ = NULL;
			ValaCCodeFunctionCall* _tmp66_ = NULL;
			_tmp50_ = vala_ccode_identifier_new ("g_slice_free");
			_tmp51_ = _tmp50_;
			_tmp52_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp51_);
			_tmp53_ = _tmp52_;
			_vala_ccode_node_unref0 (_tmp51_);
			ccall = _tmp53_;
			_tmp54_ = ccall;
			_tmp55_ = cl;
			_tmp56_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp55_);
			_tmp57_ = _tmp56_;
			_tmp58_ = vala_ccode_identifier_new (_tmp57_);
			_tmp59_ = _tmp58_;
			vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp59_);
			_vala_ccode_node_unref0 (_tmp59_);
			_g_free0 (_tmp57_);
			_tmp60_ = ccall;
			_tmp61_ = vala_ccode_identifier_new ("self");
			_tmp62_ = _tmp61_;
			vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp62_);
			_vala_ccode_node_unref0 (_tmp62_);
			_tmp63_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp63_);
			_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp65_ = _tmp64_;
			_tmp66_ = ccall;
			vala_ccode_function_add_expression (_tmp65_, (ValaCCodeExpression*) _tmp66_);
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			_vala_ccode_node_unref0 (ccall);
		}
	}
	_tmp67_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp68_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
	_tmp69_ = _tmp68_->ccode;
	vala_ccode_file_add_function (_tmp67_, _tmp69_);
}


static ValaCCodeFunctionCall* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base, ValaProperty* prop) {
	ValaGTypeModule * self;
	ValaCCodeFunctionCall* result = NULL;
	ValaCCodeFunctionCall* cspec = NULL;
	ValaCCodeFunctionCall* _tmp0_ = NULL;
	ValaCCodeFunctionCall* _tmp1_ = NULL;
	ValaProperty* _tmp2_ = NULL;
	ValaCCodeConstant* _tmp3_ = NULL;
	ValaCCodeConstant* _tmp4_ = NULL;
	gchar* nick = NULL;
	ValaProperty* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* blurb = NULL;
	ValaProperty* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	ValaCCodeFunctionCall* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	ValaCCodeConstant* _tmp13_ = NULL;
	ValaCCodeConstant* _tmp14_ = NULL;
	ValaCCodeFunctionCall* _tmp15_ = NULL;
	const gchar* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	ValaCCodeConstant* _tmp19_ = NULL;
	ValaCCodeConstant* _tmp20_ = NULL;
	gboolean _tmp21_ = FALSE;
	ValaProperty* _tmp22_ = NULL;
	ValaDataType* _tmp23_ = NULL;
	ValaDataType* _tmp24_ = NULL;
	ValaTypeSymbol* _tmp25_ = NULL;
	ValaTypeSymbol* _tmp26_ = NULL;
	gchar* pflags = NULL;
	gchar* _tmp434_ = NULL;
	gboolean _tmp435_ = FALSE;
	ValaProperty* _tmp436_ = NULL;
	ValaPropertyAccessor* _tmp437_ = NULL;
	ValaPropertyAccessor* _tmp438_ = NULL;
	gboolean _tmp446_ = FALSE;
	ValaProperty* _tmp447_ = NULL;
	ValaPropertyAccessor* _tmp448_ = NULL;
	ValaPropertyAccessor* _tmp449_ = NULL;
	ValaCCodeFunctionCall* _tmp471_ = NULL;
	const gchar* _tmp472_ = NULL;
	ValaCCodeConstant* _tmp473_ = NULL;
	ValaCCodeConstant* _tmp474_ = NULL;
	self = (ValaGTypeModule*) base;
	g_return_val_if_fail (prop != NULL, NULL);
	_tmp0_ = vala_ccode_function_call_new (NULL);
	cspec = _tmp0_;
	_tmp1_ = cspec;
	_tmp2_ = prop;
	_tmp3_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, _tmp2_);
	_tmp4_ = _tmp3_;
	vala_ccode_function_call_add_argument (_tmp1_, (ValaCCodeExpression*) _tmp4_);
	_vala_ccode_node_unref0 (_tmp4_);
	_tmp5_ = prop;
	_tmp6_ = vala_ccode_base_module_get_ccode_nick (_tmp5_);
	nick = _tmp6_;
	_tmp7_ = prop;
	_tmp8_ = vala_ccode_base_module_get_ccode_blurb (_tmp7_);
	blurb = _tmp8_;
	_tmp9_ = cspec;
	_tmp10_ = nick;
	_tmp11_ = g_strdup_printf ("\"%s\"", _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_constant_new (_tmp12_);
	_tmp14_ = _tmp13_;
	vala_ccode_function_call_add_argument (_tmp9_, (ValaCCodeExpression*) _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_g_free0 (_tmp12_);
	_tmp15_ = cspec;
	_tmp16_ = blurb;
	_tmp17_ = g_strdup_printf ("\"%s\"", _tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_constant_new (_tmp18_);
	_tmp20_ = _tmp19_;
	vala_ccode_function_call_add_argument (_tmp15_, (ValaCCodeExpression*) _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	_g_free0 (_tmp18_);
	_tmp22_ = prop;
	_tmp23_ = vala_property_get_property_type (_tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = vala_data_type_get_data_type (_tmp24_);
	_tmp26_ = _tmp25_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_CLASS)) {
		_tmp21_ = TRUE;
	} else {
		ValaProperty* _tmp27_ = NULL;
		ValaDataType* _tmp28_ = NULL;
		ValaDataType* _tmp29_ = NULL;
		ValaTypeSymbol* _tmp30_ = NULL;
		ValaTypeSymbol* _tmp31_ = NULL;
		_tmp27_ = prop;
		_tmp28_ = vala_property_get_property_type (_tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = vala_data_type_get_data_type (_tmp29_);
		_tmp31_ = _tmp30_;
		_tmp21_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, VALA_TYPE_INTERFACE);
	}
	if (_tmp21_) {
		gchar* param_spec_name = NULL;
		ValaProperty* _tmp32_ = NULL;
		ValaDataType* _tmp33_ = NULL;
		ValaDataType* _tmp34_ = NULL;
		ValaTypeSymbol* _tmp35_ = NULL;
		ValaTypeSymbol* _tmp36_ = NULL;
		gchar* _tmp37_ = NULL;
		ValaCCodeFunctionCall* _tmp38_ = NULL;
		const gchar* _tmp39_ = NULL;
		ValaCCodeIdentifier* _tmp40_ = NULL;
		ValaCCodeIdentifier* _tmp41_ = NULL;
		const gchar* _tmp42_ = NULL;
		_tmp32_ = prop;
		_tmp33_ = vala_property_get_property_type (_tmp32_);
		_tmp34_ = _tmp33_;
		_tmp35_ = vala_data_type_get_data_type (_tmp34_);
		_tmp36_ = _tmp35_;
		_tmp37_ = vala_ccode_base_module_get_ccode_param_spec_function ((ValaCodeNode*) _tmp36_);
		param_spec_name = _tmp37_;
		_tmp38_ = cspec;
		_tmp39_ = param_spec_name;
		_tmp40_ = vala_ccode_identifier_new (_tmp39_);
		_tmp41_ = _tmp40_;
		vala_ccode_function_call_set_call (_tmp38_, (ValaCCodeExpression*) _tmp41_);
		_vala_ccode_node_unref0 (_tmp41_);
		_tmp42_ = param_spec_name;
		if (g_strcmp0 (_tmp42_, "g_param_spec_string") == 0) {
			ValaCCodeFunctionCall* _tmp43_ = NULL;
			ValaCCodeConstant* _tmp44_ = NULL;
			ValaCCodeConstant* _tmp45_ = NULL;
			_tmp43_ = cspec;
			_tmp44_ = vala_ccode_constant_new ("NULL");
			_tmp45_ = _tmp44_;
			vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp45_);
			_vala_ccode_node_unref0 (_tmp45_);
		} else {
			const gchar* _tmp46_ = NULL;
			_tmp46_ = param_spec_name;
			if (g_strcmp0 (_tmp46_, "g_param_spec_variant") == 0) {
				ValaCCodeFunctionCall* _tmp47_ = NULL;
				ValaCCodeConstant* _tmp48_ = NULL;
				ValaCCodeConstant* _tmp49_ = NULL;
				ValaCCodeFunctionCall* _tmp50_ = NULL;
				ValaCCodeConstant* _tmp51_ = NULL;
				ValaCCodeConstant* _tmp52_ = NULL;
				_tmp47_ = cspec;
				_tmp48_ = vala_ccode_constant_new ("G_VARIANT_TYPE_ANY");
				_tmp49_ = _tmp48_;
				vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp49_);
				_vala_ccode_node_unref0 (_tmp49_);
				_tmp50_ = cspec;
				_tmp51_ = vala_ccode_constant_new ("NULL");
				_tmp52_ = _tmp51_;
				vala_ccode_function_call_add_argument (_tmp50_, (ValaCCodeExpression*) _tmp52_);
				_vala_ccode_node_unref0 (_tmp52_);
			} else {
				ValaProperty* _tmp53_ = NULL;
				ValaDataType* _tmp54_ = NULL;
				ValaDataType* _tmp55_ = NULL;
				ValaTypeSymbol* _tmp56_ = NULL;
				ValaTypeSymbol* _tmp57_ = NULL;
				gchar* _tmp58_ = NULL;
				gchar* _tmp59_ = NULL;
				gboolean _tmp60_ = FALSE;
				_tmp53_ = prop;
				_tmp54_ = vala_property_get_property_type (_tmp53_);
				_tmp55_ = _tmp54_;
				_tmp56_ = vala_data_type_get_data_type (_tmp55_);
				_tmp57_ = _tmp56_;
				_tmp58_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp57_);
				_tmp59_ = _tmp58_;
				_tmp60_ = g_strcmp0 (_tmp59_, "G_TYPE_POINTER") != 0;
				_g_free0 (_tmp59_);
				if (_tmp60_) {
					ValaCCodeFunctionCall* _tmp61_ = NULL;
					ValaProperty* _tmp62_ = NULL;
					ValaDataType* _tmp63_ = NULL;
					ValaDataType* _tmp64_ = NULL;
					ValaTypeSymbol* _tmp65_ = NULL;
					ValaTypeSymbol* _tmp66_ = NULL;
					gchar* _tmp67_ = NULL;
					gchar* _tmp68_ = NULL;
					ValaCCodeIdentifier* _tmp69_ = NULL;
					ValaCCodeIdentifier* _tmp70_ = NULL;
					_tmp61_ = cspec;
					_tmp62_ = prop;
					_tmp63_ = vala_property_get_property_type (_tmp62_);
					_tmp64_ = _tmp63_;
					_tmp65_ = vala_data_type_get_data_type (_tmp64_);
					_tmp66_ = _tmp65_;
					_tmp67_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp66_);
					_tmp68_ = _tmp67_;
					_tmp69_ = vala_ccode_identifier_new (_tmp68_);
					_tmp70_ = _tmp69_;
					vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp70_);
					_vala_ccode_node_unref0 (_tmp70_);
					_g_free0 (_tmp68_);
				}
			}
		}
		_g_free0 (param_spec_name);
	} else {
		ValaProperty* _tmp71_ = NULL;
		ValaDataType* _tmp72_ = NULL;
		ValaDataType* _tmp73_ = NULL;
		ValaTypeSymbol* _tmp74_ = NULL;
		ValaTypeSymbol* _tmp75_ = NULL;
		_tmp71_ = prop;
		_tmp72_ = vala_property_get_property_type (_tmp71_);
		_tmp73_ = _tmp72_;
		_tmp74_ = vala_data_type_get_data_type (_tmp73_);
		_tmp75_ = _tmp74_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp75_, VALA_TYPE_ENUM)) {
			ValaEnum* e = NULL;
			ValaProperty* _tmp76_ = NULL;
			ValaDataType* _tmp77_ = NULL;
			ValaDataType* _tmp78_ = NULL;
			ValaTypeSymbol* _tmp79_ = NULL;
			ValaTypeSymbol* _tmp80_ = NULL;
			ValaEnum* _tmp81_ = NULL;
			ValaEnum* _tmp82_ = NULL;
			gboolean _tmp83_ = FALSE;
			ValaProperty* _tmp120_ = NULL;
			ValaExpression* _tmp121_ = NULL;
			ValaExpression* _tmp122_ = NULL;
			_tmp76_ = prop;
			_tmp77_ = vala_property_get_property_type (_tmp76_);
			_tmp78_ = _tmp77_;
			_tmp79_ = vala_data_type_get_data_type (_tmp78_);
			_tmp80_ = _tmp79_;
			_tmp81_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp80_) : NULL);
			e = _tmp81_;
			_tmp82_ = e;
			_tmp83_ = vala_ccode_base_module_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp82_);
			if (_tmp83_) {
				ValaEnum* _tmp84_ = NULL;
				gboolean _tmp85_ = FALSE;
				gboolean _tmp86_ = FALSE;
				ValaCCodeFunctionCall* _tmp93_ = NULL;
				ValaEnum* _tmp94_ = NULL;
				gchar* _tmp95_ = NULL;
				gchar* _tmp96_ = NULL;
				ValaCCodeIdentifier* _tmp97_ = NULL;
				ValaCCodeIdentifier* _tmp98_ = NULL;
				_tmp84_ = e;
				_tmp85_ = vala_enum_get_is_flags (_tmp84_);
				_tmp86_ = _tmp85_;
				if (_tmp86_) {
					ValaCCodeFunctionCall* _tmp87_ = NULL;
					ValaCCodeIdentifier* _tmp88_ = NULL;
					ValaCCodeIdentifier* _tmp89_ = NULL;
					_tmp87_ = cspec;
					_tmp88_ = vala_ccode_identifier_new ("g_param_spec_flags");
					_tmp89_ = _tmp88_;
					vala_ccode_function_call_set_call (_tmp87_, (ValaCCodeExpression*) _tmp89_);
					_vala_ccode_node_unref0 (_tmp89_);
				} else {
					ValaCCodeFunctionCall* _tmp90_ = NULL;
					ValaCCodeIdentifier* _tmp91_ = NULL;
					ValaCCodeIdentifier* _tmp92_ = NULL;
					_tmp90_ = cspec;
					_tmp91_ = vala_ccode_identifier_new ("g_param_spec_enum");
					_tmp92_ = _tmp91_;
					vala_ccode_function_call_set_call (_tmp90_, (ValaCCodeExpression*) _tmp92_);
					_vala_ccode_node_unref0 (_tmp92_);
				}
				_tmp93_ = cspec;
				_tmp94_ = e;
				_tmp95_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp94_);
				_tmp96_ = _tmp95_;
				_tmp97_ = vala_ccode_identifier_new (_tmp96_);
				_tmp98_ = _tmp97_;
				vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp98_);
				_vala_ccode_node_unref0 (_tmp98_);
				_g_free0 (_tmp96_);
			} else {
				ValaEnum* _tmp99_ = NULL;
				gboolean _tmp100_ = FALSE;
				gboolean _tmp101_ = FALSE;
				_tmp99_ = e;
				_tmp100_ = vala_enum_get_is_flags (_tmp99_);
				_tmp101_ = _tmp100_;
				if (_tmp101_) {
					ValaCCodeFunctionCall* _tmp102_ = NULL;
					ValaCCodeIdentifier* _tmp103_ = NULL;
					ValaCCodeIdentifier* _tmp104_ = NULL;
					ValaCCodeFunctionCall* _tmp105_ = NULL;
					ValaCCodeConstant* _tmp106_ = NULL;
					ValaCCodeConstant* _tmp107_ = NULL;
					ValaCCodeFunctionCall* _tmp108_ = NULL;
					ValaCCodeConstant* _tmp109_ = NULL;
					ValaCCodeConstant* _tmp110_ = NULL;
					_tmp102_ = cspec;
					_tmp103_ = vala_ccode_identifier_new ("g_param_spec_uint");
					_tmp104_ = _tmp103_;
					vala_ccode_function_call_set_call (_tmp102_, (ValaCCodeExpression*) _tmp104_);
					_vala_ccode_node_unref0 (_tmp104_);
					_tmp105_ = cspec;
					_tmp106_ = vala_ccode_constant_new ("0");
					_tmp107_ = _tmp106_;
					vala_ccode_function_call_add_argument (_tmp105_, (ValaCCodeExpression*) _tmp107_);
					_vala_ccode_node_unref0 (_tmp107_);
					_tmp108_ = cspec;
					_tmp109_ = vala_ccode_constant_new ("G_MAXUINT");
					_tmp110_ = _tmp109_;
					vala_ccode_function_call_add_argument (_tmp108_, (ValaCCodeExpression*) _tmp110_);
					_vala_ccode_node_unref0 (_tmp110_);
				} else {
					ValaCCodeFunctionCall* _tmp111_ = NULL;
					ValaCCodeIdentifier* _tmp112_ = NULL;
					ValaCCodeIdentifier* _tmp113_ = NULL;
					ValaCCodeFunctionCall* _tmp114_ = NULL;
					ValaCCodeConstant* _tmp115_ = NULL;
					ValaCCodeConstant* _tmp116_ = NULL;
					ValaCCodeFunctionCall* _tmp117_ = NULL;
					ValaCCodeConstant* _tmp118_ = NULL;
					ValaCCodeConstant* _tmp119_ = NULL;
					_tmp111_ = cspec;
					_tmp112_ = vala_ccode_identifier_new ("g_param_spec_int");
					_tmp113_ = _tmp112_;
					vala_ccode_function_call_set_call (_tmp111_, (ValaCCodeExpression*) _tmp113_);
					_vala_ccode_node_unref0 (_tmp113_);
					_tmp114_ = cspec;
					_tmp115_ = vala_ccode_constant_new ("G_MININT");
					_tmp116_ = _tmp115_;
					vala_ccode_function_call_add_argument (_tmp114_, (ValaCCodeExpression*) _tmp116_);
					_vala_ccode_node_unref0 (_tmp116_);
					_tmp117_ = cspec;
					_tmp118_ = vala_ccode_constant_new ("G_MAXINT");
					_tmp119_ = _tmp118_;
					vala_ccode_function_call_add_argument (_tmp117_, (ValaCCodeExpression*) _tmp119_);
					_vala_ccode_node_unref0 (_tmp119_);
				}
			}
			_tmp120_ = prop;
			_tmp121_ = vala_property_get_initializer (_tmp120_);
			_tmp122_ = _tmp121_;
			if (_tmp122_ != NULL) {
				ValaCCodeFunctionCall* _tmp123_ = NULL;
				ValaProperty* _tmp124_ = NULL;
				ValaExpression* _tmp125_ = NULL;
				ValaExpression* _tmp126_ = NULL;
				ValaCCodeExpression* _tmp127_ = NULL;
				ValaCCodeExpression* _tmp128_ = NULL;
				_tmp123_ = cspec;
				_tmp124_ = prop;
				_tmp125_ = vala_property_get_initializer (_tmp124_);
				_tmp126_ = _tmp125_;
				_tmp127_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp126_);
				_tmp128_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp127_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
				vala_ccode_function_call_add_argument (_tmp123_, _tmp128_);
				_vala_ccode_node_unref0 (_tmp128_);
			} else {
				ValaCCodeFunctionCall* _tmp129_ = NULL;
				ValaProperty* _tmp130_ = NULL;
				ValaDataType* _tmp131_ = NULL;
				ValaDataType* _tmp132_ = NULL;
				ValaTypeSymbol* _tmp133_ = NULL;
				ValaTypeSymbol* _tmp134_ = NULL;
				gchar* _tmp135_ = NULL;
				gchar* _tmp136_ = NULL;
				ValaCCodeConstant* _tmp137_ = NULL;
				ValaCCodeConstant* _tmp138_ = NULL;
				_tmp129_ = cspec;
				_tmp130_ = prop;
				_tmp131_ = vala_property_get_property_type (_tmp130_);
				_tmp132_ = _tmp131_;
				_tmp133_ = vala_data_type_get_data_type (_tmp132_);
				_tmp134_ = _tmp133_;
				_tmp135_ = vala_ccode_base_module_get_ccode_default_value (_tmp134_);
				_tmp136_ = _tmp135_;
				_tmp137_ = vala_ccode_constant_new (_tmp136_);
				_tmp138_ = _tmp137_;
				vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp138_);
				_vala_ccode_node_unref0 (_tmp138_);
				_g_free0 (_tmp136_);
			}
			_vala_code_node_unref0 (e);
		} else {
			ValaProperty* _tmp139_ = NULL;
			ValaDataType* _tmp140_ = NULL;
			ValaDataType* _tmp141_ = NULL;
			ValaTypeSymbol* _tmp142_ = NULL;
			ValaTypeSymbol* _tmp143_ = NULL;
			_tmp139_ = prop;
			_tmp140_ = vala_property_get_property_type (_tmp139_);
			_tmp141_ = _tmp140_;
			_tmp142_ = vala_data_type_get_data_type (_tmp141_);
			_tmp143_ = _tmp142_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp143_, VALA_TYPE_STRUCT)) {
				ValaStruct* st = NULL;
				ValaProperty* _tmp144_ = NULL;
				ValaDataType* _tmp145_ = NULL;
				ValaDataType* _tmp146_ = NULL;
				ValaTypeSymbol* _tmp147_ = NULL;
				ValaTypeSymbol* _tmp148_ = NULL;
				ValaStruct* _tmp149_ = NULL;
				gchar* type_id = NULL;
				ValaStruct* _tmp150_ = NULL;
				gchar* _tmp151_ = NULL;
				const gchar* _tmp152_ = NULL;
				_tmp144_ = prop;
				_tmp145_ = vala_property_get_property_type (_tmp144_);
				_tmp146_ = _tmp145_;
				_tmp147_ = vala_data_type_get_data_type (_tmp146_);
				_tmp148_ = _tmp147_;
				_tmp149_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp148_, VALA_TYPE_STRUCT, ValaStruct));
				st = _tmp149_;
				_tmp150_ = st;
				_tmp151_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp150_);
				type_id = _tmp151_;
				_tmp152_ = type_id;
				if (g_strcmp0 (_tmp152_, "G_TYPE_INT") == 0) {
					ValaCCodeFunctionCall* _tmp153_ = NULL;
					ValaCCodeIdentifier* _tmp154_ = NULL;
					ValaCCodeIdentifier* _tmp155_ = NULL;
					ValaCCodeFunctionCall* _tmp156_ = NULL;
					ValaCCodeConstant* _tmp157_ = NULL;
					ValaCCodeConstant* _tmp158_ = NULL;
					ValaCCodeFunctionCall* _tmp159_ = NULL;
					ValaCCodeConstant* _tmp160_ = NULL;
					ValaCCodeConstant* _tmp161_ = NULL;
					ValaProperty* _tmp162_ = NULL;
					ValaExpression* _tmp163_ = NULL;
					ValaExpression* _tmp164_ = NULL;
					_tmp153_ = cspec;
					_tmp154_ = vala_ccode_identifier_new ("g_param_spec_int");
					_tmp155_ = _tmp154_;
					vala_ccode_function_call_set_call (_tmp153_, (ValaCCodeExpression*) _tmp155_);
					_vala_ccode_node_unref0 (_tmp155_);
					_tmp156_ = cspec;
					_tmp157_ = vala_ccode_constant_new ("G_MININT");
					_tmp158_ = _tmp157_;
					vala_ccode_function_call_add_argument (_tmp156_, (ValaCCodeExpression*) _tmp158_);
					_vala_ccode_node_unref0 (_tmp158_);
					_tmp159_ = cspec;
					_tmp160_ = vala_ccode_constant_new ("G_MAXINT");
					_tmp161_ = _tmp160_;
					vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp161_);
					_vala_ccode_node_unref0 (_tmp161_);
					_tmp162_ = prop;
					_tmp163_ = vala_property_get_initializer (_tmp162_);
					_tmp164_ = _tmp163_;
					if (_tmp164_ != NULL) {
						ValaCCodeFunctionCall* _tmp165_ = NULL;
						ValaProperty* _tmp166_ = NULL;
						ValaExpression* _tmp167_ = NULL;
						ValaExpression* _tmp168_ = NULL;
						ValaCCodeExpression* _tmp169_ = NULL;
						ValaCCodeExpression* _tmp170_ = NULL;
						_tmp165_ = cspec;
						_tmp166_ = prop;
						_tmp167_ = vala_property_get_initializer (_tmp166_);
						_tmp168_ = _tmp167_;
						_tmp169_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp168_);
						_tmp170_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp169_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
						vala_ccode_function_call_add_argument (_tmp165_, _tmp170_);
						_vala_ccode_node_unref0 (_tmp170_);
					} else {
						ValaCCodeFunctionCall* _tmp171_ = NULL;
						ValaCCodeConstant* _tmp172_ = NULL;
						ValaCCodeConstant* _tmp173_ = NULL;
						_tmp171_ = cspec;
						_tmp172_ = vala_ccode_constant_new ("0");
						_tmp173_ = _tmp172_;
						vala_ccode_function_call_add_argument (_tmp171_, (ValaCCodeExpression*) _tmp173_);
						_vala_ccode_node_unref0 (_tmp173_);
					}
				} else {
					const gchar* _tmp174_ = NULL;
					_tmp174_ = type_id;
					if (g_strcmp0 (_tmp174_, "G_TYPE_UINT") == 0) {
						ValaCCodeFunctionCall* _tmp175_ = NULL;
						ValaCCodeIdentifier* _tmp176_ = NULL;
						ValaCCodeIdentifier* _tmp177_ = NULL;
						ValaCCodeFunctionCall* _tmp178_ = NULL;
						ValaCCodeConstant* _tmp179_ = NULL;
						ValaCCodeConstant* _tmp180_ = NULL;
						ValaCCodeFunctionCall* _tmp181_ = NULL;
						ValaCCodeConstant* _tmp182_ = NULL;
						ValaCCodeConstant* _tmp183_ = NULL;
						ValaProperty* _tmp184_ = NULL;
						ValaExpression* _tmp185_ = NULL;
						ValaExpression* _tmp186_ = NULL;
						_tmp175_ = cspec;
						_tmp176_ = vala_ccode_identifier_new ("g_param_spec_uint");
						_tmp177_ = _tmp176_;
						vala_ccode_function_call_set_call (_tmp175_, (ValaCCodeExpression*) _tmp177_);
						_vala_ccode_node_unref0 (_tmp177_);
						_tmp178_ = cspec;
						_tmp179_ = vala_ccode_constant_new ("0");
						_tmp180_ = _tmp179_;
						vala_ccode_function_call_add_argument (_tmp178_, (ValaCCodeExpression*) _tmp180_);
						_vala_ccode_node_unref0 (_tmp180_);
						_tmp181_ = cspec;
						_tmp182_ = vala_ccode_constant_new ("G_MAXUINT");
						_tmp183_ = _tmp182_;
						vala_ccode_function_call_add_argument (_tmp181_, (ValaCCodeExpression*) _tmp183_);
						_vala_ccode_node_unref0 (_tmp183_);
						_tmp184_ = prop;
						_tmp185_ = vala_property_get_initializer (_tmp184_);
						_tmp186_ = _tmp185_;
						if (_tmp186_ != NULL) {
							ValaCCodeFunctionCall* _tmp187_ = NULL;
							ValaProperty* _tmp188_ = NULL;
							ValaExpression* _tmp189_ = NULL;
							ValaExpression* _tmp190_ = NULL;
							ValaCCodeExpression* _tmp191_ = NULL;
							ValaCCodeExpression* _tmp192_ = NULL;
							_tmp187_ = cspec;
							_tmp188_ = prop;
							_tmp189_ = vala_property_get_initializer (_tmp188_);
							_tmp190_ = _tmp189_;
							_tmp191_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp190_);
							_tmp192_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp191_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
							vala_ccode_function_call_add_argument (_tmp187_, _tmp192_);
							_vala_ccode_node_unref0 (_tmp192_);
						} else {
							ValaCCodeFunctionCall* _tmp193_ = NULL;
							ValaCCodeConstant* _tmp194_ = NULL;
							ValaCCodeConstant* _tmp195_ = NULL;
							_tmp193_ = cspec;
							_tmp194_ = vala_ccode_constant_new ("0U");
							_tmp195_ = _tmp194_;
							vala_ccode_function_call_add_argument (_tmp193_, (ValaCCodeExpression*) _tmp195_);
							_vala_ccode_node_unref0 (_tmp195_);
						}
					} else {
						const gchar* _tmp196_ = NULL;
						_tmp196_ = type_id;
						if (g_strcmp0 (_tmp196_, "G_TYPE_INT64") == 0) {
							ValaCCodeFunctionCall* _tmp197_ = NULL;
							ValaCCodeIdentifier* _tmp198_ = NULL;
							ValaCCodeIdentifier* _tmp199_ = NULL;
							ValaCCodeFunctionCall* _tmp200_ = NULL;
							ValaCCodeConstant* _tmp201_ = NULL;
							ValaCCodeConstant* _tmp202_ = NULL;
							ValaCCodeFunctionCall* _tmp203_ = NULL;
							ValaCCodeConstant* _tmp204_ = NULL;
							ValaCCodeConstant* _tmp205_ = NULL;
							ValaProperty* _tmp206_ = NULL;
							ValaExpression* _tmp207_ = NULL;
							ValaExpression* _tmp208_ = NULL;
							_tmp197_ = cspec;
							_tmp198_ = vala_ccode_identifier_new ("g_param_spec_int64");
							_tmp199_ = _tmp198_;
							vala_ccode_function_call_set_call (_tmp197_, (ValaCCodeExpression*) _tmp199_);
							_vala_ccode_node_unref0 (_tmp199_);
							_tmp200_ = cspec;
							_tmp201_ = vala_ccode_constant_new ("G_MININT64");
							_tmp202_ = _tmp201_;
							vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp202_);
							_vala_ccode_node_unref0 (_tmp202_);
							_tmp203_ = cspec;
							_tmp204_ = vala_ccode_constant_new ("G_MAXINT64");
							_tmp205_ = _tmp204_;
							vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp205_);
							_vala_ccode_node_unref0 (_tmp205_);
							_tmp206_ = prop;
							_tmp207_ = vala_property_get_initializer (_tmp206_);
							_tmp208_ = _tmp207_;
							if (_tmp208_ != NULL) {
								ValaCCodeFunctionCall* _tmp209_ = NULL;
								ValaProperty* _tmp210_ = NULL;
								ValaExpression* _tmp211_ = NULL;
								ValaExpression* _tmp212_ = NULL;
								ValaCCodeExpression* _tmp213_ = NULL;
								ValaCCodeExpression* _tmp214_ = NULL;
								_tmp209_ = cspec;
								_tmp210_ = prop;
								_tmp211_ = vala_property_get_initializer (_tmp210_);
								_tmp212_ = _tmp211_;
								_tmp213_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp212_);
								_tmp214_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp213_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
								vala_ccode_function_call_add_argument (_tmp209_, _tmp214_);
								_vala_ccode_node_unref0 (_tmp214_);
							} else {
								ValaCCodeFunctionCall* _tmp215_ = NULL;
								ValaCCodeConstant* _tmp216_ = NULL;
								ValaCCodeConstant* _tmp217_ = NULL;
								_tmp215_ = cspec;
								_tmp216_ = vala_ccode_constant_new ("0");
								_tmp217_ = _tmp216_;
								vala_ccode_function_call_add_argument (_tmp215_, (ValaCCodeExpression*) _tmp217_);
								_vala_ccode_node_unref0 (_tmp217_);
							}
						} else {
							const gchar* _tmp218_ = NULL;
							_tmp218_ = type_id;
							if (g_strcmp0 (_tmp218_, "G_TYPE_UINT64") == 0) {
								ValaCCodeFunctionCall* _tmp219_ = NULL;
								ValaCCodeIdentifier* _tmp220_ = NULL;
								ValaCCodeIdentifier* _tmp221_ = NULL;
								ValaCCodeFunctionCall* _tmp222_ = NULL;
								ValaCCodeConstant* _tmp223_ = NULL;
								ValaCCodeConstant* _tmp224_ = NULL;
								ValaCCodeFunctionCall* _tmp225_ = NULL;
								ValaCCodeConstant* _tmp226_ = NULL;
								ValaCCodeConstant* _tmp227_ = NULL;
								ValaProperty* _tmp228_ = NULL;
								ValaExpression* _tmp229_ = NULL;
								ValaExpression* _tmp230_ = NULL;
								_tmp219_ = cspec;
								_tmp220_ = vala_ccode_identifier_new ("g_param_spec_uint64");
								_tmp221_ = _tmp220_;
								vala_ccode_function_call_set_call (_tmp219_, (ValaCCodeExpression*) _tmp221_);
								_vala_ccode_node_unref0 (_tmp221_);
								_tmp222_ = cspec;
								_tmp223_ = vala_ccode_constant_new ("0");
								_tmp224_ = _tmp223_;
								vala_ccode_function_call_add_argument (_tmp222_, (ValaCCodeExpression*) _tmp224_);
								_vala_ccode_node_unref0 (_tmp224_);
								_tmp225_ = cspec;
								_tmp226_ = vala_ccode_constant_new ("G_MAXUINT64");
								_tmp227_ = _tmp226_;
								vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_);
								_vala_ccode_node_unref0 (_tmp227_);
								_tmp228_ = prop;
								_tmp229_ = vala_property_get_initializer (_tmp228_);
								_tmp230_ = _tmp229_;
								if (_tmp230_ != NULL) {
									ValaCCodeFunctionCall* _tmp231_ = NULL;
									ValaProperty* _tmp232_ = NULL;
									ValaExpression* _tmp233_ = NULL;
									ValaExpression* _tmp234_ = NULL;
									ValaCCodeExpression* _tmp235_ = NULL;
									ValaCCodeExpression* _tmp236_ = NULL;
									_tmp231_ = cspec;
									_tmp232_ = prop;
									_tmp233_ = vala_property_get_initializer (_tmp232_);
									_tmp234_ = _tmp233_;
									_tmp235_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp234_);
									_tmp236_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp235_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
									vala_ccode_function_call_add_argument (_tmp231_, _tmp236_);
									_vala_ccode_node_unref0 (_tmp236_);
								} else {
									ValaCCodeFunctionCall* _tmp237_ = NULL;
									ValaCCodeConstant* _tmp238_ = NULL;
									ValaCCodeConstant* _tmp239_ = NULL;
									_tmp237_ = cspec;
									_tmp238_ = vala_ccode_constant_new ("0U");
									_tmp239_ = _tmp238_;
									vala_ccode_function_call_add_argument (_tmp237_, (ValaCCodeExpression*) _tmp239_);
									_vala_ccode_node_unref0 (_tmp239_);
								}
							} else {
								const gchar* _tmp240_ = NULL;
								_tmp240_ = type_id;
								if (g_strcmp0 (_tmp240_, "G_TYPE_LONG") == 0) {
									ValaCCodeFunctionCall* _tmp241_ = NULL;
									ValaCCodeIdentifier* _tmp242_ = NULL;
									ValaCCodeIdentifier* _tmp243_ = NULL;
									ValaCCodeFunctionCall* _tmp244_ = NULL;
									ValaCCodeConstant* _tmp245_ = NULL;
									ValaCCodeConstant* _tmp246_ = NULL;
									ValaCCodeFunctionCall* _tmp247_ = NULL;
									ValaCCodeConstant* _tmp248_ = NULL;
									ValaCCodeConstant* _tmp249_ = NULL;
									ValaProperty* _tmp250_ = NULL;
									ValaExpression* _tmp251_ = NULL;
									ValaExpression* _tmp252_ = NULL;
									_tmp241_ = cspec;
									_tmp242_ = vala_ccode_identifier_new ("g_param_spec_long");
									_tmp243_ = _tmp242_;
									vala_ccode_function_call_set_call (_tmp241_, (ValaCCodeExpression*) _tmp243_);
									_vala_ccode_node_unref0 (_tmp243_);
									_tmp244_ = cspec;
									_tmp245_ = vala_ccode_constant_new ("G_MINLONG");
									_tmp246_ = _tmp245_;
									vala_ccode_function_call_add_argument (_tmp244_, (ValaCCodeExpression*) _tmp246_);
									_vala_ccode_node_unref0 (_tmp246_);
									_tmp247_ = cspec;
									_tmp248_ = vala_ccode_constant_new ("G_MAXLONG");
									_tmp249_ = _tmp248_;
									vala_ccode_function_call_add_argument (_tmp247_, (ValaCCodeExpression*) _tmp249_);
									_vala_ccode_node_unref0 (_tmp249_);
									_tmp250_ = prop;
									_tmp251_ = vala_property_get_initializer (_tmp250_);
									_tmp252_ = _tmp251_;
									if (_tmp252_ != NULL) {
										ValaCCodeFunctionCall* _tmp253_ = NULL;
										ValaProperty* _tmp254_ = NULL;
										ValaExpression* _tmp255_ = NULL;
										ValaExpression* _tmp256_ = NULL;
										ValaCCodeExpression* _tmp257_ = NULL;
										ValaCCodeExpression* _tmp258_ = NULL;
										_tmp253_ = cspec;
										_tmp254_ = prop;
										_tmp255_ = vala_property_get_initializer (_tmp254_);
										_tmp256_ = _tmp255_;
										_tmp257_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp256_);
										_tmp258_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp257_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
										vala_ccode_function_call_add_argument (_tmp253_, _tmp258_);
										_vala_ccode_node_unref0 (_tmp258_);
									} else {
										ValaCCodeFunctionCall* _tmp259_ = NULL;
										ValaCCodeConstant* _tmp260_ = NULL;
										ValaCCodeConstant* _tmp261_ = NULL;
										_tmp259_ = cspec;
										_tmp260_ = vala_ccode_constant_new ("0L");
										_tmp261_ = _tmp260_;
										vala_ccode_function_call_add_argument (_tmp259_, (ValaCCodeExpression*) _tmp261_);
										_vala_ccode_node_unref0 (_tmp261_);
									}
								} else {
									const gchar* _tmp262_ = NULL;
									_tmp262_ = type_id;
									if (g_strcmp0 (_tmp262_, "G_TYPE_ULONG") == 0) {
										ValaCCodeFunctionCall* _tmp263_ = NULL;
										ValaCCodeIdentifier* _tmp264_ = NULL;
										ValaCCodeIdentifier* _tmp265_ = NULL;
										ValaCCodeFunctionCall* _tmp266_ = NULL;
										ValaCCodeConstant* _tmp267_ = NULL;
										ValaCCodeConstant* _tmp268_ = NULL;
										ValaCCodeFunctionCall* _tmp269_ = NULL;
										ValaCCodeConstant* _tmp270_ = NULL;
										ValaCCodeConstant* _tmp271_ = NULL;
										ValaProperty* _tmp272_ = NULL;
										ValaExpression* _tmp273_ = NULL;
										ValaExpression* _tmp274_ = NULL;
										_tmp263_ = cspec;
										_tmp264_ = vala_ccode_identifier_new ("g_param_spec_ulong");
										_tmp265_ = _tmp264_;
										vala_ccode_function_call_set_call (_tmp263_, (ValaCCodeExpression*) _tmp265_);
										_vala_ccode_node_unref0 (_tmp265_);
										_tmp266_ = cspec;
										_tmp267_ = vala_ccode_constant_new ("0");
										_tmp268_ = _tmp267_;
										vala_ccode_function_call_add_argument (_tmp266_, (ValaCCodeExpression*) _tmp268_);
										_vala_ccode_node_unref0 (_tmp268_);
										_tmp269_ = cspec;
										_tmp270_ = vala_ccode_constant_new ("G_MAXULONG");
										_tmp271_ = _tmp270_;
										vala_ccode_function_call_add_argument (_tmp269_, (ValaCCodeExpression*) _tmp271_);
										_vala_ccode_node_unref0 (_tmp271_);
										_tmp272_ = prop;
										_tmp273_ = vala_property_get_initializer (_tmp272_);
										_tmp274_ = _tmp273_;
										if (_tmp274_ != NULL) {
											ValaCCodeFunctionCall* _tmp275_ = NULL;
											ValaProperty* _tmp276_ = NULL;
											ValaExpression* _tmp277_ = NULL;
											ValaExpression* _tmp278_ = NULL;
											ValaCCodeExpression* _tmp279_ = NULL;
											ValaCCodeExpression* _tmp280_ = NULL;
											_tmp275_ = cspec;
											_tmp276_ = prop;
											_tmp277_ = vala_property_get_initializer (_tmp276_);
											_tmp278_ = _tmp277_;
											_tmp279_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp278_);
											_tmp280_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp279_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
											vala_ccode_function_call_add_argument (_tmp275_, _tmp280_);
											_vala_ccode_node_unref0 (_tmp280_);
										} else {
											ValaCCodeFunctionCall* _tmp281_ = NULL;
											ValaCCodeConstant* _tmp282_ = NULL;
											ValaCCodeConstant* _tmp283_ = NULL;
											_tmp281_ = cspec;
											_tmp282_ = vala_ccode_constant_new ("0UL");
											_tmp283_ = _tmp282_;
											vala_ccode_function_call_add_argument (_tmp281_, (ValaCCodeExpression*) _tmp283_);
											_vala_ccode_node_unref0 (_tmp283_);
										}
									} else {
										const gchar* _tmp284_ = NULL;
										_tmp284_ = type_id;
										if (g_strcmp0 (_tmp284_, "G_TYPE_BOOLEAN") == 0) {
											ValaCCodeFunctionCall* _tmp285_ = NULL;
											ValaCCodeIdentifier* _tmp286_ = NULL;
											ValaCCodeIdentifier* _tmp287_ = NULL;
											ValaProperty* _tmp288_ = NULL;
											ValaExpression* _tmp289_ = NULL;
											ValaExpression* _tmp290_ = NULL;
											_tmp285_ = cspec;
											_tmp286_ = vala_ccode_identifier_new ("g_param_spec_boolean");
											_tmp287_ = _tmp286_;
											vala_ccode_function_call_set_call (_tmp285_, (ValaCCodeExpression*) _tmp287_);
											_vala_ccode_node_unref0 (_tmp287_);
											_tmp288_ = prop;
											_tmp289_ = vala_property_get_initializer (_tmp288_);
											_tmp290_ = _tmp289_;
											if (_tmp290_ != NULL) {
												ValaCCodeFunctionCall* _tmp291_ = NULL;
												ValaProperty* _tmp292_ = NULL;
												ValaExpression* _tmp293_ = NULL;
												ValaExpression* _tmp294_ = NULL;
												ValaCCodeExpression* _tmp295_ = NULL;
												ValaCCodeExpression* _tmp296_ = NULL;
												_tmp291_ = cspec;
												_tmp292_ = prop;
												_tmp293_ = vala_property_get_initializer (_tmp292_);
												_tmp294_ = _tmp293_;
												_tmp295_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp294_);
												_tmp296_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp295_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
												vala_ccode_function_call_add_argument (_tmp291_, _tmp296_);
												_vala_ccode_node_unref0 (_tmp296_);
											} else {
												ValaCCodeFunctionCall* _tmp297_ = NULL;
												ValaCCodeConstant* _tmp298_ = NULL;
												ValaCCodeConstant* _tmp299_ = NULL;
												_tmp297_ = cspec;
												_tmp298_ = vala_ccode_constant_new ("FALSE");
												_tmp299_ = _tmp298_;
												vala_ccode_function_call_add_argument (_tmp297_, (ValaCCodeExpression*) _tmp299_);
												_vala_ccode_node_unref0 (_tmp299_);
											}
										} else {
											const gchar* _tmp300_ = NULL;
											_tmp300_ = type_id;
											if (g_strcmp0 (_tmp300_, "G_TYPE_CHAR") == 0) {
												ValaCCodeFunctionCall* _tmp301_ = NULL;
												ValaCCodeIdentifier* _tmp302_ = NULL;
												ValaCCodeIdentifier* _tmp303_ = NULL;
												ValaCCodeFunctionCall* _tmp304_ = NULL;
												ValaCCodeConstant* _tmp305_ = NULL;
												ValaCCodeConstant* _tmp306_ = NULL;
												ValaCCodeFunctionCall* _tmp307_ = NULL;
												ValaCCodeConstant* _tmp308_ = NULL;
												ValaCCodeConstant* _tmp309_ = NULL;
												ValaProperty* _tmp310_ = NULL;
												ValaExpression* _tmp311_ = NULL;
												ValaExpression* _tmp312_ = NULL;
												_tmp301_ = cspec;
												_tmp302_ = vala_ccode_identifier_new ("g_param_spec_char");
												_tmp303_ = _tmp302_;
												vala_ccode_function_call_set_call (_tmp301_, (ValaCCodeExpression*) _tmp303_);
												_vala_ccode_node_unref0 (_tmp303_);
												_tmp304_ = cspec;
												_tmp305_ = vala_ccode_constant_new ("G_MININT8");
												_tmp306_ = _tmp305_;
												vala_ccode_function_call_add_argument (_tmp304_, (ValaCCodeExpression*) _tmp306_);
												_vala_ccode_node_unref0 (_tmp306_);
												_tmp307_ = cspec;
												_tmp308_ = vala_ccode_constant_new ("G_MAXINT8");
												_tmp309_ = _tmp308_;
												vala_ccode_function_call_add_argument (_tmp307_, (ValaCCodeExpression*) _tmp309_);
												_vala_ccode_node_unref0 (_tmp309_);
												_tmp310_ = prop;
												_tmp311_ = vala_property_get_initializer (_tmp310_);
												_tmp312_ = _tmp311_;
												if (_tmp312_ != NULL) {
													ValaCCodeFunctionCall* _tmp313_ = NULL;
													ValaProperty* _tmp314_ = NULL;
													ValaExpression* _tmp315_ = NULL;
													ValaExpression* _tmp316_ = NULL;
													ValaCCodeExpression* _tmp317_ = NULL;
													ValaCCodeExpression* _tmp318_ = NULL;
													_tmp313_ = cspec;
													_tmp314_ = prop;
													_tmp315_ = vala_property_get_initializer (_tmp314_);
													_tmp316_ = _tmp315_;
													_tmp317_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp316_);
													_tmp318_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp317_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
													vala_ccode_function_call_add_argument (_tmp313_, _tmp318_);
													_vala_ccode_node_unref0 (_tmp318_);
												} else {
													ValaCCodeFunctionCall* _tmp319_ = NULL;
													ValaCCodeConstant* _tmp320_ = NULL;
													ValaCCodeConstant* _tmp321_ = NULL;
													_tmp319_ = cspec;
													_tmp320_ = vala_ccode_constant_new ("0");
													_tmp321_ = _tmp320_;
													vala_ccode_function_call_add_argument (_tmp319_, (ValaCCodeExpression*) _tmp321_);
													_vala_ccode_node_unref0 (_tmp321_);
												}
											} else {
												const gchar* _tmp322_ = NULL;
												_tmp322_ = type_id;
												if (g_strcmp0 (_tmp322_, "G_TYPE_UCHAR") == 0) {
													ValaCCodeFunctionCall* _tmp323_ = NULL;
													ValaCCodeIdentifier* _tmp324_ = NULL;
													ValaCCodeIdentifier* _tmp325_ = NULL;
													ValaCCodeFunctionCall* _tmp326_ = NULL;
													ValaCCodeConstant* _tmp327_ = NULL;
													ValaCCodeConstant* _tmp328_ = NULL;
													ValaCCodeFunctionCall* _tmp329_ = NULL;
													ValaCCodeConstant* _tmp330_ = NULL;
													ValaCCodeConstant* _tmp331_ = NULL;
													ValaProperty* _tmp332_ = NULL;
													ValaExpression* _tmp333_ = NULL;
													ValaExpression* _tmp334_ = NULL;
													_tmp323_ = cspec;
													_tmp324_ = vala_ccode_identifier_new ("g_param_spec_uchar");
													_tmp325_ = _tmp324_;
													vala_ccode_function_call_set_call (_tmp323_, (ValaCCodeExpression*) _tmp325_);
													_vala_ccode_node_unref0 (_tmp325_);
													_tmp326_ = cspec;
													_tmp327_ = vala_ccode_constant_new ("0");
													_tmp328_ = _tmp327_;
													vala_ccode_function_call_add_argument (_tmp326_, (ValaCCodeExpression*) _tmp328_);
													_vala_ccode_node_unref0 (_tmp328_);
													_tmp329_ = cspec;
													_tmp330_ = vala_ccode_constant_new ("G_MAXUINT8");
													_tmp331_ = _tmp330_;
													vala_ccode_function_call_add_argument (_tmp329_, (ValaCCodeExpression*) _tmp331_);
													_vala_ccode_node_unref0 (_tmp331_);
													_tmp332_ = prop;
													_tmp333_ = vala_property_get_initializer (_tmp332_);
													_tmp334_ = _tmp333_;
													if (_tmp334_ != NULL) {
														ValaCCodeFunctionCall* _tmp335_ = NULL;
														ValaProperty* _tmp336_ = NULL;
														ValaExpression* _tmp337_ = NULL;
														ValaExpression* _tmp338_ = NULL;
														ValaCCodeExpression* _tmp339_ = NULL;
														ValaCCodeExpression* _tmp340_ = NULL;
														_tmp335_ = cspec;
														_tmp336_ = prop;
														_tmp337_ = vala_property_get_initializer (_tmp336_);
														_tmp338_ = _tmp337_;
														_tmp339_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp338_);
														_tmp340_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp339_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
														vala_ccode_function_call_add_argument (_tmp335_, _tmp340_);
														_vala_ccode_node_unref0 (_tmp340_);
													} else {
														ValaCCodeFunctionCall* _tmp341_ = NULL;
														ValaCCodeConstant* _tmp342_ = NULL;
														ValaCCodeConstant* _tmp343_ = NULL;
														_tmp341_ = cspec;
														_tmp342_ = vala_ccode_constant_new ("0");
														_tmp343_ = _tmp342_;
														vala_ccode_function_call_add_argument (_tmp341_, (ValaCCodeExpression*) _tmp343_);
														_vala_ccode_node_unref0 (_tmp343_);
													}
												} else {
													const gchar* _tmp344_ = NULL;
													_tmp344_ = type_id;
													if (g_strcmp0 (_tmp344_, "G_TYPE_FLOAT") == 0) {
														ValaCCodeFunctionCall* _tmp345_ = NULL;
														ValaCCodeIdentifier* _tmp346_ = NULL;
														ValaCCodeIdentifier* _tmp347_ = NULL;
														ValaCCodeFunctionCall* _tmp348_ = NULL;
														ValaCCodeConstant* _tmp349_ = NULL;
														ValaCCodeConstant* _tmp350_ = NULL;
														ValaCCodeFunctionCall* _tmp351_ = NULL;
														ValaCCodeConstant* _tmp352_ = NULL;
														ValaCCodeConstant* _tmp353_ = NULL;
														ValaProperty* _tmp354_ = NULL;
														ValaExpression* _tmp355_ = NULL;
														ValaExpression* _tmp356_ = NULL;
														_tmp345_ = cspec;
														_tmp346_ = vala_ccode_identifier_new ("g_param_spec_float");
														_tmp347_ = _tmp346_;
														vala_ccode_function_call_set_call (_tmp345_, (ValaCCodeExpression*) _tmp347_);
														_vala_ccode_node_unref0 (_tmp347_);
														_tmp348_ = cspec;
														_tmp349_ = vala_ccode_constant_new ("-G_MAXFLOAT");
														_tmp350_ = _tmp349_;
														vala_ccode_function_call_add_argument (_tmp348_, (ValaCCodeExpression*) _tmp350_);
														_vala_ccode_node_unref0 (_tmp350_);
														_tmp351_ = cspec;
														_tmp352_ = vala_ccode_constant_new ("G_MAXFLOAT");
														_tmp353_ = _tmp352_;
														vala_ccode_function_call_add_argument (_tmp351_, (ValaCCodeExpression*) _tmp353_);
														_vala_ccode_node_unref0 (_tmp353_);
														_tmp354_ = prop;
														_tmp355_ = vala_property_get_initializer (_tmp354_);
														_tmp356_ = _tmp355_;
														if (_tmp356_ != NULL) {
															ValaCCodeFunctionCall* _tmp357_ = NULL;
															ValaProperty* _tmp358_ = NULL;
															ValaExpression* _tmp359_ = NULL;
															ValaExpression* _tmp360_ = NULL;
															ValaCCodeExpression* _tmp361_ = NULL;
															ValaCCodeExpression* _tmp362_ = NULL;
															_tmp357_ = cspec;
															_tmp358_ = prop;
															_tmp359_ = vala_property_get_initializer (_tmp358_);
															_tmp360_ = _tmp359_;
															_tmp361_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp360_);
															_tmp362_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp361_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
															vala_ccode_function_call_add_argument (_tmp357_, _tmp362_);
															_vala_ccode_node_unref0 (_tmp362_);
														} else {
															ValaCCodeFunctionCall* _tmp363_ = NULL;
															ValaCCodeConstant* _tmp364_ = NULL;
															ValaCCodeConstant* _tmp365_ = NULL;
															_tmp363_ = cspec;
															_tmp364_ = vala_ccode_constant_new ("0.0F");
															_tmp365_ = _tmp364_;
															vala_ccode_function_call_add_argument (_tmp363_, (ValaCCodeExpression*) _tmp365_);
															_vala_ccode_node_unref0 (_tmp365_);
														}
													} else {
														const gchar* _tmp366_ = NULL;
														_tmp366_ = type_id;
														if (g_strcmp0 (_tmp366_, "G_TYPE_DOUBLE") == 0) {
															ValaCCodeFunctionCall* _tmp367_ = NULL;
															ValaCCodeIdentifier* _tmp368_ = NULL;
															ValaCCodeIdentifier* _tmp369_ = NULL;
															ValaCCodeFunctionCall* _tmp370_ = NULL;
															ValaCCodeConstant* _tmp371_ = NULL;
															ValaCCodeConstant* _tmp372_ = NULL;
															ValaCCodeFunctionCall* _tmp373_ = NULL;
															ValaCCodeConstant* _tmp374_ = NULL;
															ValaCCodeConstant* _tmp375_ = NULL;
															ValaProperty* _tmp376_ = NULL;
															ValaExpression* _tmp377_ = NULL;
															ValaExpression* _tmp378_ = NULL;
															_tmp367_ = cspec;
															_tmp368_ = vala_ccode_identifier_new ("g_param_spec_double");
															_tmp369_ = _tmp368_;
															vala_ccode_function_call_set_call (_tmp367_, (ValaCCodeExpression*) _tmp369_);
															_vala_ccode_node_unref0 (_tmp369_);
															_tmp370_ = cspec;
															_tmp371_ = vala_ccode_constant_new ("-G_MAXDOUBLE");
															_tmp372_ = _tmp371_;
															vala_ccode_function_call_add_argument (_tmp370_, (ValaCCodeExpression*) _tmp372_);
															_vala_ccode_node_unref0 (_tmp372_);
															_tmp373_ = cspec;
															_tmp374_ = vala_ccode_constant_new ("G_MAXDOUBLE");
															_tmp375_ = _tmp374_;
															vala_ccode_function_call_add_argument (_tmp373_, (ValaCCodeExpression*) _tmp375_);
															_vala_ccode_node_unref0 (_tmp375_);
															_tmp376_ = prop;
															_tmp377_ = vala_property_get_initializer (_tmp376_);
															_tmp378_ = _tmp377_;
															if (_tmp378_ != NULL) {
																ValaCCodeFunctionCall* _tmp379_ = NULL;
																ValaProperty* _tmp380_ = NULL;
																ValaExpression* _tmp381_ = NULL;
																ValaExpression* _tmp382_ = NULL;
																ValaCCodeExpression* _tmp383_ = NULL;
																ValaCCodeExpression* _tmp384_ = NULL;
																_tmp379_ = cspec;
																_tmp380_ = prop;
																_tmp381_ = vala_property_get_initializer (_tmp380_);
																_tmp382_ = _tmp381_;
																_tmp383_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp382_);
																_tmp384_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp383_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
																vala_ccode_function_call_add_argument (_tmp379_, _tmp384_);
																_vala_ccode_node_unref0 (_tmp384_);
															} else {
																ValaCCodeFunctionCall* _tmp385_ = NULL;
																ValaCCodeConstant* _tmp386_ = NULL;
																ValaCCodeConstant* _tmp387_ = NULL;
																_tmp385_ = cspec;
																_tmp386_ = vala_ccode_constant_new ("0.0");
																_tmp387_ = _tmp386_;
																vala_ccode_function_call_add_argument (_tmp385_, (ValaCCodeExpression*) _tmp387_);
																_vala_ccode_node_unref0 (_tmp387_);
															}
														} else {
															const gchar* _tmp388_ = NULL;
															_tmp388_ = type_id;
															if (g_strcmp0 (_tmp388_, "G_TYPE_GTYPE") == 0) {
																ValaCCodeFunctionCall* _tmp389_ = NULL;
																ValaCCodeIdentifier* _tmp390_ = NULL;
																ValaCCodeIdentifier* _tmp391_ = NULL;
																ValaProperty* _tmp392_ = NULL;
																ValaExpression* _tmp393_ = NULL;
																ValaExpression* _tmp394_ = NULL;
																_tmp389_ = cspec;
																_tmp390_ = vala_ccode_identifier_new ("g_param_spec_gtype");
																_tmp391_ = _tmp390_;
																vala_ccode_function_call_set_call (_tmp389_, (ValaCCodeExpression*) _tmp391_);
																_vala_ccode_node_unref0 (_tmp391_);
																_tmp392_ = prop;
																_tmp393_ = vala_property_get_initializer (_tmp392_);
																_tmp394_ = _tmp393_;
																if (_tmp394_ != NULL) {
																	ValaCCodeFunctionCall* _tmp395_ = NULL;
																	ValaProperty* _tmp396_ = NULL;
																	ValaExpression* _tmp397_ = NULL;
																	ValaExpression* _tmp398_ = NULL;
																	ValaCCodeExpression* _tmp399_ = NULL;
																	ValaCCodeExpression* _tmp400_ = NULL;
																	_tmp395_ = cspec;
																	_tmp396_ = prop;
																	_tmp397_ = vala_property_get_initializer (_tmp396_);
																	_tmp398_ = _tmp397_;
																	_tmp399_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp398_);
																	_tmp400_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp399_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
																	vala_ccode_function_call_add_argument (_tmp395_, _tmp400_);
																	_vala_ccode_node_unref0 (_tmp400_);
																} else {
																	ValaCCodeFunctionCall* _tmp401_ = NULL;
																	ValaCCodeConstant* _tmp402_ = NULL;
																	ValaCCodeConstant* _tmp403_ = NULL;
																	_tmp401_ = cspec;
																	_tmp402_ = vala_ccode_constant_new ("G_TYPE_NONE");
																	_tmp403_ = _tmp402_;
																	vala_ccode_function_call_add_argument (_tmp401_, (ValaCCodeExpression*) _tmp403_);
																	_vala_ccode_node_unref0 (_tmp403_);
																}
															} else {
																ValaCCodeFunctionCall* _tmp404_ = NULL;
																ValaCCodeIdentifier* _tmp405_ = NULL;
																ValaCCodeIdentifier* _tmp406_ = NULL;
																ValaCCodeFunctionCall* _tmp407_ = NULL;
																const gchar* _tmp408_ = NULL;
																ValaCCodeIdentifier* _tmp409_ = NULL;
																ValaCCodeIdentifier* _tmp410_ = NULL;
																_tmp404_ = cspec;
																_tmp405_ = vala_ccode_identifier_new ("g_param_spec_boxed");
																_tmp406_ = _tmp405_;
																vala_ccode_function_call_set_call (_tmp404_, (ValaCCodeExpression*) _tmp406_);
																_vala_ccode_node_unref0 (_tmp406_);
																_tmp407_ = cspec;
																_tmp408_ = type_id;
																_tmp409_ = vala_ccode_identifier_new (_tmp408_);
																_tmp410_ = _tmp409_;
																vala_ccode_function_call_add_argument (_tmp407_, (ValaCCodeExpression*) _tmp410_);
																_vala_ccode_node_unref0 (_tmp410_);
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
				_g_free0 (type_id);
				_vala_code_node_unref0 (st);
			} else {
				gboolean _tmp411_ = FALSE;
				ValaProperty* _tmp412_ = NULL;
				ValaDataType* _tmp413_ = NULL;
				ValaDataType* _tmp414_ = NULL;
				_tmp412_ = prop;
				_tmp413_ = vala_property_get_property_type (_tmp412_);
				_tmp414_ = _tmp413_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp414_, VALA_TYPE_ARRAY_TYPE)) {
					ValaProperty* _tmp415_ = NULL;
					ValaDataType* _tmp416_ = NULL;
					ValaDataType* _tmp417_ = NULL;
					ValaDataType* _tmp418_ = NULL;
					ValaDataType* _tmp419_ = NULL;
					ValaTypeSymbol* _tmp420_ = NULL;
					ValaTypeSymbol* _tmp421_ = NULL;
					ValaDataType* _tmp422_ = NULL;
					ValaTypeSymbol* _tmp423_ = NULL;
					ValaTypeSymbol* _tmp424_ = NULL;
					_tmp415_ = prop;
					_tmp416_ = vala_property_get_property_type (_tmp415_);
					_tmp417_ = _tmp416_;
					_tmp418_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp417_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
					_tmp419_ = _tmp418_;
					_tmp420_ = vala_data_type_get_data_type (_tmp419_);
					_tmp421_ = _tmp420_;
					_tmp422_ = ((ValaCCodeBaseModule*) self)->string_type;
					_tmp423_ = vala_data_type_get_data_type (_tmp422_);
					_tmp424_ = _tmp423_;
					_tmp411_ = _tmp421_ == _tmp424_;
				} else {
					_tmp411_ = FALSE;
				}
				if (_tmp411_) {
					ValaCCodeFunctionCall* _tmp425_ = NULL;
					ValaCCodeIdentifier* _tmp426_ = NULL;
					ValaCCodeIdentifier* _tmp427_ = NULL;
					ValaCCodeFunctionCall* _tmp428_ = NULL;
					ValaCCodeIdentifier* _tmp429_ = NULL;
					ValaCCodeIdentifier* _tmp430_ = NULL;
					_tmp425_ = cspec;
					_tmp426_ = vala_ccode_identifier_new ("g_param_spec_boxed");
					_tmp427_ = _tmp426_;
					vala_ccode_function_call_set_call (_tmp425_, (ValaCCodeExpression*) _tmp427_);
					_vala_ccode_node_unref0 (_tmp427_);
					_tmp428_ = cspec;
					_tmp429_ = vala_ccode_identifier_new ("G_TYPE_STRV");
					_tmp430_ = _tmp429_;
					vala_ccode_function_call_add_argument (_tmp428_, (ValaCCodeExpression*) _tmp430_);
					_vala_ccode_node_unref0 (_tmp430_);
				} else {
					ValaCCodeFunctionCall* _tmp431_ = NULL;
					ValaCCodeIdentifier* _tmp432_ = NULL;
					ValaCCodeIdentifier* _tmp433_ = NULL;
					_tmp431_ = cspec;
					_tmp432_ = vala_ccode_identifier_new ("g_param_spec_pointer");
					_tmp433_ = _tmp432_;
					vala_ccode_function_call_set_call (_tmp431_, (ValaCCodeExpression*) _tmp433_);
					_vala_ccode_node_unref0 (_tmp433_);
				}
			}
		}
	}
	_tmp434_ = g_strdup ("G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB");
	pflags = _tmp434_;
	_tmp436_ = prop;
	_tmp437_ = vala_property_get_get_accessor (_tmp436_);
	_tmp438_ = _tmp437_;
	if (_tmp438_ != NULL) {
		ValaProperty* _tmp439_ = NULL;
		ValaPropertyAccessor* _tmp440_ = NULL;
		ValaPropertyAccessor* _tmp441_ = NULL;
		ValaSymbolAccessibility _tmp442_ = 0;
		ValaSymbolAccessibility _tmp443_ = 0;
		_tmp439_ = prop;
		_tmp440_ = vala_property_get_get_accessor (_tmp439_);
		_tmp441_ = _tmp440_;
		_tmp442_ = vala_symbol_get_access ((ValaSymbol*) _tmp441_);
		_tmp443_ = _tmp442_;
		_tmp435_ = _tmp443_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
	} else {
		_tmp435_ = FALSE;
	}
	if (_tmp435_) {
		const gchar* _tmp444_ = NULL;
		gchar* _tmp445_ = NULL;
		_tmp444_ = pflags;
		_tmp445_ = g_strdup_printf ("%s%s", _tmp444_, " | G_PARAM_READABLE");
		_g_free0 (pflags);
		pflags = _tmp445_;
	}
	_tmp447_ = prop;
	_tmp448_ = vala_property_get_set_accessor (_tmp447_);
	_tmp449_ = _tmp448_;
	if (_tmp449_ != NULL) {
		ValaProperty* _tmp450_ = NULL;
		ValaPropertyAccessor* _tmp451_ = NULL;
		ValaPropertyAccessor* _tmp452_ = NULL;
		ValaSymbolAccessibility _tmp453_ = 0;
		ValaSymbolAccessibility _tmp454_ = 0;
		_tmp450_ = prop;
		_tmp451_ = vala_property_get_set_accessor (_tmp450_);
		_tmp452_ = _tmp451_;
		_tmp453_ = vala_symbol_get_access ((ValaSymbol*) _tmp452_);
		_tmp454_ = _tmp453_;
		_tmp446_ = _tmp454_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
	} else {
		_tmp446_ = FALSE;
	}
	if (_tmp446_) {
		const gchar* _tmp455_ = NULL;
		gchar* _tmp456_ = NULL;
		ValaProperty* _tmp457_ = NULL;
		ValaPropertyAccessor* _tmp458_ = NULL;
		ValaPropertyAccessor* _tmp459_ = NULL;
		gboolean _tmp460_ = FALSE;
		gboolean _tmp461_ = FALSE;
		_tmp455_ = pflags;
		_tmp456_ = g_strdup_printf ("%s%s", _tmp455_, " | G_PARAM_WRITABLE");
		_g_free0 (pflags);
		pflags = _tmp456_;
		_tmp457_ = prop;
		_tmp458_ = vala_property_get_set_accessor (_tmp457_);
		_tmp459_ = _tmp458_;
		_tmp460_ = vala_property_accessor_get_construction (_tmp459_);
		_tmp461_ = _tmp460_;
		if (_tmp461_) {
			ValaProperty* _tmp462_ = NULL;
			ValaPropertyAccessor* _tmp463_ = NULL;
			ValaPropertyAccessor* _tmp464_ = NULL;
			gboolean _tmp465_ = FALSE;
			gboolean _tmp466_ = FALSE;
			_tmp462_ = prop;
			_tmp463_ = vala_property_get_set_accessor (_tmp462_);
			_tmp464_ = _tmp463_;
			_tmp465_ = vala_property_accessor_get_writable (_tmp464_);
			_tmp466_ = _tmp465_;
			if (_tmp466_) {
				const gchar* _tmp467_ = NULL;
				gchar* _tmp468_ = NULL;
				_tmp467_ = pflags;
				_tmp468_ = g_strdup_printf ("%s%s", _tmp467_, " | G_PARAM_CONSTRUCT");
				_g_free0 (pflags);
				pflags = _tmp468_;
			} else {
				const gchar* _tmp469_ = NULL;
				gchar* _tmp470_ = NULL;
				_tmp469_ = pflags;
				_tmp470_ = g_strdup_printf ("%s%s", _tmp469_, " | G_PARAM_CONSTRUCT_ONLY");
				_g_free0 (pflags);
				pflags = _tmp470_;
			}
		}
	}
	_tmp471_ = cspec;
	_tmp472_ = pflags;
	_tmp473_ = vala_ccode_constant_new (_tmp472_);
	_tmp474_ = _tmp473_;
	vala_ccode_function_call_add_argument (_tmp471_, (ValaCCodeExpression*) _tmp474_);
	_vala_ccode_node_unref0 (_tmp474_);
	result = cspec;
	_g_free0 (pflags);
	_g_free0 (blurb);
	_g_free0 (nick);
	return result;
}


static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space) {
	ValaGTypeModule * self;
	ValaCCodeFile* _tmp0_ = NULL;
	ValaInterface* _tmp1_ = NULL;
	ValaInterface* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	ValaCCodeStruct* type_struct = NULL;
	ValaInterface* _tmp32_ = NULL;
	gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	gchar* _tmp36_ = NULL;
	ValaCCodeStruct* _tmp37_ = NULL;
	ValaCCodeStruct* _tmp38_ = NULL;
	ValaCCodeFile* _tmp39_ = NULL;
	ValaCCodeNewline* _tmp40_ = NULL;
	ValaCCodeNewline* _tmp41_ = NULL;
	gchar* macro = NULL;
	ValaInterface* _tmp42_ = NULL;
	gchar* _tmp43_ = NULL;
	gchar* _tmp44_ = NULL;
	gchar* _tmp45_ = NULL;
	gchar* _tmp46_ = NULL;
	ValaCCodeFile* _tmp47_ = NULL;
	ValaInterface* _tmp48_ = NULL;
	gchar* _tmp49_ = NULL;
	gchar* _tmp50_ = NULL;
	const gchar* _tmp51_ = NULL;
	ValaCCodeMacroReplacement* _tmp52_ = NULL;
	ValaCCodeMacroReplacement* _tmp53_ = NULL;
	ValaInterface* _tmp54_ = NULL;
	gchar* _tmp55_ = NULL;
	gchar* _tmp56_ = NULL;
	ValaInterface* _tmp57_ = NULL;
	gchar* _tmp58_ = NULL;
	gchar* _tmp59_ = NULL;
	gchar* _tmp60_ = NULL;
	ValaCCodeFile* _tmp61_ = NULL;
	ValaInterface* _tmp62_ = NULL;
	gchar* _tmp63_ = NULL;
	gchar* _tmp64_ = NULL;
	gchar* _tmp65_ = NULL;
	gchar* _tmp66_ = NULL;
	const gchar* _tmp67_ = NULL;
	ValaCCodeMacroReplacement* _tmp68_ = NULL;
	ValaCCodeMacroReplacement* _tmp69_ = NULL;
	ValaInterface* _tmp70_ = NULL;
	gchar* _tmp71_ = NULL;
	gchar* _tmp72_ = NULL;
	gchar* _tmp73_ = NULL;
	ValaCCodeFile* _tmp74_ = NULL;
	ValaInterface* _tmp75_ = NULL;
	gchar* _tmp76_ = NULL;
	gchar* _tmp77_ = NULL;
	gchar* _tmp78_ = NULL;
	gchar* _tmp79_ = NULL;
	const gchar* _tmp80_ = NULL;
	ValaCCodeMacroReplacement* _tmp81_ = NULL;
	ValaCCodeMacroReplacement* _tmp82_ = NULL;
	ValaInterface* _tmp83_ = NULL;
	gchar* _tmp84_ = NULL;
	gchar* _tmp85_ = NULL;
	ValaInterface* _tmp86_ = NULL;
	gchar* _tmp87_ = NULL;
	gchar* _tmp88_ = NULL;
	gchar* _tmp89_ = NULL;
	ValaCCodeFile* _tmp90_ = NULL;
	ValaInterface* _tmp91_ = NULL;
	gchar* _tmp92_ = NULL;
	gchar* _tmp93_ = NULL;
	gchar* _tmp94_ = NULL;
	gchar* _tmp95_ = NULL;
	const gchar* _tmp96_ = NULL;
	ValaCCodeMacroReplacement* _tmp97_ = NULL;
	ValaCCodeMacroReplacement* _tmp98_ = NULL;
	ValaCCodeFile* _tmp99_ = NULL;
	ValaCCodeNewline* _tmp100_ = NULL;
	ValaCCodeNewline* _tmp101_ = NULL;
	ValaCCodeFile* _tmp102_ = NULL;
	ValaInterface* _tmp103_ = NULL;
	gchar* _tmp104_ = NULL;
	gchar* _tmp105_ = NULL;
	gchar* _tmp106_ = NULL;
	gchar* _tmp107_ = NULL;
	ValaInterface* _tmp108_ = NULL;
	gchar* _tmp109_ = NULL;
	gchar* _tmp110_ = NULL;
	ValaCCodeVariableDeclarator* _tmp111_ = NULL;
	ValaCCodeVariableDeclarator* _tmp112_ = NULL;
	ValaCCodeTypeDefinition* _tmp113_ = NULL;
	ValaCCodeTypeDefinition* _tmp114_ = NULL;
	ValaCCodeFile* _tmp115_ = NULL;
	ValaCCodeStruct* _tmp116_ = NULL;
	const gchar* _tmp117_ = NULL;
	const gchar* _tmp118_ = NULL;
	gchar* _tmp119_ = NULL;
	gchar* _tmp120_ = NULL;
	ValaInterface* _tmp121_ = NULL;
	gchar* _tmp122_ = NULL;
	gchar* _tmp123_ = NULL;
	ValaCCodeVariableDeclarator* _tmp124_ = NULL;
	ValaCCodeVariableDeclarator* _tmp125_ = NULL;
	ValaCCodeTypeDefinition* _tmp126_ = NULL;
	ValaCCodeTypeDefinition* _tmp127_ = NULL;
	ValaCCodeStruct* _tmp128_ = NULL;
	ValaInterface* _tmp129_ = NULL;
	ValaAttribute* _tmp130_ = NULL;
	ValaAttribute* _tmp131_ = NULL;
	gboolean _tmp132_ = FALSE;
	ValaCCodeFile* _tmp373_ = NULL;
	ValaCCodeStruct* _tmp374_ = NULL;
	ValaInterfaceRegisterFunction* type_fun = NULL;
	ValaInterface* _tmp375_ = NULL;
	ValaCodeContext* _tmp376_ = NULL;
	ValaCodeContext* _tmp377_ = NULL;
	ValaInterfaceRegisterFunction* _tmp378_ = NULL;
	ValaInterfaceRegisterFunction* _tmp379_ = NULL;
	gboolean _tmp380_ = FALSE;
	ValaCCodeFile* _tmp381_ = NULL;
	ValaInterfaceRegisterFunction* _tmp382_ = NULL;
	ValaCCodeFragment* _tmp383_ = NULL;
	ValaCCodeFragment* _tmp384_ = NULL;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (iface != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = iface;
	_tmp2_ = iface;
	_tmp3_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	if (_tmp6_) {
		return;
	}
	{
		ValaList* _prerequisite_list = NULL;
		ValaInterface* _tmp7_ = NULL;
		ValaList* _tmp8_ = NULL;
		gint _prerequisite_size = 0;
		ValaList* _tmp9_ = NULL;
		gint _tmp10_ = 0;
		gint _tmp11_ = 0;
		gint _prerequisite_index = 0;
		_tmp7_ = iface;
		_tmp8_ = vala_interface_get_prerequisites (_tmp7_);
		_prerequisite_list = _tmp8_;
		_tmp9_ = _prerequisite_list;
		_tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_);
		_tmp11_ = _tmp10_;
		_prerequisite_size = _tmp11_;
		_prerequisite_index = -1;
		while (TRUE) {
			gint _tmp12_ = 0;
			gint _tmp13_ = 0;
			gint _tmp14_ = 0;
			ValaDataType* prerequisite = NULL;
			ValaList* _tmp15_ = NULL;
			gint _tmp16_ = 0;
			gpointer _tmp17_ = NULL;
			ValaClass* prereq_cl = NULL;
			ValaDataType* _tmp18_ = NULL;
			ValaTypeSymbol* _tmp19_ = NULL;
			ValaTypeSymbol* _tmp20_ = NULL;
			ValaClass* _tmp21_ = NULL;
			ValaInterface* prereq_iface = NULL;
			ValaDataType* _tmp22_ = NULL;
			ValaTypeSymbol* _tmp23_ = NULL;
			ValaTypeSymbol* _tmp24_ = NULL;
			ValaInterface* _tmp25_ = NULL;
			ValaClass* _tmp26_ = NULL;
			_tmp12_ = _prerequisite_index;
			_prerequisite_index = _tmp12_ + 1;
			_tmp13_ = _prerequisite_index;
			_tmp14_ = _prerequisite_size;
			if (!(_tmp13_ < _tmp14_)) {
				break;
			}
			_tmp15_ = _prerequisite_list;
			_tmp16_ = _prerequisite_index;
			_tmp17_ = vala_list_get (_tmp15_, _tmp16_);
			prerequisite = (ValaDataType*) _tmp17_;
			_tmp18_ = prerequisite;
			_tmp19_ = vala_data_type_get_data_type (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp20_) : NULL);
			prereq_cl = _tmp21_;
			_tmp22_ = prerequisite;
			_tmp23_ = vala_data_type_get_data_type (_tmp22_);
			_tmp24_ = _tmp23_;
			_tmp25_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp24_) : NULL);
			prereq_iface = _tmp25_;
			_tmp26_ = prereq_cl;
			if (_tmp26_ != NULL) {
				ValaClass* _tmp27_ = NULL;
				ValaCCodeFile* _tmp28_ = NULL;
				_tmp27_ = prereq_cl;
				_tmp28_ = decl_space;
				vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp27_, _tmp28_);
			} else {
				ValaInterface* _tmp29_ = NULL;
				_tmp29_ = prereq_iface;
				if (_tmp29_ != NULL) {
					ValaInterface* _tmp30_ = NULL;
					ValaCCodeFile* _tmp31_ = NULL;
					_tmp30_ = prereq_iface;
					_tmp31_ = decl_space;
					vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp30_, _tmp31_);
				}
			}
			_vala_code_node_unref0 (prereq_iface);
			_vala_code_node_unref0 (prereq_cl);
			_vala_code_node_unref0 (prerequisite);
		}
		_vala_iterable_unref0 (_prerequisite_list);
	}
	_tmp32_ = iface;
	_tmp33_ = vala_ccode_base_module_get_ccode_type_name (_tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = g_strdup_printf ("_%s", _tmp34_);
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_struct_new (_tmp36_);
	_tmp38_ = _tmp37_;
	_g_free0 (_tmp36_);
	_g_free0 (_tmp34_);
	type_struct = _tmp38_;
	_tmp39_ = decl_space;
	_tmp40_ = vala_ccode_newline_new ();
	_tmp41_ = _tmp40_;
	vala_ccode_file_add_type_declaration (_tmp39_, (ValaCCodeNode*) _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = iface;
	_tmp43_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp42_, NULL);
	_tmp44_ = _tmp43_;
	_tmp45_ = g_strdup_printf ("(%s_get_type ())", _tmp44_);
	_tmp46_ = _tmp45_;
	_g_free0 (_tmp44_);
	macro = _tmp46_;
	_tmp47_ = decl_space;
	_tmp48_ = iface;
	_tmp49_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp48_);
	_tmp50_ = _tmp49_;
	_tmp51_ = macro;
	_tmp52_ = vala_ccode_macro_replacement_new (_tmp50_, _tmp51_);
	_tmp53_ = _tmp52_;
	vala_ccode_file_add_type_declaration (_tmp47_, (ValaCCodeNode*) _tmp53_);
	_vala_ccode_node_unref0 (_tmp53_);
	_g_free0 (_tmp50_);
	_tmp54_ = iface;
	_tmp55_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp54_);
	_tmp56_ = _tmp55_;
	_tmp57_ = iface;
	_tmp58_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp57_);
	_tmp59_ = _tmp58_;
	_tmp60_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp56_, _tmp59_);
	_g_free0 (macro);
	macro = _tmp60_;
	_g_free0 (_tmp59_);
	_g_free0 (_tmp56_);
	_tmp61_ = decl_space;
	_tmp62_ = iface;
	_tmp63_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp62_, NULL);
	_tmp64_ = _tmp63_;
	_tmp65_ = g_strdup_printf ("%s(obj)", _tmp64_);
	_tmp66_ = _tmp65_;
	_tmp67_ = macro;
	_tmp68_ = vala_ccode_macro_replacement_new (_tmp66_, _tmp67_);
	_tmp69_ = _tmp68_;
	vala_ccode_file_add_type_declaration (_tmp61_, (ValaCCodeNode*) _tmp69_);
	_vala_ccode_node_unref0 (_tmp69_);
	_g_free0 (_tmp66_);
	_g_free0 (_tmp64_);
	_tmp70_ = iface;
	_tmp71_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp70_);
	_tmp72_ = _tmp71_;
	_tmp73_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp72_);
	_g_free0 (macro);
	macro = _tmp73_;
	_g_free0 (_tmp72_);
	_tmp74_ = decl_space;
	_tmp75_ = iface;
	_tmp76_ = vala_ccode_base_module_get_ccode_type_check_function ((ValaTypeSymbol*) _tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = g_strdup_printf ("%s(obj)", _tmp77_);
	_tmp79_ = _tmp78_;
	_tmp80_ = macro;
	_tmp81_ = vala_ccode_macro_replacement_new (_tmp79_, _tmp80_);
	_tmp82_ = _tmp81_;
	vala_ccode_file_add_type_declaration (_tmp74_, (ValaCCodeNode*) _tmp82_);
	_vala_ccode_node_unref0 (_tmp82_);
	_g_free0 (_tmp79_);
	_g_free0 (_tmp77_);
	_tmp83_ = iface;
	_tmp84_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp83_);
	_tmp85_ = _tmp84_;
	_tmp86_ = iface;
	_tmp87_ = vala_ccode_base_module_get_ccode_type_name (_tmp86_);
	_tmp88_ = _tmp87_;
	_tmp89_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))", _tmp85_, _tmp88_);
	_g_free0 (macro);
	macro = _tmp89_;
	_g_free0 (_tmp88_);
	_g_free0 (_tmp85_);
	_tmp90_ = decl_space;
	_tmp91_ = iface;
	_tmp92_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp91_, NULL);
	_tmp93_ = _tmp92_;
	_tmp94_ = g_strdup_printf ("%s_GET_INTERFACE(obj)", _tmp93_);
	_tmp95_ = _tmp94_;
	_tmp96_ = macro;
	_tmp97_ = vala_ccode_macro_replacement_new (_tmp95_, _tmp96_);
	_tmp98_ = _tmp97_;
	vala_ccode_file_add_type_declaration (_tmp90_, (ValaCCodeNode*) _tmp98_);
	_vala_ccode_node_unref0 (_tmp98_);
	_g_free0 (_tmp95_);
	_g_free0 (_tmp93_);
	_tmp99_ = decl_space;
	_tmp100_ = vala_ccode_newline_new ();
	_tmp101_ = _tmp100_;
	vala_ccode_file_add_type_declaration (_tmp99_, (ValaCCodeNode*) _tmp101_);
	_vala_ccode_node_unref0 (_tmp101_);
	_tmp102_ = decl_space;
	_tmp103_ = iface;
	_tmp104_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp103_);
	_tmp105_ = _tmp104_;
	_tmp106_ = g_strdup_printf ("struct _%s", _tmp105_);
	_tmp107_ = _tmp106_;
	_tmp108_ = iface;
	_tmp109_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp108_);
	_tmp110_ = _tmp109_;
	_tmp111_ = vala_ccode_variable_declarator_new (_tmp110_, NULL, NULL);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_type_definition_new (_tmp107_, (ValaCCodeDeclarator*) _tmp112_);
	_tmp114_ = _tmp113_;
	vala_ccode_file_add_type_declaration (_tmp102_, (ValaCCodeNode*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_vala_ccode_node_unref0 (_tmp112_);
	_g_free0 (_tmp110_);
	_g_free0 (_tmp107_);
	_g_free0 (_tmp105_);
	_tmp115_ = decl_space;
	_tmp116_ = type_struct;
	_tmp117_ = vala_ccode_struct_get_name (_tmp116_);
	_tmp118_ = _tmp117_;
	_tmp119_ = g_strdup_printf ("struct %s", _tmp118_);
	_tmp120_ = _tmp119_;
	_tmp121_ = iface;
	_tmp122_ = vala_ccode_base_module_get_ccode_type_name (_tmp121_);
	_tmp123_ = _tmp122_;
	_tmp124_ = vala_ccode_variable_declarator_new (_tmp123_, NULL, NULL);
	_tmp125_ = _tmp124_;
	_tmp126_ = vala_ccode_type_definition_new (_tmp120_, (ValaCCodeDeclarator*) _tmp125_);
	_tmp127_ = _tmp126_;
	vala_ccode_file_add_type_declaration (_tmp115_, (ValaCCodeNode*) _tmp127_);
	_vala_ccode_node_unref0 (_tmp127_);
	_vala_ccode_node_unref0 (_tmp125_);
	_g_free0 (_tmp123_);
	_g_free0 (_tmp120_);
	_tmp128_ = type_struct;
	vala_ccode_struct_add_field (_tmp128_, "GTypeInterface", "parent_iface", NULL);
	_tmp129_ = iface;
	_tmp130_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp129_, "GenericAccessors");
	_tmp131_ = _tmp130_;
	_tmp132_ = _tmp131_ != NULL;
	_vala_code_node_unref0 (_tmp131_);
	if (_tmp132_) {
		{
			ValaList* _p_list = NULL;
			ValaInterface* _tmp133_ = NULL;
			ValaList* _tmp134_ = NULL;
			gint _p_size = 0;
			ValaList* _tmp135_ = NULL;
			gint _tmp136_ = 0;
			gint _tmp137_ = 0;
			gint _p_index = 0;
			_tmp133_ = iface;
			_tmp134_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp133_);
			_p_list = _tmp134_;
			_tmp135_ = _p_list;
			_tmp136_ = vala_collection_get_size ((ValaCollection*) _tmp135_);
			_tmp137_ = _tmp136_;
			_p_size = _tmp137_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp138_ = 0;
				gint _tmp139_ = 0;
				gint _tmp140_ = 0;
				ValaTypeParameter* p = NULL;
				ValaList* _tmp141_ = NULL;
				gint _tmp142_ = 0;
				gpointer _tmp143_ = NULL;
				gchar* method_name = NULL;
				ValaTypeParameter* _tmp144_ = NULL;
				const gchar* _tmp145_ = NULL;
				const gchar* _tmp146_ = NULL;
				gchar* _tmp147_ = NULL;
				gchar* _tmp148_ = NULL;
				gchar* _tmp149_ = NULL;
				gchar* _tmp150_ = NULL;
				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
				const gchar* _tmp151_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp152_ = NULL;
				ValaDataType* this_type = NULL;
				ValaInterface* _tmp153_ = NULL;
				ValaDataType* _tmp154_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp155_ = NULL;
				ValaDataType* _tmp156_ = NULL;
				gchar* _tmp157_ = NULL;
				gchar* _tmp158_ = NULL;
				ValaCCodeParameter* _tmp159_ = NULL;
				ValaCCodeParameter* _tmp160_ = NULL;
				ValaCCodeDeclaration* vdecl = NULL;
				ValaCCodeDeclaration* _tmp161_ = NULL;
				ValaCCodeDeclaration* _tmp162_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp163_ = NULL;
				ValaCCodeStruct* _tmp164_ = NULL;
				ValaCCodeDeclaration* _tmp165_ = NULL;
				ValaTypeParameter* _tmp166_ = NULL;
				const gchar* _tmp167_ = NULL;
				const gchar* _tmp168_ = NULL;
				gchar* _tmp169_ = NULL;
				gchar* _tmp170_ = NULL;
				gchar* _tmp171_ = NULL;
				const gchar* _tmp172_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp173_ = NULL;
				ValaInterface* _tmp174_ = NULL;
				ValaDataType* _tmp175_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp176_ = NULL;
				ValaDataType* _tmp177_ = NULL;
				gchar* _tmp178_ = NULL;
				gchar* _tmp179_ = NULL;
				ValaCCodeParameter* _tmp180_ = NULL;
				ValaCCodeParameter* _tmp181_ = NULL;
				ValaCCodeDeclaration* _tmp182_ = NULL;
				ValaCCodeDeclaration* _tmp183_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp184_ = NULL;
				ValaCCodeStruct* _tmp185_ = NULL;
				ValaCCodeDeclaration* _tmp186_ = NULL;
				ValaTypeParameter* _tmp187_ = NULL;
				const gchar* _tmp188_ = NULL;
				const gchar* _tmp189_ = NULL;
				gchar* _tmp190_ = NULL;
				gchar* _tmp191_ = NULL;
				gchar* _tmp192_ = NULL;
				const gchar* _tmp193_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp194_ = NULL;
				ValaInterface* _tmp195_ = NULL;
				ValaDataType* _tmp196_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp197_ = NULL;
				ValaDataType* _tmp198_ = NULL;
				gchar* _tmp199_ = NULL;
				gchar* _tmp200_ = NULL;
				ValaCCodeParameter* _tmp201_ = NULL;
				ValaCCodeParameter* _tmp202_ = NULL;
				ValaCCodeDeclaration* _tmp203_ = NULL;
				ValaCCodeDeclaration* _tmp204_ = NULL;
				ValaCCodeFunctionDeclarator* _tmp205_ = NULL;
				ValaCCodeStruct* _tmp206_ = NULL;
				ValaCCodeDeclaration* _tmp207_ = NULL;
				_tmp138_ = _p_index;
				_p_index = _tmp138_ + 1;
				_tmp139_ = _p_index;
				_tmp140_ = _p_size;
				if (!(_tmp139_ < _tmp140_)) {
					break;
				}
				_tmp141_ = _p_list;
				_tmp142_ = _p_index;
				_tmp143_ = vala_list_get (_tmp141_, _tmp142_);
				p = (ValaTypeParameter*) _tmp143_;
				_tmp144_ = p;
				_tmp145_ = vala_symbol_get_name ((ValaSymbol*) _tmp144_);
				_tmp146_ = _tmp145_;
				_tmp147_ = g_utf8_strdown (_tmp146_, (gssize) -1);
				_tmp148_ = _tmp147_;
				_tmp149_ = g_strdup_printf ("get_%s_type", _tmp148_);
				_tmp150_ = _tmp149_;
				_g_free0 (_tmp148_);
				method_name = _tmp150_;
				_tmp151_ = method_name;
				_tmp152_ = vala_ccode_function_declarator_new (_tmp151_);
				vdeclarator = _tmp152_;
				_tmp153_ = iface;
				_tmp154_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp153_);
				this_type = _tmp154_;
				_tmp155_ = vdeclarator;
				_tmp156_ = this_type;
				_tmp157_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp156_);
				_tmp158_ = _tmp157_;
				_tmp159_ = vala_ccode_parameter_new ("self", _tmp158_);
				_tmp160_ = _tmp159_;
				vala_ccode_function_declarator_add_parameter (_tmp155_, _tmp160_);
				_vala_ccode_node_unref0 (_tmp160_);
				_g_free0 (_tmp158_);
				_tmp161_ = vala_ccode_declaration_new ("GType");
				vdecl = _tmp161_;
				_tmp162_ = vdecl;
				_tmp163_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp162_, (ValaCCodeDeclarator*) _tmp163_);
				_tmp164_ = type_struct;
				_tmp165_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp164_, _tmp165_);
				_tmp166_ = p;
				_tmp167_ = vala_symbol_get_name ((ValaSymbol*) _tmp166_);
				_tmp168_ = _tmp167_;
				_tmp169_ = g_utf8_strdown (_tmp168_, (gssize) -1);
				_tmp170_ = _tmp169_;
				_tmp171_ = g_strdup_printf ("get_%s_dup_func", _tmp170_);
				_g_free0 (method_name);
				method_name = _tmp171_;
				_g_free0 (_tmp170_);
				_tmp172_ = method_name;
				_tmp173_ = vala_ccode_function_declarator_new (_tmp172_);
				_vala_ccode_node_unref0 (vdeclarator);
				vdeclarator = _tmp173_;
				_tmp174_ = iface;
				_tmp175_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp174_);
				_vala_code_node_unref0 (this_type);
				this_type = _tmp175_;
				_tmp176_ = vdeclarator;
				_tmp177_ = this_type;
				_tmp178_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp177_);
				_tmp179_ = _tmp178_;
				_tmp180_ = vala_ccode_parameter_new ("self", _tmp179_);
				_tmp181_ = _tmp180_;
				vala_ccode_function_declarator_add_parameter (_tmp176_, _tmp181_);
				_vala_ccode_node_unref0 (_tmp181_);
				_g_free0 (_tmp179_);
				_tmp182_ = vala_ccode_declaration_new ("GBoxedCopyFunc");
				_vala_ccode_node_unref0 (vdecl);
				vdecl = _tmp182_;
				_tmp183_ = vdecl;
				_tmp184_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp183_, (ValaCCodeDeclarator*) _tmp184_);
				_tmp185_ = type_struct;
				_tmp186_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp185_, _tmp186_);
				_tmp187_ = p;
				_tmp188_ = vala_symbol_get_name ((ValaSymbol*) _tmp187_);
				_tmp189_ = _tmp188_;
				_tmp190_ = g_utf8_strdown (_tmp189_, (gssize) -1);
				_tmp191_ = _tmp190_;
				_tmp192_ = g_strdup_printf ("get_%s_destroy_func", _tmp191_);
				_g_free0 (method_name);
				method_name = _tmp192_;
				_g_free0 (_tmp191_);
				_tmp193_ = method_name;
				_tmp194_ = vala_ccode_function_declarator_new (_tmp193_);
				_vala_ccode_node_unref0 (vdeclarator);
				vdeclarator = _tmp194_;
				_tmp195_ = iface;
				_tmp196_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp195_);
				_vala_code_node_unref0 (this_type);
				this_type = _tmp196_;
				_tmp197_ = vdeclarator;
				_tmp198_ = this_type;
				_tmp199_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp198_);
				_tmp200_ = _tmp199_;
				_tmp201_ = vala_ccode_parameter_new ("self", _tmp200_);
				_tmp202_ = _tmp201_;
				vala_ccode_function_declarator_add_parameter (_tmp197_, _tmp202_);
				_vala_ccode_node_unref0 (_tmp202_);
				_g_free0 (_tmp200_);
				_tmp203_ = vala_ccode_declaration_new ("GDestroyNotify");
				_vala_ccode_node_unref0 (vdecl);
				vdecl = _tmp203_;
				_tmp204_ = vdecl;
				_tmp205_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp204_, (ValaCCodeDeclarator*) _tmp205_);
				_tmp206_ = type_struct;
				_tmp207_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp206_, _tmp207_);
				_vala_ccode_node_unref0 (vdecl);
				_vala_code_node_unref0 (this_type);
				_vala_ccode_node_unref0 (vdeclarator);
				_g_free0 (method_name);
				_vala_code_node_unref0 (p);
			}
			_vala_iterable_unref0 (_p_list);
		}
	}
	{
		ValaList* _sym_list = NULL;
		ValaInterface* _tmp208_ = NULL;
		ValaList* _tmp209_ = NULL;
		gint _sym_size = 0;
		ValaList* _tmp210_ = NULL;
		gint _tmp211_ = 0;
		gint _tmp212_ = 0;
		gint _sym_index = 0;
		_tmp208_ = iface;
		_tmp209_ = vala_interface_get_virtuals (_tmp208_);
		_sym_list = _tmp209_;
		_tmp210_ = _sym_list;
		_tmp211_ = vala_collection_get_size ((ValaCollection*) _tmp210_);
		_tmp212_ = _tmp211_;
		_sym_size = _tmp212_;
		_sym_index = -1;
		while (TRUE) {
			gint _tmp213_ = 0;
			gint _tmp214_ = 0;
			gint _tmp215_ = 0;
			ValaSymbol* sym = NULL;
			ValaList* _tmp216_ = NULL;
			gint _tmp217_ = 0;
			gpointer _tmp218_ = NULL;
			ValaMethod* m = NULL;
			ValaSignal* sig = NULL;
			ValaProperty* prop = NULL;
			ValaSymbol* _tmp219_ = NULL;
			ValaMethod* _tmp220_ = NULL;
			ValaMethod* _tmp221_ = NULL;
			_tmp213_ = _sym_index;
			_sym_index = _tmp213_ + 1;
			_tmp214_ = _sym_index;
			_tmp215_ = _sym_size;
			if (!(_tmp214_ < _tmp215_)) {
				break;
			}
			_tmp216_ = _sym_list;
			_tmp217_ = _sym_index;
			_tmp218_ = vala_list_get (_tmp216_, _tmp217_);
			sym = (ValaSymbol*) _tmp218_;
			_tmp219_ = sym;
			_tmp220_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp219_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp219_) : NULL);
			_vala_code_node_unref0 (m);
			m = _tmp220_;
			_tmp221_ = m;
			if (_tmp221_ != NULL) {
				ValaMethod* _tmp222_ = NULL;
				ValaCCodeFile* _tmp223_ = NULL;
				ValaCCodeStruct* _tmp224_ = NULL;
				_tmp222_ = m;
				_tmp223_ = decl_space;
				_tmp224_ = type_struct;
				vala_gtype_module_generate_virtual_method_declaration (self, _tmp222_, _tmp223_, _tmp224_);
			} else {
				ValaSymbol* _tmp225_ = NULL;
				ValaSignal* _tmp226_ = NULL;
				ValaSignal* _tmp227_ = NULL;
				_tmp225_ = sym;
				_tmp226_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp225_, VALA_TYPE_SIGNAL) ? ((ValaSignal*) _tmp225_) : NULL);
				_vala_code_node_unref0 (sig);
				sig = _tmp226_;
				_tmp227_ = sig;
				if (_tmp227_ != NULL) {
					ValaSignal* _tmp228_ = NULL;
					ValaMethod* _tmp229_ = NULL;
					ValaMethod* _tmp230_ = NULL;
					_tmp228_ = sig;
					_tmp229_ = vala_signal_get_default_handler (_tmp228_);
					_tmp230_ = _tmp229_;
					if (_tmp230_ != NULL) {
						ValaSignal* _tmp231_ = NULL;
						ValaMethod* _tmp232_ = NULL;
						ValaMethod* _tmp233_ = NULL;
						ValaCCodeFile* _tmp234_ = NULL;
						ValaCCodeStruct* _tmp235_ = NULL;
						_tmp231_ = sig;
						_tmp232_ = vala_signal_get_default_handler (_tmp231_);
						_tmp233_ = _tmp232_;
						_tmp234_ = decl_space;
						_tmp235_ = type_struct;
						vala_gtype_module_generate_virtual_method_declaration (self, _tmp233_, _tmp234_, _tmp235_);
					}
				} else {
					ValaSymbol* _tmp236_ = NULL;
					ValaProperty* _tmp237_ = NULL;
					ValaProperty* _tmp238_ = NULL;
					_tmp236_ = sym;
					_tmp237_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp236_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp236_) : NULL);
					_vala_code_node_unref0 (prop);
					prop = _tmp237_;
					_tmp238_ = prop;
					if (_tmp238_ != NULL) {
						ValaProperty* _tmp239_ = NULL;
						ValaDataType* _tmp240_ = NULL;
						ValaDataType* _tmp241_ = NULL;
						ValaCCodeFile* _tmp242_ = NULL;
						ValaObjectTypeSymbol* t = NULL;
						ValaProperty* _tmp243_ = NULL;
						ValaSymbol* _tmp244_ = NULL;
						ValaSymbol* _tmp245_ = NULL;
						ValaObjectTypeSymbol* _tmp246_ = NULL;
						gboolean returns_real_struct = FALSE;
						ValaProperty* _tmp247_ = NULL;
						ValaDataType* _tmp248_ = NULL;
						ValaDataType* _tmp249_ = NULL;
						gboolean _tmp250_ = FALSE;
						ValaObjectType* this_type = NULL;
						ValaObjectTypeSymbol* _tmp251_ = NULL;
						ValaObjectType* _tmp252_ = NULL;
						ValaCCodeParameter* cselfparam = NULL;
						ValaObjectType* _tmp253_ = NULL;
						gchar* _tmp254_ = NULL;
						gchar* _tmp255_ = NULL;
						ValaCCodeParameter* _tmp256_ = NULL;
						ValaCCodeParameter* _tmp257_ = NULL;
						ValaProperty* _tmp258_ = NULL;
						ValaPropertyAccessor* _tmp259_ = NULL;
						ValaPropertyAccessor* _tmp260_ = NULL;
						ValaProperty* _tmp314_ = NULL;
						ValaPropertyAccessor* _tmp315_ = NULL;
						ValaPropertyAccessor* _tmp316_ = NULL;
						_tmp239_ = prop;
						_tmp240_ = vala_property_get_property_type (_tmp239_);
						_tmp241_ = _tmp240_;
						_tmp242_ = decl_space;
						vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp241_, _tmp242_);
						_tmp243_ = prop;
						_tmp244_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp243_);
						_tmp245_ = _tmp244_;
						_tmp246_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp245_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
						t = _tmp246_;
						_tmp247_ = prop;
						_tmp248_ = vala_property_get_property_type (_tmp247_);
						_tmp249_ = _tmp248_;
						_tmp250_ = vala_data_type_is_real_non_null_struct_type (_tmp249_);
						returns_real_struct = _tmp250_;
						_tmp251_ = t;
						_tmp252_ = vala_object_type_new (_tmp251_);
						this_type = _tmp252_;
						_tmp253_ = this_type;
						_tmp254_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp253_);
						_tmp255_ = _tmp254_;
						_tmp256_ = vala_ccode_parameter_new ("self", _tmp255_);
						_tmp257_ = _tmp256_;
						_g_free0 (_tmp255_);
						cselfparam = _tmp257_;
						_tmp258_ = prop;
						_tmp259_ = vala_property_get_get_accessor (_tmp258_);
						_tmp260_ = _tmp259_;
						if (_tmp260_ != NULL) {
							ValaCCodeFunctionDeclarator* vdeclarator = NULL;
							ValaProperty* _tmp261_ = NULL;
							const gchar* _tmp262_ = NULL;
							const gchar* _tmp263_ = NULL;
							gchar* _tmp264_ = NULL;
							gchar* _tmp265_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp266_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp267_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp268_ = NULL;
							ValaCCodeParameter* _tmp269_ = NULL;
							gchar* creturn_type = NULL;
							gboolean _tmp270_ = FALSE;
							ValaArrayType* array_type = NULL;
							ValaProperty* _tmp291_ = NULL;
							ValaDataType* _tmp292_ = NULL;
							ValaDataType* _tmp293_ = NULL;
							ValaArrayType* _tmp294_ = NULL;
							ValaArrayType* _tmp295_ = NULL;
							ValaCCodeDeclaration* vdecl = NULL;
							const gchar* _tmp308_ = NULL;
							ValaCCodeDeclaration* _tmp309_ = NULL;
							ValaCCodeDeclaration* _tmp310_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp311_ = NULL;
							ValaCCodeStruct* _tmp312_ = NULL;
							ValaCCodeDeclaration* _tmp313_ = NULL;
							_tmp261_ = prop;
							_tmp262_ = vala_symbol_get_name ((ValaSymbol*) _tmp261_);
							_tmp263_ = _tmp262_;
							_tmp264_ = g_strdup_printf ("get_%s", _tmp263_);
							_tmp265_ = _tmp264_;
							_tmp266_ = vala_ccode_function_declarator_new (_tmp265_);
							_tmp267_ = _tmp266_;
							_g_free0 (_tmp265_);
							vdeclarator = _tmp267_;
							_tmp268_ = vdeclarator;
							_tmp269_ = cselfparam;
							vala_ccode_function_declarator_add_parameter (_tmp268_, _tmp269_);
							_tmp270_ = returns_real_struct;
							if (_tmp270_) {
								ValaCCodeParameter* cvalueparam = NULL;
								ValaProperty* _tmp271_ = NULL;
								ValaPropertyAccessor* _tmp272_ = NULL;
								ValaPropertyAccessor* _tmp273_ = NULL;
								ValaDataType* _tmp274_ = NULL;
								ValaDataType* _tmp275_ = NULL;
								gchar* _tmp276_ = NULL;
								gchar* _tmp277_ = NULL;
								gchar* _tmp278_ = NULL;
								gchar* _tmp279_ = NULL;
								ValaCCodeParameter* _tmp280_ = NULL;
								ValaCCodeParameter* _tmp281_ = NULL;
								ValaCCodeFunctionDeclarator* _tmp282_ = NULL;
								ValaCCodeParameter* _tmp283_ = NULL;
								gchar* _tmp284_ = NULL;
								_tmp271_ = prop;
								_tmp272_ = vala_property_get_get_accessor (_tmp271_);
								_tmp273_ = _tmp272_;
								_tmp274_ = vala_property_accessor_get_value_type (_tmp273_);
								_tmp275_ = _tmp274_;
								_tmp276_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp275_);
								_tmp277_ = _tmp276_;
								_tmp278_ = g_strconcat (_tmp277_, "*", NULL);
								_tmp279_ = _tmp278_;
								_tmp280_ = vala_ccode_parameter_new ("value", _tmp279_);
								_tmp281_ = _tmp280_;
								_g_free0 (_tmp279_);
								_g_free0 (_tmp277_);
								cvalueparam = _tmp281_;
								_tmp282_ = vdeclarator;
								_tmp283_ = cvalueparam;
								vala_ccode_function_declarator_add_parameter (_tmp282_, _tmp283_);
								_tmp284_ = g_strdup ("void");
								_g_free0 (creturn_type);
								creturn_type = _tmp284_;
								_vala_ccode_node_unref0 (cvalueparam);
							} else {
								ValaProperty* _tmp285_ = NULL;
								ValaPropertyAccessor* _tmp286_ = NULL;
								ValaPropertyAccessor* _tmp287_ = NULL;
								ValaDataType* _tmp288_ = NULL;
								ValaDataType* _tmp289_ = NULL;
								gchar* _tmp290_ = NULL;
								_tmp285_ = prop;
								_tmp286_ = vala_property_get_get_accessor (_tmp285_);
								_tmp287_ = _tmp286_;
								_tmp288_ = vala_property_accessor_get_value_type (_tmp287_);
								_tmp289_ = _tmp288_;
								_tmp290_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp289_);
								_g_free0 (creturn_type);
								creturn_type = _tmp290_;
							}
							_tmp291_ = prop;
							_tmp292_ = vala_property_get_property_type (_tmp291_);
							_tmp293_ = _tmp292_;
							_tmp294_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp293_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp293_) : NULL);
							array_type = _tmp294_;
							_tmp295_ = array_type;
							if (_tmp295_ != NULL) {
								{
									gint dim = 0;
									dim = 1;
									{
										gboolean _tmp296_ = FALSE;
										_tmp296_ = TRUE;
										while (TRUE) {
											gint _tmp298_ = 0;
											ValaArrayType* _tmp299_ = NULL;
											gint _tmp300_ = 0;
											gint _tmp301_ = 0;
											ValaCCodeFunctionDeclarator* _tmp302_ = NULL;
											gint _tmp303_ = 0;
											gchar* _tmp304_ = NULL;
											gchar* _tmp305_ = NULL;
											ValaCCodeParameter* _tmp306_ = NULL;
											ValaCCodeParameter* _tmp307_ = NULL;
											if (!_tmp296_) {
												gint _tmp297_ = 0;
												_tmp297_ = dim;
												dim = _tmp297_ + 1;
											}
											_tmp296_ = FALSE;
											_tmp298_ = dim;
											_tmp299_ = array_type;
											_tmp300_ = vala_array_type_get_rank (_tmp299_);
											_tmp301_ = _tmp300_;
											if (!(_tmp298_ <= _tmp301_)) {
												break;
											}
											_tmp302_ = vdeclarator;
											_tmp303_ = dim;
											_tmp304_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp303_);
											_tmp305_ = _tmp304_;
											_tmp306_ = vala_ccode_parameter_new (_tmp305_, "int*");
											_tmp307_ = _tmp306_;
											vala_ccode_function_declarator_add_parameter (_tmp302_, _tmp307_);
											_vala_ccode_node_unref0 (_tmp307_);
											_g_free0 (_tmp305_);
										}
									}
								}
							}
							_tmp308_ = creturn_type;
							_tmp309_ = vala_ccode_declaration_new (_tmp308_);
							vdecl = _tmp309_;
							_tmp310_ = vdecl;
							_tmp311_ = vdeclarator;
							vala_ccode_declaration_add_declarator (_tmp310_, (ValaCCodeDeclarator*) _tmp311_);
							_tmp312_ = type_struct;
							_tmp313_ = vdecl;
							vala_ccode_struct_add_declaration (_tmp312_, _tmp313_);
							_vala_ccode_node_unref0 (vdecl);
							_vala_code_node_unref0 (array_type);
							_g_free0 (creturn_type);
							_vala_ccode_node_unref0 (vdeclarator);
						}
						_tmp314_ = prop;
						_tmp315_ = vala_property_get_set_accessor (_tmp314_);
						_tmp316_ = _tmp315_;
						if (_tmp316_ != NULL) {
							ValaCCodeFunctionDeclarator* vdeclarator = NULL;
							ValaProperty* _tmp317_ = NULL;
							const gchar* _tmp318_ = NULL;
							const gchar* _tmp319_ = NULL;
							gchar* _tmp320_ = NULL;
							gchar* _tmp321_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp322_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp323_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp324_ = NULL;
							ValaCCodeParameter* _tmp325_ = NULL;
							gboolean _tmp326_ = FALSE;
							ValaArrayType* array_type = NULL;
							ValaProperty* _tmp351_ = NULL;
							ValaDataType* _tmp352_ = NULL;
							ValaDataType* _tmp353_ = NULL;
							ValaArrayType* _tmp354_ = NULL;
							ValaArrayType* _tmp355_ = NULL;
							ValaCCodeDeclaration* vdecl = NULL;
							ValaCCodeDeclaration* _tmp368_ = NULL;
							ValaCCodeDeclaration* _tmp369_ = NULL;
							ValaCCodeFunctionDeclarator* _tmp370_ = NULL;
							ValaCCodeStruct* _tmp371_ = NULL;
							ValaCCodeDeclaration* _tmp372_ = NULL;
							_tmp317_ = prop;
							_tmp318_ = vala_symbol_get_name ((ValaSymbol*) _tmp317_);
							_tmp319_ = _tmp318_;
							_tmp320_ = g_strdup_printf ("set_%s", _tmp319_);
							_tmp321_ = _tmp320_;
							_tmp322_ = vala_ccode_function_declarator_new (_tmp321_);
							_tmp323_ = _tmp322_;
							_g_free0 (_tmp321_);
							vdeclarator = _tmp323_;
							_tmp324_ = vdeclarator;
							_tmp325_ = cselfparam;
							vala_ccode_function_declarator_add_parameter (_tmp324_, _tmp325_);
							_tmp326_ = returns_real_struct;
							if (_tmp326_) {
								ValaCCodeParameter* cvalueparam = NULL;
								ValaProperty* _tmp327_ = NULL;
								ValaPropertyAccessor* _tmp328_ = NULL;
								ValaPropertyAccessor* _tmp329_ = NULL;
								ValaDataType* _tmp330_ = NULL;
								ValaDataType* _tmp331_ = NULL;
								gchar* _tmp332_ = NULL;
								gchar* _tmp333_ = NULL;
								gchar* _tmp334_ = NULL;
								gchar* _tmp335_ = NULL;
								ValaCCodeParameter* _tmp336_ = NULL;
								ValaCCodeParameter* _tmp337_ = NULL;
								ValaCCodeFunctionDeclarator* _tmp338_ = NULL;
								ValaCCodeParameter* _tmp339_ = NULL;
								_tmp327_ = prop;
								_tmp328_ = vala_property_get_set_accessor (_tmp327_);
								_tmp329_ = _tmp328_;
								_tmp330_ = vala_property_accessor_get_value_type (_tmp329_);
								_tmp331_ = _tmp330_;
								_tmp332_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp331_);
								_tmp333_ = _tmp332_;
								_tmp334_ = g_strconcat (_tmp333_, "*", NULL);
								_tmp335_ = _tmp334_;
								_tmp336_ = vala_ccode_parameter_new ("value", _tmp335_);
								_tmp337_ = _tmp336_;
								_g_free0 (_tmp335_);
								_g_free0 (_tmp333_);
								cvalueparam = _tmp337_;
								_tmp338_ = vdeclarator;
								_tmp339_ = cvalueparam;
								vala_ccode_function_declarator_add_parameter (_tmp338_, _tmp339_);
								_vala_ccode_node_unref0 (cvalueparam);
							} else {
								ValaCCodeParameter* cvalueparam = NULL;
								ValaProperty* _tmp340_ = NULL;
								ValaPropertyAccessor* _tmp341_ = NULL;
								ValaPropertyAccessor* _tmp342_ = NULL;
								ValaDataType* _tmp343_ = NULL;
								ValaDataType* _tmp344_ = NULL;
								gchar* _tmp345_ = NULL;
								gchar* _tmp346_ = NULL;
								ValaCCodeParameter* _tmp347_ = NULL;
								ValaCCodeParameter* _tmp348_ = NULL;
								ValaCCodeFunctionDeclarator* _tmp349_ = NULL;
								ValaCCodeParameter* _tmp350_ = NULL;
								_tmp340_ = prop;
								_tmp341_ = vala_property_get_set_accessor (_tmp340_);
								_tmp342_ = _tmp341_;
								_tmp343_ = vala_property_accessor_get_value_type (_tmp342_);
								_tmp344_ = _tmp343_;
								_tmp345_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp344_);
								_tmp346_ = _tmp345_;
								_tmp347_ = vala_ccode_parameter_new ("value", _tmp346_);
								_tmp348_ = _tmp347_;
								_g_free0 (_tmp346_);
								cvalueparam = _tmp348_;
								_tmp349_ = vdeclarator;
								_tmp350_ = cvalueparam;
								vala_ccode_function_declarator_add_parameter (_tmp349_, _tmp350_);
								_vala_ccode_node_unref0 (cvalueparam);
							}
							_tmp351_ = prop;
							_tmp352_ = vala_property_get_property_type (_tmp351_);
							_tmp353_ = _tmp352_;
							_tmp354_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp353_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp353_) : NULL);
							array_type = _tmp354_;
							_tmp355_ = array_type;
							if (_tmp355_ != NULL) {
								{
									gint dim = 0;
									dim = 1;
									{
										gboolean _tmp356_ = FALSE;
										_tmp356_ = TRUE;
										while (TRUE) {
											gint _tmp358_ = 0;
											ValaArrayType* _tmp359_ = NULL;
											gint _tmp360_ = 0;
											gint _tmp361_ = 0;
											ValaCCodeFunctionDeclarator* _tmp362_ = NULL;
											gint _tmp363_ = 0;
											gchar* _tmp364_ = NULL;
											gchar* _tmp365_ = NULL;
											ValaCCodeParameter* _tmp366_ = NULL;
											ValaCCodeParameter* _tmp367_ = NULL;
											if (!_tmp356_) {
												gint _tmp357_ = 0;
												_tmp357_ = dim;
												dim = _tmp357_ + 1;
											}
											_tmp356_ = FALSE;
											_tmp358_ = dim;
											_tmp359_ = array_type;
											_tmp360_ = vala_array_type_get_rank (_tmp359_);
											_tmp361_ = _tmp360_;
											if (!(_tmp358_ <= _tmp361_)) {
												break;
											}
											_tmp362_ = vdeclarator;
											_tmp363_ = dim;
											_tmp364_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", _tmp363_);
											_tmp365_ = _tmp364_;
											_tmp366_ = vala_ccode_parameter_new (_tmp365_, "int");
											_tmp367_ = _tmp366_;
											vala_ccode_function_declarator_add_parameter (_tmp362_, _tmp367_);
											_vala_ccode_node_unref0 (_tmp367_);
											_g_free0 (_tmp365_);
										}
									}
								}
							}
							_tmp368_ = vala_ccode_declaration_new ("void");
							vdecl = _tmp368_;
							_tmp369_ = vdecl;
							_tmp370_ = vdeclarator;
							vala_ccode_declaration_add_declarator (_tmp369_, (ValaCCodeDeclarator*) _tmp370_);
							_tmp371_ = type_struct;
							_tmp372_ = vdecl;
							vala_ccode_struct_add_declaration (_tmp371_, _tmp372_);
							_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);
					} else {
						g_assert_not_reached ();
					}
				}
			}
			_vala_code_node_unref0 (prop);
			_vala_code_node_unref0 (sig);
			_vala_code_node_unref0 (m);
			_vala_code_node_unref0 (sym);
		}
		_vala_iterable_unref0 (_sym_list);
	}
	_tmp373_ = decl_space;
	_tmp374_ = type_struct;
	vala_ccode_file_add_type_definition (_tmp373_, (ValaCCodeNode*) _tmp374_);
	_tmp375_ = iface;
	_tmp376_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp377_ = _tmp376_;
	_tmp378_ = vala_interface_register_function_new (_tmp375_, _tmp377_);
	type_fun = _tmp378_;
	_tmp379_ = type_fun;
	_tmp380_ = ((ValaCCodeBaseModule*) self)->in_plugin;
	vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp379_, _tmp380_, TRUE);
	_tmp381_ = decl_space;
	_tmp382_ = type_fun;
	_tmp383_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp382_);
	_tmp384_ = _tmp383_;
	vala_ccode_file_add_type_member_declaration (_tmp381_, (ValaCCodeNode*) _tmp384_);
	_vala_ccode_node_unref0 (_tmp384_);
	_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;
	ValaInterface* _tmp0_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp1_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp2_ = NULL;
	ValaInterface* _tmp3_ = NULL;
	ValaSourceReference* _tmp4_ = NULL;
	ValaSourceReference* _tmp5_ = NULL;
	ValaInterface* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	gint _tmp9_ = 0;
	gint _tmp10_ = 0;
	gboolean _tmp11_ = FALSE;
	ValaInterface* _tmp21_ = NULL;
	ValaCCodeFile* _tmp22_ = NULL;
	ValaInterface* _tmp23_ = NULL;
	gboolean _tmp24_ = FALSE;
	ValaInterface* _tmp27_ = NULL;
	gboolean _tmp28_ = FALSE;
	ValaInterface* _tmp31_ = NULL;
	ValaInterface* _tmp32_ = NULL;
	ValaInterface* _tmp33_ = NULL;
	ValaComment* _tmp34_ = NULL;
	ValaComment* _tmp35_ = NULL;
	ValaInterfaceRegisterFunction* type_fun = NULL;
	ValaInterface* _tmp44_ = NULL;
	ValaCodeContext* _tmp45_ = NULL;
	ValaCodeContext* _tmp46_ = NULL;
	ValaInterfaceRegisterFunction* _tmp47_ = NULL;
	ValaInterfaceRegisterFunction* _tmp48_ = NULL;
	gboolean _tmp49_ = FALSE;
	ValaCCodeFile* _tmp50_ = NULL;
	ValaInterfaceRegisterFunction* _tmp51_ = NULL;
	ValaCCodeFragment* _tmp52_ = NULL;
	ValaCCodeFragment* _tmp53_ = NULL;
	ValaCCodeFile* _tmp54_ = NULL;
	ValaInterfaceRegisterFunction* _tmp55_ = NULL;
	ValaCCodeFragment* _tmp56_ = NULL;
	ValaCCodeFragment* _tmp57_ = NULL;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (iface != NULL);
	_tmp0_ = iface;
	_tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp2_);
	_vala_ccode_base_module_emit_context_unref0 (_tmp2_);
	_tmp3_ = iface;
	_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
	_tmp5_ = _tmp4_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
	_tmp6_ = iface;
	_tmp7_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = strlen (_tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = _tmp10_ < 3;
	_g_free0 (_tmp8_);
	if (_tmp11_) {
		ValaInterface* _tmp12_ = NULL;
		ValaInterface* _tmp13_ = NULL;
		ValaSourceReference* _tmp14_ = NULL;
		ValaSourceReference* _tmp15_ = NULL;
		ValaInterface* _tmp16_ = NULL;
		gchar* _tmp17_ = NULL;
		gchar* _tmp18_ = NULL;
		gchar* _tmp19_ = NULL;
		gchar* _tmp20_ = NULL;
		_tmp12_ = iface;
		vala_code_node_set_error ((ValaCodeNode*) _tmp12_, TRUE);
		_tmp13_ = iface;
		_tmp14_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = iface;
		_tmp17_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = g_strdup_printf ("Interface name `%s' is too short", _tmp18_);
		_tmp20_ = _tmp19_;
		vala_report_error (_tmp15_, _tmp20_);
		_g_free0 (_tmp20_);
		_g_free0 (_tmp18_);
		return;
	}
	_tmp21_ = iface;
	_tmp22_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp21_, _tmp22_);
	_tmp23_ = iface;
	_tmp24_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp23_);
	if (!_tmp24_) {
		ValaInterface* _tmp25_ = NULL;
		ValaCCodeFile* _tmp26_ = NULL;
		_tmp25_ = iface;
		_tmp26_ = ((ValaCCodeBaseModule*) self)->header_file;
		vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp25_, _tmp26_);
	}
	_tmp27_ = iface;
	_tmp28_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp27_);
	if (!_tmp28_) {
		ValaInterface* _tmp29_ = NULL;
		ValaCCodeFile* _tmp30_ = NULL;
		_tmp29_ = iface;
		_tmp30_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
		vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp29_, _tmp30_);
	}
	_tmp31_ = iface;
	vala_code_node_accept_children ((ValaCodeNode*) _tmp31_, (ValaCodeVisitor*) self);
	_tmp32_ = iface;
	vala_gtype_module_add_interface_base_init_function (self, _tmp32_);
	_tmp33_ = iface;
	_tmp34_ = vala_symbol_get_comment ((ValaSymbol*) _tmp33_);
	_tmp35_ = _tmp34_;
	if (_tmp35_ != NULL) {
		ValaCCodeFile* _tmp36_ = NULL;
		ValaInterface* _tmp37_ = NULL;
		ValaComment* _tmp38_ = NULL;
		ValaComment* _tmp39_ = NULL;
		const gchar* _tmp40_ = NULL;
		const gchar* _tmp41_ = NULL;
		ValaCCodeComment* _tmp42_ = NULL;
		ValaCCodeComment* _tmp43_ = NULL;
		_tmp36_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp37_ = iface;
		_tmp38_ = vala_symbol_get_comment ((ValaSymbol*) _tmp37_);
		_tmp39_ = _tmp38_;
		_tmp40_ = vala_comment_get_content (_tmp39_);
		_tmp41_ = _tmp40_;
		_tmp42_ = vala_ccode_comment_new (_tmp41_);
		_tmp43_ = _tmp42_;
		vala_ccode_file_add_type_member_definition (_tmp36_, (ValaCCodeNode*) _tmp43_);
		_vala_ccode_node_unref0 (_tmp43_);
	}
	_tmp44_ = iface;
	_tmp45_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_interface_register_function_new (_tmp44_, _tmp46_);
	type_fun = _tmp47_;
	_tmp48_ = type_fun;
	_tmp49_ = ((ValaCCodeBaseModule*) self)->in_plugin;
	vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp48_, _tmp49_, FALSE);
	_tmp50_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp51_ = type_fun;
	_tmp52_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp51_);
	_tmp53_ = _tmp52_;
	vala_ccode_file_add_type_member_declaration (_tmp50_, (ValaCCodeNode*) _tmp53_);
	_vala_ccode_node_unref0 (_tmp53_);
	_tmp54_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp55_ = type_fun;
	_tmp56_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp55_);
	_tmp57_ = _tmp56_;
	vala_ccode_file_add_type_member_definition (_tmp54_, (ValaCCodeNode*) _tmp57_);
	_vala_ccode_node_unref0 (_tmp57_);
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	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) {
	ValaInterface* _tmp0_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp1_ = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp2_ = NULL;
	ValaCCodeFunction* base_init = NULL;
	ValaInterface* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	ValaCCodeFunction* _tmp8_ = NULL;
	ValaCCodeFunction* _tmp9_ = NULL;
	ValaCCodeFunction* _tmp10_ = NULL;
	ValaInterface* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	ValaCCodeParameter* _tmp16_ = NULL;
	ValaCCodeParameter* _tmp17_ = NULL;
	ValaCCodeFunction* _tmp18_ = NULL;
	ValaCCodeFunction* _tmp19_ = NULL;
	ValaCCodeFunction* _tmp20_ = NULL;
	ValaCCodeFunction* _tmp21_ = NULL;
	ValaDataType* _tmp22_ = NULL;
	gchar* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	ValaCCodeConstant* _tmp25_ = NULL;
	ValaCCodeConstant* _tmp26_ = NULL;
	ValaCCodeVariableDeclarator* _tmp27_ = NULL;
	ValaCCodeVariableDeclarator* _tmp28_ = NULL;
	ValaCCodeFunction* _tmp29_ = NULL;
	ValaCCodeFunction* _tmp30_ = NULL;
	ValaCCodeIdentifier* _tmp31_ = NULL;
	ValaCCodeIdentifier* _tmp32_ = NULL;
	ValaCCodeUnaryExpression* _tmp33_ = NULL;
	ValaCCodeUnaryExpression* _tmp34_ = NULL;
	ValaCCodeFunction* _tmp35_ = NULL;
	ValaCCodeFunction* _tmp36_ = NULL;
	ValaCCodeIdentifier* _tmp37_ = NULL;
	ValaCCodeIdentifier* _tmp38_ = NULL;
	ValaCCodeConstant* _tmp39_ = NULL;
	ValaCCodeConstant* _tmp40_ = NULL;
	ValaInterface* _tmp41_ = NULL;
	ValaTypeSymbol* _tmp42_ = NULL;
	gboolean _tmp43_ = FALSE;
	ValaCCodeIdentifier* ciface = NULL;
	ValaCCodeIdentifier* _tmp88_ = NULL;
	ValaCCodeFunction* _tmp246_ = NULL;
	ValaCCodeFunction* _tmp247_ = NULL;
	ValaCCodeFile* _tmp248_ = NULL;
	ValaCCodeFunction* _tmp249_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (iface != NULL);
	_tmp0_ = iface;
	_tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp2_);
	_vala_ccode_base_module_emit_context_unref0 (_tmp2_);
	_tmp3_ = iface;
	_tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strdup_printf ("%s_base_init", _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = vala_ccode_function_new (_tmp7_, "void");
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	_g_free0 (_tmp5_);
	base_init = _tmp9_;
	_tmp10_ = base_init;
	_tmp11_ = iface;
	_tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strdup_printf ("%sIface *", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_parameter_new ("iface", _tmp15_);
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_g_free0 (_tmp15_);
	_g_free0 (_tmp13_);
	_tmp18_ = base_init;
	vala_ccode_function_set_modifiers (_tmp18_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp19_ = base_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp21_ = _tmp20_;
	_tmp22_ = ((ValaCCodeBaseModule*) self)->bool_type;
	_tmp23_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = vala_ccode_constant_new ("FALSE");
	_tmp26_ = _tmp25_;
	_tmp27_ = vala_ccode_variable_declarator_new ("initialized", (ValaCCodeExpression*) _tmp26_, NULL);
	_tmp28_ = _tmp27_;
	vala_ccode_function_add_declaration (_tmp21_, _tmp24_, (ValaCCodeDeclarator*) _tmp28_, VALA_CCODE_MODIFIERS_STATIC);
	_vala_ccode_node_unref0 (_tmp28_);
	_vala_ccode_node_unref0 (_tmp26_);
	_g_free0 (_tmp24_);
	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = vala_ccode_identifier_new ("initialized");
	_tmp32_ = _tmp31_;
	_tmp33_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp32_);
	_tmp34_ = _tmp33_;
	vala_ccode_function_open_if (_tmp30_, (ValaCCodeExpression*) _tmp34_);
	_vala_ccode_node_unref0 (_tmp34_);
	_vala_ccode_node_unref0 (_tmp32_);
	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_identifier_new ("initialized");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_constant_new ("TRUE");
	_tmp40_ = _tmp39_;
	vala_ccode_function_add_assignment (_tmp36_, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp40_);
	_vala_ccode_node_unref0 (_tmp40_);
	_vala_ccode_node_unref0 (_tmp38_);
	_tmp41_ = iface;
	_tmp42_ = ((ValaCCodeBaseModule*) self)->gobject_type;
	_tmp43_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp41_, _tmp42_);
	if (_tmp43_) {
		ValaList* props = NULL;
		ValaInterface* _tmp44_ = NULL;
		ValaList* _tmp45_ = NULL;
		_tmp44_ = iface;
		_tmp45_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp44_);
		props = _tmp45_;
		{
			ValaList* _prop_list = NULL;
			ValaList* _tmp46_ = NULL;
			ValaList* _tmp47_ = NULL;
			gint _prop_size = 0;
			ValaList* _tmp48_ = NULL;
			gint _tmp49_ = 0;
			gint _tmp50_ = 0;
			gint _prop_index = 0;
			_tmp46_ = props;
			_tmp47_ = _vala_iterable_ref0 (_tmp46_);
			_prop_list = _tmp47_;
			_tmp48_ = _prop_list;
			_tmp49_ = vala_collection_get_size ((ValaCollection*) _tmp48_);
			_tmp50_ = _tmp49_;
			_prop_size = _tmp50_;
			_prop_index = -1;
			while (TRUE) {
				gint _tmp51_ = 0;
				gint _tmp52_ = 0;
				gint _tmp53_ = 0;
				ValaProperty* prop = NULL;
				ValaList* _tmp54_ = NULL;
				gint _tmp55_ = 0;
				gpointer _tmp56_ = NULL;
				ValaProperty* _tmp57_ = NULL;
				gboolean _tmp58_ = FALSE;
				gboolean _tmp59_ = FALSE;
				_tmp51_ = _prop_index;
				_prop_index = _tmp51_ + 1;
				_tmp52_ = _prop_index;
				_tmp53_ = _prop_size;
				if (!(_tmp52_ < _tmp53_)) {
					break;
				}
				_tmp54_ = _prop_list;
				_tmp55_ = _prop_index;
				_tmp56_ = vala_list_get (_tmp54_, _tmp55_);
				prop = (ValaProperty*) _tmp56_;
				_tmp57_ = prop;
				_tmp58_ = vala_property_get_is_abstract (_tmp57_);
				_tmp59_ = _tmp58_;
				if (_tmp59_) {
					ValaProperty* _tmp60_ = NULL;
					gboolean _tmp61_ = FALSE;
					ValaProperty* _tmp62_ = NULL;
					ValaComment* _tmp63_ = NULL;
					ValaComment* _tmp64_ = NULL;
					ValaCCodeFunctionCall* cinst = NULL;
					ValaCCodeIdentifier* _tmp74_ = NULL;
					ValaCCodeIdentifier* _tmp75_ = NULL;
					ValaCCodeFunctionCall* _tmp76_ = NULL;
					ValaCCodeFunctionCall* _tmp77_ = NULL;
					ValaCCodeFunctionCall* _tmp78_ = NULL;
					ValaCCodeIdentifier* _tmp79_ = NULL;
					ValaCCodeIdentifier* _tmp80_ = NULL;
					ValaCCodeFunctionCall* _tmp81_ = NULL;
					ValaProperty* _tmp82_ = NULL;
					ValaCCodeFunctionCall* _tmp83_ = NULL;
					ValaCCodeFunctionCall* _tmp84_ = NULL;
					ValaCCodeFunction* _tmp85_ = NULL;
					ValaCCodeFunction* _tmp86_ = NULL;
					ValaCCodeFunctionCall* _tmp87_ = NULL;
					_tmp60_ = prop;
					_tmp61_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, _tmp60_);
					if (!_tmp61_) {
						_vala_code_node_unref0 (prop);
						continue;
					}
					_tmp62_ = prop;
					_tmp63_ = vala_symbol_get_comment ((ValaSymbol*) _tmp62_);
					_tmp64_ = _tmp63_;
					if (_tmp64_ != NULL) {
						ValaCCodeFunction* _tmp65_ = NULL;
						ValaCCodeFunction* _tmp66_ = NULL;
						ValaProperty* _tmp67_ = NULL;
						ValaComment* _tmp68_ = NULL;
						ValaComment* _tmp69_ = NULL;
						const gchar* _tmp70_ = NULL;
						const gchar* _tmp71_ = NULL;
						ValaCCodeComment* _tmp72_ = NULL;
						ValaCCodeComment* _tmp73_ = NULL;
						_tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp66_ = _tmp65_;
						_tmp67_ = prop;
						_tmp68_ = vala_symbol_get_comment ((ValaSymbol*) _tmp67_);
						_tmp69_ = _tmp68_;
						_tmp70_ = vala_comment_get_content (_tmp69_);
						_tmp71_ = _tmp70_;
						_tmp72_ = vala_ccode_comment_new (_tmp71_);
						_tmp73_ = _tmp72_;
						vala_ccode_function_add_statement (_tmp66_, (ValaCCodeNode*) _tmp73_);
						_vala_ccode_node_unref0 (_tmp73_);
					}
					_tmp74_ = vala_ccode_identifier_new ("g_object_interface_install_property");
					_tmp75_ = _tmp74_;
					_tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
					_tmp77_ = _tmp76_;
					_vala_ccode_node_unref0 (_tmp75_);
					cinst = _tmp77_;
					_tmp78_ = cinst;
					_tmp79_ = vala_ccode_identifier_new ("iface");
					_tmp80_ = _tmp79_;
					vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp80_);
					_vala_ccode_node_unref0 (_tmp80_);
					_tmp81_ = cinst;
					_tmp82_ = prop;
					_tmp83_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, _tmp82_);
					_tmp84_ = _tmp83_;
					vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp84_);
					_vala_ccode_node_unref0 (_tmp84_);
					_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp86_ = _tmp85_;
					_tmp87_ = cinst;
					vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
					_vala_ccode_node_unref0 (cinst);
				}
				_vala_code_node_unref0 (prop);
			}
			_vala_iterable_unref0 (_prop_list);
		}
		_vala_iterable_unref0 (props);
	}
	_tmp88_ = vala_ccode_identifier_new ("iface");
	ciface = _tmp88_;
	{
		ValaList* _sig_list = NULL;
		ValaInterface* _tmp89_ = NULL;
		ValaList* _tmp90_ = NULL;
		gint _sig_size = 0;
		ValaList* _tmp91_ = NULL;
		gint _tmp92_ = 0;
		gint _tmp93_ = 0;
		gint _sig_index = 0;
		_tmp89_ = iface;
		_tmp90_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp89_);
		_sig_list = _tmp90_;
		_tmp91_ = _sig_list;
		_tmp92_ = vala_collection_get_size ((ValaCollection*) _tmp91_);
		_tmp93_ = _tmp92_;
		_sig_size = _tmp93_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp94_ = 0;
			gint _tmp95_ = 0;
			gint _tmp96_ = 0;
			ValaSignal* sig = NULL;
			ValaList* _tmp97_ = NULL;
			gint _tmp98_ = 0;
			gpointer _tmp99_ = NULL;
			ValaSignal* _tmp100_ = NULL;
			ValaMethod* _tmp101_ = NULL;
			ValaMethod* _tmp102_ = NULL;
			gchar* cname = NULL;
			ValaSignal* _tmp103_ = NULL;
			ValaMethod* _tmp104_ = NULL;
			ValaMethod* _tmp105_ = NULL;
			gchar* _tmp106_ = NULL;
			ValaCCodeFunction* _tmp107_ = NULL;
			ValaCCodeFunction* _tmp108_ = NULL;
			ValaCCodeIdentifier* _tmp109_ = NULL;
			ValaSignal* _tmp110_ = NULL;
			ValaMethod* _tmp111_ = NULL;
			ValaMethod* _tmp112_ = NULL;
			gchar* _tmp113_ = NULL;
			gchar* _tmp114_ = NULL;
			ValaCCodeMemberAccess* _tmp115_ = NULL;
			ValaCCodeMemberAccess* _tmp116_ = NULL;
			const gchar* _tmp117_ = NULL;
			ValaCCodeIdentifier* _tmp118_ = NULL;
			ValaCCodeIdentifier* _tmp119_ = NULL;
			_tmp94_ = _sig_index;
			_sig_index = _tmp94_ + 1;
			_tmp95_ = _sig_index;
			_tmp96_ = _sig_size;
			if (!(_tmp95_ < _tmp96_)) {
				break;
			}
			_tmp97_ = _sig_list;
			_tmp98_ = _sig_index;
			_tmp99_ = vala_list_get (_tmp97_, _tmp98_);
			sig = (ValaSignal*) _tmp99_;
			_tmp100_ = sig;
			_tmp101_ = vala_signal_get_default_handler (_tmp100_);
			_tmp102_ = _tmp101_;
			if (_tmp102_ == NULL) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			_tmp103_ = sig;
			_tmp104_ = vala_signal_get_default_handler (_tmp103_);
			_tmp105_ = _tmp104_;
			_tmp106_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp105_);
			cname = _tmp106_;
			_tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp108_ = _tmp107_;
			_tmp109_ = ciface;
			_tmp110_ = sig;
			_tmp111_ = vala_signal_get_default_handler (_tmp110_);
			_tmp112_ = _tmp111_;
			_tmp113_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp112_);
			_tmp114_ = _tmp113_;
			_tmp115_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp109_, _tmp114_);
			_tmp116_ = _tmp115_;
			_tmp117_ = cname;
			_tmp118_ = vala_ccode_identifier_new (_tmp117_);
			_tmp119_ = _tmp118_;
			vala_ccode_function_add_assignment (_tmp108_, (ValaCCodeExpression*) _tmp116_, (ValaCCodeExpression*) _tmp119_);
			_vala_ccode_node_unref0 (_tmp119_);
			_vala_ccode_node_unref0 (_tmp116_);
			_g_free0 (_tmp114_);
			_g_free0 (cname);
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _sig_list = NULL;
		ValaInterface* _tmp120_ = NULL;
		ValaList* _tmp121_ = NULL;
		gint _sig_size = 0;
		ValaList* _tmp122_ = NULL;
		gint _tmp123_ = 0;
		gint _tmp124_ = 0;
		gint _sig_index = 0;
		_tmp120_ = iface;
		_tmp121_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp120_);
		_sig_list = _tmp121_;
		_tmp122_ = _sig_list;
		_tmp123_ = vala_collection_get_size ((ValaCollection*) _tmp122_);
		_tmp124_ = _tmp123_;
		_sig_size = _tmp124_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp125_ = 0;
			gint _tmp126_ = 0;
			gint _tmp127_ = 0;
			ValaSignal* sig = NULL;
			ValaList* _tmp128_ = NULL;
			gint _tmp129_ = 0;
			gpointer _tmp130_ = NULL;
			ValaSignal* _tmp131_ = NULL;
			ValaComment* _tmp132_ = NULL;
			ValaComment* _tmp133_ = NULL;
			ValaCCodeFunction* _tmp143_ = NULL;
			ValaCCodeFunction* _tmp144_ = NULL;
			ValaSignal* _tmp145_ = NULL;
			ValaInterface* _tmp146_ = NULL;
			ValaCCodeFunctionCall* _tmp147_ = NULL;
			ValaCCodeFunctionCall* _tmp148_ = NULL;
			_tmp125_ = _sig_index;
			_sig_index = _tmp125_ + 1;
			_tmp126_ = _sig_index;
			_tmp127_ = _sig_size;
			if (!(_tmp126_ < _tmp127_)) {
				break;
			}
			_tmp128_ = _sig_list;
			_tmp129_ = _sig_index;
			_tmp130_ = vala_list_get (_tmp128_, _tmp129_);
			sig = (ValaSignal*) _tmp130_;
			_tmp131_ = sig;
			_tmp132_ = vala_symbol_get_comment ((ValaSymbol*) _tmp131_);
			_tmp133_ = _tmp132_;
			if (_tmp133_ != NULL) {
				ValaCCodeFunction* _tmp134_ = NULL;
				ValaCCodeFunction* _tmp135_ = NULL;
				ValaSignal* _tmp136_ = NULL;
				ValaComment* _tmp137_ = NULL;
				ValaComment* _tmp138_ = NULL;
				const gchar* _tmp139_ = NULL;
				const gchar* _tmp140_ = NULL;
				ValaCCodeComment* _tmp141_ = NULL;
				ValaCCodeComment* _tmp142_ = NULL;
				_tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp135_ = _tmp134_;
				_tmp136_ = sig;
				_tmp137_ = vala_symbol_get_comment ((ValaSymbol*) _tmp136_);
				_tmp138_ = _tmp137_;
				_tmp139_ = vala_comment_get_content (_tmp138_);
				_tmp140_ = _tmp139_;
				_tmp141_ = vala_ccode_comment_new (_tmp140_);
				_tmp142_ = _tmp141_;
				vala_ccode_function_add_statement (_tmp135_, (ValaCCodeNode*) _tmp142_);
				_vala_ccode_node_unref0 (_tmp142_);
			}
			_tmp143_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp144_ = _tmp143_;
			_tmp145_ = sig;
			_tmp146_ = iface;
			_tmp147_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp145_, (ValaTypeSymbol*) _tmp146_);
			_tmp148_ = _tmp147_;
			vala_ccode_function_add_expression (_tmp144_, (ValaCCodeExpression*) _tmp148_);
			_vala_ccode_node_unref0 (_tmp148_);
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _m_list = NULL;
		ValaInterface* _tmp149_ = NULL;
		ValaList* _tmp150_ = NULL;
		gint _m_size = 0;
		ValaList* _tmp151_ = NULL;
		gint _tmp152_ = 0;
		gint _tmp153_ = 0;
		gint _m_index = 0;
		_tmp149_ = iface;
		_tmp150_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp149_);
		_m_list = _tmp150_;
		_tmp151_ = _m_list;
		_tmp152_ = vala_collection_get_size ((ValaCollection*) _tmp151_);
		_tmp153_ = _tmp152_;
		_m_size = _tmp153_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp154_ = 0;
			gint _tmp155_ = 0;
			gint _tmp156_ = 0;
			ValaMethod* m = NULL;
			ValaList* _tmp157_ = NULL;
			gint _tmp158_ = 0;
			gpointer _tmp159_ = NULL;
			ValaMethod* _tmp160_ = NULL;
			gboolean _tmp161_ = FALSE;
			gboolean _tmp162_ = FALSE;
			_tmp154_ = _m_index;
			_m_index = _tmp154_ + 1;
			_tmp155_ = _m_index;
			_tmp156_ = _m_size;
			if (!(_tmp155_ < _tmp156_)) {
				break;
			}
			_tmp157_ = _m_list;
			_tmp158_ = _m_index;
			_tmp159_ = vala_list_get (_tmp157_, _tmp158_);
			m = (ValaMethod*) _tmp159_;
			_tmp160_ = m;
			_tmp161_ = vala_method_get_is_virtual (_tmp160_);
			_tmp162_ = _tmp161_;
			if (_tmp162_) {
				gchar* cname = NULL;
				ValaMethod* _tmp163_ = NULL;
				gchar* _tmp164_ = NULL;
				ValaCCodeFunction* _tmp165_ = NULL;
				ValaCCodeFunction* _tmp166_ = NULL;
				ValaCCodeIdentifier* _tmp167_ = NULL;
				ValaMethod* _tmp168_ = NULL;
				gchar* _tmp169_ = NULL;
				gchar* _tmp170_ = NULL;
				ValaCCodeMemberAccess* _tmp171_ = NULL;
				ValaCCodeMemberAccess* _tmp172_ = NULL;
				const gchar* _tmp173_ = NULL;
				ValaCCodeIdentifier* _tmp174_ = NULL;
				ValaCCodeIdentifier* _tmp175_ = NULL;
				ValaMethod* _tmp176_ = NULL;
				gboolean _tmp177_ = FALSE;
				gboolean _tmp178_ = FALSE;
				_tmp163_ = m;
				_tmp164_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp163_);
				cname = _tmp164_;
				_tmp165_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp166_ = _tmp165_;
				_tmp167_ = ciface;
				_tmp168_ = m;
				_tmp169_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp168_);
				_tmp170_ = _tmp169_;
				_tmp171_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp167_, _tmp170_);
				_tmp172_ = _tmp171_;
				_tmp173_ = cname;
				_tmp174_ = vala_ccode_identifier_new (_tmp173_);
				_tmp175_ = _tmp174_;
				vala_ccode_function_add_assignment (_tmp166_, (ValaCCodeExpression*) _tmp172_, (ValaCCodeExpression*) _tmp175_);
				_vala_ccode_node_unref0 (_tmp175_);
				_vala_ccode_node_unref0 (_tmp172_);
				_g_free0 (_tmp170_);
				_tmp176_ = m;
				_tmp177_ = vala_method_get_coroutine (_tmp176_);
				_tmp178_ = _tmp177_;
				if (_tmp178_) {
					ValaCCodeFunction* _tmp179_ = NULL;
					ValaCCodeFunction* _tmp180_ = NULL;
					ValaCCodeIdentifier* _tmp181_ = NULL;
					ValaMethod* _tmp182_ = NULL;
					gchar* _tmp183_ = NULL;
					gchar* _tmp184_ = NULL;
					ValaCCodeMemberAccess* _tmp185_ = NULL;
					ValaCCodeMemberAccess* _tmp186_ = NULL;
					ValaMethod* _tmp187_ = NULL;
					gchar* _tmp188_ = NULL;
					gchar* _tmp189_ = NULL;
					ValaCCodeIdentifier* _tmp190_ = NULL;
					ValaCCodeIdentifier* _tmp191_ = NULL;
					_tmp179_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp180_ = _tmp179_;
					_tmp181_ = ciface;
					_tmp182_ = m;
					_tmp183_ = vala_ccode_base_module_get_ccode_finish_vfunc_name (_tmp182_);
					_tmp184_ = _tmp183_;
					_tmp185_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp181_, _tmp184_);
					_tmp186_ = _tmp185_;
					_tmp187_ = m;
					_tmp188_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp187_);
					_tmp189_ = _tmp188_;
					_tmp190_ = vala_ccode_identifier_new (_tmp189_);
					_tmp191_ = _tmp190_;
					vala_ccode_function_add_assignment (_tmp180_, (ValaCCodeExpression*) _tmp186_, (ValaCCodeExpression*) _tmp191_);
					_vala_ccode_node_unref0 (_tmp191_);
					_g_free0 (_tmp189_);
					_vala_ccode_node_unref0 (_tmp186_);
					_g_free0 (_tmp184_);
				}
				_g_free0 (cname);
			}
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaInterface* _tmp192_ = NULL;
		ValaList* _tmp193_ = NULL;
		gint _prop_size = 0;
		ValaList* _tmp194_ = NULL;
		gint _tmp195_ = 0;
		gint _tmp196_ = 0;
		gint _prop_index = 0;
		_tmp192_ = iface;
		_tmp193_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp192_);
		_prop_list = _tmp193_;
		_tmp194_ = _prop_list;
		_tmp195_ = vala_collection_get_size ((ValaCollection*) _tmp194_);
		_tmp196_ = _tmp195_;
		_prop_size = _tmp196_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp197_ = 0;
			gint _tmp198_ = 0;
			gint _tmp199_ = 0;
			ValaProperty* prop = NULL;
			ValaList* _tmp200_ = NULL;
			gint _tmp201_ = 0;
			gpointer _tmp202_ = NULL;
			ValaProperty* _tmp203_ = NULL;
			gboolean _tmp204_ = FALSE;
			gboolean _tmp205_ = FALSE;
			_tmp197_ = _prop_index;
			_prop_index = _tmp197_ + 1;
			_tmp198_ = _prop_index;
			_tmp199_ = _prop_size;
			if (!(_tmp198_ < _tmp199_)) {
				break;
			}
			_tmp200_ = _prop_list;
			_tmp201_ = _prop_index;
			_tmp202_ = vala_list_get (_tmp200_, _tmp201_);
			prop = (ValaProperty*) _tmp202_;
			_tmp203_ = prop;
			_tmp204_ = vala_property_get_is_virtual (_tmp203_);
			_tmp205_ = _tmp204_;
			if (_tmp205_) {
				ValaProperty* _tmp206_ = NULL;
				ValaPropertyAccessor* _tmp207_ = NULL;
				ValaPropertyAccessor* _tmp208_ = NULL;
				ValaProperty* _tmp226_ = NULL;
				ValaPropertyAccessor* _tmp227_ = NULL;
				ValaPropertyAccessor* _tmp228_ = NULL;
				_tmp206_ = prop;
				_tmp207_ = vala_property_get_get_accessor (_tmp206_);
				_tmp208_ = _tmp207_;
				if (_tmp208_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp209_ = NULL;
					ValaPropertyAccessor* _tmp210_ = NULL;
					ValaPropertyAccessor* _tmp211_ = NULL;
					gchar* _tmp212_ = NULL;
					ValaCCodeFunction* _tmp213_ = NULL;
					ValaCCodeFunction* _tmp214_ = NULL;
					ValaCCodeIdentifier* _tmp215_ = NULL;
					ValaProperty* _tmp216_ = NULL;
					const gchar* _tmp217_ = NULL;
					const gchar* _tmp218_ = NULL;
					gchar* _tmp219_ = NULL;
					gchar* _tmp220_ = NULL;
					ValaCCodeMemberAccess* _tmp221_ = NULL;
					ValaCCodeMemberAccess* _tmp222_ = NULL;
					const gchar* _tmp223_ = NULL;
					ValaCCodeIdentifier* _tmp224_ = NULL;
					ValaCCodeIdentifier* _tmp225_ = NULL;
					_tmp209_ = prop;
					_tmp210_ = vala_property_get_get_accessor (_tmp209_);
					_tmp211_ = _tmp210_;
					_tmp212_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp211_);
					cname = _tmp212_;
					_tmp213_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp214_ = _tmp213_;
					_tmp215_ = ciface;
					_tmp216_ = prop;
					_tmp217_ = vala_symbol_get_name ((ValaSymbol*) _tmp216_);
					_tmp218_ = _tmp217_;
					_tmp219_ = g_strdup_printf ("get_%s", _tmp218_);
					_tmp220_ = _tmp219_;
					_tmp221_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp215_, _tmp220_);
					_tmp222_ = _tmp221_;
					_tmp223_ = cname;
					_tmp224_ = vala_ccode_identifier_new (_tmp223_);
					_tmp225_ = _tmp224_;
					vala_ccode_function_add_assignment (_tmp214_, (ValaCCodeExpression*) _tmp222_, (ValaCCodeExpression*) _tmp225_);
					_vala_ccode_node_unref0 (_tmp225_);
					_vala_ccode_node_unref0 (_tmp222_);
					_g_free0 (_tmp220_);
					_g_free0 (cname);
				}
				_tmp226_ = prop;
				_tmp227_ = vala_property_get_set_accessor (_tmp226_);
				_tmp228_ = _tmp227_;
				if (_tmp228_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp229_ = NULL;
					ValaPropertyAccessor* _tmp230_ = NULL;
					ValaPropertyAccessor* _tmp231_ = NULL;
					gchar* _tmp232_ = NULL;
					ValaCCodeFunction* _tmp233_ = NULL;
					ValaCCodeFunction* _tmp234_ = NULL;
					ValaCCodeIdentifier* _tmp235_ = NULL;
					ValaProperty* _tmp236_ = NULL;
					const gchar* _tmp237_ = NULL;
					const gchar* _tmp238_ = NULL;
					gchar* _tmp239_ = NULL;
					gchar* _tmp240_ = NULL;
					ValaCCodeMemberAccess* _tmp241_ = NULL;
					ValaCCodeMemberAccess* _tmp242_ = NULL;
					const gchar* _tmp243_ = NULL;
					ValaCCodeIdentifier* _tmp244_ = NULL;
					ValaCCodeIdentifier* _tmp245_ = NULL;
					_tmp229_ = prop;
					_tmp230_ = vala_property_get_set_accessor (_tmp229_);
					_tmp231_ = _tmp230_;
					_tmp232_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp231_);
					cname = _tmp232_;
					_tmp233_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp234_ = _tmp233_;
					_tmp235_ = ciface;
					_tmp236_ = prop;
					_tmp237_ = vala_symbol_get_name ((ValaSymbol*) _tmp236_);
					_tmp238_ = _tmp237_;
					_tmp239_ = g_strdup_printf ("set_%s", _tmp238_);
					_tmp240_ = _tmp239_;
					_tmp241_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp235_, _tmp240_);
					_tmp242_ = _tmp241_;
					_tmp243_ = cname;
					_tmp244_ = vala_ccode_identifier_new (_tmp243_);
					_tmp245_ = _tmp244_;
					vala_ccode_function_add_assignment (_tmp234_, (ValaCCodeExpression*) _tmp242_, (ValaCCodeExpression*) _tmp245_);
					_vala_ccode_node_unref0 (_tmp245_);
					_vala_ccode_node_unref0 (_tmp242_);
					_g_free0 (_tmp240_);
					_g_free0 (cname);
				}
			}
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp246_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp247_ = _tmp246_;
	vala_ccode_function_close (_tmp247_);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_tmp248_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp249_ = base_init;
	vala_ccode_file_add_function (_tmp248_, _tmp249_);
	_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;
	ValaStruct* _tmp0_ = NULL;
	ValaStruct* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (st != NULL);
	_tmp0_ = st;
	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_struct ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp0_);
	_tmp1_ = st;
	_tmp2_ = vala_ccode_base_module_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp1_);
	if (_tmp2_) {
		ValaStruct* _tmp3_ = NULL;
		ValaSourceReference* _tmp4_ = NULL;
		ValaSourceReference* _tmp5_ = NULL;
		ValaStructRegisterFunction* type_fun = NULL;
		ValaStruct* _tmp6_ = NULL;
		ValaCodeContext* _tmp7_ = NULL;
		ValaCodeContext* _tmp8_ = NULL;
		ValaStructRegisterFunction* _tmp9_ = NULL;
		ValaStructRegisterFunction* _tmp10_ = NULL;
		ValaCCodeFile* _tmp11_ = NULL;
		ValaStructRegisterFunction* _tmp12_ = NULL;
		ValaCCodeFragment* _tmp13_ = NULL;
		ValaCCodeFragment* _tmp14_ = NULL;
		_tmp3_ = st;
		_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
		_tmp5_ = _tmp4_;
		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
		_tmp6_ = st;
		_tmp7_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp8_ = _tmp7_;
		_tmp9_ = vala_struct_register_function_new (_tmp6_, _tmp8_);
		type_fun = _tmp9_;
		_tmp10_ = type_fun;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp10_, FALSE, FALSE);
		_tmp11_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp12_ = type_fun;
		_tmp13_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp12_);
		_tmp14_ = _tmp13_;
		vala_ccode_file_add_type_member_definition (_tmp11_, (ValaCCodeNode*) _tmp14_);
		_vala_ccode_node_unref0 (_tmp14_);
		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
		_vala_typeregister_function_unref0 (type_fun);
	}
}


static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
	ValaGTypeModule * self;
	ValaEnum* _tmp0_ = NULL;
	ValaEnum* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (en != NULL);
	_tmp0_ = en;
	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_enum ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp0_);
	_tmp1_ = en;
	_tmp2_ = vala_ccode_base_module_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp1_);
	if (_tmp2_) {
		ValaEnum* _tmp3_ = NULL;
		ValaSourceReference* _tmp4_ = NULL;
		ValaSourceReference* _tmp5_ = NULL;
		ValaEnumRegisterFunction* type_fun = NULL;
		ValaEnum* _tmp6_ = NULL;
		ValaCodeContext* _tmp7_ = NULL;
		ValaCodeContext* _tmp8_ = NULL;
		ValaEnumRegisterFunction* _tmp9_ = NULL;
		ValaEnumRegisterFunction* _tmp10_ = NULL;
		ValaCCodeFile* _tmp11_ = NULL;
		ValaEnumRegisterFunction* _tmp12_ = NULL;
		ValaCCodeFragment* _tmp13_ = NULL;
		ValaCCodeFragment* _tmp14_ = NULL;
		_tmp3_ = en;
		_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
		_tmp5_ = _tmp4_;
		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
		_tmp6_ = en;
		_tmp7_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp8_ = _tmp7_;
		_tmp9_ = vala_enum_register_function_new (_tmp6_, _tmp8_);
		type_fun = _tmp9_;
		_tmp10_ = type_fun;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp10_, FALSE, FALSE);
		_tmp11_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp12_ = type_fun;
		_tmp13_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp12_);
		_tmp14_ = _tmp13_;
		vala_ccode_file_add_type_member_definition (_tmp11_, (ValaCCodeNode*) _tmp14_);
		_vala_ccode_node_unref0 (_tmp14_);
		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
		_vala_typeregister_function_unref0 (type_fun);
	}
}


static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
	ValaGTypeModule * self;
	ValaMemberAccess* ma = NULL;
	ValaMethodCall* _tmp0_ = NULL;
	ValaExpression* _tmp1_ = NULL;
	ValaExpression* _tmp2_ = NULL;
	ValaMemberAccess* _tmp3_ = NULL;
	ValaMethodType* mtype = NULL;
	ValaMethodCall* _tmp4_ = NULL;
	ValaExpression* _tmp5_ = NULL;
	ValaExpression* _tmp6_ = NULL;
	ValaDataType* _tmp7_ = NULL;
	ValaDataType* _tmp8_ = NULL;
	ValaMethodType* _tmp9_ = NULL;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_ = FALSE;
	gboolean _tmp12_ = FALSE;
	gboolean _tmp13_ = FALSE;
	gboolean _tmp14_ = FALSE;
	ValaMethodType* _tmp15_ = NULL;
	ValaMethodCall* _tmp44_ = NULL;
	ValaSourceReference* _tmp45_ = NULL;
	ValaSourceReference* _tmp46_ = NULL;
	ValaLocalVariable* temp_var = NULL;
	ValaCType* _tmp47_ = NULL;
	ValaCType* _tmp48_ = NULL;
	ValaMethodCall* _tmp49_ = NULL;
	ValaLocalVariable* _tmp50_ = NULL;
	ValaLocalVariable* _tmp51_ = NULL;
	ValaLocalVariable* _tmp52_ = NULL;
	ValaCCodeFunctionCall* class_ref = NULL;
	ValaCCodeIdentifier* _tmp53_ = NULL;
	ValaCCodeIdentifier* _tmp54_ = NULL;
	ValaCCodeFunctionCall* _tmp55_ = NULL;
	ValaCCodeFunctionCall* _tmp56_ = NULL;
	ValaCCodeFunctionCall* _tmp57_ = NULL;
	ValaMemberAccess* _tmp58_ = NULL;
	ValaExpression* _tmp59_ = NULL;
	ValaExpression* _tmp60_ = NULL;
	ValaDataType* _tmp61_ = NULL;
	ValaDataType* _tmp62_ = NULL;
	gchar* _tmp63_ = NULL;
	gchar* _tmp64_ = NULL;
	ValaCCodeIdentifier* _tmp65_ = NULL;
	ValaCCodeIdentifier* _tmp66_ = NULL;
	ValaCCodeFunctionCall* get_value = NULL;
	ValaCCodeIdentifier* _tmp67_ = NULL;
	ValaCCodeIdentifier* _tmp68_ = NULL;
	ValaCCodeFunctionCall* _tmp69_ = NULL;
	ValaCCodeFunctionCall* _tmp70_ = NULL;
	ValaCCodeFunctionCall* _tmp71_ = NULL;
	ValaCCodeFunctionCall* _tmp72_ = NULL;
	ValaCCodeFunctionCall* _tmp73_ = NULL;
	ValaMethodCall* _tmp74_ = NULL;
	ValaExpression* _tmp75_ = NULL;
	ValaExpression* _tmp76_ = NULL;
	ValaExpression* _tmp77_ = NULL;
	ValaExpression* _tmp78_ = NULL;
	ValaCCodeExpression* _tmp79_ = NULL;
	ValaCCodeExpression* _tmp80_ = NULL;
	ValaCCodeFunction* _tmp81_ = NULL;
	ValaCCodeFunction* _tmp82_ = NULL;
	ValaLocalVariable* _tmp83_ = NULL;
	const gchar* _tmp84_ = NULL;
	const gchar* _tmp85_ = NULL;
	ValaCCodeExpression* _tmp86_ = NULL;
	ValaCCodeExpression* _tmp87_ = NULL;
	ValaCCodeFunctionCall* _tmp88_ = NULL;
	ValaCCodeBinaryExpression* is_null_value = NULL;
	ValaLocalVariable* _tmp89_ = NULL;
	const gchar* _tmp90_ = NULL;
	const gchar* _tmp91_ = NULL;
	ValaCCodeExpression* _tmp92_ = NULL;
	ValaCCodeExpression* _tmp93_ = NULL;
	ValaCCodeIdentifier* _tmp94_ = NULL;
	ValaCCodeIdentifier* _tmp95_ = NULL;
	ValaCCodeBinaryExpression* _tmp96_ = NULL;
	ValaCCodeBinaryExpression* _tmp97_ = NULL;
	ValaMethodCall* _tmp98_ = NULL;
	ValaCCodeBinaryExpression* _tmp99_ = NULL;
	ValaLocalVariable* _tmp100_ = NULL;
	const gchar* _tmp101_ = NULL;
	const gchar* _tmp102_ = NULL;
	ValaCCodeExpression* _tmp103_ = NULL;
	ValaCCodeExpression* _tmp104_ = NULL;
	ValaCCodeMemberAccess* _tmp105_ = NULL;
	ValaCCodeMemberAccess* _tmp106_ = NULL;
	ValaCCodeIdentifier* _tmp107_ = NULL;
	ValaCCodeIdentifier* _tmp108_ = NULL;
	ValaCCodeConditionalExpression* _tmp109_ = NULL;
	ValaCCodeConditionalExpression* _tmp110_ = NULL;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_method_call_get_call (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp2_) : NULL);
	ma = _tmp3_;
	_tmp4_ = expr;
	_tmp5_ = vala_method_call_get_call (_tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = vala_expression_get_value_type (_tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp8_) : NULL);
	mtype = _tmp9_;
	_tmp15_ = mtype;
	if (_tmp15_ == NULL) {
		_tmp14_ = TRUE;
	} else {
		ValaMemberAccess* _tmp16_ = NULL;
		_tmp16_ = ma;
		_tmp14_ = _tmp16_ == NULL;
	}
	if (_tmp14_) {
		_tmp13_ = TRUE;
	} else {
		ValaMemberAccess* _tmp17_ = NULL;
		ValaExpression* _tmp18_ = NULL;
		ValaExpression* _tmp19_ = NULL;
		_tmp17_ = ma;
		_tmp18_ = vala_member_access_get_inner (_tmp17_);
		_tmp19_ = _tmp18_;
		_tmp13_ = _tmp19_ == NULL;
	}
	if (_tmp13_) {
		_tmp12_ = TRUE;
	} else {
		ValaMemberAccess* _tmp20_ = NULL;
		ValaExpression* _tmp21_ = NULL;
		ValaExpression* _tmp22_ = NULL;
		ValaDataType* _tmp23_ = NULL;
		ValaDataType* _tmp24_ = NULL;
		_tmp20_ = ma;
		_tmp21_ = vala_member_access_get_inner (_tmp20_);
		_tmp22_ = _tmp21_;
		_tmp23_ = vala_expression_get_value_type (_tmp22_);
		_tmp24_ = _tmp23_;
		_tmp12_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_ENUM_VALUE_TYPE);
	}
	if (_tmp12_) {
		_tmp11_ = TRUE;
	} else {
		ValaMemberAccess* _tmp25_ = NULL;
		ValaExpression* _tmp26_ = NULL;
		ValaExpression* _tmp27_ = NULL;
		ValaDataType* _tmp28_ = NULL;
		ValaDataType* _tmp29_ = NULL;
		ValaTypeSymbol* _tmp30_ = NULL;
		ValaTypeSymbol* _tmp31_ = NULL;
		gboolean _tmp32_ = FALSE;
		_tmp25_ = ma;
		_tmp26_ = vala_member_access_get_inner (_tmp25_);
		_tmp27_ = _tmp26_;
		_tmp28_ = vala_expression_get_value_type (_tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = vala_data_type_get_data_type (_tmp29_);
		_tmp31_ = _tmp30_;
		_tmp32_ = vala_ccode_base_module_get_ccode_has_type_id (_tmp31_);
		_tmp11_ = !_tmp32_;
	}
	if (_tmp11_) {
		_tmp10_ = TRUE;
	} else {
		ValaMethodType* _tmp33_ = NULL;
		ValaMethod* _tmp34_ = NULL;
		ValaMethod* _tmp35_ = NULL;
		ValaMemberAccess* _tmp36_ = NULL;
		ValaExpression* _tmp37_ = NULL;
		ValaExpression* _tmp38_ = NULL;
		ValaDataType* _tmp39_ = NULL;
		ValaDataType* _tmp40_ = NULL;
		ValaMethod* _tmp41_ = NULL;
		ValaMethod* _tmp42_ = NULL;
		_tmp33_ = mtype;
		_tmp34_ = vala_method_type_get_method_symbol (_tmp33_);
		_tmp35_ = _tmp34_;
		_tmp36_ = ma;
		_tmp37_ = vala_member_access_get_inner (_tmp36_);
		_tmp38_ = _tmp37_;
		_tmp39_ = vala_expression_get_value_type (_tmp38_);
		_tmp40_ = _tmp39_;
		_tmp41_ = vala_enum_value_type_get_to_string_method (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
		_tmp42_ = _tmp41_;
		_tmp10_ = _tmp35_ != _tmp42_;
		_vala_code_node_unref0 (_tmp42_);
	}
	if (_tmp10_) {
		ValaMethodCall* _tmp43_ = NULL;
		_tmp43_ = expr;
		VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp43_);
		_vala_code_node_unref0 (mtype);
		_vala_code_node_unref0 (ma);
		return;
	}
	_tmp44_ = expr;
	_tmp45_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp44_);
	_tmp46_ = _tmp45_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp46_);
	_tmp47_ = vala_ctype_new ("GEnumValue*");
	_tmp48_ = _tmp47_;
	_tmp49_ = expr;
	_tmp50_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, (ValaDataType*) _tmp48_, FALSE, (ValaCodeNode*) _tmp49_, FALSE);
	_tmp51_ = _tmp50_;
	_vala_code_node_unref0 (_tmp48_);
	temp_var = _tmp51_;
	_tmp52_ = temp_var;
	vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp52_);
	_tmp53_ = vala_ccode_identifier_new ("g_type_class_ref");
	_tmp54_ = _tmp53_;
	_tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
	_tmp56_ = _tmp55_;
	_vala_ccode_node_unref0 (_tmp54_);
	class_ref = _tmp56_;
	_tmp57_ = class_ref;
	_tmp58_ = ma;
	_tmp59_ = vala_member_access_get_inner (_tmp58_);
	_tmp60_ = _tmp59_;
	_tmp61_ = vala_expression_get_value_type (_tmp60_);
	_tmp62_ = _tmp61_;
	_tmp63_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp62_);
	_tmp64_ = _tmp63_;
	_tmp65_ = vala_ccode_identifier_new (_tmp64_);
	_tmp66_ = _tmp65_;
	vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp66_);
	_vala_ccode_node_unref0 (_tmp66_);
	_g_free0 (_tmp64_);
	_tmp67_ = vala_ccode_identifier_new ("g_enum_get_value");
	_tmp68_ = _tmp67_;
	_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
	_tmp70_ = _tmp69_;
	_vala_ccode_node_unref0 (_tmp68_);
	get_value = _tmp70_;
	_tmp71_ = get_value;
	_tmp72_ = class_ref;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp72_);
	_tmp73_ = get_value;
	_tmp74_ = expr;
	_tmp75_ = vala_method_call_get_call (_tmp74_);
	_tmp76_ = _tmp75_;
	_tmp77_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp76_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
	_tmp78_ = _tmp77_;
	_tmp79_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp78_);
	_tmp80_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp79_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
	vala_ccode_function_call_add_argument (_tmp73_, _tmp80_);
	_vala_ccode_node_unref0 (_tmp80_);
	_tmp81_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp82_ = _tmp81_;
	_tmp83_ = temp_var;
	_tmp84_ = vala_symbol_get_name ((ValaSymbol*) _tmp83_);
	_tmp85_ = _tmp84_;
	_tmp86_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp85_);
	_tmp87_ = _tmp86_;
	_tmp88_ = get_value;
	vala_ccode_function_add_assignment (_tmp82_, _tmp87_, (ValaCCodeExpression*) _tmp88_);
	_vala_ccode_node_unref0 (_tmp87_);
	_tmp89_ = temp_var;
	_tmp90_ = vala_symbol_get_name ((ValaSymbol*) _tmp89_);
	_tmp91_ = _tmp90_;
	_tmp92_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp91_);
	_tmp93_ = _tmp92_;
	_tmp94_ = vala_ccode_identifier_new ("NULL");
	_tmp95_ = _tmp94_;
	_tmp96_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp93_, (ValaCCodeExpression*) _tmp95_);
	_tmp97_ = _tmp96_;
	_vala_ccode_node_unref0 (_tmp95_);
	_vala_ccode_node_unref0 (_tmp93_);
	is_null_value = _tmp97_;
	_tmp98_ = expr;
	_tmp99_ = is_null_value;
	_tmp100_ = temp_var;
	_tmp101_ = vala_symbol_get_name ((ValaSymbol*) _tmp100_);
	_tmp102_ = _tmp101_;
	_tmp103_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp102_);
	_tmp104_ = _tmp103_;
	_tmp105_ = vala_ccode_member_access_new_pointer (_tmp104_, "value_name");
	_tmp106_ = _tmp105_;
	_tmp107_ = vala_ccode_identifier_new ("NULL");
	_tmp108_ = _tmp107_;
	_tmp109_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp99_, (ValaCCodeExpression*) _tmp106_, (ValaCCodeExpression*) _tmp108_);
	_tmp110_ = _tmp109_;
	vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp98_, (ValaCCodeExpression*) _tmp110_);
	_vala_ccode_node_unref0 (_tmp110_);
	_vala_ccode_node_unref0 (_tmp108_);
	_vala_ccode_node_unref0 (_tmp106_);
	_vala_ccode_node_unref0 (_tmp104_);
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	_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;
	ValaClass* cl = NULL;
	ValaTypeSymbol* _tmp0_ = NULL;
	ValaTypeSymbol* _tmp1_ = NULL;
	ValaClass* _tmp2_ = NULL;
	ValaStruct* st = NULL;
	ValaTypeSymbol* _tmp3_ = NULL;
	ValaTypeSymbol* _tmp4_ = NULL;
	ValaStruct* _tmp5_ = NULL;
	ValaProperty* base_prop = NULL;
	ValaProperty* _tmp6_ = NULL;
	ValaProperty* _tmp7_ = NULL;
	ValaProperty* _tmp8_ = NULL;
	ValaProperty* _tmp9_ = NULL;
	ValaProperty* _tmp10_ = NULL;
	gboolean _tmp22_ = FALSE;
	gboolean _tmp23_ = FALSE;
	ValaProperty* _tmp24_ = NULL;
	ValaAttribute* _tmp25_ = NULL;
	ValaAttribute* _tmp26_ = NULL;
	gboolean _tmp27_ = FALSE;
	ValaProperty* _tmp44_ = 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 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL);
	cl = _tmp2_;
	_tmp3_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
	_tmp4_ = _tmp3_;
	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp4_) : NULL);
	st = _tmp5_;
	_tmp6_ = prop;
	_tmp7_ = _vala_code_node_ref0 (_tmp6_);
	base_prop = _tmp7_;
	_tmp8_ = prop;
	_tmp9_ = vala_property_get_base_property (_tmp8_);
	_tmp10_ = _tmp9_;
	if (_tmp10_ != NULL) {
		ValaProperty* _tmp11_ = NULL;
		ValaProperty* _tmp12_ = NULL;
		ValaProperty* _tmp13_ = NULL;
		ValaProperty* _tmp14_ = NULL;
		_tmp11_ = prop;
		_tmp12_ = vala_property_get_base_property (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = _vala_code_node_ref0 (_tmp13_);
		_vala_code_node_unref0 (base_prop);
		base_prop = _tmp14_;
	} else {
		ValaProperty* _tmp15_ = NULL;
		ValaProperty* _tmp16_ = NULL;
		ValaProperty* _tmp17_ = NULL;
		_tmp15_ = prop;
		_tmp16_ = vala_property_get_base_interface_property (_tmp15_);
		_tmp17_ = _tmp16_;
		if (_tmp17_ != NULL) {
			ValaProperty* _tmp18_ = NULL;
			ValaProperty* _tmp19_ = NULL;
			ValaProperty* _tmp20_ = NULL;
			ValaProperty* _tmp21_ = NULL;
			_tmp18_ = prop;
			_tmp19_ = vala_property_get_base_interface_property (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = _vala_code_node_ref0 (_tmp20_);
			_vala_code_node_unref0 (base_prop);
			base_prop = _tmp21_;
		}
	}
	_tmp24_ = base_prop;
	_tmp25_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp24_, "NoAccessorMethod");
	_tmp26_ = _tmp25_;
	_tmp27_ = _tmp26_ == NULL;
	_vala_code_node_unref0 (_tmp26_);
	if (_tmp27_) {
		ValaProperty* _tmp28_ = NULL;
		const gchar* _tmp29_ = NULL;
		const gchar* _tmp30_ = NULL;
		_tmp28_ = prop;
		_tmp29_ = vala_symbol_get_name ((ValaSymbol*) _tmp28_);
		_tmp30_ = _tmp29_;
		_tmp23_ = g_strcmp0 (_tmp30_, "type") == 0;
	} else {
		_tmp23_ = FALSE;
	}
	if (_tmp23_) {
		gboolean _tmp31_ = FALSE;
		gboolean _tmp32_ = FALSE;
		ValaClass* _tmp33_ = NULL;
		_tmp33_ = cl;
		if (_tmp33_ != NULL) {
			ValaClass* _tmp34_ = NULL;
			gboolean _tmp35_ = FALSE;
			gboolean _tmp36_ = FALSE;
			_tmp34_ = cl;
			_tmp35_ = vala_class_get_is_compact (_tmp34_);
			_tmp36_ = _tmp35_;
			_tmp32_ = !_tmp36_;
		} else {
			_tmp32_ = FALSE;
		}
		if (_tmp32_) {
			_tmp31_ = TRUE;
		} else {
			gboolean _tmp37_ = FALSE;
			ValaStruct* _tmp38_ = NULL;
			_tmp38_ = st;
			if (_tmp38_ != NULL) {
				ValaStruct* _tmp39_ = NULL;
				gboolean _tmp40_ = FALSE;
				_tmp39_ = st;
				_tmp40_ = vala_ccode_base_module_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp39_);
				_tmp37_ = _tmp40_;
			} else {
				_tmp37_ = FALSE;
			}
			_tmp31_ = _tmp37_;
		}
		_tmp22_ = _tmp31_;
	} else {
		_tmp22_ = FALSE;
	}
	if (_tmp22_) {
		ValaProperty* _tmp41_ = NULL;
		ValaSourceReference* _tmp42_ = NULL;
		ValaSourceReference* _tmp43_ = NULL;
		_tmp41_ = prop;
		_tmp42_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp41_);
		_tmp43_ = _tmp42_;
		vala_report_error (_tmp43_, "Property 'type' not allowed");
		_vala_code_node_unref0 (base_prop);
		_vala_code_node_unref0 (st);
		_vala_code_node_unref0 (cl);
		return;
	}
	_tmp44_ = prop;
	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_property ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp44_);
	_vala_code_node_unref0 (base_prop);
	_vala_code_node_unref0 (st);
	_vala_code_node_unref0 (cl);
}


static void vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) {
	ValaGTypeModule * self;
	ValaCCodeFunctionCall* ccheck = NULL;
	ValaCCodeFunctionCall* _tmp0_ = NULL;
	ValaCodeContext* _tmp1_ = NULL;
	ValaCodeContext* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	ValaCreationMethod* cm = NULL;
	ValaCodeNode* _tmp63_ = NULL;
	ValaCreationMethod* _tmp64_ = NULL;
	gboolean _tmp65_ = FALSE;
	ValaCreationMethod* _tmp66_ = NULL;
	ValaCCodeFunction* _tmp99_ = NULL;
	ValaCCodeFunction* _tmp100_ = NULL;
	ValaCCodeFunctionCall* _tmp101_ = NULL;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (method_node != NULL);
	g_return_if_fail (ret_type != NULL);
	g_return_if_fail (t != NULL);
	g_return_if_fail (var_name != NULL);
	_tmp0_ = vala_ccode_function_call_new (NULL);
	ccheck = _tmp0_;
	_tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_code_context_get_assert (_tmp2_);
	_tmp4_ = _tmp3_;
	if (!_tmp4_) {
		_vala_ccode_node_unref0 (ccheck);
		return;
	} else {
		gboolean _tmp5_ = FALSE;
		ValaCodeContext* _tmp6_ = NULL;
		ValaCodeContext* _tmp7_ = NULL;
		gboolean _tmp8_ = FALSE;
		gboolean _tmp9_ = FALSE;
		_tmp6_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp7_ = _tmp6_;
		_tmp8_ = vala_code_context_get_checking (_tmp7_);
		_tmp9_ = _tmp8_;
		if (_tmp9_) {
			gboolean _tmp10_ = FALSE;
			gboolean _tmp11_ = FALSE;
			ValaTypeSymbol* _tmp12_ = NULL;
			_tmp12_ = t;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_CLASS)) {
				ValaTypeSymbol* _tmp13_ = NULL;
				gboolean _tmp14_ = FALSE;
				gboolean _tmp15_ = FALSE;
				_tmp13_ = t;
				_tmp14_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_CLASS, ValaClass));
				_tmp15_ = _tmp14_;
				_tmp11_ = !_tmp15_;
			} else {
				_tmp11_ = FALSE;
			}
			if (_tmp11_) {
				_tmp10_ = TRUE;
			} else {
				ValaTypeSymbol* _tmp16_ = NULL;
				_tmp16_ = t;
				_tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_INTERFACE);
			}
			_tmp5_ = _tmp10_;
		} else {
			_tmp5_ = FALSE;
		}
		if (_tmp5_) {
			ValaCCodeFunctionCall* ctype_check = NULL;
			ValaTypeSymbol* _tmp17_ = NULL;
			gchar* _tmp18_ = NULL;
			gchar* _tmp19_ = NULL;
			ValaCCodeIdentifier* _tmp20_ = NULL;
			ValaCCodeIdentifier* _tmp21_ = NULL;
			ValaCCodeFunctionCall* _tmp22_ = NULL;
			ValaCCodeFunctionCall* _tmp23_ = NULL;
			ValaCCodeFunctionCall* _tmp24_ = NULL;
			const gchar* _tmp25_ = NULL;
			ValaCCodeIdentifier* _tmp26_ = NULL;
			ValaCCodeIdentifier* _tmp27_ = NULL;
			ValaCCodeExpression* cexpr = NULL;
			ValaCCodeFunctionCall* _tmp28_ = NULL;
			ValaCCodeExpression* _tmp29_ = NULL;
			gboolean _tmp30_ = FALSE;
			ValaCCodeFunctionCall* _tmp41_ = NULL;
			ValaCCodeExpression* _tmp42_ = NULL;
			_tmp17_ = t;
			_tmp18_ = vala_ccode_base_module_get_ccode_type_check_function (_tmp17_);
			_tmp19_ = _tmp18_;
			_tmp20_ = vala_ccode_identifier_new (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
			_tmp23_ = _tmp22_;
			_vala_ccode_node_unref0 (_tmp21_);
			_g_free0 (_tmp19_);
			ctype_check = _tmp23_;
			_tmp24_ = ctype_check;
			_tmp25_ = var_name;
			_tmp26_ = vala_ccode_identifier_new (_tmp25_);
			_tmp27_ = _tmp26_;
			vala_ccode_function_call_add_argument (_tmp24_, (ValaCCodeExpression*) _tmp27_);
			_vala_ccode_node_unref0 (_tmp27_);
			_tmp28_ = ctype_check;
			_tmp29_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp28_);
			cexpr = _tmp29_;
			_tmp30_ = non_null;
			if (!_tmp30_) {
				ValaCCodeBinaryExpression* cnull = NULL;
				const gchar* _tmp31_ = NULL;
				ValaCCodeIdentifier* _tmp32_ = NULL;
				ValaCCodeIdentifier* _tmp33_ = NULL;
				ValaCCodeConstant* _tmp34_ = NULL;
				ValaCCodeConstant* _tmp35_ = NULL;
				ValaCCodeBinaryExpression* _tmp36_ = NULL;
				ValaCCodeBinaryExpression* _tmp37_ = NULL;
				ValaCCodeBinaryExpression* _tmp38_ = NULL;
				ValaCCodeFunctionCall* _tmp39_ = NULL;
				ValaCCodeBinaryExpression* _tmp40_ = NULL;
				_tmp31_ = var_name;
				_tmp32_ = vala_ccode_identifier_new (_tmp31_);
				_tmp33_ = _tmp32_;
				_tmp34_ = vala_ccode_constant_new ("NULL");
				_tmp35_ = _tmp34_;
				_tmp36_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp33_, (ValaCCodeExpression*) _tmp35_);
				_tmp37_ = _tmp36_;
				_vala_ccode_node_unref0 (_tmp35_);
				_vala_ccode_node_unref0 (_tmp33_);
				cnull = _tmp37_;
				_tmp38_ = cnull;
				_tmp39_ = ctype_check;
				_tmp40_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp39_);
				_vala_ccode_node_unref0 (cexpr);
				cexpr = (ValaCCodeExpression*) _tmp40_;
				_vala_ccode_node_unref0 (cnull);
			}
			_tmp41_ = ccheck;
			_tmp42_ = cexpr;
			vala_ccode_function_call_add_argument (_tmp41_, _tmp42_);
			_vala_ccode_node_unref0 (cexpr);
			_vala_ccode_node_unref0 (ctype_check);
		} else {
			gboolean _tmp43_ = FALSE;
			gboolean _tmp44_ = FALSE;
			_tmp44_ = non_null;
			if (!_tmp44_) {
				_tmp43_ = TRUE;
			} else {
				gboolean _tmp45_ = FALSE;
				ValaTypeSymbol* _tmp46_ = NULL;
				_tmp46_ = t;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, VALA_TYPE_STRUCT)) {
					ValaTypeSymbol* _tmp47_ = NULL;
					gboolean _tmp48_ = FALSE;
					_tmp47_ = t;
					_tmp48_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp47_, VALA_TYPE_STRUCT, ValaStruct));
					_tmp45_ = _tmp48_;
				} else {
					_tmp45_ = FALSE;
				}
				_tmp43_ = _tmp45_;
			}
			if (_tmp43_) {
				_vala_ccode_node_unref0 (ccheck);
				return;
			} else {
				gboolean _tmp49_ = FALSE;
				ValaTypeSymbol* _tmp50_ = NULL;
				ValaClass* _tmp51_ = NULL;
				_tmp50_ = t;
				_tmp51_ = ((ValaCCodeBaseModule*) self)->glist_type;
				if (_tmp50_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
					_tmp49_ = TRUE;
				} else {
					ValaTypeSymbol* _tmp52_ = NULL;
					ValaClass* _tmp53_ = NULL;
					_tmp52_ = t;
					_tmp53_ = ((ValaCCodeBaseModule*) self)->gslist_type;
					_tmp49_ = _tmp52_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
				}
				if (_tmp49_) {
					_vala_ccode_node_unref0 (ccheck);
					return;
				} else {
					ValaCCodeBinaryExpression* cnonnull = NULL;
					const gchar* _tmp54_ = NULL;
					ValaCCodeIdentifier* _tmp55_ = NULL;
					ValaCCodeIdentifier* _tmp56_ = NULL;
					ValaCCodeConstant* _tmp57_ = NULL;
					ValaCCodeConstant* _tmp58_ = NULL;
					ValaCCodeBinaryExpression* _tmp59_ = NULL;
					ValaCCodeBinaryExpression* _tmp60_ = NULL;
					ValaCCodeFunctionCall* _tmp61_ = NULL;
					ValaCCodeBinaryExpression* _tmp62_ = NULL;
					_tmp54_ = var_name;
					_tmp55_ = vala_ccode_identifier_new (_tmp54_);
					_tmp56_ = _tmp55_;
					_tmp57_ = vala_ccode_constant_new ("NULL");
					_tmp58_ = _tmp57_;
					_tmp59_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) _tmp58_);
					_tmp60_ = _tmp59_;
					_vala_ccode_node_unref0 (_tmp58_);
					_vala_ccode_node_unref0 (_tmp56_);
					cnonnull = _tmp60_;
					_tmp61_ = ccheck;
					_tmp62_ = cnonnull;
					vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp62_);
					_vala_ccode_node_unref0 (cnonnull);
				}
			}
		}
	}
	_tmp63_ = method_node;
	_tmp64_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp63_, VALA_TYPE_CREATION_METHOD) ? ((ValaCreationMethod*) _tmp63_) : NULL);
	cm = _tmp64_;
	_tmp66_ = cm;
	if (_tmp66_ != NULL) {
		ValaCreationMethod* _tmp67_ = NULL;
		ValaSymbol* _tmp68_ = NULL;
		ValaSymbol* _tmp69_ = NULL;
		_tmp67_ = cm;
		_tmp68_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp67_);
		_tmp69_ = _tmp68_;
		_tmp65_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
	} else {
		_tmp65_ = FALSE;
	}
	if (_tmp65_) {
		ValaCCodeFunctionCall* _tmp70_ = NULL;
		ValaCCodeIdentifier* _tmp71_ = NULL;
		ValaCCodeIdentifier* _tmp72_ = NULL;
		ValaCCodeFunctionCall* _tmp73_ = NULL;
		ValaCCodeConstant* _tmp74_ = NULL;
		ValaCCodeConstant* _tmp75_ = NULL;
		_tmp70_ = ccheck;
		_tmp71_ = vala_ccode_identifier_new ("g_return_val_if_fail");
		_tmp72_ = _tmp71_;
		vala_ccode_function_call_set_call (_tmp70_, (ValaCCodeExpression*) _tmp72_);
		_vala_ccode_node_unref0 (_tmp72_);
		_tmp73_ = ccheck;
		_tmp74_ = vala_ccode_constant_new ("NULL");
		_tmp75_ = _tmp74_;
		vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_);
		_vala_ccode_node_unref0 (_tmp75_);
	} else {
		ValaDataType* _tmp76_ = NULL;
		_tmp76_ = ret_type;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp76_, VALA_TYPE_VOID_TYPE)) {
			ValaCCodeFunctionCall* _tmp77_ = NULL;
			ValaCCodeIdentifier* _tmp78_ = NULL;
			ValaCCodeIdentifier* _tmp79_ = NULL;
			_tmp77_ = ccheck;
			_tmp78_ = vala_ccode_identifier_new ("g_return_if_fail");
			_tmp79_ = _tmp78_;
			vala_ccode_function_call_set_call (_tmp77_, (ValaCCodeExpression*) _tmp79_);
			_vala_ccode_node_unref0 (_tmp79_);
		} else {
			ValaCCodeFunctionCall* _tmp80_ = NULL;
			ValaCCodeIdentifier* _tmp81_ = NULL;
			ValaCCodeIdentifier* _tmp82_ = NULL;
			ValaCCodeExpression* cdefault = NULL;
			ValaDataType* _tmp83_ = NULL;
			ValaCCodeExpression* _tmp84_ = NULL;
			ValaCCodeExpression* _tmp85_ = NULL;
			_tmp80_ = ccheck;
			_tmp81_ = vala_ccode_identifier_new ("g_return_val_if_fail");
			_tmp82_ = _tmp81_;
			vala_ccode_function_call_set_call (_tmp80_, (ValaCCodeExpression*) _tmp82_);
			_vala_ccode_node_unref0 (_tmp82_);
			_tmp83_ = ret_type;
			_tmp84_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp83_, FALSE);
			cdefault = _tmp84_;
			_tmp85_ = cdefault;
			if (_tmp85_ != NULL) {
				ValaCCodeFunctionCall* _tmp86_ = NULL;
				ValaCCodeExpression* _tmp87_ = NULL;
				_tmp86_ = ccheck;
				_tmp87_ = cdefault;
				vala_ccode_function_call_add_argument (_tmp86_, _tmp87_);
			} else {
				gboolean _tmp88_ = FALSE;
				ValaDataType* _tmp89_ = NULL;
				ValaTypeSymbol* _tmp90_ = NULL;
				ValaTypeSymbol* _tmp91_ = NULL;
				_tmp89_ = ret_type;
				_tmp90_ = vala_data_type_get_data_type (_tmp89_);
				_tmp91_ = _tmp90_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp91_, VALA_TYPE_STRUCT)) {
					ValaDataType* _tmp92_ = NULL;
					ValaTypeSymbol* _tmp93_ = NULL;
					ValaTypeSymbol* _tmp94_ = NULL;
					gboolean _tmp95_ = FALSE;
					_tmp92_ = ret_type;
					_tmp93_ = vala_data_type_get_data_type (_tmp92_);
					_tmp94_ = _tmp93_;
					_tmp95_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp94_, VALA_TYPE_STRUCT, ValaStruct));
					_tmp88_ = _tmp95_;
				} else {
					_tmp88_ = FALSE;
				}
				if (_tmp88_) {
					ValaCCodeFunctionCall* _tmp96_ = NULL;
					ValaCCodeIdentifier* _tmp97_ = NULL;
					ValaCCodeIdentifier* _tmp98_ = NULL;
					_tmp96_ = ccheck;
					_tmp97_ = vala_ccode_identifier_new ("result");
					_tmp98_ = _tmp97_;
					vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp98_);
					_vala_ccode_node_unref0 (_tmp98_);
				} else {
					_vala_ccode_node_unref0 (cdefault);
					_vala_code_node_unref0 (cm);
					_vala_ccode_node_unref0 (ccheck);
					return;
				}
			}
			_vala_ccode_node_unref0 (cdefault);
		}
	}
	_tmp99_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp100_ = _tmp99_;
	_tmp101_ = ccheck;
	vala_ccode_function_add_expression (_tmp100_, (ValaCCodeExpression*) _tmp101_);
	_vala_code_node_unref0 (cm);
	_vala_ccode_node_unref0 (ccheck);
}


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);
	((ValaCCodeMethodModuleClass *) klass)->generate_parameter = vala_gtype_module_real_generate_parameter;
	((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = vala_gtype_module_real_generate_class_declaration;
	((ValaCCodeBaseModuleClass *) klass)->generate_class_struct_declaration = vala_gtype_module_real_generate_class_struct_declaration;
	((ValaGTypeModuleClass *) klass)->generate_virtual_method_declaration = vala_gtype_module_real_generate_virtual_method_declaration;
	((ValaCodeVisitorClass *) klass)->visit_class = vala_gtype_module_real_visit_class;
	((ValaGTypeModuleClass *) klass)->generate_class_init = vala_gtype_module_real_generate_class_init;
	((ValaGTypeModuleClass *) klass)->end_instance_init = vala_gtype_module_real_end_instance_init;
	((ValaCCodeBaseModuleClass *) klass)->get_param_spec = vala_gtype_module_real_get_param_spec;
	((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = vala_gtype_module_real_generate_interface_declaration;
	((ValaCodeVisitorClass *) klass)->visit_interface = vala_gtype_module_real_visit_interface;
	((ValaCodeVisitorClass *) klass)->visit_struct = vala_gtype_module_real_visit_struct;
	((ValaCodeVisitorClass *) klass)->visit_enum = vala_gtype_module_real_visit_enum;
	((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gtype_module_real_visit_method_call;
	((ValaCodeVisitorClass *) klass)->visit_property = vala_gtype_module_real_visit_property;
	((ValaCCodeBaseModuleClass *) klass)->create_type_check_statement = vala_gtype_module_real_create_type_check_statement;
}


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;
}



