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

/* valaccodememberaccessmodule.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>


#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_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))

#define VALA_TYPE_GLIB_VALUE (vala_glib_value_get_type ())
#define VALA_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValue))
#define VALA_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass))
#define VALA_IS_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GLIB_VALUE))
#define VALA_IS_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GLIB_VALUE))
#define VALA_GLIB_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass))

typedef struct _ValaGLibValue ValaGLibValue;
typedef struct _ValaGLibValueClass ValaGLibValueClass;
typedef struct _ValaGLibValuePrivate ValaGLibValuePrivate;
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

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 _ValaGLibValue {
	ValaTargetValue parent_instance;
	ValaGLibValuePrivate * priv;
	ValaCCodeExpression* cvalue;
	gboolean lvalue;
	gboolean non_null;
	gchar* ctype;
	ValaList* array_length_cvalues;
	ValaCCodeExpression* array_size_cvalue;
	gboolean array_null_terminated;
	ValaCCodeExpression* array_length_cexpr;
	ValaCCodeExpression* delegate_target_cvalue;
	ValaCCodeExpression* delegate_target_destroy_notify_cvalue;
};

struct _ValaGLibValueClass {
	ValaTargetValueClass parent_class;
};


static gpointer vala_ccode_member_access_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;
enum  {
	VALA_CCODE_MEMBER_ACCESS_MODULE_DUMMY_PROPERTY
};
static void vala_ccode_member_access_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr);
ValaCCodeExpression* vala_ccode_base_module_get_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr);
void vala_ccode_base_module_generate_method_declaration (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
gboolean vala_ccode_base_module_add_generated_external_symbol (ValaCCodeBaseModule* self, ValaSymbol* external_symbol);
gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix);
gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self);
void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue);
gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m);
gboolean vala_ccode_base_module_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method);
gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym);
void vala_ccode_base_module_set_delegate_target_destroy_notify (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* destroy_notify);
void vala_ccode_base_module_set_delegate_target (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* delegate_target);
ValaMethod* vala_ccode_base_module_get_current_method (ValaCCodeBaseModule* self);
ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name);
gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b);
ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym);
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);
ValaCCodeExpression* vala_ccode_base_module_get_array_length_cexpression (ValaCCodeBaseModule* self, ValaExpression* array_expr, gint dim);
ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
gboolean vala_ccode_base_module_generate_enum_declaration (ValaCCodeBaseModule* self, ValaEnum* en, ValaCCodeFile* decl_space);
void vala_ccode_base_module_generate_constant_declaration (ValaCCodeBaseModule* self, ValaConstant* c, ValaCCodeFile* decl_space, gboolean definition);
void vala_ccode_base_module_append_array_length (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* size);
void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space);
ValaTypeSymbol* vala_ccode_base_module_get_current_type_symbol (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_get_ccode_no_accessor_method (ValaProperty* p);
gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
gboolean vala_ccode_base_module_get_lvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
ValaTargetValue* vala_ccode_base_module_store_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* initializer, ValaCodeNode* node_reference, gboolean* value_owned);
ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value);
GType vala_glib_value_get_type (void) G_GNUC_CONST;
ValaTargetValue* vala_ccode_base_module_create_temp_value (ValaCCodeBaseModule* self, ValaDataType* type, gboolean init, ValaCodeNode* node_reference, gboolean* value_owned);
ValaTargetValue* vala_ccode_base_module_load_temp_value (ValaCCodeBaseModule* self, ValaTargetValue* lvalue);
ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_get_ccode_array_null_terminated (ValaCodeNode* node);
gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
ValaCCodeExpression* vala_ccode_base_module_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim);
ValaCCodeExpression* vala_ccode_base_module_get_delegate_target_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value);
ValaCCodeConstant* vala_ccode_base_module_get_property_canonical_cconstant (ValaCCodeBaseModule* self, ValaProperty* prop);
gboolean vala_ccode_base_module_requires_copy (ValaCCodeBaseModule* self, ValaDataType* type);
ValaLocalVariable* vala_ccode_base_module_get_temp_variable (ValaCCodeBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference, gboolean init);
void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local);
ValaDataType* vala_ccode_base_module_get_current_return_type (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_variable_accessible_in_finally (ValaCCodeBaseModule* self, ValaLocalVariable* local);
ValaTargetValue* vala_ccode_base_module_get_local_cvalue (ValaCCodeBaseModule* self, ValaLocalVariable* local);
ValaTargetValue* vala_ccode_base_module_get_parameter_cvalue (ValaCCodeBaseModule* self, ValaParameter* param);
static ValaTargetValue* vala_ccode_member_access_module_real_get_local_cvalue (ValaCCodeBaseModule* base, ValaLocalVariable* local);
ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local);
void vala_glib_value_append_array_length_cvalue (ValaGLibValue* self, ValaCCodeExpression* length_cvalue);
gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname);
gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
ValaCCodeExpression* vala_ccode_base_module_get_local_cexpression (ValaCCodeBaseModule* self, ValaLocalVariable* local);
gboolean vala_ccode_base_module_is_in_coroutine (ValaCCodeBaseModule* self);
static ValaTargetValue* vala_ccode_member_access_module_real_get_parameter_cvalue (ValaCCodeBaseModule* base, ValaParameter* param);
gchar* vala_ccode_base_module_get_ccode_array_length_expr (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_ccode_type (ValaCodeNode* node);
gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name);
gchar* vala_ccode_base_module_get_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim);
gchar* vala_ccode_base_module_get_ccode_delegate_target_name (ValaVariable* variable);
ValaPropertyAccessor* vala_ccode_base_module_get_current_property_accessor (ValaCCodeBaseModule* self);
static ValaTargetValue* vala_ccode_member_access_module_real_get_field_cvalue (ValaCCodeBaseModule* base, ValaField* field, ValaTargetValue* instance);
ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym);
void vala_ccode_base_module_generate_class_struct_declaration (ValaCCodeBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node);
void vala_ccode_base_module_set_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCCodeExpression* cvalue);
gboolean vala_ccode_base_module_get_ccode_delegate_target (ValaCodeNode* node);
ValaDataType* vala_ccode_base_module_get_this_type (ValaCCodeBaseModule* self);
void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space);
static ValaTargetValue* vala_ccode_member_access_module_real_load_variable (ValaCCodeBaseModule* base, ValaVariable* variable, ValaTargetValue* value);
gchar* vala_ccode_base_module_get_ccode_array_length_type (ValaCodeNode* node);
gboolean vala_ccode_base_module_is_lvalue_access_allowed (ValaCCodeBaseModule* self, ValaDataType* type);
static ValaTargetValue* vala_ccode_member_access_module_real_load_local (ValaCodeGenerator* base, ValaLocalVariable* local);
ValaTargetValue* vala_ccode_base_module_load_variable (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* value);
static ValaTargetValue* vala_ccode_member_access_module_real_load_parameter (ValaCodeGenerator* base, ValaParameter* param);
static ValaTargetValue* vala_ccode_member_access_module_real_load_this_parameter (ValaCCodeBaseModule* base, ValaTypeSymbol* sym);
static ValaTargetValue* vala_ccode_member_access_module_real_load_field (ValaCodeGenerator* base, ValaField* field, ValaTargetValue* instance);
ValaCCodeMemberAccessModule* vala_ccode_member_access_module_construct (GType object_type);
ValaCCodeControlFlowModule* vala_ccode_control_flow_module_construct (GType object_type);


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


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


static gpointer _vala_target_value_ref0 (gpointer self) {
	return self ? vala_target_value_ref (self) : NULL;
}


static void vala_ccode_member_access_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr) {
	ValaCCodeMemberAccessModule * self;
	ValaCCodeExpression* pub_inst = NULL;
	ValaMemberAccess* _tmp0_ = NULL;
	ValaExpression* _tmp1_ = NULL;
	ValaExpression* _tmp2_ = NULL;
	ValaArrayType* array_type = NULL;
	ValaMemberAccess* _tmp7_ = NULL;
	ValaDataType* _tmp8_ = NULL;
	ValaDataType* _tmp9_ = NULL;
	ValaArrayType* _tmp10_ = NULL;
	ValaDelegateType* delegate_type = NULL;
	ValaMemberAccess* _tmp11_ = NULL;
	ValaDataType* _tmp12_ = NULL;
	ValaDataType* _tmp13_ = NULL;
	ValaDelegateType* _tmp14_ = NULL;
	ValaMemberAccess* _tmp15_ = NULL;
	ValaSymbol* _tmp16_ = NULL;
	ValaSymbol* _tmp17_ = NULL;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_if_fail (expr != NULL);
	pub_inst = NULL;
	_tmp0_ = expr;
	_tmp1_ = vala_member_access_get_inner (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		ValaMemberAccess* _tmp3_ = NULL;
		ValaExpression* _tmp4_ = NULL;
		ValaExpression* _tmp5_ = NULL;
		ValaCCodeExpression* _tmp6_ = NULL;
		_tmp3_ = expr;
		_tmp4_ = vala_member_access_get_inner (_tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp5_);
		_vala_ccode_node_unref0 (pub_inst);
		pub_inst = _tmp6_;
	}
	_tmp7_ = expr;
	_tmp8_ = vala_expression_get_value_type ((ValaExpression*) _tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp9_) : NULL);
	array_type = _tmp10_;
	_tmp11_ = expr;
	_tmp12_ = vala_expression_get_value_type ((ValaExpression*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp13_) : NULL);
	delegate_type = _tmp14_;
	_tmp15_ = expr;
	_tmp16_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp15_);
	_tmp17_ = _tmp16_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_METHOD)) {
		ValaMethod* m = NULL;
		ValaMemberAccess* _tmp18_ = NULL;
		ValaSymbol* _tmp19_ = NULL;
		ValaSymbol* _tmp20_ = NULL;
		ValaMethod* _tmp21_ = NULL;
		gboolean _tmp22_ = FALSE;
		gboolean _tmp23_ = FALSE;
		ValaMethod* _tmp24_ = NULL;
		ValaMemberAccess* _tmp39_ = NULL;
		ValaExpression* _tmp40_ = NULL;
		ValaExpression* _tmp41_ = NULL;
		ValaMethod* _tmp103_ = NULL;
		ValaMethod* _tmp104_ = NULL;
		ValaMethod* _tmp105_ = NULL;
		ValaMemberAccess* _tmp166_ = NULL;
		ValaCCodeConstant* _tmp167_ = NULL;
		ValaCCodeConstant* _tmp168_ = NULL;
		ValaMethod* _tmp169_ = NULL;
		ValaMemberBinding _tmp170_ = 0;
		ValaMemberBinding _tmp171_ = 0;
		_tmp18_ = expr;
		_tmp19_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, VALA_TYPE_METHOD, ValaMethod));
		m = _tmp21_;
		_tmp24_ = m;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_DYNAMIC_METHOD)) {
			_tmp23_ = TRUE;
		} else {
			ValaMethod* _tmp25_ = NULL;
			_tmp25_ = m;
			_tmp23_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_ARRAY_MOVE_METHOD);
		}
		if (_tmp23_) {
			_tmp22_ = TRUE;
		} else {
			ValaMethod* _tmp26_ = NULL;
			_tmp26_ = m;
			_tmp22_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_ARRAY_RESIZE_METHOD);
		}
		if (!_tmp22_) {
			ValaMethod* _tmp27_ = NULL;
			ValaCCodeFile* _tmp28_ = NULL;
			gboolean _tmp29_ = FALSE;
			ValaMethod* _tmp30_ = NULL;
			gboolean _tmp31_ = FALSE;
			gboolean _tmp32_ = FALSE;
			_tmp27_ = m;
			_tmp28_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp27_, _tmp28_);
			_tmp30_ = m;
			_tmp31_ = vala_symbol_get_external ((ValaSymbol*) _tmp30_);
			_tmp32_ = _tmp31_;
			if (!_tmp32_) {
				ValaMethod* _tmp33_ = NULL;
				gboolean _tmp34_ = FALSE;
				gboolean _tmp35_ = FALSE;
				_tmp33_ = m;
				_tmp34_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp33_);
				_tmp35_ = _tmp34_;
				_tmp29_ = _tmp35_;
			} else {
				_tmp29_ = FALSE;
			}
			if (_tmp29_) {
				ValaMethod* _tmp36_ = NULL;
				gboolean _tmp37_ = FALSE;
				_tmp36_ = m;
				_tmp37_ = vala_ccode_base_module_add_generated_external_symbol ((ValaCCodeBaseModule*) self, (ValaSymbol*) _tmp36_);
				if (_tmp37_) {
					ValaMethod* _tmp38_ = NULL;
					_tmp38_ = m;
					vala_code_visitor_visit_method ((ValaCodeVisitor*) self, _tmp38_);
				}
			}
		}
		_tmp39_ = expr;
		_tmp40_ = vala_member_access_get_inner (_tmp39_);
		_tmp41_ = _tmp40_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp41_, VALA_TYPE_BASE_ACCESS)) {
			ValaMethod* _tmp42_ = NULL;
			ValaMethod* _tmp43_ = NULL;
			ValaMethod* _tmp44_ = NULL;
			_tmp42_ = m;
			_tmp43_ = vala_method_get_base_method (_tmp42_);
			_tmp44_ = _tmp43_;
			if (_tmp44_ != NULL) {
				ValaClass* base_class = NULL;
				ValaMethod* _tmp45_ = NULL;
				ValaMethod* _tmp46_ = NULL;
				ValaMethod* _tmp47_ = NULL;
				ValaSymbol* _tmp48_ = NULL;
				ValaSymbol* _tmp49_ = NULL;
				ValaClass* _tmp50_ = NULL;
				ValaCCodeFunctionCall* vcast = NULL;
				ValaClass* _tmp51_ = NULL;
				gchar* _tmp52_ = NULL;
				gchar* _tmp53_ = NULL;
				gchar* _tmp54_ = NULL;
				gchar* _tmp55_ = NULL;
				ValaCCodeIdentifier* _tmp56_ = NULL;
				ValaCCodeIdentifier* _tmp57_ = NULL;
				ValaCCodeFunctionCall* _tmp58_ = NULL;
				ValaCCodeFunctionCall* _tmp59_ = NULL;
				ValaCCodeFunctionCall* _tmp60_ = NULL;
				ValaClass* _tmp61_ = NULL;
				ValaClass* _tmp62_ = NULL;
				gchar* _tmp63_ = NULL;
				gchar* _tmp64_ = NULL;
				gchar* _tmp65_ = NULL;
				gchar* _tmp66_ = NULL;
				ValaCCodeIdentifier* _tmp67_ = NULL;
				ValaCCodeIdentifier* _tmp68_ = NULL;
				ValaMemberAccess* _tmp69_ = NULL;
				ValaCCodeFunctionCall* _tmp70_ = NULL;
				ValaMethod* _tmp71_ = NULL;
				gchar* _tmp72_ = NULL;
				gchar* _tmp73_ = NULL;
				ValaCCodeMemberAccess* _tmp74_ = NULL;
				ValaCCodeMemberAccess* _tmp75_ = NULL;
				_tmp45_ = m;
				_tmp46_ = vala_method_get_base_method (_tmp45_);
				_tmp47_ = _tmp46_;
				_tmp48_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp47_);
				_tmp49_ = _tmp48_;
				_tmp50_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, VALA_TYPE_CLASS, ValaClass));
				base_class = _tmp50_;
				_tmp51_ = base_class;
				_tmp52_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp51_, NULL);
				_tmp53_ = _tmp52_;
				_tmp54_ = g_strdup_printf ("%s_CLASS", _tmp53_);
				_tmp55_ = _tmp54_;
				_tmp56_ = vala_ccode_identifier_new (_tmp55_);
				_tmp57_ = _tmp56_;
				_tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
				_tmp59_ = _tmp58_;
				_vala_ccode_node_unref0 (_tmp57_);
				_g_free0 (_tmp55_);
				_g_free0 (_tmp53_);
				vcast = _tmp59_;
				_tmp60_ = vcast;
				_tmp61_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
				_tmp62_ = _tmp61_;
				_tmp63_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp62_, NULL);
				_tmp64_ = _tmp63_;
				_tmp65_ = g_strdup_printf ("%s_parent_class", _tmp64_);
				_tmp66_ = _tmp65_;
				_tmp67_ = vala_ccode_identifier_new (_tmp66_);
				_tmp68_ = _tmp67_;
				vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp68_);
				_vala_ccode_node_unref0 (_tmp68_);
				_g_free0 (_tmp66_);
				_g_free0 (_tmp64_);
				_tmp69_ = expr;
				_tmp70_ = vcast;
				_tmp71_ = m;
				_tmp72_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp71_);
				_tmp73_ = _tmp72_;
				_tmp74_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp70_, _tmp73_);
				_tmp75_ = _tmp74_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp69_, (ValaCCodeExpression*) _tmp75_);
				_vala_ccode_node_unref0 (_tmp75_);
				_g_free0 (_tmp73_);
				_vala_ccode_node_unref0 (vcast);
				_vala_code_node_unref0 (base_class);
				_vala_code_node_unref0 (m);
				_vala_code_node_unref0 (delegate_type);
				_vala_code_node_unref0 (array_type);
				_vala_ccode_node_unref0 (pub_inst);
				return;
			} else {
				ValaMethod* _tmp76_ = NULL;
				ValaMethod* _tmp77_ = NULL;
				ValaMethod* _tmp78_ = NULL;
				_tmp76_ = m;
				_tmp77_ = vala_method_get_base_interface_method (_tmp76_);
				_tmp78_ = _tmp77_;
				if (_tmp78_ != NULL) {
					ValaInterface* base_iface = NULL;
					ValaMethod* _tmp79_ = NULL;
					ValaMethod* _tmp80_ = NULL;
					ValaMethod* _tmp81_ = NULL;
					ValaSymbol* _tmp82_ = NULL;
					ValaSymbol* _tmp83_ = NULL;
					ValaInterface* _tmp84_ = NULL;
					gchar* parent_iface_var = NULL;
					ValaClass* _tmp85_ = NULL;
					ValaClass* _tmp86_ = NULL;
					gchar* _tmp87_ = NULL;
					gchar* _tmp88_ = NULL;
					ValaInterface* _tmp89_ = NULL;
					gchar* _tmp90_ = NULL;
					gchar* _tmp91_ = NULL;
					gchar* _tmp92_ = NULL;
					gchar* _tmp93_ = NULL;
					ValaMemberAccess* _tmp94_ = NULL;
					const gchar* _tmp95_ = NULL;
					ValaCCodeIdentifier* _tmp96_ = NULL;
					ValaCCodeIdentifier* _tmp97_ = NULL;
					ValaMethod* _tmp98_ = NULL;
					gchar* _tmp99_ = NULL;
					gchar* _tmp100_ = NULL;
					ValaCCodeMemberAccess* _tmp101_ = NULL;
					ValaCCodeMemberAccess* _tmp102_ = NULL;
					_tmp79_ = m;
					_tmp80_ = vala_method_get_base_interface_method (_tmp79_);
					_tmp81_ = _tmp80_;
					_tmp82_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp81_);
					_tmp83_ = _tmp82_;
					_tmp84_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp83_, VALA_TYPE_INTERFACE, ValaInterface));
					base_iface = _tmp84_;
					_tmp85_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
					_tmp86_ = _tmp85_;
					_tmp87_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp86_, NULL);
					_tmp88_ = _tmp87_;
					_tmp89_ = base_iface;
					_tmp90_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp89_, NULL);
					_tmp91_ = _tmp90_;
					_tmp92_ = g_strdup_printf ("%s_%s_parent_iface", _tmp88_, _tmp91_);
					_tmp93_ = _tmp92_;
					_g_free0 (_tmp91_);
					_g_free0 (_tmp88_);
					parent_iface_var = _tmp93_;
					_tmp94_ = expr;
					_tmp95_ = parent_iface_var;
					_tmp96_ = vala_ccode_identifier_new (_tmp95_);
					_tmp97_ = _tmp96_;
					_tmp98_ = m;
					_tmp99_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp98_);
					_tmp100_ = _tmp99_;
					_tmp101_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp97_, _tmp100_);
					_tmp102_ = _tmp101_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp94_, (ValaCCodeExpression*) _tmp102_);
					_vala_ccode_node_unref0 (_tmp102_);
					_g_free0 (_tmp100_);
					_vala_ccode_node_unref0 (_tmp97_);
					_g_free0 (parent_iface_var);
					_vala_code_node_unref0 (base_iface);
					_vala_code_node_unref0 (m);
					_vala_code_node_unref0 (delegate_type);
					_vala_code_node_unref0 (array_type);
					_vala_ccode_node_unref0 (pub_inst);
					return;
				}
			}
		}
		_tmp103_ = m;
		_tmp104_ = vala_method_get_base_method (_tmp103_);
		_tmp105_ = _tmp104_;
		if (_tmp105_ != NULL) {
			ValaMethod* _tmp106_ = NULL;
			ValaMethod* _tmp107_ = NULL;
			ValaMethod* _tmp108_ = NULL;
			gboolean _tmp109_ = FALSE;
			_tmp106_ = m;
			_tmp107_ = vala_method_get_base_method (_tmp106_);
			_tmp108_ = _tmp107_;
			_tmp109_ = vala_ccode_base_module_method_has_wrapper ((ValaCCodeBaseModule*) self, _tmp108_);
			if (!_tmp109_) {
				ValaClass* base_class = NULL;
				ValaMethod* _tmp110_ = NULL;
				ValaMethod* _tmp111_ = NULL;
				ValaMethod* _tmp112_ = NULL;
				ValaSymbol* _tmp113_ = NULL;
				ValaSymbol* _tmp114_ = NULL;
				ValaClass* _tmp115_ = NULL;
				ValaCCodeFunctionCall* vclass = NULL;
				ValaClass* _tmp116_ = NULL;
				gchar* _tmp117_ = NULL;
				gchar* _tmp118_ = NULL;
				gchar* _tmp119_ = NULL;
				gchar* _tmp120_ = NULL;
				ValaCCodeIdentifier* _tmp121_ = NULL;
				ValaCCodeIdentifier* _tmp122_ = NULL;
				ValaCCodeFunctionCall* _tmp123_ = NULL;
				ValaCCodeFunctionCall* _tmp124_ = NULL;
				ValaCCodeFunctionCall* _tmp125_ = NULL;
				ValaCCodeExpression* _tmp126_ = NULL;
				ValaMemberAccess* _tmp127_ = NULL;
				ValaCCodeFunctionCall* _tmp128_ = NULL;
				ValaMethod* _tmp129_ = NULL;
				gchar* _tmp130_ = NULL;
				gchar* _tmp131_ = NULL;
				ValaCCodeMemberAccess* _tmp132_ = NULL;
				ValaCCodeMemberAccess* _tmp133_ = NULL;
				_tmp110_ = m;
				_tmp111_ = vala_method_get_base_method (_tmp110_);
				_tmp112_ = _tmp111_;
				_tmp113_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp112_);
				_tmp114_ = _tmp113_;
				_tmp115_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp114_, VALA_TYPE_CLASS, ValaClass));
				base_class = _tmp115_;
				_tmp116_ = base_class;
				_tmp117_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp116_, NULL);
				_tmp118_ = _tmp117_;
				_tmp119_ = g_strdup_printf ("%s_GET_CLASS", _tmp118_);
				_tmp120_ = _tmp119_;
				_tmp121_ = vala_ccode_identifier_new (_tmp120_);
				_tmp122_ = _tmp121_;
				_tmp123_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp122_);
				_tmp124_ = _tmp123_;
				_vala_ccode_node_unref0 (_tmp122_);
				_g_free0 (_tmp120_);
				_g_free0 (_tmp118_);
				vclass = _tmp124_;
				_tmp125_ = vclass;
				_tmp126_ = pub_inst;
				vala_ccode_function_call_add_argument (_tmp125_, _tmp126_);
				_tmp127_ = expr;
				_tmp128_ = vclass;
				_tmp129_ = m;
				_tmp130_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp129_);
				_tmp131_ = _tmp130_;
				_tmp132_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp128_, _tmp131_);
				_tmp133_ = _tmp132_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp127_, (ValaCCodeExpression*) _tmp133_);
				_vala_ccode_node_unref0 (_tmp133_);
				_g_free0 (_tmp131_);
				_vala_ccode_node_unref0 (vclass);
				_vala_code_node_unref0 (base_class);
			} else {
				ValaMemberAccess* _tmp134_ = NULL;
				ValaMethod* _tmp135_ = NULL;
				ValaMethod* _tmp136_ = NULL;
				ValaMethod* _tmp137_ = NULL;
				gchar* _tmp138_ = NULL;
				gchar* _tmp139_ = NULL;
				ValaCCodeIdentifier* _tmp140_ = NULL;
				ValaCCodeIdentifier* _tmp141_ = NULL;
				_tmp134_ = expr;
				_tmp135_ = m;
				_tmp136_ = vala_method_get_base_method (_tmp135_);
				_tmp137_ = _tmp136_;
				_tmp138_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp137_);
				_tmp139_ = _tmp138_;
				_tmp140_ = vala_ccode_identifier_new (_tmp139_);
				_tmp141_ = _tmp140_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp134_, (ValaCCodeExpression*) _tmp141_);
				_vala_ccode_node_unref0 (_tmp141_);
				_g_free0 (_tmp139_);
			}
		} else {
			ValaMethod* _tmp142_ = NULL;
			ValaMethod* _tmp143_ = NULL;
			ValaMethod* _tmp144_ = NULL;
			_tmp142_ = m;
			_tmp143_ = vala_method_get_base_interface_method (_tmp142_);
			_tmp144_ = _tmp143_;
			if (_tmp144_ != NULL) {
				ValaMemberAccess* _tmp145_ = NULL;
				ValaMethod* _tmp146_ = NULL;
				ValaMethod* _tmp147_ = NULL;
				ValaMethod* _tmp148_ = NULL;
				gchar* _tmp149_ = NULL;
				gchar* _tmp150_ = NULL;
				ValaCCodeIdentifier* _tmp151_ = NULL;
				ValaCCodeIdentifier* _tmp152_ = NULL;
				_tmp145_ = expr;
				_tmp146_ = m;
				_tmp147_ = vala_method_get_base_interface_method (_tmp146_);
				_tmp148_ = _tmp147_;
				_tmp149_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp148_);
				_tmp150_ = _tmp149_;
				_tmp151_ = vala_ccode_identifier_new (_tmp150_);
				_tmp152_ = _tmp151_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp145_, (ValaCCodeExpression*) _tmp152_);
				_vala_ccode_node_unref0 (_tmp152_);
				_g_free0 (_tmp150_);
			} else {
				ValaMethod* _tmp153_ = NULL;
				_tmp153_ = m;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp153_, VALA_TYPE_CREATION_METHOD)) {
					ValaMemberAccess* _tmp154_ = NULL;
					ValaMethod* _tmp155_ = NULL;
					gchar* _tmp156_ = NULL;
					gchar* _tmp157_ = NULL;
					ValaCCodeIdentifier* _tmp158_ = NULL;
					ValaCCodeIdentifier* _tmp159_ = NULL;
					_tmp154_ = expr;
					_tmp155_ = m;
					_tmp156_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp155_);
					_tmp157_ = _tmp156_;
					_tmp158_ = vala_ccode_identifier_new (_tmp157_);
					_tmp159_ = _tmp158_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp154_, (ValaCCodeExpression*) _tmp159_);
					_vala_ccode_node_unref0 (_tmp159_);
					_g_free0 (_tmp157_);
				} else {
					ValaMemberAccess* _tmp160_ = NULL;
					ValaMethod* _tmp161_ = NULL;
					gchar* _tmp162_ = NULL;
					gchar* _tmp163_ = NULL;
					ValaCCodeIdentifier* _tmp164_ = NULL;
					ValaCCodeIdentifier* _tmp165_ = NULL;
					_tmp160_ = expr;
					_tmp161_ = m;
					_tmp162_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp161_);
					_tmp163_ = _tmp162_;
					_tmp164_ = vala_ccode_identifier_new (_tmp163_);
					_tmp165_ = _tmp164_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp160_, (ValaCCodeExpression*) _tmp165_);
					_vala_ccode_node_unref0 (_tmp165_);
					_g_free0 (_tmp163_);
				}
			}
		}
		_tmp166_ = expr;
		_tmp167_ = vala_ccode_constant_new ("NULL");
		_tmp168_ = _tmp167_;
		vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp166_, (ValaCCodeExpression*) _tmp168_);
		_vala_ccode_node_unref0 (_tmp168_);
		_tmp169_ = m;
		_tmp170_ = vala_method_get_binding (_tmp169_);
		_tmp171_ = _tmp170_;
		if (_tmp171_ == VALA_MEMBER_BINDING_STATIC) {
			ValaMemberAccess* _tmp172_ = NULL;
			ValaCCodeConstant* _tmp173_ = NULL;
			ValaCCodeConstant* _tmp174_ = NULL;
			_tmp172_ = expr;
			_tmp173_ = vala_ccode_constant_new ("NULL");
			_tmp174_ = _tmp173_;
			vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp172_, (ValaCCodeExpression*) _tmp174_);
			_vala_ccode_node_unref0 (_tmp174_);
		} else {
			ValaMethod* _tmp175_ = NULL;
			gboolean _tmp176_ = FALSE;
			gboolean _tmp177_ = FALSE;
			_tmp175_ = m;
			_tmp176_ = vala_method_get_is_async_callback (_tmp175_);
			_tmp177_ = _tmp176_;
			if (_tmp177_) {
				ValaMethod* _tmp178_ = NULL;
				ValaMethod* _tmp179_ = NULL;
				gboolean _tmp180_ = FALSE;
				gboolean _tmp181_ = FALSE;
				_tmp178_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
				_tmp179_ = _tmp178_;
				_tmp180_ = vala_method_get_closure (_tmp179_);
				_tmp181_ = _tmp180_;
				if (_tmp181_) {
					ValaBlock* block = NULL;
					ValaMethod* _tmp182_ = NULL;
					ValaSymbol* _tmp183_ = NULL;
					ValaSymbol* _tmp184_ = NULL;
					ValaBlock* _tmp185_ = NULL;
					ValaBlock* _tmp186_ = NULL;
					ValaBlock* _tmp187_ = NULL;
					ValaMemberAccess* _tmp188_ = NULL;
					ValaBlock* _tmp189_ = NULL;
					gint _tmp190_ = 0;
					gchar* _tmp191_ = NULL;
					gchar* _tmp192_ = NULL;
					ValaCCodeExpression* _tmp193_ = NULL;
					ValaCCodeExpression* _tmp194_ = NULL;
					ValaCCodeMemberAccess* _tmp195_ = NULL;
					ValaCCodeMemberAccess* _tmp196_ = NULL;
					_tmp182_ = m;
					_tmp183_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp182_);
					_tmp184_ = _tmp183_;
					_tmp185_ = vala_subroutine_get_body ((ValaSubroutine*) G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_METHOD, ValaMethod));
					_tmp186_ = _tmp185_;
					_tmp187_ = _vala_code_node_ref0 (_tmp186_);
					block = _tmp187_;
					_tmp188_ = expr;
					_tmp189_ = block;
					_tmp190_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp189_);
					_tmp191_ = g_strdup_printf ("_data%d_", _tmp190_);
					_tmp192_ = _tmp191_;
					_tmp193_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp192_);
					_tmp194_ = _tmp193_;
					_tmp195_ = vala_ccode_member_access_new_pointer (_tmp194_, "_async_data_");
					_tmp196_ = _tmp195_;
					vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp188_, (ValaCCodeExpression*) _tmp196_);
					_vala_ccode_node_unref0 (_tmp196_);
					_vala_ccode_node_unref0 (_tmp194_);
					_g_free0 (_tmp192_);
					_vala_code_node_unref0 (block);
				} else {
					ValaMemberAccess* _tmp197_ = NULL;
					ValaCCodeIdentifier* _tmp198_ = NULL;
					ValaCCodeIdentifier* _tmp199_ = NULL;
					_tmp197_ = expr;
					_tmp198_ = vala_ccode_identifier_new ("_data_");
					_tmp199_ = _tmp198_;
					vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp197_, (ValaCCodeExpression*) _tmp199_);
					_vala_ccode_node_unref0 (_tmp199_);
				}
			} else {
				gboolean _tmp200_ = FALSE;
				ValaMemberAccess* _tmp201_ = NULL;
				ValaExpression* _tmp202_ = NULL;
				ValaExpression* _tmp203_ = NULL;
				_tmp201_ = expr;
				_tmp202_ = vala_member_access_get_inner (_tmp201_);
				_tmp203_ = _tmp202_;
				if (_tmp203_ != NULL) {
					ValaMemberAccess* _tmp204_ = NULL;
					gboolean _tmp205_ = FALSE;
					gboolean _tmp206_ = FALSE;
					_tmp204_ = expr;
					_tmp205_ = vala_member_access_get_prototype_access (_tmp204_);
					_tmp206_ = _tmp205_;
					_tmp200_ = !_tmp206_;
				} else {
					_tmp200_ = FALSE;
				}
				if (_tmp200_) {
					ValaCCodeExpression* delegate_target = NULL;
					ValaMemberAccess* _tmp207_ = NULL;
					ValaExpression* _tmp208_ = NULL;
					ValaExpression* _tmp209_ = NULL;
					ValaCCodeExpression* _tmp210_ = NULL;
					ValaMemberAccess* _tmp211_ = NULL;
					ValaDataType* _tmp212_ = NULL;
					ValaDataType* _tmp213_ = NULL;
					ValaDelegateType* _tmp214_ = NULL;
					gboolean _tmp215_ = FALSE;
					gboolean _tmp216_ = FALSE;
					gboolean _tmp217_ = FALSE;
					ValaMemberAccess* _tmp218_ = NULL;
					ValaDataType* _tmp219_ = NULL;
					ValaDataType* _tmp220_ = NULL;
					gboolean _tmp221_ = FALSE;
					gboolean _tmp222_ = FALSE;
					ValaMemberAccess* _tmp271_ = NULL;
					ValaCCodeExpression* _tmp272_ = NULL;
					_tmp207_ = expr;
					_tmp208_ = vala_member_access_get_inner (_tmp207_);
					_tmp209_ = _tmp208_;
					_tmp210_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp209_);
					delegate_target = G_TYPE_CHECK_INSTANCE_CAST (_tmp210_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
					_tmp211_ = expr;
					_tmp212_ = vala_expression_get_target_type ((ValaExpression*) _tmp211_);
					_tmp213_ = _tmp212_;
					_tmp214_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp213_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp213_) : NULL);
					_vala_code_node_unref0 (delegate_type);
					delegate_type = _tmp214_;
					_tmp218_ = expr;
					_tmp219_ = vala_expression_get_value_type ((ValaExpression*) _tmp218_);
					_tmp220_ = _tmp219_;
					_tmp221_ = vala_data_type_get_value_owned (_tmp220_);
					_tmp222_ = _tmp221_;
					if (_tmp222_) {
						_tmp217_ = TRUE;
					} else {
						gboolean _tmp223_ = FALSE;
						ValaDelegateType* _tmp224_ = NULL;
						_tmp224_ = delegate_type;
						if (_tmp224_ != NULL) {
							ValaDelegateType* _tmp225_ = NULL;
							gboolean _tmp226_ = FALSE;
							gboolean _tmp227_ = FALSE;
							_tmp225_ = delegate_type;
							_tmp226_ = vala_delegate_type_get_is_called_once (_tmp225_);
							_tmp227_ = _tmp226_;
							_tmp223_ = _tmp227_;
						} else {
							_tmp223_ = FALSE;
						}
						_tmp217_ = _tmp223_;
					}
					if (_tmp217_) {
						ValaMemberAccess* _tmp228_ = NULL;
						ValaExpression* _tmp229_ = NULL;
						ValaExpression* _tmp230_ = NULL;
						ValaDataType* _tmp231_ = NULL;
						ValaDataType* _tmp232_ = NULL;
						ValaTypeSymbol* _tmp233_ = NULL;
						ValaTypeSymbol* _tmp234_ = NULL;
						_tmp228_ = expr;
						_tmp229_ = vala_member_access_get_inner (_tmp228_);
						_tmp230_ = _tmp229_;
						_tmp231_ = vala_expression_get_value_type (_tmp230_);
						_tmp232_ = _tmp231_;
						_tmp233_ = vala_data_type_get_data_type (_tmp232_);
						_tmp234_ = _tmp233_;
						_tmp216_ = _tmp234_ != NULL;
					} else {
						_tmp216_ = FALSE;
					}
					if (_tmp216_) {
						ValaMemberAccess* _tmp235_ = NULL;
						ValaExpression* _tmp236_ = NULL;
						ValaExpression* _tmp237_ = NULL;
						ValaDataType* _tmp238_ = NULL;
						ValaDataType* _tmp239_ = NULL;
						ValaTypeSymbol* _tmp240_ = NULL;
						ValaTypeSymbol* _tmp241_ = NULL;
						gboolean _tmp242_ = FALSE;
						_tmp235_ = expr;
						_tmp236_ = vala_member_access_get_inner (_tmp235_);
						_tmp237_ = _tmp236_;
						_tmp238_ = vala_expression_get_value_type (_tmp237_);
						_tmp239_ = _tmp238_;
						_tmp240_ = vala_data_type_get_data_type (_tmp239_);
						_tmp241_ = _tmp240_;
						_tmp242_ = vala_ccode_base_module_is_reference_counting (_tmp241_);
						_tmp215_ = _tmp242_;
					} else {
						_tmp215_ = FALSE;
					}
					if (_tmp215_) {
						ValaCCodeFunctionCall* ref_call = NULL;
						ValaMemberAccess* _tmp243_ = NULL;
						ValaExpression* _tmp244_ = NULL;
						ValaExpression* _tmp245_ = NULL;
						ValaDataType* _tmp246_ = NULL;
						ValaDataType* _tmp247_ = NULL;
						ValaMemberAccess* _tmp248_ = NULL;
						ValaSourceReference* _tmp249_ = NULL;
						ValaSourceReference* _tmp250_ = NULL;
						ValaCCodeExpression* _tmp251_ = NULL;
						ValaCCodeExpression* _tmp252_ = NULL;
						ValaCCodeFunctionCall* _tmp253_ = NULL;
						ValaCCodeFunctionCall* _tmp254_ = NULL;
						ValaCCodeFunctionCall* _tmp255_ = NULL;
						ValaCCodeExpression* _tmp256_ = NULL;
						ValaCCodeFunctionCall* _tmp257_ = NULL;
						ValaCCodeExpression* _tmp258_ = NULL;
						gboolean _tmp259_ = FALSE;
						ValaDelegateType* _tmp260_ = NULL;
						_tmp243_ = expr;
						_tmp244_ = vala_member_access_get_inner (_tmp243_);
						_tmp245_ = _tmp244_;
						_tmp246_ = vala_expression_get_value_type (_tmp245_);
						_tmp247_ = _tmp246_;
						_tmp248_ = expr;
						_tmp249_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp248_);
						_tmp250_ = _tmp249_;
						_tmp251_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp247_, _tmp250_, FALSE);
						_tmp252_ = _tmp251_;
						_tmp253_ = vala_ccode_function_call_new (_tmp252_);
						_tmp254_ = _tmp253_;
						_vala_ccode_node_unref0 (_tmp252_);
						ref_call = _tmp254_;
						_tmp255_ = ref_call;
						_tmp256_ = delegate_target;
						vala_ccode_function_call_add_argument (_tmp255_, _tmp256_);
						_tmp257_ = ref_call;
						_tmp258_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp257_);
						_vala_ccode_node_unref0 (delegate_target);
						delegate_target = _tmp258_;
						_tmp260_ = delegate_type;
						if (_tmp260_ != NULL) {
							ValaDelegateType* _tmp261_ = NULL;
							gboolean _tmp262_ = FALSE;
							_tmp261_ = delegate_type;
							_tmp262_ = vala_data_type_is_disposable ((ValaDataType*) _tmp261_);
							_tmp259_ = _tmp262_;
						} else {
							_tmp259_ = FALSE;
						}
						if (_tmp259_) {
							ValaMemberAccess* _tmp263_ = NULL;
							ValaMemberAccess* _tmp264_ = NULL;
							ValaExpression* _tmp265_ = NULL;
							ValaExpression* _tmp266_ = NULL;
							ValaDataType* _tmp267_ = NULL;
							ValaDataType* _tmp268_ = NULL;
							ValaCCodeExpression* _tmp269_ = NULL;
							ValaCCodeExpression* _tmp270_ = NULL;
							_tmp263_ = expr;
							_tmp264_ = expr;
							_tmp265_ = vala_member_access_get_inner (_tmp264_);
							_tmp266_ = _tmp265_;
							_tmp267_ = vala_expression_get_value_type (_tmp266_);
							_tmp268_ = _tmp267_;
							_tmp269_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp268_, FALSE);
							_tmp270_ = _tmp269_;
							vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp263_, _tmp270_);
							_vala_ccode_node_unref0 (_tmp270_);
						}
						_vala_ccode_node_unref0 (ref_call);
					}
					_tmp271_ = expr;
					_tmp272_ = delegate_target;
					vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp271_, _tmp272_);
					_vala_ccode_node_unref0 (delegate_target);
				}
			}
		}
		_vala_code_node_unref0 (m);
	} else {
		ValaMemberAccess* _tmp273_ = NULL;
		ValaSymbol* _tmp274_ = NULL;
		ValaSymbol* _tmp275_ = NULL;
		_tmp273_ = expr;
		_tmp274_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp273_);
		_tmp275_ = _tmp274_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp275_, VALA_TYPE_ARRAY_LENGTH_FIELD)) {
			gboolean _tmp276_ = FALSE;
			ValaMemberAccess* _tmp277_ = NULL;
			ValaDataType* _tmp278_ = NULL;
			ValaDataType* _tmp279_ = NULL;
			ValaMemberAccess* _tmp286_ = NULL;
			ValaMemberAccess* _tmp287_ = NULL;
			ValaExpression* _tmp288_ = NULL;
			ValaExpression* _tmp289_ = NULL;
			ValaCCodeExpression* _tmp290_ = NULL;
			ValaCCodeExpression* _tmp291_ = NULL;
			_tmp277_ = expr;
			_tmp278_ = vala_expression_get_value_type ((ValaExpression*) _tmp277_);
			_tmp279_ = _tmp278_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp279_, VALA_TYPE_ARRAY_TYPE)) {
				ValaMemberAccess* _tmp280_ = NULL;
				ValaCodeNode* _tmp281_ = NULL;
				ValaCodeNode* _tmp282_ = NULL;
				_tmp280_ = expr;
				_tmp281_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp280_);
				_tmp282_ = _tmp281_;
				_tmp276_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp282_, VALA_TYPE_ELEMENT_ACCESS);
			} else {
				_tmp276_ = FALSE;
			}
			if (_tmp276_) {
				ValaMemberAccess* _tmp283_ = NULL;
				ValaSourceReference* _tmp284_ = NULL;
				ValaSourceReference* _tmp285_ = NULL;
				_tmp283_ = expr;
				_tmp284_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp283_);
				_tmp285_ = _tmp284_;
				vala_report_error (_tmp285_, "unsupported use of length field of multi-dimensional array");
			}
			_tmp286_ = expr;
			_tmp287_ = expr;
			_tmp288_ = vala_member_access_get_inner (_tmp287_);
			_tmp289_ = _tmp288_;
			_tmp290_ = vala_ccode_base_module_get_array_length_cexpression ((ValaCCodeBaseModule*) self, _tmp289_, 1);
			_tmp291_ = _tmp290_;
			vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp286_, _tmp291_);
			_vala_ccode_node_unref0 (_tmp291_);
		} else {
			ValaMemberAccess* _tmp292_ = NULL;
			ValaSymbol* _tmp293_ = NULL;
			ValaSymbol* _tmp294_ = NULL;
			_tmp292_ = expr;
			_tmp293_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp292_);
			_tmp294_ = _tmp293_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp294_, VALA_TYPE_FIELD)) {
				ValaField* field = NULL;
				ValaMemberAccess* _tmp295_ = NULL;
				ValaSymbol* _tmp296_ = NULL;
				ValaSymbol* _tmp297_ = NULL;
				ValaField* _tmp298_ = NULL;
				ValaMemberAccess* _tmp299_ = NULL;
				gboolean _tmp300_ = FALSE;
				gboolean _tmp301_ = FALSE;
				_tmp295_ = expr;
				_tmp296_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp295_);
				_tmp297_ = _tmp296_;
				_tmp298_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp297_, VALA_TYPE_FIELD, ValaField));
				field = _tmp298_;
				_tmp299_ = expr;
				_tmp300_ = vala_expression_get_lvalue ((ValaExpression*) _tmp299_);
				_tmp301_ = _tmp300_;
				if (_tmp301_) {
					ValaTargetValue* _tmp302_ = NULL;
					ValaMemberAccess* _tmp303_ = NULL;
					ValaExpression* _tmp304_ = NULL;
					ValaExpression* _tmp305_ = NULL;
					ValaMemberAccess* _tmp311_ = NULL;
					ValaField* _tmp312_ = NULL;
					ValaTargetValue* _tmp313_ = NULL;
					ValaTargetValue* _tmp314_ = NULL;
					_tmp303_ = expr;
					_tmp304_ = vala_member_access_get_inner (_tmp303_);
					_tmp305_ = _tmp304_;
					if (_tmp305_ != NULL) {
						ValaMemberAccess* _tmp306_ = NULL;
						ValaExpression* _tmp307_ = NULL;
						ValaExpression* _tmp308_ = NULL;
						ValaTargetValue* _tmp309_ = NULL;
						ValaTargetValue* _tmp310_ = NULL;
						_tmp306_ = expr;
						_tmp307_ = vala_member_access_get_inner (_tmp306_);
						_tmp308_ = _tmp307_;
						_tmp309_ = vala_expression_get_target_value (_tmp308_);
						_tmp310_ = _tmp309_;
						_tmp302_ = _tmp310_;
					} else {
						_tmp302_ = NULL;
					}
					_tmp311_ = expr;
					_tmp312_ = field;
					_tmp313_ = vala_ccode_base_module_get_field_cvalue ((ValaCCodeBaseModule*) self, _tmp312_, _tmp302_);
					_tmp314_ = _tmp313_;
					vala_expression_set_target_value ((ValaExpression*) _tmp311_, _tmp314_);
					_vala_target_value_unref0 (_tmp314_);
				} else {
					ValaTargetValue* _tmp315_ = NULL;
					ValaMemberAccess* _tmp316_ = NULL;
					ValaExpression* _tmp317_ = NULL;
					ValaExpression* _tmp318_ = NULL;
					ValaMemberAccess* _tmp324_ = NULL;
					ValaField* _tmp325_ = NULL;
					ValaTargetValue* _tmp326_ = NULL;
					ValaTargetValue* _tmp327_ = NULL;
					_tmp316_ = expr;
					_tmp317_ = vala_member_access_get_inner (_tmp316_);
					_tmp318_ = _tmp317_;
					if (_tmp318_ != NULL) {
						ValaMemberAccess* _tmp319_ = NULL;
						ValaExpression* _tmp320_ = NULL;
						ValaExpression* _tmp321_ = NULL;
						ValaTargetValue* _tmp322_ = NULL;
						ValaTargetValue* _tmp323_ = NULL;
						_tmp319_ = expr;
						_tmp320_ = vala_member_access_get_inner (_tmp319_);
						_tmp321_ = _tmp320_;
						_tmp322_ = vala_expression_get_target_value (_tmp321_);
						_tmp323_ = _tmp322_;
						_tmp315_ = _tmp323_;
					} else {
						_tmp315_ = NULL;
					}
					_tmp324_ = expr;
					_tmp325_ = field;
					_tmp326_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, _tmp325_, _tmp315_);
					_tmp327_ = _tmp326_;
					vala_expression_set_target_value ((ValaExpression*) _tmp324_, _tmp327_);
					_vala_target_value_unref0 (_tmp327_);
				}
				_vala_code_node_unref0 (field);
			} else {
				ValaMemberAccess* _tmp328_ = NULL;
				ValaSymbol* _tmp329_ = NULL;
				ValaSymbol* _tmp330_ = NULL;
				_tmp328_ = expr;
				_tmp329_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp328_);
				_tmp330_ = _tmp329_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp330_, VALA_TYPE_ENUM_VALUE)) {
					ValaEnumValue* ev = NULL;
					ValaMemberAccess* _tmp331_ = NULL;
					ValaSymbol* _tmp332_ = NULL;
					ValaSymbol* _tmp333_ = NULL;
					ValaEnumValue* _tmp334_ = NULL;
					ValaEnumValue* _tmp335_ = NULL;
					ValaSymbol* _tmp336_ = NULL;
					ValaSymbol* _tmp337_ = NULL;
					ValaCCodeFile* _tmp338_ = NULL;
					ValaMemberAccess* _tmp339_ = NULL;
					ValaEnumValue* _tmp340_ = NULL;
					gchar* _tmp341_ = NULL;
					gchar* _tmp342_ = NULL;
					ValaCCodeConstant* _tmp343_ = NULL;
					ValaCCodeConstant* _tmp344_ = NULL;
					_tmp331_ = expr;
					_tmp332_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp331_);
					_tmp333_ = _tmp332_;
					_tmp334_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp333_, VALA_TYPE_ENUM_VALUE, ValaEnumValue));
					ev = _tmp334_;
					_tmp335_ = ev;
					_tmp336_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp335_);
					_tmp337_ = _tmp336_;
					_tmp338_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_enum_declaration ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp337_, VALA_TYPE_ENUM, ValaEnum), _tmp338_);
					_tmp339_ = expr;
					_tmp340_ = ev;
					_tmp341_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp340_);
					_tmp342_ = _tmp341_;
					_tmp343_ = vala_ccode_constant_new (_tmp342_);
					_tmp344_ = _tmp343_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp339_, (ValaCCodeExpression*) _tmp344_);
					_vala_ccode_node_unref0 (_tmp344_);
					_g_free0 (_tmp342_);
					_vala_code_node_unref0 (ev);
				} else {
					ValaMemberAccess* _tmp345_ = NULL;
					ValaSymbol* _tmp346_ = NULL;
					ValaSymbol* _tmp347_ = NULL;
					_tmp345_ = expr;
					_tmp346_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp345_);
					_tmp347_ = _tmp346_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp347_, VALA_TYPE_CONSTANT)) {
						ValaConstant* c = NULL;
						ValaMemberAccess* _tmp348_ = NULL;
						ValaSymbol* _tmp349_ = NULL;
						ValaSymbol* _tmp350_ = NULL;
						ValaConstant* _tmp351_ = NULL;
						gboolean _tmp352_ = FALSE;
						gboolean _tmp353_ = FALSE;
						ValaConstant* _tmp354_ = NULL;
						ValaSourceReference* _tmp355_ = NULL;
						ValaSourceReference* _tmp356_ = NULL;
						ValaConstant* _tmp370_ = NULL;
						ValaCCodeFile* _tmp371_ = NULL;
						gchar* fn = NULL;
						ValaConstant* _tmp372_ = NULL;
						gchar* _tmp373_ = NULL;
						const gchar* _tmp374_ = NULL;
						ValaArrayType* _tmp421_ = NULL;
						_tmp348_ = expr;
						_tmp349_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp348_);
						_tmp350_ = _tmp349_;
						_tmp351_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp350_, VALA_TYPE_CONSTANT, ValaConstant));
						c = _tmp351_;
						_tmp354_ = c;
						_tmp355_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp354_);
						_tmp356_ = _tmp355_;
						if (_tmp356_ != NULL) {
							ValaMemberAccess* _tmp357_ = NULL;
							ValaSourceReference* _tmp358_ = NULL;
							ValaSourceReference* _tmp359_ = NULL;
							_tmp357_ = expr;
							_tmp358_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp357_);
							_tmp359_ = _tmp358_;
							_tmp353_ = _tmp359_ != NULL;
						} else {
							_tmp353_ = FALSE;
						}
						if (_tmp353_) {
							ValaConstant* _tmp360_ = NULL;
							ValaSourceReference* _tmp361_ = NULL;
							ValaSourceReference* _tmp362_ = NULL;
							ValaSourceFile* _tmp363_ = NULL;
							ValaSourceFile* _tmp364_ = NULL;
							ValaMemberAccess* _tmp365_ = NULL;
							ValaSourceReference* _tmp366_ = NULL;
							ValaSourceReference* _tmp367_ = NULL;
							ValaSourceFile* _tmp368_ = NULL;
							ValaSourceFile* _tmp369_ = NULL;
							_tmp360_ = c;
							_tmp361_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp360_);
							_tmp362_ = _tmp361_;
							_tmp363_ = vala_source_reference_get_file (_tmp362_);
							_tmp364_ = _tmp363_;
							_tmp365_ = expr;
							_tmp366_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp365_);
							_tmp367_ = _tmp366_;
							_tmp368_ = vala_source_reference_get_file (_tmp367_);
							_tmp369_ = _tmp368_;
							_tmp352_ = _tmp364_ == _tmp369_;
						} else {
							_tmp352_ = FALSE;
						}
						_tmp370_ = c;
						_tmp371_ = ((ValaCCodeBaseModule*) self)->cfile;
						vala_ccode_base_module_generate_constant_declaration ((ValaCCodeBaseModule*) self, _tmp370_, _tmp371_, _tmp352_);
						_tmp372_ = c;
						_tmp373_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp372_);
						fn = _tmp373_;
						_tmp374_ = fn;
						if (g_strcmp0 (_tmp374_, "GLib.Log.FILE") == 0) {
							gchar* s = NULL;
							ValaMemberAccess* _tmp375_ = NULL;
							ValaSourceReference* _tmp376_ = NULL;
							ValaSourceReference* _tmp377_ = NULL;
							ValaSourceFile* _tmp378_ = NULL;
							ValaSourceFile* _tmp379_ = NULL;
							const gchar* _tmp380_ = NULL;
							const gchar* _tmp381_ = NULL;
							gchar* _tmp382_ = NULL;
							ValaMemberAccess* _tmp383_ = NULL;
							const gchar* _tmp384_ = NULL;
							gchar* _tmp385_ = NULL;
							gchar* _tmp386_ = NULL;
							ValaCCodeConstant* _tmp387_ = NULL;
							ValaCCodeConstant* _tmp388_ = NULL;
							_tmp375_ = expr;
							_tmp376_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp375_);
							_tmp377_ = _tmp376_;
							_tmp378_ = vala_source_reference_get_file (_tmp377_);
							_tmp379_ = _tmp378_;
							_tmp380_ = vala_source_file_get_filename (_tmp379_);
							_tmp381_ = _tmp380_;
							_tmp382_ = g_path_get_basename (_tmp381_);
							s = _tmp382_;
							_tmp383_ = expr;
							_tmp384_ = s;
							_tmp385_ = g_strdup_printf ("\"%s\"", _tmp384_);
							_tmp386_ = _tmp385_;
							_tmp387_ = vala_ccode_constant_new (_tmp386_);
							_tmp388_ = _tmp387_;
							vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp383_, (ValaCCodeExpression*) _tmp388_);
							_vala_ccode_node_unref0 (_tmp388_);
							_g_free0 (_tmp386_);
							_g_free0 (s);
						} else {
							const gchar* _tmp389_ = NULL;
							_tmp389_ = fn;
							if (g_strcmp0 (_tmp389_, "GLib.Log.LINE") == 0) {
								gint i = 0;
								ValaMemberAccess* _tmp390_ = NULL;
								ValaSourceReference* _tmp391_ = NULL;
								ValaSourceReference* _tmp392_ = NULL;
								ValaSourceLocation _tmp393_ = {0};
								ValaSourceLocation _tmp394_ = {0};
								gint _tmp395_ = 0;
								ValaMemberAccess* _tmp396_ = NULL;
								gint _tmp397_ = 0;
								gchar* _tmp398_ = NULL;
								gchar* _tmp399_ = NULL;
								ValaCCodeConstant* _tmp400_ = NULL;
								ValaCCodeConstant* _tmp401_ = NULL;
								_tmp390_ = expr;
								_tmp391_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp390_);
								_tmp392_ = _tmp391_;
								vala_source_reference_get_begin (_tmp392_, &_tmp393_);
								_tmp394_ = _tmp393_;
								_tmp395_ = _tmp394_.line;
								i = _tmp395_;
								_tmp396_ = expr;
								_tmp397_ = i;
								_tmp398_ = g_strdup_printf ("%d", _tmp397_);
								_tmp399_ = _tmp398_;
								_tmp400_ = vala_ccode_constant_new (_tmp399_);
								_tmp401_ = _tmp400_;
								vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp396_, (ValaCCodeExpression*) _tmp401_);
								_vala_ccode_node_unref0 (_tmp401_);
								_g_free0 (_tmp399_);
							} else {
								const gchar* _tmp402_ = NULL;
								_tmp402_ = fn;
								if (g_strcmp0 (_tmp402_, "GLib.Log.METHOD") == 0) {
									gchar* s = NULL;
									gchar* _tmp403_ = NULL;
									ValaMethod* _tmp404_ = NULL;
									ValaMethod* _tmp405_ = NULL;
									ValaMemberAccess* _tmp409_ = NULL;
									const gchar* _tmp410_ = NULL;
									gchar* _tmp411_ = NULL;
									gchar* _tmp412_ = NULL;
									ValaCCodeConstant* _tmp413_ = NULL;
									ValaCCodeConstant* _tmp414_ = NULL;
									_tmp403_ = g_strdup ("");
									s = _tmp403_;
									_tmp404_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
									_tmp405_ = _tmp404_;
									if (_tmp405_ != NULL) {
										ValaMethod* _tmp406_ = NULL;
										ValaMethod* _tmp407_ = NULL;
										gchar* _tmp408_ = NULL;
										_tmp406_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
										_tmp407_ = _tmp406_;
										_tmp408_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp407_);
										_g_free0 (s);
										s = _tmp408_;
									}
									_tmp409_ = expr;
									_tmp410_ = s;
									_tmp411_ = g_strdup_printf ("\"%s\"", _tmp410_);
									_tmp412_ = _tmp411_;
									_tmp413_ = vala_ccode_constant_new (_tmp412_);
									_tmp414_ = _tmp413_;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp409_, (ValaCCodeExpression*) _tmp414_);
									_vala_ccode_node_unref0 (_tmp414_);
									_g_free0 (_tmp412_);
									_g_free0 (s);
								} else {
									ValaMemberAccess* _tmp415_ = NULL;
									ValaConstant* _tmp416_ = NULL;
									gchar* _tmp417_ = NULL;
									gchar* _tmp418_ = NULL;
									ValaCCodeIdentifier* _tmp419_ = NULL;
									ValaCCodeIdentifier* _tmp420_ = NULL;
									_tmp415_ = expr;
									_tmp416_ = c;
									_tmp417_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp416_);
									_tmp418_ = _tmp417_;
									_tmp419_ = vala_ccode_identifier_new (_tmp418_);
									_tmp420_ = _tmp419_;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp415_, (ValaCCodeExpression*) _tmp420_);
									_vala_ccode_node_unref0 (_tmp420_);
									_g_free0 (_tmp418_);
								}
							}
						}
						_tmp421_ = array_type;
						if (_tmp421_ != NULL) {
							ValaCCodeFunctionCall* ccall = NULL;
							ValaCCodeIdentifier* _tmp422_ = NULL;
							ValaCCodeIdentifier* _tmp423_ = NULL;
							ValaCCodeFunctionCall* _tmp424_ = NULL;
							ValaCCodeFunctionCall* _tmp425_ = NULL;
							ValaCCodeFunctionCall* _tmp426_ = NULL;
							ValaConstant* _tmp427_ = NULL;
							gchar* _tmp428_ = NULL;
							gchar* _tmp429_ = NULL;
							ValaCCodeIdentifier* _tmp430_ = NULL;
							ValaCCodeIdentifier* _tmp431_ = NULL;
							ValaMemberAccess* _tmp432_ = NULL;
							ValaCCodeFunctionCall* _tmp433_ = NULL;
							_tmp422_ = vala_ccode_identifier_new ("G_N_ELEMENTS");
							_tmp423_ = _tmp422_;
							_tmp424_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp423_);
							_tmp425_ = _tmp424_;
							_vala_ccode_node_unref0 (_tmp423_);
							ccall = _tmp425_;
							_tmp426_ = ccall;
							_tmp427_ = c;
							_tmp428_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp427_);
							_tmp429_ = _tmp428_;
							_tmp430_ = vala_ccode_identifier_new (_tmp429_);
							_tmp431_ = _tmp430_;
							vala_ccode_function_call_add_argument (_tmp426_, (ValaCCodeExpression*) _tmp431_);
							_vala_ccode_node_unref0 (_tmp431_);
							_g_free0 (_tmp429_);
							_tmp432_ = expr;
							_tmp433_ = ccall;
							vala_ccode_base_module_append_array_length ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp432_, (ValaCCodeExpression*) _tmp433_);
							_vala_ccode_node_unref0 (ccall);
						}
						_g_free0 (fn);
						_vala_code_node_unref0 (c);
					} else {
						ValaMemberAccess* _tmp434_ = NULL;
						ValaSymbol* _tmp435_ = NULL;
						ValaSymbol* _tmp436_ = NULL;
						_tmp434_ = expr;
						_tmp435_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp434_);
						_tmp436_ = _tmp435_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp436_, VALA_TYPE_PROPERTY)) {
							ValaProperty* prop = NULL;
							ValaMemberAccess* _tmp437_ = NULL;
							ValaSymbol* _tmp438_ = NULL;
							ValaSymbol* _tmp439_ = NULL;
							ValaProperty* _tmp440_ = NULL;
							ValaProperty* _tmp441_ = NULL;
							ValaMemberAccess* _tmp456_ = NULL;
							ValaExpression* _tmp457_ = NULL;
							ValaExpression* _tmp458_ = NULL;
							ValaMemberAccess* _tmp793_ = NULL;
							ValaTargetValue* _tmp794_ = NULL;
							ValaTargetValue* _tmp795_ = NULL;
							ValaMemberAccess* _tmp796_ = NULL;
							ValaDataType* _tmp797_ = NULL;
							ValaDataType* _tmp798_ = NULL;
							ValaMemberAccess* _tmp799_ = NULL;
							ValaMemberAccess* _tmp800_ = NULL;
							ValaTargetValue* _tmp801_ = NULL;
							ValaTargetValue* _tmp802_ = NULL;
							ValaMemberAccess* _tmp803_ = NULL;
							ValaTargetValue* _tmp804_ = NULL;
							ValaTargetValue* _tmp805_ = NULL;
							_tmp437_ = expr;
							_tmp438_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp437_);
							_tmp439_ = _tmp438_;
							_tmp440_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp439_, VALA_TYPE_PROPERTY, ValaProperty));
							prop = _tmp440_;
							_tmp441_ = prop;
							if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp441_, VALA_TYPE_DYNAMIC_PROPERTY)) {
								ValaProperty* _tmp442_ = NULL;
								ValaPropertyAccessor* _tmp443_ = NULL;
								ValaPropertyAccessor* _tmp444_ = NULL;
								ValaCCodeFile* _tmp445_ = NULL;
								gboolean _tmp446_ = FALSE;
								ValaProperty* _tmp447_ = NULL;
								gboolean _tmp448_ = FALSE;
								gboolean _tmp449_ = FALSE;
								_tmp442_ = prop;
								_tmp443_ = vala_property_get_get_accessor (_tmp442_);
								_tmp444_ = _tmp443_;
								_tmp445_ = ((ValaCCodeBaseModule*) self)->cfile;
								vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp444_, _tmp445_);
								_tmp447_ = prop;
								_tmp448_ = vala_symbol_get_external ((ValaSymbol*) _tmp447_);
								_tmp449_ = _tmp448_;
								if (!_tmp449_) {
									ValaProperty* _tmp450_ = NULL;
									gboolean _tmp451_ = FALSE;
									gboolean _tmp452_ = FALSE;
									_tmp450_ = prop;
									_tmp451_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp450_);
									_tmp452_ = _tmp451_;
									_tmp446_ = _tmp452_;
								} else {
									_tmp446_ = FALSE;
								}
								if (_tmp446_) {
									ValaProperty* _tmp453_ = NULL;
									gboolean _tmp454_ = FALSE;
									_tmp453_ = prop;
									_tmp454_ = vala_ccode_base_module_add_generated_external_symbol ((ValaCCodeBaseModule*) self, (ValaSymbol*) _tmp453_);
									if (_tmp454_) {
										ValaProperty* _tmp455_ = NULL;
										_tmp455_ = prop;
										vala_code_visitor_visit_property ((ValaCodeVisitor*) self, _tmp455_);
									}
								}
							}
							_tmp456_ = expr;
							_tmp457_ = vala_member_access_get_inner (_tmp456_);
							_tmp458_ = _tmp457_;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp458_, VALA_TYPE_BASE_ACCESS)) {
								ValaProperty* base_prop = NULL;
								ValaProperty* _tmp459_ = NULL;
								ValaProperty* _tmp460_ = NULL;
								ValaProperty* _tmp461_ = NULL;
								ValaProperty* _tmp462_ = NULL;
								ValaProperty* _tmp463_ = NULL;
								ValaProperty* _tmp475_ = NULL;
								ValaSymbol* _tmp476_ = NULL;
								ValaSymbol* _tmp477_ = NULL;
								_tmp459_ = prop;
								_tmp460_ = _vala_code_node_ref0 (_tmp459_);
								base_prop = _tmp460_;
								_tmp461_ = prop;
								_tmp462_ = vala_property_get_base_property (_tmp461_);
								_tmp463_ = _tmp462_;
								if (_tmp463_ != NULL) {
									ValaProperty* _tmp464_ = NULL;
									ValaProperty* _tmp465_ = NULL;
									ValaProperty* _tmp466_ = NULL;
									ValaProperty* _tmp467_ = NULL;
									_tmp464_ = prop;
									_tmp465_ = vala_property_get_base_property (_tmp464_);
									_tmp466_ = _tmp465_;
									_tmp467_ = _vala_code_node_ref0 (_tmp466_);
									_vala_code_node_unref0 (base_prop);
									base_prop = _tmp467_;
								} else {
									ValaProperty* _tmp468_ = NULL;
									ValaProperty* _tmp469_ = NULL;
									ValaProperty* _tmp470_ = NULL;
									_tmp468_ = prop;
									_tmp469_ = vala_property_get_base_interface_property (_tmp468_);
									_tmp470_ = _tmp469_;
									if (_tmp470_ != NULL) {
										ValaProperty* _tmp471_ = NULL;
										ValaProperty* _tmp472_ = NULL;
										ValaProperty* _tmp473_ = NULL;
										ValaProperty* _tmp474_ = NULL;
										_tmp471_ = prop;
										_tmp472_ = vala_property_get_base_interface_property (_tmp471_);
										_tmp473_ = _tmp472_;
										_tmp474_ = _vala_code_node_ref0 (_tmp473_);
										_vala_code_node_unref0 (base_prop);
										base_prop = _tmp474_;
									}
								}
								_tmp475_ = base_prop;
								_tmp476_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp475_);
								_tmp477_ = _tmp476_;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp477_, VALA_TYPE_CLASS)) {
									ValaClass* base_class = NULL;
									ValaProperty* _tmp478_ = NULL;
									ValaSymbol* _tmp479_ = NULL;
									ValaSymbol* _tmp480_ = NULL;
									ValaClass* _tmp481_ = NULL;
									ValaCCodeFunctionCall* vcast = NULL;
									ValaClass* _tmp482_ = NULL;
									gchar* _tmp483_ = NULL;
									gchar* _tmp484_ = NULL;
									gchar* _tmp485_ = NULL;
									gchar* _tmp486_ = NULL;
									ValaCCodeIdentifier* _tmp487_ = NULL;
									ValaCCodeIdentifier* _tmp488_ = NULL;
									ValaCCodeFunctionCall* _tmp489_ = NULL;
									ValaCCodeFunctionCall* _tmp490_ = NULL;
									ValaCCodeFunctionCall* _tmp491_ = NULL;
									ValaClass* _tmp492_ = NULL;
									ValaClass* _tmp493_ = NULL;
									gchar* _tmp494_ = NULL;
									gchar* _tmp495_ = NULL;
									gchar* _tmp496_ = NULL;
									gchar* _tmp497_ = NULL;
									ValaCCodeIdentifier* _tmp498_ = NULL;
									ValaCCodeIdentifier* _tmp499_ = NULL;
									ValaCCodeFunctionCall* ccall = NULL;
									ValaCCodeFunctionCall* _tmp500_ = NULL;
									ValaProperty* _tmp501_ = NULL;
									const gchar* _tmp502_ = NULL;
									const gchar* _tmp503_ = NULL;
									gchar* _tmp504_ = NULL;
									gchar* _tmp505_ = NULL;
									ValaCCodeMemberAccess* _tmp506_ = NULL;
									ValaCCodeMemberAccess* _tmp507_ = NULL;
									ValaCCodeFunctionCall* _tmp508_ = NULL;
									ValaCCodeFunctionCall* _tmp509_ = NULL;
									ValaCCodeFunctionCall* _tmp510_ = NULL;
									ValaMemberAccess* _tmp511_ = NULL;
									ValaExpression* _tmp512_ = NULL;
									ValaExpression* _tmp513_ = NULL;
									ValaCCodeExpression* _tmp514_ = NULL;
									ValaCCodeExpression* _tmp515_ = NULL;
									ValaMemberAccess* _tmp516_ = NULL;
									ValaCCodeFunctionCall* _tmp517_ = NULL;
									_tmp478_ = base_prop;
									_tmp479_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp478_);
									_tmp480_ = _tmp479_;
									_tmp481_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp480_, VALA_TYPE_CLASS, ValaClass));
									base_class = _tmp481_;
									_tmp482_ = base_class;
									_tmp483_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp482_, NULL);
									_tmp484_ = _tmp483_;
									_tmp485_ = g_strdup_printf ("%s_CLASS", _tmp484_);
									_tmp486_ = _tmp485_;
									_tmp487_ = vala_ccode_identifier_new (_tmp486_);
									_tmp488_ = _tmp487_;
									_tmp489_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp488_);
									_tmp490_ = _tmp489_;
									_vala_ccode_node_unref0 (_tmp488_);
									_g_free0 (_tmp486_);
									_g_free0 (_tmp484_);
									vcast = _tmp490_;
									_tmp491_ = vcast;
									_tmp492_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
									_tmp493_ = _tmp492_;
									_tmp494_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp493_, NULL);
									_tmp495_ = _tmp494_;
									_tmp496_ = g_strdup_printf ("%s_parent_class", _tmp495_);
									_tmp497_ = _tmp496_;
									_tmp498_ = vala_ccode_identifier_new (_tmp497_);
									_tmp499_ = _tmp498_;
									vala_ccode_function_call_add_argument (_tmp491_, (ValaCCodeExpression*) _tmp499_);
									_vala_ccode_node_unref0 (_tmp499_);
									_g_free0 (_tmp497_);
									_g_free0 (_tmp495_);
									_tmp500_ = vcast;
									_tmp501_ = prop;
									_tmp502_ = vala_symbol_get_name ((ValaSymbol*) _tmp501_);
									_tmp503_ = _tmp502_;
									_tmp504_ = g_strdup_printf ("get_%s", _tmp503_);
									_tmp505_ = _tmp504_;
									_tmp506_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp500_, _tmp505_);
									_tmp507_ = _tmp506_;
									_tmp508_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp507_);
									_tmp509_ = _tmp508_;
									_vala_ccode_node_unref0 (_tmp507_);
									_g_free0 (_tmp505_);
									ccall = _tmp509_;
									_tmp510_ = ccall;
									_tmp511_ = expr;
									_tmp512_ = vala_member_access_get_inner (_tmp511_);
									_tmp513_ = _tmp512_;
									_tmp514_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp513_);
									_tmp515_ = _tmp514_;
									vala_ccode_function_call_add_argument (_tmp510_, _tmp515_);
									_vala_ccode_node_unref0 (_tmp515_);
									_tmp516_ = expr;
									_tmp517_ = ccall;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp516_, (ValaCCodeExpression*) _tmp517_);
									_vala_ccode_node_unref0 (ccall);
									_vala_ccode_node_unref0 (vcast);
									_vala_code_node_unref0 (base_class);
								} else {
									ValaProperty* _tmp518_ = NULL;
									ValaSymbol* _tmp519_ = NULL;
									ValaSymbol* _tmp520_ = NULL;
									_tmp518_ = base_prop;
									_tmp519_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp518_);
									_tmp520_ = _tmp519_;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp520_, VALA_TYPE_INTERFACE)) {
										ValaInterface* base_iface = NULL;
										ValaProperty* _tmp521_ = NULL;
										ValaSymbol* _tmp522_ = NULL;
										ValaSymbol* _tmp523_ = NULL;
										ValaInterface* _tmp524_ = NULL;
										gchar* parent_iface_var = NULL;
										ValaClass* _tmp525_ = NULL;
										ValaClass* _tmp526_ = NULL;
										gchar* _tmp527_ = NULL;
										gchar* _tmp528_ = NULL;
										ValaInterface* _tmp529_ = NULL;
										gchar* _tmp530_ = NULL;
										gchar* _tmp531_ = NULL;
										gchar* _tmp532_ = NULL;
										gchar* _tmp533_ = NULL;
										ValaCCodeFunctionCall* ccall = NULL;
										const gchar* _tmp534_ = NULL;
										ValaCCodeIdentifier* _tmp535_ = NULL;
										ValaCCodeIdentifier* _tmp536_ = NULL;
										ValaProperty* _tmp537_ = NULL;
										const gchar* _tmp538_ = NULL;
										const gchar* _tmp539_ = NULL;
										gchar* _tmp540_ = NULL;
										gchar* _tmp541_ = NULL;
										ValaCCodeMemberAccess* _tmp542_ = NULL;
										ValaCCodeMemberAccess* _tmp543_ = NULL;
										ValaCCodeFunctionCall* _tmp544_ = NULL;
										ValaCCodeFunctionCall* _tmp545_ = NULL;
										ValaCCodeFunctionCall* _tmp546_ = NULL;
										ValaMemberAccess* _tmp547_ = NULL;
										ValaExpression* _tmp548_ = NULL;
										ValaExpression* _tmp549_ = NULL;
										ValaCCodeExpression* _tmp550_ = NULL;
										ValaCCodeExpression* _tmp551_ = NULL;
										ValaMemberAccess* _tmp552_ = NULL;
										ValaCCodeFunctionCall* _tmp553_ = NULL;
										_tmp521_ = base_prop;
										_tmp522_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp521_);
										_tmp523_ = _tmp522_;
										_tmp524_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp523_, VALA_TYPE_INTERFACE, ValaInterface));
										base_iface = _tmp524_;
										_tmp525_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
										_tmp526_ = _tmp525_;
										_tmp527_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp526_, NULL);
										_tmp528_ = _tmp527_;
										_tmp529_ = base_iface;
										_tmp530_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp529_, NULL);
										_tmp531_ = _tmp530_;
										_tmp532_ = g_strdup_printf ("%s_%s_parent_iface", _tmp528_, _tmp531_);
										_tmp533_ = _tmp532_;
										_g_free0 (_tmp531_);
										_g_free0 (_tmp528_);
										parent_iface_var = _tmp533_;
										_tmp534_ = parent_iface_var;
										_tmp535_ = vala_ccode_identifier_new (_tmp534_);
										_tmp536_ = _tmp535_;
										_tmp537_ = prop;
										_tmp538_ = vala_symbol_get_name ((ValaSymbol*) _tmp537_);
										_tmp539_ = _tmp538_;
										_tmp540_ = g_strdup_printf ("get_%s", _tmp539_);
										_tmp541_ = _tmp540_;
										_tmp542_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp536_, _tmp541_);
										_tmp543_ = _tmp542_;
										_tmp544_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp543_);
										_tmp545_ = _tmp544_;
										_vala_ccode_node_unref0 (_tmp543_);
										_g_free0 (_tmp541_);
										_vala_ccode_node_unref0 (_tmp536_);
										ccall = _tmp545_;
										_tmp546_ = ccall;
										_tmp547_ = expr;
										_tmp548_ = vala_member_access_get_inner (_tmp547_);
										_tmp549_ = _tmp548_;
										_tmp550_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp549_);
										_tmp551_ = _tmp550_;
										vala_ccode_function_call_add_argument (_tmp546_, _tmp551_);
										_vala_ccode_node_unref0 (_tmp551_);
										_tmp552_ = expr;
										_tmp553_ = ccall;
										vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp552_, (ValaCCodeExpression*) _tmp553_);
										_vala_ccode_node_unref0 (ccall);
										_g_free0 (parent_iface_var);
										_vala_code_node_unref0 (base_iface);
									}
								}
								_vala_code_node_unref0 (base_prop);
							} else {
								gboolean _tmp554_ = FALSE;
								gboolean _tmp555_ = FALSE;
								gboolean _tmp556_ = FALSE;
								gboolean _tmp557_ = FALSE;
								gboolean _tmp558_ = FALSE;
								gboolean _tmp559_ = FALSE;
								gboolean _tmp560_ = FALSE;
								ValaProperty* _tmp561_ = NULL;
								ValaMemberBinding _tmp562_ = 0;
								ValaMemberBinding _tmp563_ = 0;
								_tmp561_ = prop;
								_tmp562_ = vala_property_get_binding (_tmp561_);
								_tmp563_ = _tmp562_;
								if (_tmp563_ == VALA_MEMBER_BINDING_INSTANCE) {
									ValaProperty* _tmp564_ = NULL;
									ValaPropertyAccessor* _tmp565_ = NULL;
									ValaPropertyAccessor* _tmp566_ = NULL;
									gboolean _tmp567_ = FALSE;
									gboolean _tmp568_ = FALSE;
									_tmp564_ = prop;
									_tmp565_ = vala_property_get_get_accessor (_tmp564_);
									_tmp566_ = _tmp565_;
									_tmp567_ = vala_property_accessor_get_automatic_body (_tmp566_);
									_tmp568_ = _tmp567_;
									_tmp560_ = _tmp568_;
								} else {
									_tmp560_ = FALSE;
								}
								if (_tmp560_) {
									ValaProperty* _tmp569_ = NULL;
									ValaPropertyAccessor* _tmp570_ = NULL;
									ValaPropertyAccessor* _tmp571_ = NULL;
									ValaDataType* _tmp572_ = NULL;
									ValaDataType* _tmp573_ = NULL;
									gboolean _tmp574_ = FALSE;
									gboolean _tmp575_ = FALSE;
									_tmp569_ = prop;
									_tmp570_ = vala_property_get_get_accessor (_tmp569_);
									_tmp571_ = _tmp570_;
									_tmp572_ = vala_property_accessor_get_value_type (_tmp571_);
									_tmp573_ = _tmp572_;
									_tmp574_ = vala_data_type_get_value_owned (_tmp573_);
									_tmp575_ = _tmp574_;
									_tmp559_ = !_tmp575_;
								} else {
									_tmp559_ = FALSE;
								}
								if (_tmp559_) {
									ValaTypeSymbol* _tmp576_ = NULL;
									ValaTypeSymbol* _tmp577_ = NULL;
									ValaProperty* _tmp578_ = NULL;
									ValaSymbol* _tmp579_ = NULL;
									ValaSymbol* _tmp580_ = NULL;
									_tmp576_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
									_tmp577_ = _tmp576_;
									_tmp578_ = prop;
									_tmp579_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp578_);
									_tmp580_ = _tmp579_;
									_tmp558_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp577_, VALA_TYPE_SYMBOL, ValaSymbol) == _tmp580_;
								} else {
									_tmp558_ = FALSE;
								}
								if (_tmp558_) {
									ValaTypeSymbol* _tmp581_ = NULL;
									ValaTypeSymbol* _tmp582_ = NULL;
									_tmp581_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
									_tmp582_ = _tmp581_;
									_tmp557_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp582_, VALA_TYPE_CLASS);
								} else {
									_tmp557_ = FALSE;
								}
								if (_tmp557_) {
									ValaProperty* _tmp583_ = NULL;
									ValaProperty* _tmp584_ = NULL;
									ValaProperty* _tmp585_ = NULL;
									_tmp583_ = prop;
									_tmp584_ = vala_property_get_base_property (_tmp583_);
									_tmp585_ = _tmp584_;
									_tmp556_ = _tmp585_ == NULL;
								} else {
									_tmp556_ = FALSE;
								}
								if (_tmp556_) {
									ValaProperty* _tmp586_ = NULL;
									ValaProperty* _tmp587_ = NULL;
									ValaProperty* _tmp588_ = NULL;
									_tmp586_ = prop;
									_tmp587_ = vala_property_get_base_interface_property (_tmp586_);
									_tmp588_ = _tmp587_;
									_tmp555_ = _tmp588_ == NULL;
								} else {
									_tmp555_ = FALSE;
								}
								if (_tmp555_) {
									gboolean _tmp589_ = FALSE;
									ValaProperty* _tmp590_ = NULL;
									ValaDataType* _tmp591_ = NULL;
									ValaDataType* _tmp592_ = NULL;
									_tmp590_ = prop;
									_tmp591_ = vala_property_get_property_type (_tmp590_);
									_tmp592_ = _tmp591_;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp592_, VALA_TYPE_ARRAY_TYPE)) {
										_tmp589_ = TRUE;
									} else {
										ValaProperty* _tmp593_ = NULL;
										ValaDataType* _tmp594_ = NULL;
										ValaDataType* _tmp595_ = NULL;
										_tmp593_ = prop;
										_tmp594_ = vala_property_get_property_type (_tmp593_);
										_tmp595_ = _tmp594_;
										_tmp589_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp595_, VALA_TYPE_DELEGATE_TYPE);
									}
									_tmp554_ = !_tmp589_;
								} else {
									_tmp554_ = FALSE;
								}
								if (_tmp554_) {
									ValaCCodeExpression* inst = NULL;
									ValaCCodeExpression* _tmp596_ = NULL;
									ValaCCodeMemberAccess* _tmp597_ = NULL;
									ValaMemberAccess* _tmp598_ = NULL;
									ValaCCodeExpression* _tmp599_ = NULL;
									ValaProperty* _tmp600_ = NULL;
									ValaField* _tmp601_ = NULL;
									ValaField* _tmp602_ = NULL;
									gchar* _tmp603_ = NULL;
									gchar* _tmp604_ = NULL;
									ValaCCodeMemberAccess* _tmp605_ = NULL;
									ValaCCodeMemberAccess* _tmp606_ = NULL;
									_tmp596_ = pub_inst;
									_tmp597_ = vala_ccode_member_access_new_pointer (_tmp596_, "priv");
									_vala_ccode_node_unref0 (inst);
									inst = (ValaCCodeExpression*) _tmp597_;
									_tmp598_ = expr;
									_tmp599_ = inst;
									_tmp600_ = prop;
									_tmp601_ = vala_property_get_field (_tmp600_);
									_tmp602_ = _tmp601_;
									_tmp603_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp602_);
									_tmp604_ = _tmp603_;
									_tmp605_ = vala_ccode_member_access_new_pointer (_tmp599_, _tmp604_);
									_tmp606_ = _tmp605_;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp598_, (ValaCCodeExpression*) _tmp606_);
									_vala_ccode_node_unref0 (_tmp606_);
									_g_free0 (_tmp604_);
									_vala_ccode_node_unref0 (inst);
								} else {
									ValaProperty* _tmp607_ = NULL;
									gboolean _tmp608_ = FALSE;
									_tmp607_ = prop;
									_tmp608_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp607_);
									if (!_tmp608_) {
										gchar* getter_cname = NULL;
										ValaProperty* _tmp609_ = NULL;
										ValaCCodeFunctionCall* ccall = NULL;
										const gchar* _tmp616_ = NULL;
										ValaCCodeIdentifier* _tmp617_ = NULL;
										ValaCCodeIdentifier* _tmp618_ = NULL;
										ValaCCodeFunctionCall* _tmp619_ = NULL;
										ValaCCodeFunctionCall* _tmp620_ = NULL;
										ValaProperty* _tmp621_ = NULL;
										ValaMemberBinding _tmp622_ = 0;
										ValaMemberBinding _tmp623_ = 0;
										ValaGLibValue* temp_value = NULL;
										ValaProperty* _tmp649_ = NULL;
										ValaPropertyAccessor* _tmp650_ = NULL;
										ValaPropertyAccessor* _tmp651_ = NULL;
										ValaDataType* _tmp652_ = NULL;
										ValaDataType* _tmp653_ = NULL;
										ValaMemberAccess* _tmp654_ = NULL;
										ValaTargetValue* _tmp655_ = NULL;
										ValaMemberAccess* _tmp656_ = NULL;
										ValaGLibValue* _tmp657_ = NULL;
										ValaTargetValue* _tmp658_ = NULL;
										ValaTargetValue* _tmp659_ = NULL;
										ValaCCodeExpression* ctemp = NULL;
										ValaGLibValue* _tmp660_ = NULL;
										ValaCCodeExpression* _tmp661_ = NULL;
										ValaProperty* _tmp662_ = NULL;
										ValaDataType* _tmp663_ = NULL;
										ValaDataType* _tmp664_ = NULL;
										gboolean _tmp665_ = FALSE;
										_tmp609_ = prop;
										if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp609_, VALA_TYPE_DYNAMIC_PROPERTY)) {
											ValaProperty* _tmp610_ = NULL;
											gchar* _tmp611_ = NULL;
											_tmp610_ = prop;
											_tmp611_ = vala_ccode_base_module_get_dynamic_property_getter_cname ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp610_, VALA_TYPE_DYNAMIC_PROPERTY, ValaDynamicProperty));
											_g_free0 (getter_cname);
											getter_cname = _tmp611_;
										} else {
											ValaProperty* _tmp612_ = NULL;
											ValaPropertyAccessor* _tmp613_ = NULL;
											ValaPropertyAccessor* _tmp614_ = NULL;
											gchar* _tmp615_ = NULL;
											_tmp612_ = prop;
											_tmp613_ = vala_property_get_get_accessor (_tmp612_);
											_tmp614_ = _tmp613_;
											_tmp615_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp614_);
											_g_free0 (getter_cname);
											getter_cname = _tmp615_;
										}
										_tmp616_ = getter_cname;
										_tmp617_ = vala_ccode_identifier_new (_tmp616_);
										_tmp618_ = _tmp617_;
										_tmp619_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp618_);
										_tmp620_ = _tmp619_;
										_vala_ccode_node_unref0 (_tmp618_);
										ccall = _tmp620_;
										_tmp621_ = prop;
										_tmp622_ = vala_property_get_binding (_tmp621_);
										_tmp623_ = _tmp622_;
										if (_tmp623_ == VALA_MEMBER_BINDING_INSTANCE) {
											gboolean _tmp624_ = FALSE;
											ValaProperty* _tmp625_ = NULL;
											ValaSymbol* _tmp626_ = NULL;
											ValaSymbol* _tmp627_ = NULL;
											ValaCCodeFunctionCall* _tmp647_ = NULL;
											ValaCCodeExpression* _tmp648_ = NULL;
											_tmp625_ = prop;
											_tmp626_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp625_);
											_tmp627_ = _tmp626_;
											if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp627_, VALA_TYPE_STRUCT)) {
												ValaProperty* _tmp628_ = NULL;
												ValaSymbol* _tmp629_ = NULL;
												ValaSymbol* _tmp630_ = NULL;
												gboolean _tmp631_ = FALSE;
												_tmp628_ = prop;
												_tmp629_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp628_);
												_tmp630_ = _tmp629_;
												_tmp631_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp630_, VALA_TYPE_STRUCT, ValaStruct));
												_tmp624_ = !_tmp631_;
											} else {
												_tmp624_ = FALSE;
											}
											if (_tmp624_) {
												ValaTargetValue* instance = NULL;
												ValaMemberAccess* _tmp632_ = NULL;
												ValaExpression* _tmp633_ = NULL;
												ValaExpression* _tmp634_ = NULL;
												ValaTargetValue* _tmp635_ = NULL;
												ValaTargetValue* _tmp636_ = NULL;
												ValaTargetValue* _tmp637_ = NULL;
												ValaTargetValue* _tmp638_ = NULL;
												gboolean _tmp639_ = FALSE;
												ValaTargetValue* _tmp643_ = NULL;
												ValaCCodeExpression* _tmp644_ = NULL;
												ValaCCodeExpression* _tmp645_ = NULL;
												ValaCCodeUnaryExpression* _tmp646_ = NULL;
												_tmp632_ = expr;
												_tmp633_ = vala_member_access_get_inner (_tmp632_);
												_tmp634_ = _tmp633_;
												_tmp635_ = vala_expression_get_target_value (_tmp634_);
												_tmp636_ = _tmp635_;
												_tmp637_ = _vala_target_value_ref0 (_tmp636_);
												instance = _tmp637_;
												_tmp638_ = instance;
												_tmp639_ = vala_ccode_base_module_get_lvalue ((ValaCCodeBaseModule*) self, _tmp638_);
												if (!_tmp639_) {
													ValaTargetValue* _tmp640_ = NULL;
													ValaMemberAccess* _tmp641_ = NULL;
													ValaTargetValue* _tmp642_ = NULL;
													_tmp640_ = instance;
													_tmp641_ = expr;
													_tmp642_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, _tmp640_, (ValaCodeNode*) _tmp641_, NULL);
													_vala_target_value_unref0 (instance);
													instance = _tmp642_;
												}
												_tmp643_ = instance;
												_tmp644_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp643_);
												_tmp645_ = _tmp644_;
												_tmp646_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp645_);
												_vala_ccode_node_unref0 (pub_inst);
												pub_inst = (ValaCCodeExpression*) _tmp646_;
												_vala_ccode_node_unref0 (_tmp645_);
												_vala_target_value_unref0 (instance);
											}
											_tmp647_ = ccall;
											_tmp648_ = pub_inst;
											vala_ccode_function_call_add_argument (_tmp647_, _tmp648_);
										}
										_tmp649_ = prop;
										_tmp650_ = vala_property_get_get_accessor (_tmp649_);
										_tmp651_ = _tmp650_;
										_tmp652_ = vala_property_accessor_get_value_type (_tmp651_);
										_tmp653_ = _tmp652_;
										_tmp654_ = expr;
										_tmp655_ = vala_ccode_base_module_create_temp_value ((ValaCCodeBaseModule*) self, _tmp653_, FALSE, (ValaCodeNode*) _tmp654_, NULL);
										temp_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp655_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
										_tmp656_ = expr;
										_tmp657_ = temp_value;
										_tmp658_ = vala_ccode_base_module_load_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp657_);
										_tmp659_ = _tmp658_;
										vala_expression_set_target_value ((ValaExpression*) _tmp656_, _tmp659_);
										_vala_target_value_unref0 (_tmp659_);
										_tmp660_ = temp_value;
										_tmp661_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp660_);
										ctemp = _tmp661_;
										_tmp662_ = prop;
										_tmp663_ = vala_property_get_property_type (_tmp662_);
										_tmp664_ = _tmp663_;
										_tmp665_ = vala_data_type_is_real_non_null_struct_type (_tmp664_);
										if (_tmp665_) {
											ValaCCodeFunctionCall* _tmp666_ = NULL;
											ValaCCodeExpression* _tmp667_ = NULL;
											ValaCCodeUnaryExpression* _tmp668_ = NULL;
											ValaCCodeUnaryExpression* _tmp669_ = NULL;
											ValaCCodeFunction* _tmp670_ = NULL;
											ValaCCodeFunction* _tmp671_ = NULL;
											ValaCCodeFunctionCall* _tmp672_ = NULL;
											_tmp666_ = ccall;
											_tmp667_ = ctemp;
											_tmp668_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp667_);
											_tmp669_ = _tmp668_;
											vala_ccode_function_call_add_argument (_tmp666_, (ValaCCodeExpression*) _tmp669_);
											_vala_ccode_node_unref0 (_tmp669_);
											_tmp670_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
											_tmp671_ = _tmp670_;
											_tmp672_ = ccall;
											vala_ccode_function_add_expression (_tmp671_, (ValaCCodeExpression*) _tmp672_);
										} else {
											ValaCCodeFunction* _tmp673_ = NULL;
											ValaCCodeFunction* _tmp674_ = NULL;
											ValaCCodeExpression* _tmp675_ = NULL;
											ValaCCodeFunctionCall* _tmp676_ = NULL;
											ValaProperty* _tmp677_ = NULL;
											ValaDataType* _tmp678_ = NULL;
											ValaDataType* _tmp679_ = NULL;
											ValaArrayType* _tmp680_ = NULL;
											ValaArrayType* _tmp681_ = NULL;
											_tmp673_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
											_tmp674_ = _tmp673_;
											_tmp675_ = ctemp;
											_tmp676_ = ccall;
											vala_ccode_function_add_assignment (_tmp674_, _tmp675_, (ValaCCodeExpression*) _tmp676_);
											_tmp677_ = prop;
											_tmp678_ = vala_property_get_property_type (_tmp677_);
											_tmp679_ = _tmp678_;
											_tmp680_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp679_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp679_) : NULL);
											_vala_code_node_unref0 (array_type);
											array_type = _tmp680_;
											_tmp681_ = array_type;
											if (_tmp681_ != NULL) {
												ValaProperty* _tmp682_ = NULL;
												gboolean _tmp683_ = FALSE;
												_tmp682_ = prop;
												_tmp683_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp682_);
												if (_tmp683_) {
													ValaCCodeFunctionCall* len_call = NULL;
													ValaCCodeIdentifier* _tmp684_ = NULL;
													ValaCCodeIdentifier* _tmp685_ = NULL;
													ValaCCodeFunctionCall* _tmp686_ = NULL;
													ValaCCodeFunctionCall* _tmp687_ = NULL;
													ValaCCodeFunctionCall* _tmp688_ = NULL;
													ValaCCodeExpression* _tmp689_ = NULL;
													ValaCCodeFunction* _tmp690_ = NULL;
													ValaCCodeFunction* _tmp691_ = NULL;
													ValaGLibValue* _tmp692_ = NULL;
													ValaList* _tmp693_ = NULL;
													gpointer _tmp694_ = NULL;
													ValaCCodeExpression* _tmp695_ = NULL;
													ValaCCodeFunctionCall* _tmp696_ = NULL;
													((ValaCCodeBaseModule*) self)->requires_array_length = TRUE;
													_tmp684_ = vala_ccode_identifier_new ("_vala_array_length");
													_tmp685_ = _tmp684_;
													_tmp686_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp685_);
													_tmp687_ = _tmp686_;
													_vala_ccode_node_unref0 (_tmp685_);
													len_call = _tmp687_;
													_tmp688_ = len_call;
													_tmp689_ = ctemp;
													vala_ccode_function_call_add_argument (_tmp688_, _tmp689_);
													_tmp690_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
													_tmp691_ = _tmp690_;
													_tmp692_ = temp_value;
													_tmp693_ = _tmp692_->array_length_cvalues;
													_tmp694_ = vala_list_get (_tmp693_, 0);
													_tmp695_ = (ValaCCodeExpression*) _tmp694_;
													_tmp696_ = len_call;
													vala_ccode_function_add_assignment (_tmp691_, _tmp695_, (ValaCCodeExpression*) _tmp696_);
													_vala_ccode_node_unref0 (_tmp695_);
													_vala_ccode_node_unref0 (len_call);
												} else {
													ValaProperty* _tmp697_ = NULL;
													gboolean _tmp698_ = FALSE;
													_tmp697_ = prop;
													_tmp698_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp697_);
													if (_tmp698_) {
														{
															gint dim = 0;
															dim = 1;
															{
																gboolean _tmp699_ = FALSE;
																_tmp699_ = TRUE;
																while (TRUE) {
																	gint _tmp701_ = 0;
																	ValaArrayType* _tmp702_ = NULL;
																	gint _tmp703_ = 0;
																	gint _tmp704_ = 0;
																	ValaCCodeFunctionCall* _tmp705_ = NULL;
																	ValaGLibValue* _tmp706_ = NULL;
																	gint _tmp707_ = 0;
																	ValaCCodeExpression* _tmp708_ = NULL;
																	ValaCCodeExpression* _tmp709_ = NULL;
																	ValaCCodeUnaryExpression* _tmp710_ = NULL;
																	ValaCCodeUnaryExpression* _tmp711_ = NULL;
																	if (!_tmp699_) {
																		gint _tmp700_ = 0;
																		_tmp700_ = dim;
																		dim = _tmp700_ + 1;
																	}
																	_tmp699_ = FALSE;
																	_tmp701_ = dim;
																	_tmp702_ = array_type;
																	_tmp703_ = vala_array_type_get_rank (_tmp702_);
																	_tmp704_ = _tmp703_;
																	if (!(_tmp701_ <= _tmp704_)) {
																		break;
																	}
																	_tmp705_ = ccall;
																	_tmp706_ = temp_value;
																	_tmp707_ = dim;
																	_tmp708_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp706_, _tmp707_);
																	_tmp709_ = _tmp708_;
																	_tmp710_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp709_);
																	_tmp711_ = _tmp710_;
																	vala_ccode_function_call_add_argument (_tmp705_, (ValaCCodeExpression*) _tmp711_);
																	_vala_ccode_node_unref0 (_tmp711_);
																	_vala_ccode_node_unref0 (_tmp709_);
																}
															}
														}
													}
												}
											} else {
												ValaProperty* _tmp712_ = NULL;
												ValaDataType* _tmp713_ = NULL;
												ValaDataType* _tmp714_ = NULL;
												ValaDelegateType* _tmp715_ = NULL;
												gboolean _tmp716_ = FALSE;
												ValaDelegateType* _tmp717_ = NULL;
												_tmp712_ = prop;
												_tmp713_ = vala_property_get_property_type (_tmp712_);
												_tmp714_ = _tmp713_;
												_tmp715_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp714_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp714_) : NULL);
												_vala_code_node_unref0 (delegate_type);
												delegate_type = _tmp715_;
												_tmp717_ = delegate_type;
												if (_tmp717_ != NULL) {
													ValaDelegateType* _tmp718_ = NULL;
													ValaDelegate* _tmp719_ = NULL;
													ValaDelegate* _tmp720_ = NULL;
													gboolean _tmp721_ = FALSE;
													gboolean _tmp722_ = FALSE;
													_tmp718_ = delegate_type;
													_tmp719_ = vala_delegate_type_get_delegate_symbol (_tmp718_);
													_tmp720_ = _tmp719_;
													_tmp721_ = vala_delegate_get_has_target (_tmp720_);
													_tmp722_ = _tmp721_;
													_tmp716_ = _tmp722_;
												} else {
													_tmp716_ = FALSE;
												}
												if (_tmp716_) {
													ValaCCodeFunctionCall* _tmp723_ = NULL;
													ValaGLibValue* _tmp724_ = NULL;
													ValaCCodeExpression* _tmp725_ = NULL;
													ValaCCodeExpression* _tmp726_ = NULL;
													ValaCCodeUnaryExpression* _tmp727_ = NULL;
													ValaCCodeUnaryExpression* _tmp728_ = NULL;
													_tmp723_ = ccall;
													_tmp724_ = temp_value;
													_tmp725_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp724_);
													_tmp726_ = _tmp725_;
													_tmp727_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp726_);
													_tmp728_ = _tmp727_;
													vala_ccode_function_call_add_argument (_tmp723_, (ValaCCodeExpression*) _tmp728_);
													_vala_ccode_node_unref0 (_tmp728_);
													_vala_ccode_node_unref0 (_tmp726_);
												}
											}
										}
										_vala_ccode_node_unref0 (ctemp);
										_vala_target_value_unref0 (temp_value);
										_vala_ccode_node_unref0 (ccall);
										_g_free0 (getter_cname);
									} else {
										ValaCCodeFunctionCall* ccall = NULL;
										ValaCCodeIdentifier* _tmp729_ = NULL;
										ValaCCodeIdentifier* _tmp730_ = NULL;
										ValaCCodeFunctionCall* _tmp731_ = NULL;
										ValaCCodeFunctionCall* _tmp732_ = NULL;
										ValaCCodeFunctionCall* _tmp733_ = NULL;
										ValaCCodeExpression* _tmp734_ = NULL;
										ValaCCodeFunctionCall* _tmp735_ = NULL;
										ValaProperty* _tmp736_ = NULL;
										ValaCCodeConstant* _tmp737_ = NULL;
										ValaCCodeConstant* _tmp738_ = NULL;
										ValaProperty* _tmp739_ = NULL;
										ValaPropertyAccessor* _tmp740_ = NULL;
										ValaPropertyAccessor* _tmp741_ = NULL;
										ValaDataType* _tmp742_ = NULL;
										ValaDataType* _tmp743_ = NULL;
										gboolean _tmp744_ = FALSE;
										gboolean _tmp745_ = FALSE;
										ValaMemberAccess* _tmp765_ = NULL;
										ValaDataType* _tmp766_ = NULL;
										ValaDataType* _tmp767_ = NULL;
										gboolean _tmp768_ = FALSE;
										ValaLocalVariable* temp_var = NULL;
										ValaMemberAccess* _tmp772_ = NULL;
										ValaDataType* _tmp773_ = NULL;
										ValaDataType* _tmp774_ = NULL;
										ValaLocalVariable* _tmp775_ = NULL;
										ValaCCodeExpression* ctemp = NULL;
										ValaLocalVariable* _tmp776_ = NULL;
										const gchar* _tmp777_ = NULL;
										const gchar* _tmp778_ = NULL;
										ValaCCodeExpression* _tmp779_ = NULL;
										ValaLocalVariable* _tmp780_ = NULL;
										ValaCCodeFunctionCall* _tmp781_ = NULL;
										ValaCCodeExpression* _tmp782_ = NULL;
										ValaCCodeUnaryExpression* _tmp783_ = NULL;
										ValaCCodeUnaryExpression* _tmp784_ = NULL;
										ValaCCodeFunctionCall* _tmp785_ = NULL;
										ValaCCodeConstant* _tmp786_ = NULL;
										ValaCCodeConstant* _tmp787_ = NULL;
										ValaCCodeFunction* _tmp788_ = NULL;
										ValaCCodeFunction* _tmp789_ = NULL;
										ValaCCodeFunctionCall* _tmp790_ = NULL;
										ValaMemberAccess* _tmp791_ = NULL;
										ValaCCodeExpression* _tmp792_ = NULL;
										_tmp729_ = vala_ccode_identifier_new ("g_object_get");
										_tmp730_ = _tmp729_;
										_tmp731_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp730_);
										_tmp732_ = _tmp731_;
										_vala_ccode_node_unref0 (_tmp730_);
										ccall = _tmp732_;
										_tmp733_ = ccall;
										_tmp734_ = pub_inst;
										vala_ccode_function_call_add_argument (_tmp733_, _tmp734_);
										_tmp735_ = ccall;
										_tmp736_ = prop;
										_tmp737_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, _tmp736_);
										_tmp738_ = _tmp737_;
										vala_ccode_function_call_add_argument (_tmp735_, (ValaCCodeExpression*) _tmp738_);
										_vala_ccode_node_unref0 (_tmp738_);
										_tmp739_ = prop;
										_tmp740_ = vala_property_get_get_accessor (_tmp739_);
										_tmp741_ = _tmp740_;
										_tmp742_ = vala_property_accessor_get_value_type (_tmp741_);
										_tmp743_ = _tmp742_;
										_tmp744_ = vala_data_type_get_value_owned (_tmp743_);
										_tmp745_ = _tmp744_;
										if (!_tmp745_) {
											ValaDataType* owned_value_type = NULL;
											ValaProperty* _tmp746_ = NULL;
											ValaPropertyAccessor* _tmp747_ = NULL;
											ValaPropertyAccessor* _tmp748_ = NULL;
											ValaDataType* _tmp749_ = NULL;
											ValaDataType* _tmp750_ = NULL;
											ValaDataType* _tmp751_ = NULL;
											ValaDataType* _tmp752_ = NULL;
											ValaDataType* _tmp753_ = NULL;
											gboolean _tmp754_ = FALSE;
											_tmp746_ = prop;
											_tmp747_ = vala_property_get_get_accessor (_tmp746_);
											_tmp748_ = _tmp747_;
											_tmp749_ = vala_property_accessor_get_value_type (_tmp748_);
											_tmp750_ = _tmp749_;
											_tmp751_ = vala_data_type_copy (_tmp750_);
											owned_value_type = _tmp751_;
											_tmp752_ = owned_value_type;
											vala_data_type_set_value_owned (_tmp752_, TRUE);
											_tmp753_ = owned_value_type;
											_tmp754_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp753_);
											if (_tmp754_) {
												ValaProperty* _tmp755_ = NULL;
												ValaPropertyAccessor* _tmp756_ = NULL;
												ValaPropertyAccessor* _tmp757_ = NULL;
												ValaSourceReference* _tmp758_ = NULL;
												ValaSourceReference* _tmp759_ = NULL;
												ValaProperty* _tmp760_ = NULL;
												gchar* _tmp761_ = NULL;
												gchar* _tmp762_ = NULL;
												gchar* _tmp763_ = NULL;
												gchar* _tmp764_ = NULL;
												_tmp755_ = prop;
												_tmp756_ = vala_property_get_get_accessor (_tmp755_);
												_tmp757_ = _tmp756_;
												_tmp758_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp757_);
												_tmp759_ = _tmp758_;
												_tmp760_ = prop;
												_tmp761_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp760_);
												_tmp762_ = _tmp761_;
												_tmp763_ = g_strdup_printf ("unowned return value for getter of property `%s' not supported without" \
" accessor", _tmp762_);
												_tmp764_ = _tmp763_;
												vala_report_error (_tmp759_, _tmp764_);
												_g_free0 (_tmp764_);
												_g_free0 (_tmp762_);
											}
											_vala_code_node_unref0 (owned_value_type);
										}
										_tmp765_ = expr;
										_tmp766_ = vala_expression_get_value_type ((ValaExpression*) _tmp765_);
										_tmp767_ = _tmp766_;
										_tmp768_ = vala_data_type_is_real_struct_type (_tmp767_);
										if (_tmp768_) {
											ValaMemberAccess* _tmp769_ = NULL;
											ValaDataType* _tmp770_ = NULL;
											ValaDataType* _tmp771_ = NULL;
											_tmp769_ = expr;
											_tmp770_ = vala_expression_get_value_type ((ValaExpression*) _tmp769_);
											_tmp771_ = _tmp770_;
											vala_data_type_set_nullable (_tmp771_, TRUE);
										}
										_tmp772_ = expr;
										_tmp773_ = vala_expression_get_value_type ((ValaExpression*) _tmp772_);
										_tmp774_ = _tmp773_;
										_tmp775_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp774_, TRUE, NULL, TRUE);
										temp_var = _tmp775_;
										_tmp776_ = temp_var;
										_tmp777_ = vala_symbol_get_name ((ValaSymbol*) _tmp776_);
										_tmp778_ = _tmp777_;
										_tmp779_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp778_);
										ctemp = _tmp779_;
										_tmp780_ = temp_var;
										vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp780_);
										_tmp781_ = ccall;
										_tmp782_ = ctemp;
										_tmp783_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp782_);
										_tmp784_ = _tmp783_;
										vala_ccode_function_call_add_argument (_tmp781_, (ValaCCodeExpression*) _tmp784_);
										_vala_ccode_node_unref0 (_tmp784_);
										_tmp785_ = ccall;
										_tmp786_ = vala_ccode_constant_new ("NULL");
										_tmp787_ = _tmp786_;
										vala_ccode_function_call_add_argument (_tmp785_, (ValaCCodeExpression*) _tmp787_);
										_vala_ccode_node_unref0 (_tmp787_);
										_tmp788_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
										_tmp789_ = _tmp788_;
										_tmp790_ = ccall;
										vala_ccode_function_add_expression (_tmp789_, (ValaCCodeExpression*) _tmp790_);
										_tmp791_ = expr;
										_tmp792_ = ctemp;
										vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp791_, _tmp792_);
										_vala_ccode_node_unref0 (ctemp);
										_vala_code_node_unref0 (temp_var);
										_vala_ccode_node_unref0 (ccall);
									}
								}
							}
							_tmp793_ = expr;
							_tmp794_ = vala_expression_get_target_value ((ValaExpression*) _tmp793_);
							_tmp795_ = _tmp794_;
							_tmp796_ = expr;
							_tmp797_ = vala_expression_get_value_type ((ValaExpression*) _tmp796_);
							_tmp798_ = _tmp797_;
							vala_target_value_set_value_type (_tmp795_, _tmp798_);
							_tmp799_ = expr;
							_tmp800_ = expr;
							_tmp801_ = vala_expression_get_target_value ((ValaExpression*) _tmp800_);
							_tmp802_ = _tmp801_;
							_tmp803_ = expr;
							_tmp804_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, _tmp802_, (ValaCodeNode*) _tmp803_, NULL);
							_tmp805_ = _tmp804_;
							vala_expression_set_target_value ((ValaExpression*) _tmp799_, _tmp805_);
							_vala_target_value_unref0 (_tmp805_);
							_vala_code_node_unref0 (prop);
						} else {
							ValaMemberAccess* _tmp806_ = NULL;
							ValaSymbol* _tmp807_ = NULL;
							ValaSymbol* _tmp808_ = NULL;
							_tmp806_ = expr;
							_tmp807_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp806_);
							_tmp808_ = _tmp807_;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp808_, VALA_TYPE_LOCAL_VARIABLE)) {
								ValaLocalVariable* local = NULL;
								ValaMemberAccess* _tmp809_ = NULL;
								ValaSymbol* _tmp810_ = NULL;
								ValaSymbol* _tmp811_ = NULL;
								ValaLocalVariable* _tmp812_ = NULL;
								gboolean _tmp813_ = FALSE;
								gboolean _tmp814_ = FALSE;
								gboolean _tmp815_ = FALSE;
								gboolean _tmp816_ = FALSE;
								gboolean _tmp817_ = FALSE;
								ValaMemberAccess* _tmp818_ = NULL;
								ValaCodeNode* _tmp819_ = NULL;
								ValaCodeNode* _tmp820_ = NULL;
								_tmp809_ = expr;
								_tmp810_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp809_);
								_tmp811_ = _tmp810_;
								_tmp812_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp811_, VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable));
								local = _tmp812_;
								_tmp818_ = expr;
								_tmp819_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp818_);
								_tmp820_ = _tmp819_;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp820_, VALA_TYPE_RETURN_STATEMENT)) {
									ValaDataType* _tmp821_ = NULL;
									ValaDataType* _tmp822_ = NULL;
									gboolean _tmp823_ = FALSE;
									gboolean _tmp824_ = FALSE;
									_tmp821_ = vala_ccode_base_module_get_current_return_type ((ValaCCodeBaseModule*) self);
									_tmp822_ = _tmp821_;
									_tmp823_ = vala_data_type_get_value_owned (_tmp822_);
									_tmp824_ = _tmp823_;
									_tmp817_ = _tmp824_;
								} else {
									_tmp817_ = FALSE;
								}
								if (_tmp817_) {
									ValaLocalVariable* _tmp825_ = NULL;
									ValaDataType* _tmp826_ = NULL;
									ValaDataType* _tmp827_ = NULL;
									gboolean _tmp828_ = FALSE;
									gboolean _tmp829_ = FALSE;
									_tmp825_ = local;
									_tmp826_ = vala_variable_get_variable_type ((ValaVariable*) _tmp825_);
									_tmp827_ = _tmp826_;
									_tmp828_ = vala_data_type_get_value_owned (_tmp827_);
									_tmp829_ = _tmp828_;
									_tmp816_ = _tmp829_;
								} else {
									_tmp816_ = FALSE;
								}
								if (_tmp816_) {
									ValaLocalVariable* _tmp830_ = NULL;
									gboolean _tmp831_ = FALSE;
									gboolean _tmp832_ = FALSE;
									_tmp830_ = local;
									_tmp831_ = vala_local_variable_get_captured (_tmp830_);
									_tmp832_ = _tmp831_;
									_tmp815_ = !_tmp832_;
								} else {
									_tmp815_ = FALSE;
								}
								if (_tmp815_) {
									ValaLocalVariable* _tmp833_ = NULL;
									gboolean _tmp834_ = FALSE;
									_tmp833_ = local;
									_tmp834_ = vala_ccode_base_module_variable_accessible_in_finally ((ValaCCodeBaseModule*) self, _tmp833_);
									_tmp814_ = !_tmp834_;
								} else {
									_tmp814_ = FALSE;
								}
								if (_tmp814_) {
									gboolean _tmp835_ = FALSE;
									ValaLocalVariable* _tmp836_ = NULL;
									ValaDataType* _tmp837_ = NULL;
									ValaDataType* _tmp838_ = NULL;
									_tmp836_ = local;
									_tmp837_ = vala_variable_get_variable_type ((ValaVariable*) _tmp836_);
									_tmp838_ = _tmp837_;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp838_, VALA_TYPE_ARRAY_TYPE)) {
										ValaLocalVariable* _tmp839_ = NULL;
										ValaDataType* _tmp840_ = NULL;
										ValaDataType* _tmp841_ = NULL;
										gboolean _tmp842_ = FALSE;
										gboolean _tmp843_ = FALSE;
										_tmp839_ = local;
										_tmp840_ = vala_variable_get_variable_type ((ValaVariable*) _tmp839_);
										_tmp841_ = _tmp840_;
										_tmp842_ = vala_array_type_get_inline_allocated (G_TYPE_CHECK_INSTANCE_CAST (_tmp841_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
										_tmp843_ = _tmp842_;
										_tmp835_ = _tmp843_;
									} else {
										_tmp835_ = FALSE;
									}
									_tmp813_ = !_tmp835_;
								} else {
									_tmp813_ = FALSE;
								}
								if (_tmp813_) {
									ValaMemberAccess* _tmp844_ = NULL;
									ValaDataType* _tmp845_ = NULL;
									ValaDataType* _tmp846_ = NULL;
									ValaLocalVariable* _tmp847_ = NULL;
									ValaGLibValue* glib_value = NULL;
									ValaLocalVariable* _tmp848_ = NULL;
									ValaTargetValue* _tmp849_ = NULL;
									ValaMemberAccess* _tmp850_ = NULL;
									ValaGLibValue* _tmp851_ = NULL;
									ValaGLibValue* _tmp852_ = NULL;
									ValaCCodeExpression* _tmp853_ = NULL;
									ValaGLibValue* _tmp856_ = NULL;
									ValaCCodeExpression* _tmp857_ = NULL;
									_tmp844_ = expr;
									_tmp845_ = vala_expression_get_value_type ((ValaExpression*) _tmp844_);
									_tmp846_ = _tmp845_;
									vala_data_type_set_value_owned (_tmp846_, TRUE);
									_tmp847_ = local;
									vala_symbol_set_active ((ValaSymbol*) _tmp847_, FALSE);
									_tmp848_ = local;
									_tmp849_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, _tmp848_);
									glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp849_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
									_tmp850_ = expr;
									_tmp851_ = glib_value;
									vala_expression_set_target_value ((ValaExpression*) _tmp850_, (ValaTargetValue*) _tmp851_);
									_tmp852_ = glib_value;
									_tmp853_ = _tmp852_->delegate_target_cvalue;
									if (_tmp853_ == NULL) {
										ValaGLibValue* _tmp854_ = NULL;
										ValaCCodeConstant* _tmp855_ = NULL;
										_tmp854_ = glib_value;
										_tmp855_ = vala_ccode_constant_new ("NULL");
										_vala_ccode_node_unref0 (_tmp854_->delegate_target_cvalue);
										_tmp854_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp855_;
									}
									_tmp856_ = glib_value;
									_tmp857_ = _tmp856_->delegate_target_destroy_notify_cvalue;
									if (_tmp857_ == NULL) {
										ValaGLibValue* _tmp858_ = NULL;
										ValaCCodeConstant* _tmp859_ = NULL;
										_tmp858_ = glib_value;
										_tmp859_ = vala_ccode_constant_new ("NULL");
										_vala_ccode_node_unref0 (_tmp858_->delegate_target_destroy_notify_cvalue);
										_tmp858_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp859_;
									}
									_vala_target_value_unref0 (glib_value);
								} else {
									ValaMemberAccess* _tmp860_ = NULL;
									gboolean _tmp861_ = FALSE;
									gboolean _tmp862_ = FALSE;
									_tmp860_ = expr;
									_tmp861_ = vala_expression_get_lvalue ((ValaExpression*) _tmp860_);
									_tmp862_ = _tmp861_;
									if (_tmp862_) {
										ValaMemberAccess* _tmp863_ = NULL;
										ValaLocalVariable* _tmp864_ = NULL;
										ValaTargetValue* _tmp865_ = NULL;
										ValaTargetValue* _tmp866_ = NULL;
										_tmp863_ = expr;
										_tmp864_ = local;
										_tmp865_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, _tmp864_);
										_tmp866_ = _tmp865_;
										vala_expression_set_target_value ((ValaExpression*) _tmp863_, _tmp866_);
										_vala_target_value_unref0 (_tmp866_);
									} else {
										ValaMemberAccess* _tmp867_ = NULL;
										ValaLocalVariable* _tmp868_ = NULL;
										ValaTargetValue* _tmp869_ = NULL;
										ValaTargetValue* _tmp870_ = NULL;
										_tmp867_ = expr;
										_tmp868_ = local;
										_tmp869_ = vala_code_generator_load_local ((ValaCodeGenerator*) self, _tmp868_);
										_tmp870_ = _tmp869_;
										vala_expression_set_target_value ((ValaExpression*) _tmp867_, _tmp870_);
										_vala_target_value_unref0 (_tmp870_);
									}
								}
								_vala_code_node_unref0 (local);
							} else {
								ValaMemberAccess* _tmp871_ = NULL;
								ValaSymbol* _tmp872_ = NULL;
								ValaSymbol* _tmp873_ = NULL;
								_tmp871_ = expr;
								_tmp872_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp871_);
								_tmp873_ = _tmp872_;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp873_, VALA_TYPE_PARAMETER)) {
									ValaParameter* param = NULL;
									ValaMemberAccess* _tmp874_ = NULL;
									ValaSymbol* _tmp875_ = NULL;
									ValaSymbol* _tmp876_ = NULL;
									ValaParameter* _tmp877_ = NULL;
									ValaMemberAccess* _tmp878_ = NULL;
									gboolean _tmp879_ = FALSE;
									gboolean _tmp880_ = FALSE;
									_tmp874_ = expr;
									_tmp875_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp874_);
									_tmp876_ = _tmp875_;
									_tmp877_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp876_, VALA_TYPE_PARAMETER, ValaParameter));
									param = _tmp877_;
									_tmp878_ = expr;
									_tmp879_ = vala_expression_get_lvalue ((ValaExpression*) _tmp878_);
									_tmp880_ = _tmp879_;
									if (_tmp880_) {
										ValaMemberAccess* _tmp881_ = NULL;
										ValaParameter* _tmp882_ = NULL;
										ValaTargetValue* _tmp883_ = NULL;
										ValaTargetValue* _tmp884_ = NULL;
										_tmp881_ = expr;
										_tmp882_ = param;
										_tmp883_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, _tmp882_);
										_tmp884_ = _tmp883_;
										vala_expression_set_target_value ((ValaExpression*) _tmp881_, _tmp884_);
										_vala_target_value_unref0 (_tmp884_);
									} else {
										ValaMemberAccess* _tmp885_ = NULL;
										ValaParameter* _tmp886_ = NULL;
										ValaTargetValue* _tmp887_ = NULL;
										ValaTargetValue* _tmp888_ = NULL;
										_tmp885_ = expr;
										_tmp886_ = param;
										_tmp887_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, _tmp886_);
										_tmp888_ = _tmp887_;
										vala_expression_set_target_value ((ValaExpression*) _tmp885_, _tmp888_);
										_vala_target_value_unref0 (_tmp888_);
									}
									_vala_code_node_unref0 (param);
								}
							}
						}
					}
				}
			}
		}
	}
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	_vala_ccode_node_unref0 (pub_inst);
}


static ValaTargetValue* vala_ccode_member_access_module_real_get_local_cvalue (ValaCCodeBaseModule* base, ValaLocalVariable* local) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaLocalVariable* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	ValaDataType* _tmp2_ = NULL;
	ValaDataType* _tmp3_ = NULL;
	ValaDataType* _tmp4_ = NULL;
	ValaGLibValue* _tmp5_ = NULL;
	ValaGLibValue* _tmp6_ = NULL;
	ValaGLibValue* _tmp7_ = NULL;
	ValaArrayType* array_type = NULL;
	ValaLocalVariable* _tmp8_ = NULL;
	ValaDataType* _tmp9_ = NULL;
	ValaDataType* _tmp10_ = NULL;
	ValaArrayType* _tmp11_ = NULL;
	ValaDelegateType* delegate_type = NULL;
	ValaLocalVariable* _tmp12_ = NULL;
	ValaDataType* _tmp13_ = NULL;
	ValaDataType* _tmp14_ = NULL;
	ValaDelegateType* _tmp15_ = NULL;
	ValaLocalVariable* _tmp16_ = NULL;
	gboolean _tmp17_ = FALSE;
	gboolean _tmp18_ = FALSE;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (local != NULL, NULL);
	_tmp0_ = local;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_copy (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
	_tmp6_ = _tmp5_;
	_vala_code_node_unref0 (_tmp4_);
	_result_ = _tmp6_;
	_tmp7_ = _result_;
	_tmp7_->lvalue = TRUE;
	_tmp8_ = local;
	_tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp10_) : NULL);
	array_type = _tmp11_;
	_tmp12_ = local;
	_tmp13_ = vala_variable_get_variable_type ((ValaVariable*) _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp14_) : NULL);
	delegate_type = _tmp15_;
	_tmp16_ = local;
	_tmp17_ = vala_local_variable_get_is_result (_tmp16_);
	_tmp18_ = _tmp17_;
	if (_tmp18_) {
		gboolean _tmp19_ = FALSE;
		ValaLocalVariable* _tmp20_ = NULL;
		ValaDataType* _tmp21_ = NULL;
		ValaDataType* _tmp22_ = NULL;
		_tmp20_ = local;
		_tmp21_ = vala_variable_get_variable_type ((ValaVariable*) _tmp20_);
		_tmp22_ = _tmp21_;
		if (_tmp22_ != NULL) {
			ValaLocalVariable* _tmp23_ = NULL;
			ValaDataType* _tmp24_ = NULL;
			ValaDataType* _tmp25_ = NULL;
			gboolean _tmp26_ = FALSE;
			_tmp23_ = local;
			_tmp24_ = vala_variable_get_variable_type ((ValaVariable*) _tmp23_);
			_tmp25_ = _tmp24_;
			_tmp26_ = vala_data_type_is_real_non_null_struct_type (_tmp25_);
			_tmp19_ = _tmp26_;
		} else {
			_tmp19_ = FALSE;
		}
		if (_tmp19_) {
			ValaGLibValue* _tmp27_ = NULL;
			ValaCCodeIdentifier* _tmp28_ = NULL;
			ValaCCodeIdentifier* _tmp29_ = NULL;
			ValaCCodeUnaryExpression* _tmp30_ = NULL;
			_tmp27_ = _result_;
			_tmp28_ = vala_ccode_identifier_new ("result");
			_tmp29_ = _tmp28_;
			_tmp30_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp29_);
			_vala_ccode_node_unref0 (_tmp27_->cvalue);
			_tmp27_->cvalue = (ValaCCodeExpression*) _tmp30_;
			_vala_ccode_node_unref0 (_tmp29_);
		} else {
			ValaGLibValue* _tmp31_ = NULL;
			ValaCCodeIdentifier* _tmp32_ = NULL;
			_tmp31_ = _result_;
			_tmp32_ = vala_ccode_identifier_new ("result");
			_vala_ccode_node_unref0 (_tmp31_->cvalue);
			_tmp31_->cvalue = (ValaCCodeExpression*) _tmp32_;
		}
	} else {
		ValaLocalVariable* _tmp33_ = NULL;
		gboolean _tmp34_ = FALSE;
		gboolean _tmp35_ = FALSE;
		_tmp33_ = local;
		_tmp34_ = vala_local_variable_get_captured (_tmp33_);
		_tmp35_ = _tmp34_;
		if (_tmp35_) {
			ValaBlock* block = NULL;
			ValaLocalVariable* _tmp36_ = NULL;
			ValaSymbol* _tmp37_ = NULL;
			ValaSymbol* _tmp38_ = NULL;
			ValaBlock* _tmp39_ = NULL;
			ValaGLibValue* _tmp40_ = NULL;
			ValaBlock* _tmp41_ = NULL;
			gint _tmp42_ = 0;
			gchar* _tmp43_ = NULL;
			gchar* _tmp44_ = NULL;
			ValaCCodeExpression* _tmp45_ = NULL;
			ValaCCodeExpression* _tmp46_ = NULL;
			ValaLocalVariable* _tmp47_ = NULL;
			gchar* _tmp48_ = NULL;
			gchar* _tmp49_ = NULL;
			ValaCCodeMemberAccess* _tmp50_ = NULL;
			gboolean _tmp51_ = FALSE;
			ValaArrayType* _tmp52_ = NULL;
			_tmp36_ = local;
			_tmp37_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp36_);
			_tmp38_ = _tmp37_;
			_tmp39_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, VALA_TYPE_BLOCK, ValaBlock));
			block = _tmp39_;
			_tmp40_ = _result_;
			_tmp41_ = block;
			_tmp42_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp41_);
			_tmp43_ = g_strdup_printf ("_data%d_", _tmp42_);
			_tmp44_ = _tmp43_;
			_tmp45_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp44_);
			_tmp46_ = _tmp45_;
			_tmp47_ = local;
			_tmp48_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp47_);
			_tmp49_ = _tmp48_;
			_tmp50_ = vala_ccode_member_access_new_pointer (_tmp46_, _tmp49_);
			_vala_ccode_node_unref0 (_tmp40_->cvalue);
			_tmp40_->cvalue = (ValaCCodeExpression*) _tmp50_;
			_g_free0 (_tmp49_);
			_vala_ccode_node_unref0 (_tmp46_);
			_g_free0 (_tmp44_);
			_tmp52_ = array_type;
			if (_tmp52_ != NULL) {
				ValaArrayType* _tmp53_ = NULL;
				gboolean _tmp54_ = FALSE;
				gboolean _tmp55_ = FALSE;
				_tmp53_ = array_type;
				_tmp54_ = vala_array_type_get_fixed_length (_tmp53_);
				_tmp55_ = _tmp54_;
				_tmp51_ = !_tmp55_;
			} else {
				_tmp51_ = FALSE;
			}
			if (_tmp51_) {
				ValaArrayType* _tmp77_ = NULL;
				gint _tmp78_ = 0;
				gint _tmp79_ = 0;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp56_ = FALSE;
						_tmp56_ = TRUE;
						while (TRUE) {
							gint _tmp58_ = 0;
							ValaArrayType* _tmp59_ = NULL;
							gint _tmp60_ = 0;
							gint _tmp61_ = 0;
							ValaGLibValue* _tmp62_ = NULL;
							ValaBlock* _tmp63_ = NULL;
							gint _tmp64_ = 0;
							gchar* _tmp65_ = NULL;
							gchar* _tmp66_ = NULL;
							ValaCCodeExpression* _tmp67_ = NULL;
							ValaCCodeExpression* _tmp68_ = NULL;
							ValaLocalVariable* _tmp69_ = NULL;
							gchar* _tmp70_ = NULL;
							gchar* _tmp71_ = NULL;
							gint _tmp72_ = 0;
							gchar* _tmp73_ = NULL;
							gchar* _tmp74_ = NULL;
							ValaCCodeMemberAccess* _tmp75_ = NULL;
							ValaCCodeMemberAccess* _tmp76_ = NULL;
							if (!_tmp56_) {
								gint _tmp57_ = 0;
								_tmp57_ = dim;
								dim = _tmp57_ + 1;
							}
							_tmp56_ = FALSE;
							_tmp58_ = dim;
							_tmp59_ = array_type;
							_tmp60_ = vala_array_type_get_rank (_tmp59_);
							_tmp61_ = _tmp60_;
							if (!(_tmp58_ <= _tmp61_)) {
								break;
							}
							_tmp62_ = _result_;
							_tmp63_ = block;
							_tmp64_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp63_);
							_tmp65_ = g_strdup_printf ("_data%d_", _tmp64_);
							_tmp66_ = _tmp65_;
							_tmp67_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp66_);
							_tmp68_ = _tmp67_;
							_tmp69_ = local;
							_tmp70_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp69_);
							_tmp71_ = _tmp70_;
							_tmp72_ = dim;
							_tmp73_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp71_, _tmp72_);
							_tmp74_ = _tmp73_;
							_tmp75_ = vala_ccode_member_access_new_pointer (_tmp68_, _tmp74_);
							_tmp76_ = _tmp75_;
							vala_glib_value_append_array_length_cvalue (_tmp62_, (ValaCCodeExpression*) _tmp76_);
							_vala_ccode_node_unref0 (_tmp76_);
							_g_free0 (_tmp74_);
							_g_free0 (_tmp71_);
							_vala_ccode_node_unref0 (_tmp68_);
							_g_free0 (_tmp66_);
						}
					}
				}
				_tmp77_ = array_type;
				_tmp78_ = vala_array_type_get_rank (_tmp77_);
				_tmp79_ = _tmp78_;
				if (_tmp79_ == 1) {
					ValaGLibValue* _tmp80_ = NULL;
					ValaBlock* _tmp81_ = NULL;
					gint _tmp82_ = 0;
					gchar* _tmp83_ = NULL;
					gchar* _tmp84_ = NULL;
					ValaCCodeExpression* _tmp85_ = NULL;
					ValaCCodeExpression* _tmp86_ = NULL;
					ValaLocalVariable* _tmp87_ = NULL;
					gchar* _tmp88_ = NULL;
					gchar* _tmp89_ = NULL;
					gchar* _tmp90_ = NULL;
					gchar* _tmp91_ = NULL;
					ValaCCodeMemberAccess* _tmp92_ = NULL;
					_tmp80_ = _result_;
					_tmp81_ = block;
					_tmp82_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp81_);
					_tmp83_ = g_strdup_printf ("_data%d_", _tmp82_);
					_tmp84_ = _tmp83_;
					_tmp85_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp84_);
					_tmp86_ = _tmp85_;
					_tmp87_ = local;
					_tmp88_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp87_);
					_tmp89_ = _tmp88_;
					_tmp90_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp89_);
					_tmp91_ = _tmp90_;
					_tmp92_ = vala_ccode_member_access_new_pointer (_tmp86_, _tmp91_);
					_vala_ccode_node_unref0 (_tmp80_->array_size_cvalue);
					_tmp80_->array_size_cvalue = (ValaCCodeExpression*) _tmp92_;
					_g_free0 (_tmp91_);
					_g_free0 (_tmp89_);
					_vala_ccode_node_unref0 (_tmp86_);
					_g_free0 (_tmp84_);
				}
			} else {
				gboolean _tmp93_ = FALSE;
				ValaDelegateType* _tmp94_ = NULL;
				_tmp94_ = delegate_type;
				if (_tmp94_ != NULL) {
					ValaDelegateType* _tmp95_ = NULL;
					ValaDelegate* _tmp96_ = NULL;
					ValaDelegate* _tmp97_ = NULL;
					gboolean _tmp98_ = FALSE;
					gboolean _tmp99_ = FALSE;
					_tmp95_ = delegate_type;
					_tmp96_ = vala_delegate_type_get_delegate_symbol (_tmp95_);
					_tmp97_ = _tmp96_;
					_tmp98_ = vala_delegate_get_has_target (_tmp97_);
					_tmp99_ = _tmp98_;
					_tmp93_ = _tmp99_;
				} else {
					_tmp93_ = FALSE;
				}
				if (_tmp93_) {
					ValaGLibValue* _tmp100_ = NULL;
					ValaBlock* _tmp101_ = NULL;
					gint _tmp102_ = 0;
					gchar* _tmp103_ = NULL;
					gchar* _tmp104_ = NULL;
					ValaCCodeExpression* _tmp105_ = NULL;
					ValaCCodeExpression* _tmp106_ = NULL;
					ValaLocalVariable* _tmp107_ = NULL;
					gchar* _tmp108_ = NULL;
					gchar* _tmp109_ = NULL;
					gchar* _tmp110_ = NULL;
					gchar* _tmp111_ = NULL;
					ValaCCodeMemberAccess* _tmp112_ = NULL;
					ValaDelegateType* _tmp113_ = NULL;
					gboolean _tmp114_ = FALSE;
					_tmp100_ = _result_;
					_tmp101_ = block;
					_tmp102_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp101_);
					_tmp103_ = g_strdup_printf ("_data%d_", _tmp102_);
					_tmp104_ = _tmp103_;
					_tmp105_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp104_);
					_tmp106_ = _tmp105_;
					_tmp107_ = local;
					_tmp108_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp107_);
					_tmp109_ = _tmp108_;
					_tmp110_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp109_);
					_tmp111_ = _tmp110_;
					_tmp112_ = vala_ccode_member_access_new_pointer (_tmp106_, _tmp111_);
					_vala_ccode_node_unref0 (_tmp100_->delegate_target_cvalue);
					_tmp100_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp112_;
					_g_free0 (_tmp111_);
					_g_free0 (_tmp109_);
					_vala_ccode_node_unref0 (_tmp106_);
					_g_free0 (_tmp104_);
					_tmp113_ = delegate_type;
					_tmp114_ = vala_data_type_is_disposable ((ValaDataType*) _tmp113_);
					if (_tmp114_) {
						ValaGLibValue* _tmp115_ = NULL;
						ValaBlock* _tmp116_ = NULL;
						gint _tmp117_ = 0;
						gchar* _tmp118_ = NULL;
						gchar* _tmp119_ = NULL;
						ValaCCodeExpression* _tmp120_ = NULL;
						ValaCCodeExpression* _tmp121_ = NULL;
						ValaLocalVariable* _tmp122_ = NULL;
						gchar* _tmp123_ = NULL;
						gchar* _tmp124_ = NULL;
						gchar* _tmp125_ = NULL;
						gchar* _tmp126_ = NULL;
						ValaCCodeMemberAccess* _tmp127_ = NULL;
						_tmp115_ = _result_;
						_tmp116_ = block;
						_tmp117_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp116_);
						_tmp118_ = g_strdup_printf ("_data%d_", _tmp117_);
						_tmp119_ = _tmp118_;
						_tmp120_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp119_);
						_tmp121_ = _tmp120_;
						_tmp122_ = local;
						_tmp123_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp122_);
						_tmp124_ = _tmp123_;
						_tmp125_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp124_);
						_tmp126_ = _tmp125_;
						_tmp127_ = vala_ccode_member_access_new_pointer (_tmp121_, _tmp126_);
						_vala_ccode_node_unref0 (_tmp115_->delegate_target_destroy_notify_cvalue);
						_tmp115_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp127_;
						_g_free0 (_tmp126_);
						_g_free0 (_tmp124_);
						_vala_ccode_node_unref0 (_tmp121_);
						_g_free0 (_tmp119_);
					}
				}
			}
			_vala_code_node_unref0 (block);
		} else {
			ValaGLibValue* _tmp128_ = NULL;
			ValaLocalVariable* _tmp129_ = NULL;
			ValaCCodeExpression* _tmp130_ = NULL;
			gboolean _tmp131_ = FALSE;
			ValaArrayType* _tmp132_ = NULL;
			_tmp128_ = _result_;
			_tmp129_ = local;
			_tmp130_ = vala_ccode_base_module_get_local_cexpression ((ValaCCodeBaseModule*) self, _tmp129_);
			_vala_ccode_node_unref0 (_tmp128_->cvalue);
			_tmp128_->cvalue = _tmp130_;
			_tmp132_ = array_type;
			if (_tmp132_ != NULL) {
				ValaArrayType* _tmp133_ = NULL;
				gboolean _tmp134_ = FALSE;
				gboolean _tmp135_ = FALSE;
				_tmp133_ = array_type;
				_tmp134_ = vala_array_type_get_fixed_length (_tmp133_);
				_tmp135_ = _tmp134_;
				_tmp131_ = !_tmp135_;
			} else {
				_tmp131_ = FALSE;
			}
			if (_tmp131_) {
				ValaArrayType* _tmp151_ = NULL;
				gint _tmp152_ = 0;
				gint _tmp153_ = 0;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp136_ = FALSE;
						_tmp136_ = TRUE;
						while (TRUE) {
							gint _tmp138_ = 0;
							ValaArrayType* _tmp139_ = NULL;
							gint _tmp140_ = 0;
							gint _tmp141_ = 0;
							ValaGLibValue* _tmp142_ = NULL;
							ValaLocalVariable* _tmp143_ = NULL;
							gchar* _tmp144_ = NULL;
							gchar* _tmp145_ = NULL;
							gint _tmp146_ = 0;
							gchar* _tmp147_ = NULL;
							gchar* _tmp148_ = NULL;
							ValaCCodeExpression* _tmp149_ = NULL;
							ValaCCodeExpression* _tmp150_ = NULL;
							if (!_tmp136_) {
								gint _tmp137_ = 0;
								_tmp137_ = dim;
								dim = _tmp137_ + 1;
							}
							_tmp136_ = FALSE;
							_tmp138_ = dim;
							_tmp139_ = array_type;
							_tmp140_ = vala_array_type_get_rank (_tmp139_);
							_tmp141_ = _tmp140_;
							if (!(_tmp138_ <= _tmp141_)) {
								break;
							}
							_tmp142_ = _result_;
							_tmp143_ = local;
							_tmp144_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp143_);
							_tmp145_ = _tmp144_;
							_tmp146_ = dim;
							_tmp147_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp145_, _tmp146_);
							_tmp148_ = _tmp147_;
							_tmp149_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp148_);
							_tmp150_ = _tmp149_;
							vala_glib_value_append_array_length_cvalue (_tmp142_, _tmp150_);
							_vala_ccode_node_unref0 (_tmp150_);
							_g_free0 (_tmp148_);
							_g_free0 (_tmp145_);
						}
					}
				}
				_tmp151_ = array_type;
				_tmp152_ = vala_array_type_get_rank (_tmp151_);
				_tmp153_ = _tmp152_;
				if (_tmp153_ == 1) {
					ValaGLibValue* _tmp154_ = NULL;
					ValaLocalVariable* _tmp155_ = NULL;
					gchar* _tmp156_ = NULL;
					gchar* _tmp157_ = NULL;
					gchar* _tmp158_ = NULL;
					gchar* _tmp159_ = NULL;
					ValaCCodeExpression* _tmp160_ = NULL;
					_tmp154_ = _result_;
					_tmp155_ = local;
					_tmp156_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp155_);
					_tmp157_ = _tmp156_;
					_tmp158_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp157_);
					_tmp159_ = _tmp158_;
					_tmp160_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp159_);
					_vala_ccode_node_unref0 (_tmp154_->array_size_cvalue);
					_tmp154_->array_size_cvalue = _tmp160_;
					_g_free0 (_tmp159_);
					_g_free0 (_tmp157_);
				}
			} else {
				gboolean _tmp161_ = FALSE;
				ValaDelegateType* _tmp162_ = NULL;
				_tmp162_ = delegate_type;
				if (_tmp162_ != NULL) {
					ValaDelegateType* _tmp163_ = NULL;
					ValaDelegate* _tmp164_ = NULL;
					ValaDelegate* _tmp165_ = NULL;
					gboolean _tmp166_ = FALSE;
					gboolean _tmp167_ = FALSE;
					_tmp163_ = delegate_type;
					_tmp164_ = vala_delegate_type_get_delegate_symbol (_tmp163_);
					_tmp165_ = _tmp164_;
					_tmp166_ = vala_delegate_get_has_target (_tmp165_);
					_tmp167_ = _tmp166_;
					_tmp161_ = _tmp167_;
				} else {
					_tmp161_ = FALSE;
				}
				if (_tmp161_) {
					gboolean _tmp168_ = FALSE;
					_tmp168_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
					if (_tmp168_) {
						ValaGLibValue* _tmp169_ = NULL;
						ValaCCodeIdentifier* _tmp170_ = NULL;
						ValaCCodeIdentifier* _tmp171_ = NULL;
						ValaLocalVariable* _tmp172_ = NULL;
						gchar* _tmp173_ = NULL;
						gchar* _tmp174_ = NULL;
						gchar* _tmp175_ = NULL;
						gchar* _tmp176_ = NULL;
						ValaCCodeMemberAccess* _tmp177_ = NULL;
						ValaLocalVariable* _tmp178_ = NULL;
						ValaDataType* _tmp179_ = NULL;
						ValaDataType* _tmp180_ = NULL;
						gboolean _tmp181_ = FALSE;
						gboolean _tmp182_ = FALSE;
						_tmp169_ = _result_;
						_tmp170_ = vala_ccode_identifier_new ("_data_");
						_tmp171_ = _tmp170_;
						_tmp172_ = local;
						_tmp173_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp172_);
						_tmp174_ = _tmp173_;
						_tmp175_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp174_);
						_tmp176_ = _tmp175_;
						_tmp177_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp171_, _tmp176_);
						_vala_ccode_node_unref0 (_tmp169_->delegate_target_cvalue);
						_tmp169_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp177_;
						_g_free0 (_tmp176_);
						_g_free0 (_tmp174_);
						_vala_ccode_node_unref0 (_tmp171_);
						_tmp178_ = local;
						_tmp179_ = vala_variable_get_variable_type ((ValaVariable*) _tmp178_);
						_tmp180_ = _tmp179_;
						_tmp181_ = vala_data_type_get_value_owned (_tmp180_);
						_tmp182_ = _tmp181_;
						if (_tmp182_) {
							ValaGLibValue* _tmp183_ = NULL;
							ValaCCodeIdentifier* _tmp184_ = NULL;
							ValaCCodeIdentifier* _tmp185_ = NULL;
							ValaLocalVariable* _tmp186_ = NULL;
							gchar* _tmp187_ = NULL;
							gchar* _tmp188_ = NULL;
							gchar* _tmp189_ = NULL;
							gchar* _tmp190_ = NULL;
							ValaCCodeMemberAccess* _tmp191_ = NULL;
							_tmp183_ = _result_;
							_tmp184_ = vala_ccode_identifier_new ("_data_");
							_tmp185_ = _tmp184_;
							_tmp186_ = local;
							_tmp187_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp186_);
							_tmp188_ = _tmp187_;
							_tmp189_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp188_);
							_tmp190_ = _tmp189_;
							_tmp191_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp185_, _tmp190_);
							_vala_ccode_node_unref0 (_tmp183_->delegate_target_destroy_notify_cvalue);
							_tmp183_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp191_;
							_g_free0 (_tmp190_);
							_g_free0 (_tmp188_);
							_vala_ccode_node_unref0 (_tmp185_);
						}
					} else {
						ValaGLibValue* _tmp192_ = NULL;
						ValaLocalVariable* _tmp193_ = NULL;
						gchar* _tmp194_ = NULL;
						gchar* _tmp195_ = NULL;
						gchar* _tmp196_ = NULL;
						gchar* _tmp197_ = NULL;
						ValaCCodeIdentifier* _tmp198_ = NULL;
						ValaLocalVariable* _tmp199_ = NULL;
						ValaDataType* _tmp200_ = NULL;
						ValaDataType* _tmp201_ = NULL;
						gboolean _tmp202_ = FALSE;
						gboolean _tmp203_ = FALSE;
						_tmp192_ = _result_;
						_tmp193_ = local;
						_tmp194_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp193_);
						_tmp195_ = _tmp194_;
						_tmp196_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp195_);
						_tmp197_ = _tmp196_;
						_tmp198_ = vala_ccode_identifier_new (_tmp197_);
						_vala_ccode_node_unref0 (_tmp192_->delegate_target_cvalue);
						_tmp192_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp198_;
						_g_free0 (_tmp197_);
						_g_free0 (_tmp195_);
						_tmp199_ = local;
						_tmp200_ = vala_variable_get_variable_type ((ValaVariable*) _tmp199_);
						_tmp201_ = _tmp200_;
						_tmp202_ = vala_data_type_get_value_owned (_tmp201_);
						_tmp203_ = _tmp202_;
						if (_tmp203_) {
							ValaGLibValue* _tmp204_ = NULL;
							ValaLocalVariable* _tmp205_ = NULL;
							gchar* _tmp206_ = NULL;
							gchar* _tmp207_ = NULL;
							gchar* _tmp208_ = NULL;
							gchar* _tmp209_ = NULL;
							ValaCCodeIdentifier* _tmp210_ = NULL;
							_tmp204_ = _result_;
							_tmp205_ = local;
							_tmp206_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp205_);
							_tmp207_ = _tmp206_;
							_tmp208_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp207_);
							_tmp209_ = _tmp208_;
							_tmp210_ = vala_ccode_identifier_new (_tmp209_);
							_vala_ccode_node_unref0 (_tmp204_->delegate_target_destroy_notify_cvalue);
							_tmp204_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp210_;
							_g_free0 (_tmp209_);
							_g_free0 (_tmp207_);
						}
					}
				}
			}
		}
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_get_parameter_cvalue (ValaCCodeBaseModule* base, ValaParameter* param) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaParameter* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	ValaDataType* _tmp2_ = NULL;
	ValaDataType* _tmp3_ = NULL;
	ValaDataType* _tmp4_ = NULL;
	ValaGLibValue* _tmp5_ = NULL;
	ValaGLibValue* _tmp6_ = NULL;
	ValaGLibValue* _tmp7_ = NULL;
	ValaGLibValue* _tmp8_ = NULL;
	ValaParameter* _tmp9_ = NULL;
	gboolean _tmp10_ = FALSE;
	ValaParameter* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gboolean _tmp14_ = FALSE;
	ValaGLibValue* _tmp20_ = NULL;
	ValaParameter* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	ValaArrayType* array_type = NULL;
	ValaGLibValue* _tmp23_ = NULL;
	ValaDataType* _tmp24_ = NULL;
	ValaDataType* _tmp25_ = NULL;
	ValaArrayType* _tmp26_ = NULL;
	ValaDelegateType* delegate_type = NULL;
	ValaGLibValue* _tmp27_ = NULL;
	ValaDataType* _tmp28_ = NULL;
	ValaDataType* _tmp29_ = NULL;
	ValaDelegateType* _tmp30_ = NULL;
	gboolean _tmp31_ = FALSE;
	ValaDelegateType* _tmp32_ = NULL;
	gboolean is_unowned_delegate = FALSE;
	gboolean _tmp38_ = FALSE;
	gboolean _tmp39_ = FALSE;
	ValaParameter* _tmp40_ = NULL;
	gboolean _tmp41_ = FALSE;
	gboolean _tmp42_ = FALSE;
	ValaParameter* _tmp48_ = NULL;
	const gchar* _tmp49_ = NULL;
	const gchar* _tmp50_ = NULL;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (param != NULL, NULL);
	_tmp0_ = param;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_copy (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
	_tmp6_ = _tmp5_;
	_vala_code_node_unref0 (_tmp4_);
	_result_ = _tmp6_;
	_tmp7_ = _result_;
	_tmp7_->lvalue = TRUE;
	_tmp8_ = _result_;
	_tmp9_ = param;
	_tmp10_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp9_);
	_tmp8_->array_null_terminated = _tmp10_;
	_tmp11_ = param;
	_tmp12_ = vala_ccode_base_module_get_ccode_array_length_expr ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = _tmp13_ != NULL;
	_g_free0 (_tmp13_);
	if (_tmp14_) {
		ValaGLibValue* _tmp15_ = NULL;
		ValaParameter* _tmp16_ = NULL;
		gchar* _tmp17_ = NULL;
		gchar* _tmp18_ = NULL;
		ValaCCodeConstant* _tmp19_ = NULL;
		_tmp15_ = _result_;
		_tmp16_ = param;
		_tmp17_ = vala_ccode_base_module_get_ccode_array_length_expr ((ValaCodeNode*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = vala_ccode_constant_new (_tmp18_);
		_vala_ccode_node_unref0 (_tmp15_->array_length_cexpr);
		_tmp15_->array_length_cexpr = (ValaCCodeExpression*) _tmp19_;
		_g_free0 (_tmp18_);
	}
	_tmp20_ = _result_;
	_tmp21_ = param;
	_tmp22_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp21_);
	_g_free0 (_tmp20_->ctype);
	_tmp20_->ctype = _tmp22_;
	_tmp23_ = _result_;
	_tmp24_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp25_) : NULL);
	array_type = _tmp26_;
	_tmp27_ = _result_;
	_tmp28_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp29_) : NULL);
	delegate_type = _tmp30_;
	_tmp32_ = delegate_type;
	if (_tmp32_ != NULL) {
		ValaParameter* _tmp33_ = NULL;
		ValaDataType* _tmp34_ = NULL;
		ValaDataType* _tmp35_ = NULL;
		gboolean _tmp36_ = FALSE;
		gboolean _tmp37_ = FALSE;
		_tmp33_ = param;
		_tmp34_ = vala_variable_get_variable_type ((ValaVariable*) _tmp33_);
		_tmp35_ = _tmp34_;
		_tmp36_ = vala_data_type_get_value_owned (_tmp35_);
		_tmp37_ = _tmp36_;
		_tmp31_ = !_tmp37_;
	} else {
		_tmp31_ = FALSE;
	}
	is_unowned_delegate = _tmp31_;
	_tmp40_ = param;
	_tmp41_ = vala_parameter_get_captured (_tmp40_);
	_tmp42_ = _tmp41_;
	if (_tmp42_) {
		_tmp39_ = TRUE;
	} else {
		gboolean _tmp43_ = FALSE;
		_tmp43_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
		_tmp39_ = _tmp43_;
	}
	if (_tmp39_) {
		gboolean _tmp44_ = FALSE;
		_tmp44_ = is_unowned_delegate;
		_tmp38_ = !_tmp44_;
	} else {
		_tmp38_ = FALSE;
	}
	if (_tmp38_) {
		ValaGLibValue* _tmp45_ = NULL;
		ValaDataType* _tmp46_ = NULL;
		ValaDataType* _tmp47_ = NULL;
		_tmp45_ = _result_;
		_tmp46_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp45_);
		_tmp47_ = _tmp46_;
		vala_data_type_set_value_owned (_tmp47_, TRUE);
	}
	_tmp48_ = param;
	_tmp49_ = vala_symbol_get_name ((ValaSymbol*) _tmp48_);
	_tmp50_ = _tmp49_;
	if (g_strcmp0 (_tmp50_, "this") == 0) {
		gboolean _tmp51_ = FALSE;
		_tmp51_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
		if (_tmp51_) {
			ValaGLibValue* _tmp52_ = NULL;
			ValaCCodeIdentifier* _tmp53_ = NULL;
			ValaCCodeIdentifier* _tmp54_ = NULL;
			ValaCCodeMemberAccess* _tmp55_ = NULL;
			_tmp52_ = _result_;
			_tmp53_ = vala_ccode_identifier_new ("_data_");
			_tmp54_ = _tmp53_;
			_tmp55_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp54_, "self");
			_vala_ccode_node_unref0 (_tmp52_->cvalue);
			_tmp52_->cvalue = (ValaCCodeExpression*) _tmp55_;
			_vala_ccode_node_unref0 (_tmp54_);
		} else {
			ValaStruct* st = NULL;
			ValaGLibValue* _tmp56_ = NULL;
			ValaDataType* _tmp57_ = NULL;
			ValaDataType* _tmp58_ = NULL;
			ValaTypeSymbol* _tmp59_ = NULL;
			ValaTypeSymbol* _tmp60_ = NULL;
			ValaStruct* _tmp61_ = NULL;
			gboolean _tmp62_ = FALSE;
			ValaStruct* _tmp63_ = NULL;
			_tmp56_ = _result_;
			_tmp57_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp56_);
			_tmp58_ = _tmp57_;
			_tmp59_ = vala_data_type_get_data_type (_tmp58_);
			_tmp60_ = _tmp59_;
			_tmp61_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp60_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp60_) : NULL);
			st = _tmp61_;
			_tmp63_ = st;
			if (_tmp63_ != NULL) {
				ValaStruct* _tmp64_ = NULL;
				gboolean _tmp65_ = FALSE;
				_tmp64_ = st;
				_tmp65_ = vala_struct_is_simple_type (_tmp64_);
				_tmp62_ = !_tmp65_;
			} else {
				_tmp62_ = FALSE;
			}
			if (_tmp62_) {
				ValaGLibValue* _tmp66_ = NULL;
				ValaCCodeIdentifier* _tmp67_ = NULL;
				_tmp66_ = _result_;
				_tmp67_ = vala_ccode_identifier_new ("(*self)");
				_vala_ccode_node_unref0 (_tmp66_->cvalue);
				_tmp66_->cvalue = (ValaCCodeExpression*) _tmp67_;
			} else {
				ValaGLibValue* _tmp68_ = NULL;
				ValaCCodeIdentifier* _tmp69_ = NULL;
				_tmp68_ = _result_;
				_tmp69_ = vala_ccode_identifier_new ("self");
				_vala_ccode_node_unref0 (_tmp68_->cvalue);
				_tmp68_->cvalue = (ValaCCodeExpression*) _tmp69_;
			}
			_vala_code_node_unref0 (st);
		}
	} else {
		gchar* name = NULL;
		ValaParameter* _tmp70_ = NULL;
		const gchar* _tmp71_ = NULL;
		const gchar* _tmp72_ = NULL;
		gchar* _tmp73_ = NULL;
		ValaParameter* _tmp74_ = NULL;
		gboolean _tmp75_ = FALSE;
		gboolean _tmp76_ = FALSE;
		gboolean _tmp307_ = FALSE;
		ValaParameter* _tmp308_ = NULL;
		gboolean _tmp309_ = FALSE;
		gboolean _tmp310_ = FALSE;
		_tmp70_ = param;
		_tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_);
		_tmp72_ = _tmp71_;
		_tmp73_ = g_strdup (_tmp72_);
		name = _tmp73_;
		_tmp74_ = param;
		_tmp75_ = vala_parameter_get_captured (_tmp74_);
		_tmp76_ = _tmp75_;
		if (_tmp76_) {
			ValaBlock* block = NULL;
			ValaParameter* _tmp77_ = NULL;
			ValaSymbol* _tmp78_ = NULL;
			ValaSymbol* _tmp79_ = NULL;
			ValaBlock* _tmp80_ = NULL;
			ValaBlock* _tmp81_ = NULL;
			ValaGLibValue* _tmp88_ = NULL;
			ValaBlock* _tmp89_ = NULL;
			gint _tmp90_ = 0;
			gchar* _tmp91_ = NULL;
			gchar* _tmp92_ = NULL;
			ValaCCodeExpression* _tmp93_ = NULL;
			ValaCCodeExpression* _tmp94_ = NULL;
			ValaParameter* _tmp95_ = NULL;
			const gchar* _tmp96_ = NULL;
			const gchar* _tmp97_ = NULL;
			gchar* _tmp98_ = NULL;
			gchar* _tmp99_ = NULL;
			ValaCCodeMemberAccess* _tmp100_ = NULL;
			gboolean _tmp101_ = FALSE;
			ValaArrayType* _tmp102_ = NULL;
			_tmp77_ = param;
			_tmp78_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp77_);
			_tmp79_ = _tmp78_;
			_tmp80_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp79_, VALA_TYPE_BLOCK) ? ((ValaBlock*) _tmp79_) : NULL);
			block = _tmp80_;
			_tmp81_ = block;
			if (_tmp81_ == NULL) {
				ValaParameter* _tmp82_ = NULL;
				ValaSymbol* _tmp83_ = NULL;
				ValaSymbol* _tmp84_ = NULL;
				ValaBlock* _tmp85_ = NULL;
				ValaBlock* _tmp86_ = NULL;
				ValaBlock* _tmp87_ = NULL;
				_tmp82_ = param;
				_tmp83_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp82_);
				_tmp84_ = _tmp83_;
				_tmp85_ = vala_subroutine_get_body ((ValaSubroutine*) G_TYPE_CHECK_INSTANCE_CAST (_tmp84_, VALA_TYPE_METHOD, ValaMethod));
				_tmp86_ = _tmp85_;
				_tmp87_ = _vala_code_node_ref0 (_tmp86_);
				_vala_code_node_unref0 (block);
				block = _tmp87_;
			}
			_tmp88_ = _result_;
			_tmp89_ = block;
			_tmp90_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp89_);
			_tmp91_ = g_strdup_printf ("_data%d_", _tmp90_);
			_tmp92_ = _tmp91_;
			_tmp93_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp92_);
			_tmp94_ = _tmp93_;
			_tmp95_ = param;
			_tmp96_ = vala_symbol_get_name ((ValaSymbol*) _tmp95_);
			_tmp97_ = _tmp96_;
			_tmp98_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp97_);
			_tmp99_ = _tmp98_;
			_tmp100_ = vala_ccode_member_access_new_pointer (_tmp94_, _tmp99_);
			_vala_ccode_node_unref0 (_tmp88_->cvalue);
			_tmp88_->cvalue = (ValaCCodeExpression*) _tmp100_;
			_g_free0 (_tmp99_);
			_vala_ccode_node_unref0 (_tmp94_);
			_g_free0 (_tmp92_);
			_tmp102_ = array_type;
			if (_tmp102_ != NULL) {
				ValaParameter* _tmp103_ = NULL;
				gboolean _tmp104_ = FALSE;
				_tmp103_ = param;
				_tmp104_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp103_);
				_tmp101_ = _tmp104_;
			} else {
				_tmp101_ = FALSE;
			}
			if (_tmp101_) {
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp105_ = FALSE;
						_tmp105_ = TRUE;
						while (TRUE) {
							gint _tmp107_ = 0;
							ValaArrayType* _tmp108_ = NULL;
							gint _tmp109_ = 0;
							gint _tmp110_ = 0;
							ValaGLibValue* _tmp111_ = NULL;
							ValaBlock* _tmp112_ = NULL;
							gint _tmp113_ = 0;
							gchar* _tmp114_ = NULL;
							gchar* _tmp115_ = NULL;
							ValaCCodeExpression* _tmp116_ = NULL;
							ValaCCodeExpression* _tmp117_ = NULL;
							ValaParameter* _tmp118_ = NULL;
							gint _tmp119_ = 0;
							gchar* _tmp120_ = NULL;
							gchar* _tmp121_ = NULL;
							ValaCCodeMemberAccess* _tmp122_ = NULL;
							ValaCCodeMemberAccess* _tmp123_ = NULL;
							if (!_tmp105_) {
								gint _tmp106_ = 0;
								_tmp106_ = dim;
								dim = _tmp106_ + 1;
							}
							_tmp105_ = FALSE;
							_tmp107_ = dim;
							_tmp108_ = array_type;
							_tmp109_ = vala_array_type_get_rank (_tmp108_);
							_tmp110_ = _tmp109_;
							if (!(_tmp107_ <= _tmp110_)) {
								break;
							}
							_tmp111_ = _result_;
							_tmp112_ = block;
							_tmp113_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp112_);
							_tmp114_ = g_strdup_printf ("_data%d_", _tmp113_);
							_tmp115_ = _tmp114_;
							_tmp116_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp115_);
							_tmp117_ = _tmp116_;
							_tmp118_ = param;
							_tmp119_ = dim;
							_tmp120_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp118_, _tmp119_);
							_tmp121_ = _tmp120_;
							_tmp122_ = vala_ccode_member_access_new_pointer (_tmp117_, _tmp121_);
							_tmp123_ = _tmp122_;
							vala_glib_value_append_array_length_cvalue (_tmp111_, (ValaCCodeExpression*) _tmp123_);
							_vala_ccode_node_unref0 (_tmp123_);
							_g_free0 (_tmp121_);
							_vala_ccode_node_unref0 (_tmp117_);
							_g_free0 (_tmp115_);
						}
					}
				}
			} else {
				gboolean _tmp124_ = FALSE;
				ValaDelegateType* _tmp125_ = NULL;
				_tmp125_ = delegate_type;
				if (_tmp125_ != NULL) {
					ValaDelegateType* _tmp126_ = NULL;
					ValaDelegate* _tmp127_ = NULL;
					ValaDelegate* _tmp128_ = NULL;
					gboolean _tmp129_ = FALSE;
					gboolean _tmp130_ = FALSE;
					_tmp126_ = delegate_type;
					_tmp127_ = vala_delegate_type_get_delegate_symbol (_tmp126_);
					_tmp128_ = _tmp127_;
					_tmp129_ = vala_delegate_get_has_target (_tmp128_);
					_tmp130_ = _tmp129_;
					_tmp124_ = _tmp130_;
				} else {
					_tmp124_ = FALSE;
				}
				if (_tmp124_) {
					ValaGLibValue* _tmp131_ = NULL;
					ValaBlock* _tmp132_ = NULL;
					gint _tmp133_ = 0;
					gchar* _tmp134_ = NULL;
					gchar* _tmp135_ = NULL;
					ValaCCodeExpression* _tmp136_ = NULL;
					ValaCCodeExpression* _tmp137_ = NULL;
					ValaParameter* _tmp138_ = NULL;
					gchar* _tmp139_ = NULL;
					gchar* _tmp140_ = NULL;
					ValaCCodeMemberAccess* _tmp141_ = NULL;
					ValaGLibValue* _tmp142_ = NULL;
					ValaDataType* _tmp143_ = NULL;
					ValaDataType* _tmp144_ = NULL;
					gboolean _tmp145_ = FALSE;
					_tmp131_ = _result_;
					_tmp132_ = block;
					_tmp133_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp132_);
					_tmp134_ = g_strdup_printf ("_data%d_", _tmp133_);
					_tmp135_ = _tmp134_;
					_tmp136_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp135_);
					_tmp137_ = _tmp136_;
					_tmp138_ = param;
					_tmp139_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp138_);
					_tmp140_ = _tmp139_;
					_tmp141_ = vala_ccode_member_access_new_pointer (_tmp137_, _tmp140_);
					_vala_ccode_node_unref0 (_tmp131_->delegate_target_cvalue);
					_tmp131_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp141_;
					_g_free0 (_tmp140_);
					_vala_ccode_node_unref0 (_tmp137_);
					_g_free0 (_tmp135_);
					_tmp142_ = _result_;
					_tmp143_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp142_);
					_tmp144_ = _tmp143_;
					_tmp145_ = vala_data_type_is_disposable (_tmp144_);
					if (_tmp145_) {
						ValaGLibValue* _tmp146_ = NULL;
						ValaBlock* _tmp147_ = NULL;
						gint _tmp148_ = 0;
						gchar* _tmp149_ = NULL;
						gchar* _tmp150_ = NULL;
						ValaCCodeExpression* _tmp151_ = NULL;
						ValaCCodeExpression* _tmp152_ = NULL;
						ValaParameter* _tmp153_ = NULL;
						const gchar* _tmp154_ = NULL;
						const gchar* _tmp155_ = NULL;
						gchar* _tmp156_ = NULL;
						gchar* _tmp157_ = NULL;
						gchar* _tmp158_ = NULL;
						gchar* _tmp159_ = NULL;
						ValaCCodeMemberAccess* _tmp160_ = NULL;
						_tmp146_ = _result_;
						_tmp147_ = block;
						_tmp148_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp147_);
						_tmp149_ = g_strdup_printf ("_data%d_", _tmp148_);
						_tmp150_ = _tmp149_;
						_tmp151_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp150_);
						_tmp152_ = _tmp151_;
						_tmp153_ = param;
						_tmp154_ = vala_symbol_get_name ((ValaSymbol*) _tmp153_);
						_tmp155_ = _tmp154_;
						_tmp156_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp155_);
						_tmp157_ = _tmp156_;
						_tmp158_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp157_);
						_tmp159_ = _tmp158_;
						_tmp160_ = vala_ccode_member_access_new_pointer (_tmp152_, _tmp159_);
						_vala_ccode_node_unref0 (_tmp146_->delegate_target_destroy_notify_cvalue);
						_tmp146_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp160_;
						_g_free0 (_tmp159_);
						_g_free0 (_tmp157_);
						_vala_ccode_node_unref0 (_tmp152_);
						_g_free0 (_tmp150_);
					}
				}
			}
			_vala_code_node_unref0 (block);
		} else {
			gboolean _tmp161_ = FALSE;
			_tmp161_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
			if (_tmp161_) {
				ValaGLibValue* _tmp162_ = NULL;
				ValaParameter* _tmp163_ = NULL;
				const gchar* _tmp164_ = NULL;
				const gchar* _tmp165_ = NULL;
				ValaCCodeExpression* _tmp166_ = NULL;
				gboolean _tmp167_ = FALSE;
				ValaDelegateType* _tmp168_ = NULL;
				_tmp162_ = _result_;
				_tmp163_ = param;
				_tmp164_ = vala_symbol_get_name ((ValaSymbol*) _tmp163_);
				_tmp165_ = _tmp164_;
				_tmp166_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp165_);
				_vala_ccode_node_unref0 (_tmp162_->cvalue);
				_tmp162_->cvalue = _tmp166_;
				_tmp168_ = delegate_type;
				if (_tmp168_ != NULL) {
					ValaDelegateType* _tmp169_ = NULL;
					ValaDelegate* _tmp170_ = NULL;
					ValaDelegate* _tmp171_ = NULL;
					gboolean _tmp172_ = FALSE;
					gboolean _tmp173_ = FALSE;
					_tmp169_ = delegate_type;
					_tmp170_ = vala_delegate_type_get_delegate_symbol (_tmp169_);
					_tmp171_ = _tmp170_;
					_tmp172_ = vala_delegate_get_has_target (_tmp171_);
					_tmp173_ = _tmp172_;
					_tmp167_ = _tmp173_;
				} else {
					_tmp167_ = FALSE;
				}
				if (_tmp167_) {
					ValaGLibValue* _tmp174_ = NULL;
					ValaCCodeIdentifier* _tmp175_ = NULL;
					ValaCCodeIdentifier* _tmp176_ = NULL;
					ValaParameter* _tmp177_ = NULL;
					gchar* _tmp178_ = NULL;
					gchar* _tmp179_ = NULL;
					ValaCCodeMemberAccess* _tmp180_ = NULL;
					ValaDelegateType* _tmp181_ = NULL;
					gboolean _tmp182_ = FALSE;
					_tmp174_ = _result_;
					_tmp175_ = vala_ccode_identifier_new ("_data_");
					_tmp176_ = _tmp175_;
					_tmp177_ = param;
					_tmp178_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp177_);
					_tmp179_ = _tmp178_;
					_tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp176_, _tmp179_);
					_vala_ccode_node_unref0 (_tmp174_->delegate_target_cvalue);
					_tmp174_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp180_;
					_g_free0 (_tmp179_);
					_vala_ccode_node_unref0 (_tmp176_);
					_tmp181_ = delegate_type;
					_tmp182_ = vala_data_type_is_disposable ((ValaDataType*) _tmp181_);
					if (_tmp182_) {
						ValaGLibValue* _tmp183_ = NULL;
						ValaCCodeIdentifier* _tmp184_ = NULL;
						ValaCCodeIdentifier* _tmp185_ = NULL;
						ValaParameter* _tmp186_ = NULL;
						const gchar* _tmp187_ = NULL;
						const gchar* _tmp188_ = NULL;
						gchar* _tmp189_ = NULL;
						gchar* _tmp190_ = NULL;
						gchar* _tmp191_ = NULL;
						gchar* _tmp192_ = NULL;
						ValaCCodeMemberAccess* _tmp193_ = NULL;
						_tmp183_ = _result_;
						_tmp184_ = vala_ccode_identifier_new ("_data_");
						_tmp185_ = _tmp184_;
						_tmp186_ = param;
						_tmp187_ = vala_symbol_get_name ((ValaSymbol*) _tmp186_);
						_tmp188_ = _tmp187_;
						_tmp189_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp188_);
						_tmp190_ = _tmp189_;
						_tmp191_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp190_);
						_tmp192_ = _tmp191_;
						_tmp193_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp185_, _tmp192_);
						_vala_ccode_node_unref0 (_tmp183_->delegate_target_destroy_notify_cvalue);
						_tmp183_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp193_;
						_g_free0 (_tmp192_);
						_g_free0 (_tmp190_);
						_vala_ccode_node_unref0 (_tmp185_);
					}
				}
			} else {
				ValaStruct* type_as_struct = NULL;
				ValaGLibValue* _tmp194_ = NULL;
				ValaDataType* _tmp195_ = NULL;
				ValaDataType* _tmp196_ = NULL;
				ValaTypeSymbol* _tmp197_ = NULL;
				ValaTypeSymbol* _tmp198_ = NULL;
				ValaStruct* _tmp199_ = NULL;
				ValaParameter* _tmp200_ = NULL;
				ValaParameterDirection _tmp201_ = 0;
				ValaParameterDirection _tmp202_ = 0;
				gboolean _tmp205_ = FALSE;
				ValaParameter* _tmp206_ = NULL;
				ValaParameterDirection _tmp207_ = 0;
				ValaParameterDirection _tmp208_ = 0;
				gboolean _tmp267_ = FALSE;
				ValaDelegateType* _tmp268_ = NULL;
				_tmp194_ = _result_;
				_tmp195_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp194_);
				_tmp196_ = _tmp195_;
				_tmp197_ = vala_data_type_get_data_type (_tmp196_);
				_tmp198_ = _tmp197_;
				_tmp199_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp198_) : NULL);
				type_as_struct = _tmp199_;
				_tmp200_ = param;
				_tmp201_ = vala_parameter_get_direction (_tmp200_);
				_tmp202_ = _tmp201_;
				if (_tmp202_ == VALA_PARAMETER_DIRECTION_OUT) {
					const gchar* _tmp203_ = NULL;
					gchar* _tmp204_ = NULL;
					_tmp203_ = name;
					_tmp204_ = g_strconcat ("_vala_", _tmp203_, NULL);
					_g_free0 (name);
					name = _tmp204_;
				}
				_tmp206_ = param;
				_tmp207_ = vala_parameter_get_direction (_tmp206_);
				_tmp208_ = _tmp207_;
				if (_tmp208_ == VALA_PARAMETER_DIRECTION_REF) {
					_tmp205_ = TRUE;
				} else {
					gboolean _tmp209_ = FALSE;
					gboolean _tmp210_ = FALSE;
					gboolean _tmp211_ = FALSE;
					ValaParameter* _tmp212_ = NULL;
					ValaParameterDirection _tmp213_ = 0;
					ValaParameterDirection _tmp214_ = 0;
					_tmp212_ = param;
					_tmp213_ = vala_parameter_get_direction (_tmp212_);
					_tmp214_ = _tmp213_;
					if (_tmp214_ == VALA_PARAMETER_DIRECTION_IN) {
						ValaStruct* _tmp215_ = NULL;
						_tmp215_ = type_as_struct;
						_tmp211_ = _tmp215_ != NULL;
					} else {
						_tmp211_ = FALSE;
					}
					if (_tmp211_) {
						ValaStruct* _tmp216_ = NULL;
						gboolean _tmp217_ = FALSE;
						_tmp216_ = type_as_struct;
						_tmp217_ = vala_struct_is_simple_type (_tmp216_);
						_tmp210_ = !_tmp217_;
					} else {
						_tmp210_ = FALSE;
					}
					if (_tmp210_) {
						ValaGLibValue* _tmp218_ = NULL;
						ValaDataType* _tmp219_ = NULL;
						ValaDataType* _tmp220_ = NULL;
						gboolean _tmp221_ = FALSE;
						gboolean _tmp222_ = FALSE;
						_tmp218_ = _result_;
						_tmp219_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp218_);
						_tmp220_ = _tmp219_;
						_tmp221_ = vala_data_type_get_nullable (_tmp220_);
						_tmp222_ = _tmp221_;
						_tmp209_ = !_tmp222_;
					} else {
						_tmp209_ = FALSE;
					}
					_tmp205_ = _tmp209_;
				}
				if (_tmp205_) {
					ValaGLibValue* _tmp223_ = NULL;
					const gchar* _tmp224_ = NULL;
					gchar* _tmp225_ = NULL;
					gchar* _tmp226_ = NULL;
					ValaCCodeIdentifier* _tmp227_ = NULL;
					ValaCCodeIdentifier* _tmp228_ = NULL;
					ValaCCodeUnaryExpression* _tmp229_ = NULL;
					_tmp223_ = _result_;
					_tmp224_ = name;
					_tmp225_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp224_);
					_tmp226_ = _tmp225_;
					_tmp227_ = vala_ccode_identifier_new (_tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp228_);
					_vala_ccode_node_unref0 (_tmp223_->cvalue);
					_tmp223_->cvalue = (ValaCCodeExpression*) _tmp229_;
					_vala_ccode_node_unref0 (_tmp228_);
					_g_free0 (_tmp226_);
				} else {
					gboolean _tmp230_ = FALSE;
					gboolean _tmp231_ = FALSE;
					gboolean _tmp232_ = FALSE;
					gboolean _tmp233_ = FALSE;
					ValaPropertyAccessor* _tmp234_ = NULL;
					ValaPropertyAccessor* _tmp235_ = NULL;
					_tmp234_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
					_tmp235_ = _tmp234_;
					if (_tmp235_ != NULL) {
						ValaPropertyAccessor* _tmp236_ = NULL;
						ValaPropertyAccessor* _tmp237_ = NULL;
						gboolean _tmp238_ = FALSE;
						gboolean _tmp239_ = FALSE;
						_tmp236_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp237_ = _tmp236_;
						_tmp238_ = vala_property_accessor_get_writable (_tmp237_);
						_tmp239_ = _tmp238_;
						_tmp233_ = _tmp239_;
					} else {
						_tmp233_ = FALSE;
					}
					if (_tmp233_) {
						ValaPropertyAccessor* _tmp240_ = NULL;
						ValaPropertyAccessor* _tmp241_ = NULL;
						ValaParameter* _tmp242_ = NULL;
						ValaParameter* _tmp243_ = NULL;
						ValaParameter* _tmp244_ = NULL;
						_tmp240_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp241_ = _tmp240_;
						_tmp242_ = vala_property_accessor_get_value_parameter (_tmp241_);
						_tmp243_ = _tmp242_;
						_tmp244_ = param;
						_tmp232_ = _tmp243_ == _tmp244_;
					} else {
						_tmp232_ = FALSE;
					}
					if (_tmp232_) {
						ValaPropertyAccessor* _tmp245_ = NULL;
						ValaPropertyAccessor* _tmp246_ = NULL;
						ValaProperty* _tmp247_ = NULL;
						ValaProperty* _tmp248_ = NULL;
						ValaDataType* _tmp249_ = NULL;
						ValaDataType* _tmp250_ = NULL;
						gboolean _tmp251_ = FALSE;
						_tmp245_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp246_ = _tmp245_;
						_tmp247_ = vala_property_accessor_get_prop (_tmp246_);
						_tmp248_ = _tmp247_;
						_tmp249_ = vala_property_get_property_type (_tmp248_);
						_tmp250_ = _tmp249_;
						_tmp251_ = vala_data_type_is_real_struct_type (_tmp250_);
						_tmp231_ = _tmp251_;
					} else {
						_tmp231_ = FALSE;
					}
					if (_tmp231_) {
						ValaPropertyAccessor* _tmp252_ = NULL;
						ValaPropertyAccessor* _tmp253_ = NULL;
						ValaProperty* _tmp254_ = NULL;
						ValaProperty* _tmp255_ = NULL;
						ValaDataType* _tmp256_ = NULL;
						ValaDataType* _tmp257_ = NULL;
						gboolean _tmp258_ = FALSE;
						gboolean _tmp259_ = FALSE;
						_tmp252_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp253_ = _tmp252_;
						_tmp254_ = vala_property_accessor_get_prop (_tmp253_);
						_tmp255_ = _tmp254_;
						_tmp256_ = vala_property_get_property_type (_tmp255_);
						_tmp257_ = _tmp256_;
						_tmp258_ = vala_data_type_get_nullable (_tmp257_);
						_tmp259_ = _tmp258_;
						_tmp230_ = !_tmp259_;
					} else {
						_tmp230_ = FALSE;
					}
					if (_tmp230_) {
						ValaGLibValue* _tmp260_ = NULL;
						ValaCCodeIdentifier* _tmp261_ = NULL;
						ValaCCodeIdentifier* _tmp262_ = NULL;
						ValaCCodeUnaryExpression* _tmp263_ = NULL;
						_tmp260_ = _result_;
						_tmp261_ = vala_ccode_identifier_new ("value");
						_tmp262_ = _tmp261_;
						_tmp263_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp262_);
						_vala_ccode_node_unref0 (_tmp260_->cvalue);
						_tmp260_->cvalue = (ValaCCodeExpression*) _tmp263_;
						_vala_ccode_node_unref0 (_tmp262_);
					} else {
						ValaGLibValue* _tmp264_ = NULL;
						const gchar* _tmp265_ = NULL;
						ValaCCodeExpression* _tmp266_ = NULL;
						_tmp264_ = _result_;
						_tmp265_ = name;
						_tmp266_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp265_);
						_vala_ccode_node_unref0 (_tmp264_->cvalue);
						_tmp264_->cvalue = _tmp266_;
					}
				}
				_tmp268_ = delegate_type;
				if (_tmp268_ != NULL) {
					ValaDelegateType* _tmp269_ = NULL;
					ValaDelegate* _tmp270_ = NULL;
					ValaDelegate* _tmp271_ = NULL;
					gboolean _tmp272_ = FALSE;
					gboolean _tmp273_ = FALSE;
					_tmp269_ = delegate_type;
					_tmp270_ = vala_delegate_type_get_delegate_symbol (_tmp269_);
					_tmp271_ = _tmp270_;
					_tmp272_ = vala_delegate_get_has_target (_tmp271_);
					_tmp273_ = _tmp272_;
					_tmp267_ = _tmp273_;
				} else {
					_tmp267_ = FALSE;
				}
				if (_tmp267_) {
					gchar* target_cname = NULL;
					ValaParameter* _tmp274_ = NULL;
					gchar* _tmp275_ = NULL;
					ValaParameter* _tmp276_ = NULL;
					ValaParameterDirection _tmp277_ = 0;
					ValaParameterDirection _tmp278_ = 0;
					ValaCCodeExpression* target_expr = NULL;
					const gchar* _tmp281_ = NULL;
					ValaCCodeIdentifier* _tmp282_ = NULL;
					ValaCCodeExpression* delegate_target_destroy_notify = NULL;
					const gchar* _tmp283_ = NULL;
					gchar* _tmp284_ = NULL;
					gchar* _tmp285_ = NULL;
					gchar* _tmp286_ = NULL;
					gchar* _tmp287_ = NULL;
					ValaCCodeIdentifier* _tmp288_ = NULL;
					ValaCCodeExpression* _tmp289_ = NULL;
					ValaParameter* _tmp290_ = NULL;
					ValaParameterDirection _tmp291_ = 0;
					ValaParameterDirection _tmp292_ = 0;
					ValaGLibValue* _tmp297_ = NULL;
					ValaCCodeExpression* _tmp298_ = NULL;
					ValaCCodeExpression* _tmp299_ = NULL;
					ValaGLibValue* _tmp300_ = NULL;
					ValaDataType* _tmp301_ = NULL;
					ValaDataType* _tmp302_ = NULL;
					gboolean _tmp303_ = FALSE;
					_tmp274_ = param;
					_tmp275_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp274_);
					target_cname = _tmp275_;
					_tmp276_ = param;
					_tmp277_ = vala_parameter_get_direction (_tmp276_);
					_tmp278_ = _tmp277_;
					if (_tmp278_ == VALA_PARAMETER_DIRECTION_OUT) {
						const gchar* _tmp279_ = NULL;
						gchar* _tmp280_ = NULL;
						_tmp279_ = target_cname;
						_tmp280_ = g_strconcat ("_vala_", _tmp279_, NULL);
						_g_free0 (target_cname);
						target_cname = _tmp280_;
					}
					_tmp281_ = target_cname;
					_tmp282_ = vala_ccode_identifier_new (_tmp281_);
					target_expr = (ValaCCodeExpression*) _tmp282_;
					_tmp283_ = name;
					_tmp284_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp283_);
					_tmp285_ = _tmp284_;
					_tmp286_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp285_);
					_tmp287_ = _tmp286_;
					_tmp288_ = vala_ccode_identifier_new (_tmp287_);
					_tmp289_ = (ValaCCodeExpression*) _tmp288_;
					_g_free0 (_tmp287_);
					_g_free0 (_tmp285_);
					delegate_target_destroy_notify = _tmp289_;
					_tmp290_ = param;
					_tmp291_ = vala_parameter_get_direction (_tmp290_);
					_tmp292_ = _tmp291_;
					if (_tmp292_ == VALA_PARAMETER_DIRECTION_REF) {
						ValaCCodeExpression* _tmp293_ = NULL;
						ValaCCodeUnaryExpression* _tmp294_ = NULL;
						ValaCCodeExpression* _tmp295_ = NULL;
						ValaCCodeUnaryExpression* _tmp296_ = NULL;
						_tmp293_ = target_expr;
						_tmp294_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp293_);
						_vala_ccode_node_unref0 (target_expr);
						target_expr = (ValaCCodeExpression*) _tmp294_;
						_tmp295_ = delegate_target_destroy_notify;
						_tmp296_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp295_);
						_vala_ccode_node_unref0 (delegate_target_destroy_notify);
						delegate_target_destroy_notify = (ValaCCodeExpression*) _tmp296_;
					}
					_tmp297_ = _result_;
					_tmp298_ = target_expr;
					_tmp299_ = _vala_ccode_node_ref0 (_tmp298_);
					_vala_ccode_node_unref0 (_tmp297_->delegate_target_cvalue);
					_tmp297_->delegate_target_cvalue = _tmp299_;
					_tmp300_ = _result_;
					_tmp301_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp300_);
					_tmp302_ = _tmp301_;
					_tmp303_ = vala_data_type_is_disposable (_tmp302_);
					if (_tmp303_) {
						ValaGLibValue* _tmp304_ = NULL;
						ValaCCodeExpression* _tmp305_ = NULL;
						ValaCCodeExpression* _tmp306_ = NULL;
						_tmp304_ = _result_;
						_tmp305_ = delegate_target_destroy_notify;
						_tmp306_ = _vala_ccode_node_ref0 (_tmp305_);
						_vala_ccode_node_unref0 (_tmp304_->delegate_target_destroy_notify_cvalue);
						_tmp304_->delegate_target_destroy_notify_cvalue = _tmp306_;
					}
					_vala_ccode_node_unref0 (delegate_target_destroy_notify);
					_vala_ccode_node_unref0 (target_expr);
					_g_free0 (target_cname);
				}
				_vala_code_node_unref0 (type_as_struct);
			}
		}
		_tmp308_ = param;
		_tmp309_ = vala_parameter_get_captured (_tmp308_);
		_tmp310_ = _tmp309_;
		if (!_tmp310_) {
			ValaArrayType* _tmp311_ = NULL;
			_tmp311_ = array_type;
			_tmp307_ = _tmp311_ != NULL;
		} else {
			_tmp307_ = FALSE;
		}
		if (_tmp307_) {
			gboolean _tmp312_ = FALSE;
			ValaParameter* _tmp313_ = NULL;
			gboolean _tmp314_ = FALSE;
			_tmp313_ = param;
			_tmp314_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp313_);
			if (_tmp314_) {
				ValaParameter* _tmp315_ = NULL;
				gboolean _tmp316_ = FALSE;
				_tmp315_ = param;
				_tmp316_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp315_);
				_tmp312_ = !_tmp316_;
			} else {
				_tmp312_ = FALSE;
			}
			if (_tmp312_) {
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp317_ = FALSE;
						_tmp317_ = TRUE;
						while (TRUE) {
							gint _tmp319_ = 0;
							ValaArrayType* _tmp320_ = NULL;
							gint _tmp321_ = 0;
							gint _tmp322_ = 0;
							ValaCCodeExpression* length_expr = NULL;
							ValaParameter* _tmp323_ = NULL;
							gint _tmp324_ = 0;
							gchar* _tmp325_ = NULL;
							gchar* _tmp326_ = NULL;
							ValaCCodeExpression* _tmp327_ = NULL;
							ValaCCodeExpression* _tmp328_ = NULL;
							ValaParameter* _tmp329_ = NULL;
							ValaParameterDirection _tmp330_ = 0;
							ValaParameterDirection _tmp331_ = 0;
							ValaGLibValue* _tmp344_ = NULL;
							ValaCCodeExpression* _tmp345_ = NULL;
							if (!_tmp317_) {
								gint _tmp318_ = 0;
								_tmp318_ = dim;
								dim = _tmp318_ + 1;
							}
							_tmp317_ = FALSE;
							_tmp319_ = dim;
							_tmp320_ = array_type;
							_tmp321_ = vala_array_type_get_rank (_tmp320_);
							_tmp322_ = _tmp321_;
							if (!(_tmp319_ <= _tmp322_)) {
								break;
							}
							_tmp323_ = param;
							_tmp324_ = dim;
							_tmp325_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp323_, _tmp324_);
							_tmp326_ = _tmp325_;
							_tmp327_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp326_);
							_tmp328_ = _tmp327_;
							_g_free0 (_tmp326_);
							length_expr = _tmp328_;
							_tmp329_ = param;
							_tmp330_ = vala_parameter_get_direction (_tmp329_);
							_tmp331_ = _tmp330_;
							if (_tmp331_ == VALA_PARAMETER_DIRECTION_OUT) {
								const gchar* _tmp332_ = NULL;
								gchar* _tmp333_ = NULL;
								gchar* _tmp334_ = NULL;
								gint _tmp335_ = 0;
								gchar* _tmp336_ = NULL;
								gchar* _tmp337_ = NULL;
								ValaCCodeExpression* _tmp338_ = NULL;
								_tmp332_ = name;
								_tmp333_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp332_);
								_tmp334_ = _tmp333_;
								_tmp335_ = dim;
								_tmp336_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp334_, _tmp335_);
								_tmp337_ = _tmp336_;
								_tmp338_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp337_);
								_vala_ccode_node_unref0 (length_expr);
								length_expr = _tmp338_;
								_g_free0 (_tmp337_);
								_g_free0 (_tmp334_);
							} else {
								ValaParameter* _tmp339_ = NULL;
								ValaParameterDirection _tmp340_ = 0;
								ValaParameterDirection _tmp341_ = 0;
								_tmp339_ = param;
								_tmp340_ = vala_parameter_get_direction (_tmp339_);
								_tmp341_ = _tmp340_;
								if (_tmp341_ == VALA_PARAMETER_DIRECTION_REF) {
									ValaCCodeExpression* _tmp342_ = NULL;
									ValaCCodeUnaryExpression* _tmp343_ = NULL;
									_tmp342_ = length_expr;
									_tmp343_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp342_);
									_vala_ccode_node_unref0 (length_expr);
									length_expr = (ValaCCodeExpression*) _tmp343_;
								}
							}
							_tmp344_ = _result_;
							_tmp345_ = length_expr;
							vala_glib_value_append_array_length_cvalue (_tmp344_, _tmp345_);
							_vala_ccode_node_unref0 (length_expr);
						}
					}
				}
			}
		}
		_g_free0 (name);
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_get_field_cvalue (ValaCCodeBaseModule* base, ValaField* field, ValaTargetValue* instance) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaDataType* value_type = NULL;
	ValaField* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	ValaDataType* _tmp2_ = NULL;
	ValaDataType* _tmp3_ = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaDataType* _tmp4_ = NULL;
	ValaGLibValue* _tmp5_ = NULL;
	ValaTargetValue* _tmp6_ = NULL;
	ValaGLibValue* _tmp17_ = NULL;
	ValaGLibValue* _tmp18_ = NULL;
	ValaField* _tmp19_ = NULL;
	gboolean _tmp20_ = FALSE;
	ValaField* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	gchar* _tmp23_ = NULL;
	gboolean _tmp24_ = FALSE;
	ValaGLibValue* _tmp30_ = NULL;
	ValaField* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	ValaArrayType* array_type = NULL;
	ValaGLibValue* _tmp33_ = NULL;
	ValaDataType* _tmp34_ = NULL;
	ValaDataType* _tmp35_ = NULL;
	ValaArrayType* _tmp36_ = NULL;
	ValaDelegateType* delegate_type = NULL;
	ValaGLibValue* _tmp37_ = NULL;
	ValaDataType* _tmp38_ = NULL;
	ValaDataType* _tmp39_ = NULL;
	ValaDelegateType* _tmp40_ = NULL;
	ValaField* _tmp41_ = NULL;
	ValaMemberBinding _tmp42_ = 0;
	ValaMemberBinding _tmp43_ = 0;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (field != NULL, NULL);
	_tmp0_ = field;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_copy (_tmp2_);
	value_type = _tmp3_;
	_tmp4_ = value_type;
	_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
	_result_ = _tmp5_;
	_tmp6_ = instance;
	if (_tmp6_ != NULL) {
		ValaGLibValue* _tmp7_ = NULL;
		ValaField* _tmp8_ = NULL;
		ValaDataType* _tmp9_ = NULL;
		ValaDataType* _tmp10_ = NULL;
		ValaTargetValue* _tmp11_ = NULL;
		ValaDataType* _tmp12_ = NULL;
		ValaDataType* _tmp13_ = NULL;
		ValaField* _tmp14_ = NULL;
		ValaDataType* _tmp15_ = NULL;
		ValaDataType* _tmp16_ = NULL;
		_tmp7_ = _result_;
		_tmp8_ = field;
		_tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = instance;
		_tmp12_ = vala_target_value_get_value_type (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = field;
		_tmp15_ = vala_data_type_get_actual_type (_tmp10_, _tmp13_, NULL, (ValaCodeNode*) _tmp14_);
		_tmp16_ = _tmp15_;
		vala_target_value_set_actual_value_type ((ValaTargetValue*) _tmp7_, _tmp16_);
		_vala_code_node_unref0 (_tmp16_);
	}
	_tmp17_ = _result_;
	_tmp17_->lvalue = TRUE;
	_tmp18_ = _result_;
	_tmp19_ = field;
	_tmp20_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp19_);
	_tmp18_->array_null_terminated = _tmp20_;
	_tmp21_ = field;
	_tmp22_ = vala_ccode_base_module_get_ccode_array_length_expr ((ValaCodeNode*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = _tmp23_ != NULL;
	_g_free0 (_tmp23_);
	if (_tmp24_) {
		ValaGLibValue* _tmp25_ = NULL;
		ValaField* _tmp26_ = NULL;
		gchar* _tmp27_ = NULL;
		gchar* _tmp28_ = NULL;
		ValaCCodeConstant* _tmp29_ = NULL;
		_tmp25_ = _result_;
		_tmp26_ = field;
		_tmp27_ = vala_ccode_base_module_get_ccode_array_length_expr ((ValaCodeNode*) _tmp26_);
		_tmp28_ = _tmp27_;
		_tmp29_ = vala_ccode_constant_new (_tmp28_);
		_vala_ccode_node_unref0 (_tmp25_->array_length_cexpr);
		_tmp25_->array_length_cexpr = (ValaCCodeExpression*) _tmp29_;
		_g_free0 (_tmp28_);
	}
	_tmp30_ = _result_;
	_tmp31_ = field;
	_tmp32_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp31_);
	_g_free0 (_tmp30_->ctype);
	_tmp30_->ctype = _tmp32_;
	_tmp33_ = _result_;
	_tmp34_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp33_);
	_tmp35_ = _tmp34_;
	_tmp36_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp35_) : NULL);
	array_type = _tmp36_;
	_tmp37_ = _result_;
	_tmp38_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp39_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp39_) : NULL);
	delegate_type = _tmp40_;
	_tmp41_ = field;
	_tmp42_ = vala_field_get_binding (_tmp41_);
	_tmp43_ = _tmp42_;
	if (_tmp43_ == VALA_MEMBER_BINDING_INSTANCE) {
		ValaCCodeExpression* pub_inst = NULL;
		ValaTargetValue* _tmp44_ = NULL;
		ValaDataType* instance_target_type = NULL;
		ValaField* _tmp47_ = NULL;
		ValaSymbol* _tmp48_ = NULL;
		ValaSymbol* _tmp49_ = NULL;
		ValaDataType* _tmp50_ = NULL;
		ValaClass* cl = NULL;
		ValaDataType* _tmp51_ = NULL;
		ValaTypeSymbol* _tmp52_ = NULL;
		ValaTypeSymbol* _tmp53_ = NULL;
		ValaClass* _tmp54_ = NULL;
		gboolean _tmp55_ = FALSE;
		ValaDataType* _tmp56_ = NULL;
		ValaTypeSymbol* _tmp57_ = NULL;
		ValaTypeSymbol* _tmp58_ = NULL;
		ValaClass* _tmp59_ = NULL;
		gboolean is_gtypeinstance = FALSE;
		ValaCCodeExpression* inst = NULL;
		gboolean _tmp65_ = FALSE;
		gboolean _tmp66_ = FALSE;
		gboolean _tmp77_ = FALSE;
		ValaDataType* _tmp78_ = NULL;
		ValaTypeSymbol* _tmp79_ = NULL;
		ValaTypeSymbol* _tmp80_ = NULL;
		gboolean _tmp81_ = FALSE;
		gboolean _tmp99_ = FALSE;
		ValaArrayType* _tmp100_ = NULL;
		pub_inst = NULL;
		_tmp44_ = instance;
		if (_tmp44_ != NULL) {
			ValaTargetValue* _tmp45_ = NULL;
			ValaCCodeExpression* _tmp46_ = NULL;
			_tmp45_ = instance;
			_tmp46_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp45_);
			_vala_ccode_node_unref0 (pub_inst);
			pub_inst = _tmp46_;
		}
		_tmp47_ = field;
		_tmp48_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp47_);
		_tmp49_ = _tmp48_;
		_tmp50_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
		instance_target_type = _tmp50_;
		_tmp51_ = instance_target_type;
		_tmp52_ = vala_data_type_get_data_type (_tmp51_);
		_tmp53_ = _tmp52_;
		_tmp54_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp53_) : NULL);
		cl = _tmp54_;
		_tmp56_ = instance_target_type;
		_tmp57_ = vala_data_type_get_data_type (_tmp56_);
		_tmp58_ = _tmp57_;
		_tmp59_ = cl;
		if (_tmp58_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
			gboolean _tmp60_ = FALSE;
			ValaClass* _tmp61_ = NULL;
			_tmp61_ = cl;
			if (_tmp61_ == NULL) {
				_tmp60_ = TRUE;
			} else {
				ValaClass* _tmp62_ = NULL;
				gboolean _tmp63_ = FALSE;
				gboolean _tmp64_ = FALSE;
				_tmp62_ = cl;
				_tmp63_ = vala_class_get_is_compact (_tmp62_);
				_tmp64_ = _tmp63_;
				_tmp60_ = !_tmp64_;
			}
			_tmp55_ = _tmp60_;
		} else {
			_tmp55_ = FALSE;
		}
		is_gtypeinstance = _tmp55_;
		_tmp66_ = is_gtypeinstance;
		if (_tmp66_) {
			ValaField* _tmp67_ = NULL;
			ValaSymbolAccessibility _tmp68_ = 0;
			ValaSymbolAccessibility _tmp69_ = 0;
			_tmp67_ = field;
			_tmp68_ = vala_symbol_get_access ((ValaSymbol*) _tmp67_);
			_tmp69_ = _tmp68_;
			_tmp65_ = _tmp69_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
		} else {
			_tmp65_ = FALSE;
		}
		if (_tmp65_) {
			ValaCCodeExpression* _tmp70_ = NULL;
			ValaCCodeMemberAccess* _tmp71_ = NULL;
			_tmp70_ = pub_inst;
			_tmp71_ = vala_ccode_member_access_new_pointer (_tmp70_, "priv");
			_vala_ccode_node_unref0 (inst);
			inst = (ValaCCodeExpression*) _tmp71_;
		} else {
			ValaClass* _tmp72_ = NULL;
			ValaCCodeExpression* _tmp75_ = NULL;
			ValaCCodeExpression* _tmp76_ = NULL;
			_tmp72_ = cl;
			if (_tmp72_ != NULL) {
				ValaClass* _tmp73_ = NULL;
				ValaCCodeFile* _tmp74_ = NULL;
				_tmp73_ = cl;
				_tmp74_ = ((ValaCCodeBaseModule*) self)->cfile;
				vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp73_, _tmp74_);
			}
			_tmp75_ = pub_inst;
			_tmp76_ = _vala_ccode_node_ref0 (_tmp75_);
			_vala_ccode_node_unref0 (inst);
			inst = _tmp76_;
		}
		_tmp78_ = instance_target_type;
		_tmp79_ = vala_data_type_get_data_type (_tmp78_);
		_tmp80_ = _tmp79_;
		_tmp81_ = vala_typesymbol_is_reference_type (_tmp80_);
		if (_tmp81_) {
			_tmp77_ = TRUE;
		} else {
			gboolean _tmp82_ = FALSE;
			ValaTargetValue* _tmp83_ = NULL;
			_tmp83_ = instance;
			if (_tmp83_ != NULL) {
				ValaTargetValue* _tmp84_ = NULL;
				ValaDataType* _tmp85_ = NULL;
				ValaDataType* _tmp86_ = NULL;
				_tmp84_ = instance;
				_tmp85_ = vala_target_value_get_value_type (_tmp84_);
				_tmp86_ = _tmp85_;
				_tmp82_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp86_, VALA_TYPE_POINTER_TYPE);
			} else {
				_tmp82_ = FALSE;
			}
			_tmp77_ = _tmp82_;
		}
		if (_tmp77_) {
			ValaGLibValue* _tmp87_ = NULL;
			ValaCCodeExpression* _tmp88_ = NULL;
			ValaField* _tmp89_ = NULL;
			gchar* _tmp90_ = NULL;
			gchar* _tmp91_ = NULL;
			ValaCCodeMemberAccess* _tmp92_ = NULL;
			_tmp87_ = _result_;
			_tmp88_ = inst;
			_tmp89_ = field;
			_tmp90_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp89_);
			_tmp91_ = _tmp90_;
			_tmp92_ = vala_ccode_member_access_new_pointer (_tmp88_, _tmp91_);
			_vala_ccode_node_unref0 (_tmp87_->cvalue);
			_tmp87_->cvalue = (ValaCCodeExpression*) _tmp92_;
			_g_free0 (_tmp91_);
		} else {
			ValaGLibValue* _tmp93_ = NULL;
			ValaCCodeExpression* _tmp94_ = NULL;
			ValaField* _tmp95_ = NULL;
			gchar* _tmp96_ = NULL;
			gchar* _tmp97_ = NULL;
			ValaCCodeMemberAccess* _tmp98_ = NULL;
			_tmp93_ = _result_;
			_tmp94_ = inst;
			_tmp95_ = field;
			_tmp96_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp95_);
			_tmp97_ = _tmp96_;
			_tmp98_ = vala_ccode_member_access_new (_tmp94_, _tmp97_, FALSE);
			_vala_ccode_node_unref0 (_tmp93_->cvalue);
			_tmp93_->cvalue = (ValaCCodeExpression*) _tmp98_;
			_g_free0 (_tmp97_);
		}
		_tmp100_ = array_type;
		if (_tmp100_ != NULL) {
			ValaField* _tmp101_ = NULL;
			gboolean _tmp102_ = FALSE;
			_tmp101_ = field;
			_tmp102_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp101_);
			_tmp99_ = _tmp102_;
		} else {
			_tmp99_ = FALSE;
		}
		if (_tmp99_) {
			gboolean _tmp132_ = FALSE;
			ValaArrayType* _tmp133_ = NULL;
			gint _tmp134_ = 0;
			gint _tmp135_ = 0;
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp103_ = FALSE;
					_tmp103_ = TRUE;
					while (TRUE) {
						gint _tmp105_ = 0;
						ValaArrayType* _tmp106_ = NULL;
						gint _tmp107_ = 0;
						gint _tmp108_ = 0;
						ValaCCodeExpression* length_expr = NULL;
						gchar* length_cname = NULL;
						ValaField* _tmp109_ = NULL;
						gchar* _tmp110_ = NULL;
						gchar* _tmp111_ = NULL;
						gboolean _tmp112_ = FALSE;
						ValaField* _tmp120_ = NULL;
						ValaSymbol* _tmp121_ = NULL;
						ValaSymbol* _tmp122_ = NULL;
						gboolean _tmp123_ = FALSE;
						ValaGLibValue* _tmp130_ = NULL;
						ValaCCodeExpression* _tmp131_ = NULL;
						if (!_tmp103_) {
							gint _tmp104_ = 0;
							_tmp104_ = dim;
							dim = _tmp104_ + 1;
						}
						_tmp103_ = FALSE;
						_tmp105_ = dim;
						_tmp106_ = array_type;
						_tmp107_ = vala_array_type_get_rank (_tmp106_);
						_tmp108_ = _tmp107_;
						if (!(_tmp105_ <= _tmp108_)) {
							break;
						}
						length_expr = NULL;
						_tmp109_ = field;
						_tmp110_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp109_);
						_tmp111_ = _tmp110_;
						_tmp112_ = _tmp111_ != NULL;
						_g_free0 (_tmp111_);
						if (_tmp112_) {
							ValaField* _tmp113_ = NULL;
							gchar* _tmp114_ = NULL;
							_tmp113_ = field;
							_tmp114_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp113_);
							_g_free0 (length_cname);
							length_cname = _tmp114_;
						} else {
							ValaField* _tmp115_ = NULL;
							const gchar* _tmp116_ = NULL;
							const gchar* _tmp117_ = NULL;
							gint _tmp118_ = 0;
							gchar* _tmp119_ = NULL;
							_tmp115_ = field;
							_tmp116_ = vala_symbol_get_name ((ValaSymbol*) _tmp115_);
							_tmp117_ = _tmp116_;
							_tmp118_ = dim;
							_tmp119_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp117_, _tmp118_);
							_g_free0 (length_cname);
							length_cname = _tmp119_;
						}
						_tmp120_ = field;
						_tmp121_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp120_);
						_tmp122_ = _tmp121_;
						_tmp123_ = vala_typesymbol_is_reference_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp122_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
						if (_tmp123_) {
							ValaCCodeExpression* _tmp124_ = NULL;
							const gchar* _tmp125_ = NULL;
							ValaCCodeMemberAccess* _tmp126_ = NULL;
							_tmp124_ = inst;
							_tmp125_ = length_cname;
							_tmp126_ = vala_ccode_member_access_new_pointer (_tmp124_, _tmp125_);
							_vala_ccode_node_unref0 (length_expr);
							length_expr = (ValaCCodeExpression*) _tmp126_;
						} else {
							ValaCCodeExpression* _tmp127_ = NULL;
							const gchar* _tmp128_ = NULL;
							ValaCCodeMemberAccess* _tmp129_ = NULL;
							_tmp127_ = inst;
							_tmp128_ = length_cname;
							_tmp129_ = vala_ccode_member_access_new (_tmp127_, _tmp128_, FALSE);
							_vala_ccode_node_unref0 (length_expr);
							length_expr = (ValaCCodeExpression*) _tmp129_;
						}
						_tmp130_ = _result_;
						_tmp131_ = length_expr;
						vala_glib_value_append_array_length_cvalue (_tmp130_, _tmp131_);
						_g_free0 (length_cname);
						_vala_ccode_node_unref0 (length_expr);
					}
				}
			}
			_tmp133_ = array_type;
			_tmp134_ = vala_array_type_get_rank (_tmp133_);
			_tmp135_ = _tmp134_;
			if (_tmp135_ == 1) {
				ValaField* _tmp136_ = NULL;
				gboolean _tmp137_ = FALSE;
				_tmp136_ = field;
				_tmp137_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp136_);
				_tmp132_ = _tmp137_;
			} else {
				_tmp132_ = FALSE;
			}
			if (_tmp132_) {
				gchar* size_cname = NULL;
				ValaField* _tmp138_ = NULL;
				const gchar* _tmp139_ = NULL;
				const gchar* _tmp140_ = NULL;
				gchar* _tmp141_ = NULL;
				ValaField* _tmp142_ = NULL;
				ValaSymbol* _tmp143_ = NULL;
				ValaSymbol* _tmp144_ = NULL;
				gboolean _tmp145_ = FALSE;
				_tmp138_ = field;
				_tmp139_ = vala_symbol_get_name ((ValaSymbol*) _tmp138_);
				_tmp140_ = _tmp139_;
				_tmp141_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp140_);
				size_cname = _tmp141_;
				_tmp142_ = field;
				_tmp143_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp142_);
				_tmp144_ = _tmp143_;
				_tmp145_ = vala_typesymbol_is_reference_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp144_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
				if (_tmp145_) {
					ValaGLibValue* _tmp146_ = NULL;
					ValaCCodeExpression* _tmp147_ = NULL;
					const gchar* _tmp148_ = NULL;
					ValaCCodeMemberAccess* _tmp149_ = NULL;
					ValaCCodeMemberAccess* _tmp150_ = NULL;
					_tmp146_ = _result_;
					_tmp147_ = inst;
					_tmp148_ = size_cname;
					_tmp149_ = vala_ccode_member_access_new_pointer (_tmp147_, _tmp148_);
					_tmp150_ = _tmp149_;
					vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp146_, (ValaCCodeExpression*) _tmp150_);
					_vala_ccode_node_unref0 (_tmp150_);
				} else {
					ValaGLibValue* _tmp151_ = NULL;
					ValaCCodeExpression* _tmp152_ = NULL;
					const gchar* _tmp153_ = NULL;
					ValaCCodeMemberAccess* _tmp154_ = NULL;
					ValaCCodeMemberAccess* _tmp155_ = NULL;
					_tmp151_ = _result_;
					_tmp152_ = inst;
					_tmp153_ = size_cname;
					_tmp154_ = vala_ccode_member_access_new (_tmp152_, _tmp153_, FALSE);
					_tmp155_ = _tmp154_;
					vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp151_, (ValaCCodeExpression*) _tmp155_);
					_vala_ccode_node_unref0 (_tmp155_);
				}
				_g_free0 (size_cname);
			}
		} else {
			gboolean _tmp156_ = FALSE;
			gboolean _tmp157_ = FALSE;
			ValaDelegateType* _tmp158_ = NULL;
			_tmp158_ = delegate_type;
			if (_tmp158_ != NULL) {
				ValaDelegateType* _tmp159_ = NULL;
				ValaDelegate* _tmp160_ = NULL;
				ValaDelegate* _tmp161_ = NULL;
				gboolean _tmp162_ = FALSE;
				gboolean _tmp163_ = FALSE;
				_tmp159_ = delegate_type;
				_tmp160_ = vala_delegate_type_get_delegate_symbol (_tmp159_);
				_tmp161_ = _tmp160_;
				_tmp162_ = vala_delegate_get_has_target (_tmp161_);
				_tmp163_ = _tmp162_;
				_tmp157_ = _tmp163_;
			} else {
				_tmp157_ = FALSE;
			}
			if (_tmp157_) {
				ValaField* _tmp164_ = NULL;
				gboolean _tmp165_ = FALSE;
				_tmp164_ = field;
				_tmp165_ = vala_ccode_base_module_get_ccode_delegate_target ((ValaCodeNode*) _tmp164_);
				_tmp156_ = _tmp165_;
			} else {
				_tmp156_ = FALSE;
			}
			if (_tmp156_) {
				gchar* target_cname = NULL;
				ValaField* _tmp166_ = NULL;
				gchar* _tmp167_ = NULL;
				gchar* target_destroy_notify_cname = NULL;
				ValaField* _tmp168_ = NULL;
				gchar* _tmp169_ = NULL;
				gchar* _tmp170_ = NULL;
				gchar* _tmp171_ = NULL;
				gchar* _tmp172_ = NULL;
				ValaField* _tmp173_ = NULL;
				ValaSymbol* _tmp174_ = NULL;
				ValaSymbol* _tmp175_ = NULL;
				gboolean _tmp176_ = FALSE;
				_tmp166_ = field;
				_tmp167_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp166_);
				target_cname = _tmp167_;
				_tmp168_ = field;
				_tmp169_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp168_);
				_tmp170_ = _tmp169_;
				_tmp171_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp170_);
				_tmp172_ = _tmp171_;
				_g_free0 (_tmp170_);
				target_destroy_notify_cname = _tmp172_;
				_tmp173_ = field;
				_tmp174_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp173_);
				_tmp175_ = _tmp174_;
				_tmp176_ = vala_typesymbol_is_reference_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp175_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
				if (_tmp176_) {
					ValaGLibValue* _tmp177_ = NULL;
					ValaCCodeExpression* _tmp178_ = NULL;
					const gchar* _tmp179_ = NULL;
					ValaCCodeMemberAccess* _tmp180_ = NULL;
					ValaGLibValue* _tmp181_ = NULL;
					ValaDataType* _tmp182_ = NULL;
					ValaDataType* _tmp183_ = NULL;
					gboolean _tmp184_ = FALSE;
					_tmp177_ = _result_;
					_tmp178_ = inst;
					_tmp179_ = target_cname;
					_tmp180_ = vala_ccode_member_access_new_pointer (_tmp178_, _tmp179_);
					_vala_ccode_node_unref0 (_tmp177_->delegate_target_cvalue);
					_tmp177_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp180_;
					_tmp181_ = _result_;
					_tmp182_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp181_);
					_tmp183_ = _tmp182_;
					_tmp184_ = vala_data_type_is_disposable (_tmp183_);
					if (_tmp184_) {
						ValaGLibValue* _tmp185_ = NULL;
						ValaCCodeExpression* _tmp186_ = NULL;
						const gchar* _tmp187_ = NULL;
						ValaCCodeMemberAccess* _tmp188_ = NULL;
						_tmp185_ = _result_;
						_tmp186_ = inst;
						_tmp187_ = target_destroy_notify_cname;
						_tmp188_ = vala_ccode_member_access_new_pointer (_tmp186_, _tmp187_);
						_vala_ccode_node_unref0 (_tmp185_->delegate_target_destroy_notify_cvalue);
						_tmp185_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp188_;
					}
				} else {
					ValaGLibValue* _tmp189_ = NULL;
					ValaCCodeExpression* _tmp190_ = NULL;
					const gchar* _tmp191_ = NULL;
					ValaCCodeMemberAccess* _tmp192_ = NULL;
					ValaGLibValue* _tmp193_ = NULL;
					ValaDataType* _tmp194_ = NULL;
					ValaDataType* _tmp195_ = NULL;
					gboolean _tmp196_ = FALSE;
					_tmp189_ = _result_;
					_tmp190_ = inst;
					_tmp191_ = target_cname;
					_tmp192_ = vala_ccode_member_access_new (_tmp190_, _tmp191_, FALSE);
					_vala_ccode_node_unref0 (_tmp189_->delegate_target_cvalue);
					_tmp189_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp192_;
					_tmp193_ = _result_;
					_tmp194_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp193_);
					_tmp195_ = _tmp194_;
					_tmp196_ = vala_data_type_is_disposable (_tmp195_);
					if (_tmp196_) {
						ValaGLibValue* _tmp197_ = NULL;
						ValaCCodeExpression* _tmp198_ = NULL;
						const gchar* _tmp199_ = NULL;
						ValaCCodeMemberAccess* _tmp200_ = NULL;
						_tmp197_ = _result_;
						_tmp198_ = inst;
						_tmp199_ = target_destroy_notify_cname;
						_tmp200_ = vala_ccode_member_access_new (_tmp198_, _tmp199_, FALSE);
						_vala_ccode_node_unref0 (_tmp197_->delegate_target_destroy_notify_cvalue);
						_tmp197_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp200_;
					}
				}
				_g_free0 (target_destroy_notify_cname);
				_g_free0 (target_cname);
			}
		}
		_vala_ccode_node_unref0 (inst);
		_vala_code_node_unref0 (cl);
		_vala_code_node_unref0 (instance_target_type);
		_vala_ccode_node_unref0 (pub_inst);
	} else {
		ValaField* _tmp201_ = NULL;
		ValaMemberBinding _tmp202_ = 0;
		ValaMemberBinding _tmp203_ = 0;
		_tmp201_ = field;
		_tmp202_ = vala_field_get_binding (_tmp201_);
		_tmp203_ = _tmp202_;
		if (_tmp203_ == VALA_MEMBER_BINDING_CLASS) {
			ValaClass* cl = NULL;
			ValaField* _tmp204_ = NULL;
			ValaSymbol* _tmp205_ = NULL;
			ValaSymbol* _tmp206_ = NULL;
			ValaClass* _tmp207_ = NULL;
			ValaCCodeFunctionCall* cast = NULL;
			ValaClass* _tmp208_ = NULL;
			gchar* _tmp209_ = NULL;
			gchar* _tmp210_ = NULL;
			gchar* _tmp211_ = NULL;
			gchar* _tmp212_ = NULL;
			ValaCCodeIdentifier* _tmp213_ = NULL;
			ValaCCodeIdentifier* _tmp214_ = NULL;
			ValaCCodeFunctionCall* _tmp215_ = NULL;
			ValaCCodeFunctionCall* _tmp216_ = NULL;
			ValaCCodeExpression* klass = NULL;
			ValaTargetValue* _tmp217_ = NULL;
			ValaCCodeFunctionCall* _tmp241_ = NULL;
			ValaCCodeExpression* _tmp242_ = NULL;
			ValaField* _tmp243_ = NULL;
			ValaSymbolAccessibility _tmp244_ = 0;
			ValaSymbolAccessibility _tmp245_ = 0;
			_tmp204_ = field;
			_tmp205_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp204_);
			_tmp206_ = _tmp205_;
			_tmp207_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp206_, VALA_TYPE_CLASS, ValaClass));
			cl = _tmp207_;
			_tmp208_ = cl;
			_tmp209_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp208_, NULL);
			_tmp210_ = _tmp209_;
			_tmp211_ = g_strconcat (_tmp210_, "_CLASS", NULL);
			_tmp212_ = _tmp211_;
			_tmp213_ = vala_ccode_identifier_new (_tmp212_);
			_tmp214_ = _tmp213_;
			_tmp215_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp214_);
			_tmp216_ = _tmp215_;
			_vala_ccode_node_unref0 (_tmp214_);
			_g_free0 (_tmp212_);
			_g_free0 (_tmp210_);
			cast = _tmp216_;
			_tmp217_ = instance;
			if (_tmp217_ == NULL) {
				ValaDataType* _tmp218_ = NULL;
				ValaDataType* _tmp219_ = NULL;
				gboolean _tmp220_ = FALSE;
				_tmp218_ = vala_ccode_base_module_get_this_type ((ValaCCodeBaseModule*) self);
				_tmp219_ = _tmp218_;
				_tmp220_ = _tmp219_ == NULL;
				_vala_code_node_unref0 (_tmp219_);
				if (_tmp220_) {
					ValaCCodeIdentifier* _tmp221_ = NULL;
					_tmp221_ = vala_ccode_identifier_new ("klass");
					_vala_ccode_node_unref0 (klass);
					klass = (ValaCCodeExpression*) _tmp221_;
				} else {
					ValaCCodeFunctionCall* k = NULL;
					ValaCCodeIdentifier* _tmp222_ = NULL;
					ValaCCodeIdentifier* _tmp223_ = NULL;
					ValaCCodeFunctionCall* _tmp224_ = NULL;
					ValaCCodeFunctionCall* _tmp225_ = NULL;
					ValaCCodeFunctionCall* _tmp226_ = NULL;
					ValaCCodeIdentifier* _tmp227_ = NULL;
					ValaCCodeIdentifier* _tmp228_ = NULL;
					ValaCCodeFunctionCall* _tmp229_ = NULL;
					ValaCCodeExpression* _tmp230_ = NULL;
					_tmp222_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
					_tmp223_ = _tmp222_;
					_tmp224_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp223_);
					_tmp225_ = _tmp224_;
					_vala_ccode_node_unref0 (_tmp223_);
					k = _tmp225_;
					_tmp226_ = k;
					_tmp227_ = vala_ccode_identifier_new ("self");
					_tmp228_ = _tmp227_;
					vala_ccode_function_call_add_argument (_tmp226_, (ValaCCodeExpression*) _tmp228_);
					_vala_ccode_node_unref0 (_tmp228_);
					_tmp229_ = k;
					_tmp230_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp229_);
					_vala_ccode_node_unref0 (klass);
					klass = _tmp230_;
					_vala_ccode_node_unref0 (k);
				}
			} else {
				ValaCCodeFunctionCall* k = NULL;
				ValaCCodeIdentifier* _tmp231_ = NULL;
				ValaCCodeIdentifier* _tmp232_ = NULL;
				ValaCCodeFunctionCall* _tmp233_ = NULL;
				ValaCCodeFunctionCall* _tmp234_ = NULL;
				ValaCCodeFunctionCall* _tmp235_ = NULL;
				ValaTargetValue* _tmp236_ = NULL;
				ValaCCodeExpression* _tmp237_ = NULL;
				ValaCCodeExpression* _tmp238_ = NULL;
				ValaCCodeFunctionCall* _tmp239_ = NULL;
				ValaCCodeExpression* _tmp240_ = NULL;
				_tmp231_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
				_tmp232_ = _tmp231_;
				_tmp233_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp232_);
				_tmp234_ = _tmp233_;
				_vala_ccode_node_unref0 (_tmp232_);
				k = _tmp234_;
				_tmp235_ = k;
				_tmp236_ = instance;
				_tmp237_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp236_);
				_tmp238_ = _tmp237_;
				vala_ccode_function_call_add_argument (_tmp235_, _tmp238_);
				_vala_ccode_node_unref0 (_tmp238_);
				_tmp239_ = k;
				_tmp240_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp239_);
				_vala_ccode_node_unref0 (klass);
				klass = _tmp240_;
				_vala_ccode_node_unref0 (k);
			}
			_tmp241_ = cast;
			_tmp242_ = klass;
			vala_ccode_function_call_add_argument (_tmp241_, _tmp242_);
			_tmp243_ = field;
			_tmp244_ = vala_symbol_get_access ((ValaSymbol*) _tmp243_);
			_tmp245_ = _tmp244_;
			if (_tmp245_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
				ValaCCodeFunctionCall* ccall = NULL;
				ValaClass* _tmp246_ = NULL;
				gchar* _tmp247_ = NULL;
				gchar* _tmp248_ = NULL;
				gchar* _tmp249_ = NULL;
				gchar* _tmp250_ = NULL;
				ValaCCodeIdentifier* _tmp251_ = NULL;
				ValaCCodeIdentifier* _tmp252_ = NULL;
				ValaCCodeFunctionCall* _tmp253_ = NULL;
				ValaCCodeFunctionCall* _tmp254_ = NULL;
				ValaCCodeFunctionCall* _tmp255_ = NULL;
				ValaCCodeExpression* _tmp256_ = NULL;
				ValaGLibValue* _tmp257_ = NULL;
				ValaCCodeFunctionCall* _tmp258_ = NULL;
				ValaField* _tmp259_ = NULL;
				gchar* _tmp260_ = NULL;
				gchar* _tmp261_ = NULL;
				ValaCCodeMemberAccess* _tmp262_ = NULL;
				_tmp246_ = cl;
				_tmp247_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp246_, NULL);
				_tmp248_ = _tmp247_;
				_tmp249_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp248_);
				_tmp250_ = _tmp249_;
				_tmp251_ = vala_ccode_identifier_new (_tmp250_);
				_tmp252_ = _tmp251_;
				_tmp253_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp252_);
				_tmp254_ = _tmp253_;
				_vala_ccode_node_unref0 (_tmp252_);
				_g_free0 (_tmp250_);
				_g_free0 (_tmp248_);
				ccall = _tmp254_;
				_tmp255_ = ccall;
				_tmp256_ = klass;
				vala_ccode_function_call_add_argument (_tmp255_, _tmp256_);
				_tmp257_ = _result_;
				_tmp258_ = ccall;
				_tmp259_ = field;
				_tmp260_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp259_);
				_tmp261_ = _tmp260_;
				_tmp262_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp258_, _tmp261_);
				_vala_ccode_node_unref0 (_tmp257_->cvalue);
				_tmp257_->cvalue = (ValaCCodeExpression*) _tmp262_;
				_g_free0 (_tmp261_);
				_vala_ccode_node_unref0 (ccall);
			} else {
				ValaGLibValue* _tmp263_ = NULL;
				ValaCCodeFunctionCall* _tmp264_ = NULL;
				ValaField* _tmp265_ = NULL;
				gchar* _tmp266_ = NULL;
				gchar* _tmp267_ = NULL;
				ValaCCodeMemberAccess* _tmp268_ = NULL;
				_tmp263_ = _result_;
				_tmp264_ = cast;
				_tmp265_ = field;
				_tmp266_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp265_);
				_tmp267_ = _tmp266_;
				_tmp268_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp264_, _tmp267_);
				_vala_ccode_node_unref0 (_tmp263_->cvalue);
				_tmp263_->cvalue = (ValaCCodeExpression*) _tmp268_;
				_g_free0 (_tmp267_);
			}
			_vala_ccode_node_unref0 (klass);
			_vala_ccode_node_unref0 (cast);
			_vala_code_node_unref0 (cl);
		} else {
			ValaField* _tmp269_ = NULL;
			ValaCCodeFile* _tmp270_ = NULL;
			ValaGLibValue* _tmp271_ = NULL;
			ValaField* _tmp272_ = NULL;
			gchar* _tmp273_ = NULL;
			gchar* _tmp274_ = NULL;
			ValaCCodeIdentifier* _tmp275_ = NULL;
			gboolean _tmp276_ = FALSE;
			ValaArrayType* _tmp277_ = NULL;
			_tmp269_ = field;
			_tmp270_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_base_module_generate_field_declaration ((ValaCCodeBaseModule*) self, _tmp269_, _tmp270_);
			_tmp271_ = _result_;
			_tmp272_ = field;
			_tmp273_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp272_);
			_tmp274_ = _tmp273_;
			_tmp275_ = vala_ccode_identifier_new (_tmp274_);
			_vala_ccode_node_unref0 (_tmp271_->cvalue);
			_tmp271_->cvalue = (ValaCCodeExpression*) _tmp275_;
			_g_free0 (_tmp274_);
			_tmp277_ = array_type;
			if (_tmp277_ != NULL) {
				ValaField* _tmp278_ = NULL;
				gboolean _tmp279_ = FALSE;
				_tmp278_ = field;
				_tmp279_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp278_);
				_tmp276_ = _tmp279_;
			} else {
				_tmp276_ = FALSE;
			}
			if (_tmp276_) {
				gboolean _tmp301_ = FALSE;
				ValaArrayType* _tmp302_ = NULL;
				gint _tmp303_ = 0;
				gint _tmp304_ = 0;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp280_ = FALSE;
						_tmp280_ = TRUE;
						while (TRUE) {
							gint _tmp282_ = 0;
							ValaArrayType* _tmp283_ = NULL;
							gint _tmp284_ = 0;
							gint _tmp285_ = 0;
							gchar* length_cname = NULL;
							ValaField* _tmp286_ = NULL;
							gchar* _tmp287_ = NULL;
							gchar* _tmp288_ = NULL;
							gboolean _tmp289_ = FALSE;
							ValaGLibValue* _tmp297_ = NULL;
							const gchar* _tmp298_ = NULL;
							ValaCCodeIdentifier* _tmp299_ = NULL;
							ValaCCodeIdentifier* _tmp300_ = NULL;
							if (!_tmp280_) {
								gint _tmp281_ = 0;
								_tmp281_ = dim;
								dim = _tmp281_ + 1;
							}
							_tmp280_ = FALSE;
							_tmp282_ = dim;
							_tmp283_ = array_type;
							_tmp284_ = vala_array_type_get_rank (_tmp283_);
							_tmp285_ = _tmp284_;
							if (!(_tmp282_ <= _tmp285_)) {
								break;
							}
							_tmp286_ = field;
							_tmp287_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp286_);
							_tmp288_ = _tmp287_;
							_tmp289_ = _tmp288_ != NULL;
							_g_free0 (_tmp288_);
							if (_tmp289_) {
								ValaField* _tmp290_ = NULL;
								gchar* _tmp291_ = NULL;
								_tmp290_ = field;
								_tmp291_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp290_);
								_g_free0 (length_cname);
								length_cname = _tmp291_;
							} else {
								ValaField* _tmp292_ = NULL;
								gchar* _tmp293_ = NULL;
								gchar* _tmp294_ = NULL;
								gint _tmp295_ = 0;
								gchar* _tmp296_ = NULL;
								_tmp292_ = field;
								_tmp293_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp292_);
								_tmp294_ = _tmp293_;
								_tmp295_ = dim;
								_tmp296_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp294_, _tmp295_);
								_g_free0 (length_cname);
								length_cname = _tmp296_;
								_g_free0 (_tmp294_);
							}
							_tmp297_ = _result_;
							_tmp298_ = length_cname;
							_tmp299_ = vala_ccode_identifier_new (_tmp298_);
							_tmp300_ = _tmp299_;
							vala_glib_value_append_array_length_cvalue (_tmp297_, (ValaCCodeExpression*) _tmp300_);
							_vala_ccode_node_unref0 (_tmp300_);
							_g_free0 (length_cname);
						}
					}
				}
				_tmp302_ = array_type;
				_tmp303_ = vala_array_type_get_rank (_tmp302_);
				_tmp304_ = _tmp303_;
				if (_tmp304_ == 1) {
					ValaField* _tmp305_ = NULL;
					gboolean _tmp306_ = FALSE;
					_tmp305_ = field;
					_tmp306_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp305_);
					_tmp301_ = _tmp306_;
				} else {
					_tmp301_ = FALSE;
				}
				if (_tmp301_) {
					ValaGLibValue* _tmp307_ = NULL;
					ValaField* _tmp308_ = NULL;
					gchar* _tmp309_ = NULL;
					gchar* _tmp310_ = NULL;
					gchar* _tmp311_ = NULL;
					gchar* _tmp312_ = NULL;
					ValaCCodeIdentifier* _tmp313_ = NULL;
					ValaCCodeIdentifier* _tmp314_ = NULL;
					_tmp307_ = _result_;
					_tmp308_ = field;
					_tmp309_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp308_);
					_tmp310_ = _tmp309_;
					_tmp311_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp310_);
					_tmp312_ = _tmp311_;
					_tmp313_ = vala_ccode_identifier_new (_tmp312_);
					_tmp314_ = _tmp313_;
					vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp307_, (ValaCCodeExpression*) _tmp314_);
					_vala_ccode_node_unref0 (_tmp314_);
					_g_free0 (_tmp312_);
					_g_free0 (_tmp310_);
				}
			} else {
				gboolean _tmp315_ = FALSE;
				gboolean _tmp316_ = FALSE;
				ValaDelegateType* _tmp317_ = NULL;
				_tmp317_ = delegate_type;
				if (_tmp317_ != NULL) {
					ValaDelegateType* _tmp318_ = NULL;
					ValaDelegate* _tmp319_ = NULL;
					ValaDelegate* _tmp320_ = NULL;
					gboolean _tmp321_ = FALSE;
					gboolean _tmp322_ = FALSE;
					_tmp318_ = delegate_type;
					_tmp319_ = vala_delegate_type_get_delegate_symbol (_tmp318_);
					_tmp320_ = _tmp319_;
					_tmp321_ = vala_delegate_get_has_target (_tmp320_);
					_tmp322_ = _tmp321_;
					_tmp316_ = _tmp322_;
				} else {
					_tmp316_ = FALSE;
				}
				if (_tmp316_) {
					ValaField* _tmp323_ = NULL;
					gboolean _tmp324_ = FALSE;
					_tmp323_ = field;
					_tmp324_ = vala_ccode_base_module_get_ccode_delegate_target ((ValaCodeNode*) _tmp323_);
					_tmp315_ = _tmp324_;
				} else {
					_tmp315_ = FALSE;
				}
				if (_tmp315_) {
					ValaGLibValue* _tmp325_ = NULL;
					ValaField* _tmp326_ = NULL;
					gchar* _tmp327_ = NULL;
					gchar* _tmp328_ = NULL;
					ValaCCodeIdentifier* _tmp329_ = NULL;
					ValaGLibValue* _tmp330_ = NULL;
					ValaDataType* _tmp331_ = NULL;
					ValaDataType* _tmp332_ = NULL;
					gboolean _tmp333_ = FALSE;
					_tmp325_ = _result_;
					_tmp326_ = field;
					_tmp327_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp326_);
					_tmp328_ = _tmp327_;
					_tmp329_ = vala_ccode_identifier_new (_tmp328_);
					_vala_ccode_node_unref0 (_tmp325_->delegate_target_cvalue);
					_tmp325_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp329_;
					_g_free0 (_tmp328_);
					_tmp330_ = _result_;
					_tmp331_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp330_);
					_tmp332_ = _tmp331_;
					_tmp333_ = vala_data_type_is_disposable (_tmp332_);
					if (_tmp333_) {
						ValaGLibValue* _tmp334_ = NULL;
						ValaField* _tmp335_ = NULL;
						gchar* _tmp336_ = NULL;
						gchar* _tmp337_ = NULL;
						gchar* _tmp338_ = NULL;
						gchar* _tmp339_ = NULL;
						ValaCCodeIdentifier* _tmp340_ = NULL;
						_tmp334_ = _result_;
						_tmp335_ = field;
						_tmp336_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp335_);
						_tmp337_ = _tmp336_;
						_tmp338_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp337_);
						_tmp339_ = _tmp338_;
						_tmp340_ = vala_ccode_identifier_new (_tmp339_);
						_vala_ccode_node_unref0 (_tmp334_->delegate_target_destroy_notify_cvalue);
						_tmp334_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp340_;
						_g_free0 (_tmp339_);
						_g_free0 (_tmp337_);
					}
				}
			}
		}
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	_vala_code_node_unref0 (value_type);
	return result;
}


static gchar string_get (const gchar* self, glong index) {
	gchar result = '\0';
	glong _tmp0_ = 0L;
	gchar _tmp1_ = '\0';
	g_return_val_if_fail (self != NULL, '\0');
	_tmp0_ = index;
	_tmp1_ = ((gchar*) self)[_tmp0_];
	result = _tmp1_;
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_variable (ValaCCodeBaseModule* base, ValaVariable* variable, ValaTargetValue* value) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaTargetValue* _tmp0_ = NULL;
	ValaGLibValue* _tmp1_ = NULL;
	ValaArrayType* array_type = NULL;
	ValaGLibValue* _tmp2_ = NULL;
	ValaDataType* _tmp3_ = NULL;
	ValaDataType* _tmp4_ = NULL;
	ValaArrayType* _tmp5_ = NULL;
	ValaDelegateType* delegate_type = NULL;
	ValaGLibValue* _tmp6_ = NULL;
	ValaDataType* _tmp7_ = NULL;
	ValaDataType* _tmp8_ = NULL;
	ValaDelegateType* _tmp9_ = NULL;
	ValaArrayType* _tmp10_ = NULL;
	ValaGLibValue* _tmp99_ = NULL;
	ValaDataType* _tmp100_ = NULL;
	ValaDataType* _tmp101_ = NULL;
	gboolean use_temp = FALSE;
	ValaGLibValue* _tmp102_ = NULL;
	ValaDataType* _tmp103_ = NULL;
	ValaDataType* _tmp104_ = NULL;
	gboolean _tmp105_ = FALSE;
	gboolean _tmp106_ = FALSE;
	ValaVariable* _tmp107_ = NULL;
	gboolean _tmp111_ = FALSE;
	ValaVariable* _tmp112_ = NULL;
	gboolean _tmp113_ = FALSE;
	gboolean _tmp114_ = FALSE;
	ValaLocalVariable* local = NULL;
	ValaVariable* _tmp119_ = NULL;
	ValaLocalVariable* _tmp120_ = NULL;
	gboolean _tmp121_ = FALSE;
	ValaLocalVariable* _tmp122_ = NULL;
	gboolean _tmp127_ = FALSE;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (variable != NULL, NULL);
	g_return_val_if_fail (value != NULL, NULL);
	_tmp0_ = value;
	_tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
	_result_ = _tmp1_;
	_tmp2_ = _result_;
	_tmp3_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp4_) : NULL);
	array_type = _tmp5_;
	_tmp6_ = _result_;
	_tmp7_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp8_) : NULL);
	delegate_type = _tmp9_;
	_tmp10_ = array_type;
	if (_tmp10_ != NULL) {
		ValaArrayType* _tmp11_ = NULL;
		gboolean _tmp12_ = FALSE;
		gboolean _tmp13_ = FALSE;
		ValaGLibValue* _tmp84_ = NULL;
		_tmp11_ = array_type;
		_tmp12_ = vala_array_type_get_fixed_length (_tmp11_);
		_tmp13_ = _tmp12_;
		if (_tmp13_) {
			ValaGLibValue* _tmp14_ = NULL;
			ValaGLibValue* _tmp15_ = NULL;
			ValaArrayType* _tmp16_ = NULL;
			ValaExpression* _tmp17_ = NULL;
			ValaExpression* _tmp18_ = NULL;
			gchar* _tmp19_ = NULL;
			gchar* _tmp20_ = NULL;
			ValaCCodeConstant* _tmp21_ = NULL;
			ValaCCodeConstant* _tmp22_ = NULL;
			ValaGLibValue* _tmp23_ = NULL;
			_tmp14_ = _result_;
			_vala_iterable_unref0 (_tmp14_->array_length_cvalues);
			_tmp14_->array_length_cvalues = NULL;
			_tmp15_ = _result_;
			_tmp16_ = array_type;
			_tmp17_ = vala_array_type_get_length (_tmp16_);
			_tmp18_ = _tmp17_;
			_tmp19_ = vala_code_node_to_string ((ValaCodeNode*) _tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = vala_ccode_constant_new (_tmp20_);
			_tmp22_ = _tmp21_;
			vala_glib_value_append_array_length_cvalue (_tmp15_, (ValaCCodeExpression*) _tmp22_);
			_vala_ccode_node_unref0 (_tmp22_);
			_g_free0 (_tmp20_);
			_tmp23_ = _result_;
			_tmp23_->lvalue = FALSE;
		} else {
			ValaVariable* _tmp24_ = NULL;
			gboolean _tmp25_ = FALSE;
			_tmp24_ = variable;
			_tmp25_ = vala_ccode_base_module_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp24_);
			if (_tmp25_) {
				ValaCCodeFunctionCall* len_call = NULL;
				ValaCCodeIdentifier* _tmp26_ = NULL;
				ValaCCodeIdentifier* _tmp27_ = NULL;
				ValaCCodeFunctionCall* _tmp28_ = NULL;
				ValaCCodeFunctionCall* _tmp29_ = NULL;
				ValaCCodeFunctionCall* _tmp30_ = NULL;
				ValaGLibValue* _tmp31_ = NULL;
				ValaCCodeExpression* _tmp32_ = NULL;
				ValaGLibValue* _tmp33_ = NULL;
				ValaGLibValue* _tmp34_ = NULL;
				ValaCCodeFunctionCall* _tmp35_ = NULL;
				ValaGLibValue* _tmp36_ = NULL;
				((ValaCCodeBaseModule*) self)->requires_array_length = TRUE;
				_tmp26_ = vala_ccode_identifier_new ("_vala_array_length");
				_tmp27_ = _tmp26_;
				_tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
				_tmp29_ = _tmp28_;
				_vala_ccode_node_unref0 (_tmp27_);
				len_call = _tmp29_;
				_tmp30_ = len_call;
				_tmp31_ = _result_;
				_tmp32_ = _tmp31_->cvalue;
				vala_ccode_function_call_add_argument (_tmp30_, _tmp32_);
				_tmp33_ = _result_;
				_vala_iterable_unref0 (_tmp33_->array_length_cvalues);
				_tmp33_->array_length_cvalues = NULL;
				_tmp34_ = _result_;
				_tmp35_ = len_call;
				vala_glib_value_append_array_length_cvalue (_tmp34_, (ValaCCodeExpression*) _tmp35_);
				_tmp36_ = _result_;
				_tmp36_->lvalue = FALSE;
				_vala_ccode_node_unref0 (len_call);
			} else {
				ValaVariable* _tmp37_ = NULL;
				gchar* _tmp38_ = NULL;
				gchar* _tmp39_ = NULL;
				gboolean _tmp40_ = FALSE;
				_tmp37_ = variable;
				_tmp38_ = vala_ccode_base_module_get_ccode_array_length_expr ((ValaCodeNode*) _tmp37_);
				_tmp39_ = _tmp38_;
				_tmp40_ = _tmp39_ != NULL;
				_g_free0 (_tmp39_);
				if (_tmp40_) {
					ValaCCodeConstant* length_expr = NULL;
					ValaVariable* _tmp41_ = NULL;
					gchar* _tmp42_ = NULL;
					gchar* _tmp43_ = NULL;
					ValaCCodeConstant* _tmp44_ = NULL;
					ValaCCodeConstant* _tmp45_ = NULL;
					ValaGLibValue* _tmp46_ = NULL;
					ValaGLibValue* _tmp47_ = NULL;
					ValaCCodeConstant* _tmp48_ = NULL;
					ValaGLibValue* _tmp49_ = NULL;
					_tmp41_ = variable;
					_tmp42_ = vala_ccode_base_module_get_ccode_array_length_expr ((ValaCodeNode*) _tmp41_);
					_tmp43_ = _tmp42_;
					_tmp44_ = vala_ccode_constant_new (_tmp43_);
					_tmp45_ = _tmp44_;
					_g_free0 (_tmp43_);
					length_expr = _tmp45_;
					_tmp46_ = _result_;
					_vala_iterable_unref0 (_tmp46_->array_length_cvalues);
					_tmp46_->array_length_cvalues = NULL;
					_tmp47_ = _result_;
					_tmp48_ = length_expr;
					vala_glib_value_append_array_length_cvalue (_tmp47_, (ValaCCodeExpression*) _tmp48_);
					_tmp49_ = _result_;
					_tmp49_->lvalue = FALSE;
					_vala_ccode_node_unref0 (length_expr);
				} else {
					ValaVariable* _tmp50_ = NULL;
					gboolean _tmp51_ = FALSE;
					_tmp50_ = variable;
					_tmp51_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp50_);
					if (!_tmp51_) {
						ValaGLibValue* _tmp52_ = NULL;
						ValaGLibValue* _tmp62_ = NULL;
						_tmp52_ = _result_;
						_vala_iterable_unref0 (_tmp52_->array_length_cvalues);
						_tmp52_->array_length_cvalues = NULL;
						{
							gint dim = 0;
							dim = 1;
							{
								gboolean _tmp53_ = FALSE;
								_tmp53_ = TRUE;
								while (TRUE) {
									gint _tmp55_ = 0;
									ValaArrayType* _tmp56_ = NULL;
									gint _tmp57_ = 0;
									gint _tmp58_ = 0;
									ValaGLibValue* _tmp59_ = NULL;
									ValaCCodeConstant* _tmp60_ = NULL;
									ValaCCodeConstant* _tmp61_ = NULL;
									if (!_tmp53_) {
										gint _tmp54_ = 0;
										_tmp54_ = dim;
										dim = _tmp54_ + 1;
									}
									_tmp53_ = FALSE;
									_tmp55_ = dim;
									_tmp56_ = array_type;
									_tmp57_ = vala_array_type_get_rank (_tmp56_);
									_tmp58_ = _tmp57_;
									if (!(_tmp55_ <= _tmp58_)) {
										break;
									}
									_tmp59_ = _result_;
									_tmp60_ = vala_ccode_constant_new ("-1");
									_tmp61_ = _tmp60_;
									vala_glib_value_append_array_length_cvalue (_tmp59_, (ValaCCodeExpression*) _tmp61_);
									_vala_ccode_node_unref0 (_tmp61_);
								}
							}
						}
						_tmp62_ = _result_;
						_tmp62_->lvalue = FALSE;
					} else {
						ValaVariable* _tmp63_ = NULL;
						gchar* _tmp64_ = NULL;
						gchar* _tmp65_ = NULL;
						gboolean _tmp66_ = FALSE;
						_tmp63_ = variable;
						_tmp64_ = vala_ccode_base_module_get_ccode_array_length_type ((ValaCodeNode*) _tmp63_);
						_tmp65_ = _tmp64_;
						_tmp66_ = _tmp65_ != NULL;
						_g_free0 (_tmp65_);
						if (_tmp66_) {
							ValaGLibValue* _tmp83_ = NULL;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp67_ = FALSE;
									_tmp67_ = TRUE;
									while (TRUE) {
										gint _tmp69_ = 0;
										ValaArrayType* _tmp70_ = NULL;
										gint _tmp71_ = 0;
										gint _tmp72_ = 0;
										ValaGLibValue* _tmp73_ = NULL;
										ValaList* _tmp74_ = NULL;
										gint _tmp75_ = 0;
										ValaGLibValue* _tmp76_ = NULL;
										ValaList* _tmp77_ = NULL;
										gint _tmp78_ = 0;
										gpointer _tmp79_ = NULL;
										ValaCCodeExpression* _tmp80_ = NULL;
										ValaCCodeCastExpression* _tmp81_ = NULL;
										ValaCCodeCastExpression* _tmp82_ = NULL;
										if (!_tmp67_) {
											gint _tmp68_ = 0;
											_tmp68_ = dim;
											dim = _tmp68_ + 1;
										}
										_tmp67_ = FALSE;
										_tmp69_ = dim;
										_tmp70_ = array_type;
										_tmp71_ = vala_array_type_get_rank (_tmp70_);
										_tmp72_ = _tmp71_;
										if (!(_tmp69_ <= _tmp72_)) {
											break;
										}
										_tmp73_ = _result_;
										_tmp74_ = _tmp73_->array_length_cvalues;
										_tmp75_ = dim;
										_tmp76_ = _result_;
										_tmp77_ = _tmp76_->array_length_cvalues;
										_tmp78_ = dim;
										_tmp79_ = vala_list_get (_tmp77_, _tmp78_ - 1);
										_tmp80_ = (ValaCCodeExpression*) _tmp79_;
										_tmp81_ = vala_ccode_cast_expression_new (_tmp80_, "gint");
										_tmp82_ = _tmp81_;
										vala_list_set (_tmp74_, _tmp75_ - 1, (ValaCCodeExpression*) _tmp82_);
										_vala_ccode_node_unref0 (_tmp82_);
										_vala_ccode_node_unref0 (_tmp80_);
									}
								}
							}
							_tmp83_ = _result_;
							_tmp83_->lvalue = FALSE;
						}
					}
				}
			}
		}
		_tmp84_ = _result_;
		_vala_ccode_node_unref0 (_tmp84_->array_size_cvalue);
		_tmp84_->array_size_cvalue = NULL;
	} else {
		ValaDelegateType* _tmp85_ = NULL;
		_tmp85_ = delegate_type;
		if (_tmp85_ != NULL) {
			gboolean _tmp86_ = FALSE;
			ValaDelegateType* _tmp87_ = NULL;
			ValaDelegate* _tmp88_ = NULL;
			ValaDelegate* _tmp89_ = NULL;
			gboolean _tmp90_ = FALSE;
			gboolean _tmp91_ = FALSE;
			ValaGLibValue* _tmp96_ = NULL;
			ValaCCodeConstant* _tmp97_ = NULL;
			ValaGLibValue* _tmp98_ = NULL;
			_tmp87_ = delegate_type;
			_tmp88_ = vala_delegate_type_get_delegate_symbol (_tmp87_);
			_tmp89_ = _tmp88_;
			_tmp90_ = vala_delegate_get_has_target (_tmp89_);
			_tmp91_ = _tmp90_;
			if (!_tmp91_) {
				_tmp86_ = TRUE;
			} else {
				ValaVariable* _tmp92_ = NULL;
				gboolean _tmp93_ = FALSE;
				_tmp92_ = variable;
				_tmp93_ = vala_ccode_base_module_get_ccode_delegate_target ((ValaCodeNode*) _tmp92_);
				_tmp86_ = !_tmp93_;
			}
			if (_tmp86_) {
				ValaGLibValue* _tmp94_ = NULL;
				ValaCCodeConstant* _tmp95_ = NULL;
				_tmp94_ = _result_;
				_tmp95_ = vala_ccode_constant_new ("NULL");
				_vala_ccode_node_unref0 (_tmp94_->delegate_target_cvalue);
				_tmp94_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp95_;
			}
			_tmp96_ = _result_;
			_tmp97_ = vala_ccode_constant_new ("NULL");
			_vala_ccode_node_unref0 (_tmp96_->delegate_target_destroy_notify_cvalue);
			_tmp96_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp97_;
			_tmp98_ = _result_;
			_tmp98_->lvalue = FALSE;
		}
	}
	_tmp99_ = _result_;
	_tmp100_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp99_);
	_tmp101_ = _tmp100_;
	vala_data_type_set_value_owned (_tmp101_, FALSE);
	use_temp = TRUE;
	_tmp102_ = _result_;
	_tmp103_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp102_);
	_tmp104_ = _tmp103_;
	_tmp105_ = vala_ccode_base_module_is_lvalue_access_allowed ((ValaCCodeBaseModule*) self, _tmp104_);
	if (!_tmp105_) {
		use_temp = FALSE;
	}
	_tmp107_ = variable;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp107_, VALA_TYPE_PARAMETER)) {
		ValaVariable* _tmp108_ = NULL;
		const gchar* _tmp109_ = NULL;
		const gchar* _tmp110_ = NULL;
		_tmp108_ = variable;
		_tmp109_ = vala_symbol_get_name ((ValaSymbol*) _tmp108_);
		_tmp110_ = _tmp109_;
		_tmp106_ = g_strcmp0 (_tmp110_, "this") == 0;
	} else {
		_tmp106_ = FALSE;
	}
	if (_tmp106_) {
		use_temp = FALSE;
	}
	_tmp112_ = variable;
	_tmp113_ = vala_variable_get_single_assignment (_tmp112_);
	_tmp114_ = _tmp113_;
	if (_tmp114_) {
		ValaGLibValue* _tmp115_ = NULL;
		ValaDataType* _tmp116_ = NULL;
		ValaDataType* _tmp117_ = NULL;
		gboolean _tmp118_ = FALSE;
		_tmp115_ = _result_;
		_tmp116_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp115_);
		_tmp117_ = _tmp116_;
		_tmp118_ = vala_data_type_is_real_non_null_struct_type (_tmp117_);
		_tmp111_ = !_tmp118_;
	} else {
		_tmp111_ = FALSE;
	}
	if (_tmp111_) {
		use_temp = FALSE;
	}
	_tmp119_ = variable;
	_tmp120_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp119_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp119_) : NULL);
	local = _tmp120_;
	_tmp122_ = local;
	if (_tmp122_ != NULL) {
		ValaLocalVariable* _tmp123_ = NULL;
		const gchar* _tmp124_ = NULL;
		const gchar* _tmp125_ = NULL;
		gchar _tmp126_ = '\0';
		_tmp123_ = local;
		_tmp124_ = vala_symbol_get_name ((ValaSymbol*) _tmp123_);
		_tmp125_ = _tmp124_;
		_tmp126_ = string_get (_tmp125_, (glong) 0);
		_tmp121_ = _tmp126_ == '.';
	} else {
		_tmp121_ = FALSE;
	}
	if (_tmp121_) {
		use_temp = FALSE;
	}
	_tmp127_ = use_temp;
	if (_tmp127_) {
		ValaGLibValue* _tmp128_ = NULL;
		ValaVariable* _tmp129_ = NULL;
		ValaTargetValue* _tmp130_ = NULL;
		_tmp128_ = _result_;
		_tmp129_ = variable;
		_tmp130_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp128_, (ValaCodeNode*) _tmp129_, NULL);
		_vala_target_value_unref0 (_result_);
		_result_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (local);
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_local (ValaCodeGenerator* base, ValaLocalVariable* local) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaLocalVariable* _tmp0_ = NULL;
	ValaLocalVariable* _tmp1_ = NULL;
	ValaTargetValue* _tmp2_ = NULL;
	ValaTargetValue* _tmp3_ = NULL;
	ValaTargetValue* _tmp4_ = NULL;
	ValaTargetValue* _tmp5_ = NULL;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (local != NULL, NULL);
	_tmp0_ = local;
	_tmp1_ = local;
	_tmp2_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_base_module_load_variable ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp0_, _tmp3_);
	_tmp5_ = _tmp4_;
	_vala_target_value_unref0 (_tmp3_);
	result = _tmp5_;
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_parameter (ValaCodeGenerator* base, ValaParameter* param) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaParameter* _tmp0_ = NULL;
	ValaParameter* _tmp1_ = NULL;
	ValaTargetValue* _tmp2_ = NULL;
	ValaTargetValue* _tmp3_ = NULL;
	ValaTargetValue* _tmp4_ = NULL;
	ValaTargetValue* _tmp5_ = NULL;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (param != NULL, NULL);
	_tmp0_ = param;
	_tmp1_ = param;
	_tmp2_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_base_module_load_variable ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp0_, _tmp3_);
	_tmp5_ = _tmp4_;
	_vala_target_value_unref0 (_tmp3_);
	result = _tmp5_;
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_this_parameter (ValaCCodeBaseModule* base, ValaTypeSymbol* sym) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaParameter* param = NULL;
	ValaTypeSymbol* _tmp0_ = NULL;
	ValaDataType* _tmp1_ = NULL;
	ValaDataType* _tmp2_ = NULL;
	ValaParameter* _tmp3_ = NULL;
	ValaParameter* _tmp4_ = NULL;
	ValaTargetValue* _tmp5_ = NULL;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (sym != NULL, NULL);
	_tmp0_ = sym;
	_tmp1_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_parameter_new ("this", _tmp2_, NULL);
	_tmp4_ = _tmp3_;
	_vala_code_node_unref0 (_tmp2_);
	param = _tmp4_;
	_tmp5_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, param);
	result = _tmp5_;
	_vala_code_node_unref0 (param);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_field (ValaCodeGenerator* base, ValaField* field, ValaTargetValue* instance) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaField* _tmp0_ = NULL;
	ValaField* _tmp1_ = NULL;
	ValaTargetValue* _tmp2_ = NULL;
	ValaTargetValue* _tmp3_ = NULL;
	ValaTargetValue* _tmp4_ = NULL;
	ValaTargetValue* _tmp5_ = NULL;
	ValaTargetValue* _tmp6_ = NULL;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (field != NULL, NULL);
	_tmp0_ = field;
	_tmp1_ = field;
	_tmp2_ = instance;
	_tmp3_ = vala_ccode_base_module_get_field_cvalue ((ValaCCodeBaseModule*) self, _tmp1_, _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_base_module_load_variable ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp0_, _tmp4_);
	_tmp6_ = _tmp5_;
	_vala_target_value_unref0 (_tmp4_);
	result = _tmp6_;
	return result;
}


ValaCCodeMemberAccessModule* vala_ccode_member_access_module_construct (GType object_type) {
	ValaCCodeMemberAccessModule* self = NULL;
	self = (ValaCCodeMemberAccessModule*) vala_ccode_control_flow_module_construct (object_type);
	return self;
}


static void vala_ccode_member_access_module_class_init (ValaCCodeMemberAccessModuleClass * klass) {
	vala_ccode_member_access_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->visit_member_access = vala_ccode_member_access_module_real_visit_member_access;
	((ValaCCodeBaseModuleClass *) klass)->get_local_cvalue = vala_ccode_member_access_module_real_get_local_cvalue;
	((ValaCCodeBaseModuleClass *) klass)->get_parameter_cvalue = vala_ccode_member_access_module_real_get_parameter_cvalue;
	((ValaCCodeBaseModuleClass *) klass)->get_field_cvalue = vala_ccode_member_access_module_real_get_field_cvalue;
	((ValaCCodeBaseModuleClass *) klass)->load_variable = vala_ccode_member_access_module_real_load_variable;
	((ValaCodeGeneratorClass *) klass)->load_local = vala_ccode_member_access_module_real_load_local;
	((ValaCodeGeneratorClass *) klass)->load_parameter = vala_ccode_member_access_module_real_load_parameter;
	((ValaCCodeBaseModuleClass *) klass)->load_this_parameter = vala_ccode_member_access_module_real_load_this_parameter;
	((ValaCodeGeneratorClass *) klass)->load_field = vala_ccode_member_access_module_real_load_field;
}


static void vala_ccode_member_access_module_instance_init (ValaCCodeMemberAccessModule * self) {
}


GType vala_ccode_member_access_module_get_type (void) {
	static volatile gsize vala_ccode_member_access_module_type_id__volatile = 0;
	if (g_once_init_enter (&vala_ccode_member_access_module_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeMemberAccessModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_member_access_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeMemberAccessModule), 0, (GInstanceInitFunc) vala_ccode_member_access_module_instance_init, NULL };
		GType vala_ccode_member_access_module_type_id;
		vala_ccode_member_access_module_type_id = g_type_register_static (VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, "ValaCCodeMemberAccessModule", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&vala_ccode_member_access_module_type_id__volatile, vala_ccode_member_access_module_type_id);
	}
	return vala_ccode_member_access_module_type_id__volatile;
}



