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

valaccodememberaccessmodule.c

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

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

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

struct _ValaCCodeStructModuleClass {
      ValaCCodeBaseModuleClass parent_class;
};

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

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

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

struct _ValaCCodeControlFlowModuleClass {
      ValaCCodeMethodModuleClass parent_class;
};

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

struct _ValaCCodeMemberAccessModuleClass {
      ValaCCodeControlFlowModuleClass parent_class;
};

struct _ValaGLibValue {
      ValaTargetValue parent_instance;
      ValaGLibValuePrivate * priv;
      ValaCCodeExpression* cvalue;
      ValaList* array_length_cvalues;
      ValaCCodeExpression* array_size_cvalue;
      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);
ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self);
void vala_ccode_base_module_set_cvalue (ValaCCodeBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue);
gboolean vala_ccode_base_module_method_has_wrapper (ValaCCodeBaseModule* self, ValaMethod* method);
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, gboolean always_init);
ValaCCodeExpression* vala_ccode_base_module_get_variable_cexpression (ValaCCodeBaseModule* self, const gchar* name);
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);
gint vala_ccode_base_module_get_block_id (ValaCCodeBaseModule* self, ValaBlock* b);
ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
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);
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);
gchar* vala_ccode_base_module_get_dynamic_property_getter_cname (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
gboolean vala_ccode_base_module_requires_copy (ValaCCodeBaseModule* self, ValaDataType* type);
ValaTargetValue* vala_ccode_base_module_get_local_cvalue (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_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);
ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue);
GType vala_glib_value_get_type (void) G_GNUC_CONST;
gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name);
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);
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_parameter_array_length_cname (ValaCCodeBaseModule* self, ValaParameter* param, gint dim);
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);
ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value);
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);
void vala_ccode_base_module_set_array_size_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaCCodeExpression* cvalue);
void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space);
static ValaTargetValue* vala_ccode_member_access_module_load_variable (ValaCCodeMemberAccessModule* self, ValaVariable* variable, ValaTargetValue* value);
static ValaTargetValue* vala_ccode_member_access_module_real_load_local (ValaCodeGenerator* base, ValaLocalVariable* local);
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);
ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, 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 void vala_ccode_member_access_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr) {
      ValaCCodeMemberAccessModule * self;
      ValaCCodeExpression* pub_inst;
      ValaExpression* _tmp0_ = NULL;
      ValaDataType* _tmp3_ = NULL;
      ValaDataType* _tmp4_;
      ValaArrayType* _tmp5_;
      ValaArrayType* array_type;
      ValaDataType* _tmp6_ = NULL;
      ValaDataType* _tmp7_;
      ValaDelegateType* _tmp8_;
      ValaDelegateType* delegate_type;
      ValaSymbol* _tmp9_ = NULL;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_if_fail (expr != NULL);
      pub_inst = NULL;
      _tmp0_ = vala_member_access_get_inner (expr);
      if (_tmp0_ != NULL) {
            ValaExpression* _tmp1_ = NULL;
            ValaCCodeExpression* _tmp2_ = NULL;
            _tmp1_ = vala_member_access_get_inner (expr);
            _tmp2_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp1_);
            _vala_ccode_node_unref0 (pub_inst);
            pub_inst = _tmp2_;
      }
      _tmp3_ = vala_expression_get_value_type ((ValaExpression*) expr);
      _tmp4_ = _tmp3_;
      _tmp5_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp4_) ? ((ValaArrayType*) _tmp4_) : NULL);
      array_type = _tmp5_;
      _tmp6_ = vala_expression_get_value_type ((ValaExpression*) expr);
      _tmp7_ = _tmp6_;
      _tmp8_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp7_) ? ((ValaDelegateType*) _tmp7_) : NULL);
      delegate_type = _tmp8_;
      _tmp9_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
      if (VALA_IS_METHOD (_tmp9_)) {
            ValaSymbol* _tmp10_ = NULL;
            ValaMethod* _tmp11_;
            ValaMethod* m;
            gboolean _tmp12_ = FALSE;
            gboolean _tmp13_ = FALSE;
            ValaExpression* _tmp18_ = NULL;
            ValaMethod* _tmp57_ = NULL;
            ValaCCodeConstant* _tmp105_ = NULL;
            ValaCCodeConstant* _tmp106_;
            ValaMemberBinding _tmp107_;
            _tmp10_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
            _tmp11_ = _vala_code_node_ref0 (VALA_METHOD (_tmp10_));
            m = _tmp11_;
            if (VALA_IS_DYNAMIC_METHOD (m)) {
                  _tmp13_ = TRUE;
            } else {
                  _tmp13_ = VALA_IS_ARRAY_MOVE_METHOD (m);
            }
            if (_tmp13_) {
                  _tmp12_ = TRUE;
            } else {
                  _tmp12_ = VALA_IS_ARRAY_RESIZE_METHOD (m);
            }
            if (!_tmp12_) {
                  gboolean _tmp14_ = FALSE;
                  gboolean _tmp15_;
                  vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->cfile);
                  _tmp15_ = vala_symbol_get_external ((ValaSymbol*) m);
                  if (!_tmp15_) {
                        gboolean _tmp16_;
                        _tmp16_ = vala_symbol_get_external_package ((ValaSymbol*) m);
                        _tmp14_ = _tmp16_;
                  } else {
                        _tmp14_ = FALSE;
                  }
                  if (_tmp14_) {
                        gboolean _tmp17_;
                        _tmp17_ = vala_ccode_base_module_add_generated_external_symbol ((ValaCCodeBaseModule*) self, (ValaSymbol*) m);
                        if (_tmp17_) {
                              vala_code_visitor_visit_method ((ValaCodeVisitor*) self, m);
                        }
                  }
            }
            _tmp18_ = vala_member_access_get_inner (expr);
            if (VALA_IS_BASE_ACCESS (_tmp18_)) {
                  ValaMethod* _tmp19_ = NULL;
                  _tmp19_ = vala_method_get_base_method (m);
                  if (_tmp19_ != NULL) {
                        ValaMethod* _tmp20_ = NULL;
                        ValaSymbol* _tmp21_ = NULL;
                        ValaClass* _tmp22_;
                        ValaClass* base_class;
                        gchar* _tmp23_ = NULL;
                        gchar* _tmp24_;
                        gchar* _tmp25_ = NULL;
                        gchar* _tmp26_;
                        ValaCCodeIdentifier* _tmp27_ = NULL;
                        ValaCCodeIdentifier* _tmp28_;
                        ValaCCodeFunctionCall* _tmp29_ = NULL;
                        ValaCCodeFunctionCall* _tmp30_;
                        ValaCCodeFunctionCall* vcast;
                        ValaClass* _tmp31_ = NULL;
                        gchar* _tmp32_ = NULL;
                        gchar* _tmp33_;
                        gchar* _tmp34_ = NULL;
                        gchar* _tmp35_;
                        ValaCCodeIdentifier* _tmp36_ = NULL;
                        ValaCCodeIdentifier* _tmp37_;
                        const gchar* _tmp38_ = NULL;
                        ValaCCodeMemberAccess* _tmp39_ = NULL;
                        ValaCCodeMemberAccess* _tmp40_;
                        _tmp20_ = vala_method_get_base_method (m);
                        _tmp21_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp20_);
                        _tmp22_ = _vala_code_node_ref0 (VALA_CLASS (_tmp21_));
                        base_class = _tmp22_;
                        _tmp23_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) base_class, NULL);
                        _tmp24_ = _tmp23_;
                        _tmp25_ = g_strdup_printf ("%s_CLASS", _tmp24_);
                        _tmp26_ = _tmp25_;
                        _tmp27_ = vala_ccode_identifier_new (_tmp26_);
                        _tmp28_ = _tmp27_;
                        _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_);
                        _tmp30_ = _tmp29_;
                        _vala_ccode_node_unref0 (_tmp28_);
                        _g_free0 (_tmp26_);
                        _g_free0 (_tmp24_);
                        vcast = _tmp30_;
                        _tmp31_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
                        _tmp32_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) _tmp31_, NULL);
                        _tmp33_ = _tmp32_;
                        _tmp34_ = g_strdup_printf ("%s_parent_class", _tmp33_);
                        _tmp35_ = _tmp34_;
                        _tmp36_ = vala_ccode_identifier_new (_tmp35_);
                        _tmp37_ = _tmp36_;
                        vala_ccode_function_call_add_argument (vcast, (ValaCCodeExpression*) _tmp37_);
                        _vala_ccode_node_unref0 (_tmp37_);
                        _g_free0 (_tmp35_);
                        _g_free0 (_tmp33_);
                        _tmp38_ = vala_method_get_vfunc_name (m);
                        _tmp39_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) vcast, _tmp38_);
                        _tmp40_ = _tmp39_;
                        vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp40_);
                        _vala_ccode_node_unref0 (_tmp40_);
                        _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* _tmp41_ = NULL;
                        _tmp41_ = vala_method_get_base_interface_method (m);
                        if (_tmp41_ != NULL) {
                              ValaMethod* _tmp42_ = NULL;
                              ValaSymbol* _tmp43_ = NULL;
                              ValaInterface* _tmp44_;
                              ValaInterface* base_iface;
                              ValaClass* _tmp45_ = NULL;
                              gchar* _tmp46_ = NULL;
                              gchar* _tmp47_;
                              gchar* _tmp48_ = NULL;
                              gchar* _tmp49_;
                              gchar* _tmp50_ = NULL;
                              gchar* _tmp51_;
                              gchar* parent_iface_var;
                              ValaCCodeIdentifier* _tmp52_ = NULL;
                              ValaCCodeIdentifier* _tmp53_;
                              const gchar* _tmp54_ = NULL;
                              ValaCCodeMemberAccess* _tmp55_ = NULL;
                              ValaCCodeMemberAccess* _tmp56_;
                              _tmp42_ = vala_method_get_base_interface_method (m);
                              _tmp43_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp42_);
                              _tmp44_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp43_));
                              base_iface = _tmp44_;
                              _tmp45_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
                              _tmp46_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) _tmp45_, NULL);
                              _tmp47_ = _tmp46_;
                              _tmp48_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) base_iface, NULL);
                              _tmp49_ = _tmp48_;
                              _tmp50_ = g_strdup_printf ("%s_%s_parent_iface", _tmp47_, _tmp49_);
                              _tmp51_ = _tmp50_;
                              _g_free0 (_tmp49_);
                              _g_free0 (_tmp47_);
                              parent_iface_var = _tmp51_;
                              _tmp52_ = vala_ccode_identifier_new (parent_iface_var);
                              _tmp53_ = _tmp52_;
                              _tmp54_ = vala_method_get_vfunc_name (m);
                              _tmp55_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp53_, _tmp54_);
                              _tmp56_ = _tmp55_;
                              vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp56_);
                              _vala_ccode_node_unref0 (_tmp56_);
                              _vala_ccode_node_unref0 (_tmp53_);
                              _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;
                        }
                  }
            }
            _tmp57_ = vala_method_get_base_method (m);
            if (_tmp57_ != NULL) {
                  ValaMethod* _tmp58_ = NULL;
                  gboolean _tmp59_;
                  _tmp58_ = vala_method_get_base_method (m);
                  _tmp59_ = vala_ccode_base_module_method_has_wrapper ((ValaCCodeBaseModule*) self, _tmp58_);
                  if (!_tmp59_) {
                        ValaCCodeExpression* _tmp60_;
                        ValaCCodeExpression* inst;
                        gboolean _tmp61_ = FALSE;
                        ValaExpression* _tmp62_ = NULL;
                        ValaMethod* _tmp72_ = NULL;
                        ValaSymbol* _tmp73_ = NULL;
                        ValaClass* _tmp74_;
                        ValaClass* base_class;
                        gchar* _tmp75_ = NULL;
                        gchar* _tmp76_;
                        gchar* _tmp77_ = NULL;
                        gchar* _tmp78_;
                        ValaCCodeIdentifier* _tmp79_ = NULL;
                        ValaCCodeIdentifier* _tmp80_;
                        ValaCCodeFunctionCall* _tmp81_ = NULL;
                        ValaCCodeFunctionCall* _tmp82_;
                        ValaCCodeFunctionCall* vclass;
                        const gchar* _tmp83_ = NULL;
                        ValaCCodeMemberAccess* _tmp84_ = NULL;
                        ValaCCodeMemberAccess* _tmp85_;
                        _tmp60_ = _vala_ccode_node_ref0 (pub_inst);
                        inst = _tmp60_;
                        _tmp62_ = vala_member_access_get_inner (expr);
                        if (_tmp62_ != NULL) {
                              ValaExpression* _tmp63_ = NULL;
                              gboolean _tmp64_;
                              _tmp63_ = vala_member_access_get_inner (expr);
                              _tmp64_ = vala_expression_is_pure (_tmp63_);
                              _tmp61_ = !_tmp64_;
                        } else {
                              _tmp61_ = FALSE;
                        }
                        if (_tmp61_) {
                              ValaExpression* _tmp65_ = NULL;
                              ValaDataType* _tmp66_ = NULL;
                              ValaLocalVariable* _tmp67_ = NULL;
                              ValaLocalVariable* temp_var;
                              const gchar* _tmp68_ = NULL;
                              ValaCCodeExpression* _tmp69_ = NULL;
                              ValaCCodeExpression* ctemp;
                              ValaCCodeAssignment* _tmp70_ = NULL;
                              ValaExpression* _tmp71_ = NULL;
                              _tmp65_ = vala_member_access_get_inner (expr);
                              _tmp66_ = vala_expression_get_value_type (_tmp65_);
                              _tmp67_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp66_, TRUE, NULL, FALSE);
                              temp_var = _tmp67_;
                              vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                              _tmp68_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                              _tmp69_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp68_);
                              ctemp = _tmp69_;
                              _tmp70_ = vala_ccode_assignment_new (ctemp, pub_inst, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                              _vala_ccode_node_unref0 (inst);
                              inst = (ValaCCodeExpression*) _tmp70_;
                              _tmp71_ = vala_member_access_get_inner (expr);
                              vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, _tmp71_, ctemp);
                              _vala_ccode_node_unref0 (ctemp);
                              _vala_code_node_unref0 (temp_var);
                        }
                        _tmp72_ = vala_method_get_base_method (m);
                        _tmp73_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp72_);
                        _tmp74_ = _vala_code_node_ref0 (VALA_CLASS (_tmp73_));
                        base_class = _tmp74_;
                        _tmp75_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) base_class, NULL);
                        _tmp76_ = _tmp75_;
                        _tmp77_ = g_strdup_printf ("%s_GET_CLASS", _tmp76_);
                        _tmp78_ = _tmp77_;
                        _tmp79_ = vala_ccode_identifier_new (_tmp78_);
                        _tmp80_ = _tmp79_;
                        _tmp81_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp80_);
                        _tmp82_ = _tmp81_;
                        _vala_ccode_node_unref0 (_tmp80_);
                        _g_free0 (_tmp78_);
                        _g_free0 (_tmp76_);
                        vclass = _tmp82_;
                        vala_ccode_function_call_add_argument (vclass, inst);
                        _tmp83_ = vala_symbol_get_name ((ValaSymbol*) m);
                        _tmp84_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) vclass, _tmp83_);
                        _tmp85_ = _tmp84_;
                        vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp85_);
                        _vala_ccode_node_unref0 (_tmp85_);
                        _vala_ccode_node_unref0 (vclass);
                        _vala_code_node_unref0 (base_class);
                        _vala_ccode_node_unref0 (inst);
                  } else {
                        ValaMethod* _tmp86_ = NULL;
                        gchar* _tmp87_ = NULL;
                        gchar* _tmp88_;
                        ValaCCodeIdentifier* _tmp89_ = NULL;
                        ValaCCodeIdentifier* _tmp90_;
                        _tmp86_ = vala_method_get_base_method (m);
                        _tmp87_ = vala_method_get_cname (_tmp86_);
                        _tmp88_ = _tmp87_;
                        _tmp89_ = vala_ccode_identifier_new (_tmp88_);
                        _tmp90_ = _tmp89_;
                        vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp90_);
                        _vala_ccode_node_unref0 (_tmp90_);
                        _g_free0 (_tmp88_);
                  }
            } else {
                  ValaMethod* _tmp91_ = NULL;
                  _tmp91_ = vala_method_get_base_interface_method (m);
                  if (_tmp91_ != NULL) {
                        ValaMethod* _tmp92_ = NULL;
                        gchar* _tmp93_ = NULL;
                        gchar* _tmp94_;
                        ValaCCodeIdentifier* _tmp95_ = NULL;
                        ValaCCodeIdentifier* _tmp96_;
                        _tmp92_ = vala_method_get_base_interface_method (m);
                        _tmp93_ = vala_method_get_cname (_tmp92_);
                        _tmp94_ = _tmp93_;
                        _tmp95_ = vala_ccode_identifier_new (_tmp94_);
                        _tmp96_ = _tmp95_;
                        vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp96_);
                        _vala_ccode_node_unref0 (_tmp96_);
                        _g_free0 (_tmp94_);
                  } else {
                        if (VALA_IS_CREATION_METHOD (m)) {
                              gchar* _tmp97_ = NULL;
                              gchar* _tmp98_;
                              ValaCCodeIdentifier* _tmp99_ = NULL;
                              ValaCCodeIdentifier* _tmp100_;
                              _tmp97_ = vala_method_get_real_cname (m);
                              _tmp98_ = _tmp97_;
                              _tmp99_ = vala_ccode_identifier_new (_tmp98_);
                              _tmp100_ = _tmp99_;
                              vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp100_);
                              _vala_ccode_node_unref0 (_tmp100_);
                              _g_free0 (_tmp98_);
                        } else {
                              gchar* _tmp101_ = NULL;
                              gchar* _tmp102_;
                              ValaCCodeIdentifier* _tmp103_ = NULL;
                              ValaCCodeIdentifier* _tmp104_;
                              _tmp101_ = vala_method_get_cname (m);
                              _tmp102_ = _tmp101_;
                              _tmp103_ = vala_ccode_identifier_new (_tmp102_);
                              _tmp104_ = _tmp103_;
                              vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp104_);
                              _vala_ccode_node_unref0 (_tmp104_);
                              _g_free0 (_tmp102_);
                        }
                  }
            }
            _tmp105_ = vala_ccode_constant_new ("NULL");
            _tmp106_ = _tmp105_;
            vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp106_);
            _vala_ccode_node_unref0 (_tmp106_);
            _tmp107_ = vala_method_get_binding (m);
            if (_tmp107_ == VALA_MEMBER_BINDING_STATIC) {
                  ValaCCodeConstant* _tmp108_ = NULL;
                  ValaCCodeConstant* _tmp109_;
                  _tmp108_ = vala_ccode_constant_new ("NULL");
                  _tmp109_ = _tmp108_;
                  vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp109_);
                  _vala_ccode_node_unref0 (_tmp109_);
            } else {
                  gboolean _tmp110_;
                  _tmp110_ = vala_method_get_is_async_callback (m);
                  if (_tmp110_) {
                        ValaMethod* _tmp111_ = NULL;
                        gboolean _tmp112_;
                        _tmp111_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
                        _tmp112_ = vala_method_get_closure (_tmp111_);
                        if (_tmp112_) {
                              ValaSymbol* _tmp113_ = NULL;
                              ValaBlock* _tmp114_ = NULL;
                              ValaBlock* _tmp115_;
                              ValaBlock* block;
                              gint _tmp116_;
                              gchar* _tmp117_ = NULL;
                              gchar* _tmp118_;
                              ValaCCodeExpression* _tmp119_ = NULL;
                              ValaCCodeExpression* _tmp120_;
                              ValaCCodeMemberAccess* _tmp121_ = NULL;
                              ValaCCodeMemberAccess* _tmp122_;
                              _tmp113_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
                              _tmp114_ = vala_subroutine_get_body ((ValaSubroutine*) VALA_METHOD (_tmp113_));
                              _tmp115_ = _vala_code_node_ref0 (_tmp114_);
                              block = _tmp115_;
                              _tmp116_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                              _tmp117_ = g_strdup_printf ("_data%d_", _tmp116_);
                              _tmp118_ = _tmp117_;
                              _tmp119_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp118_);
                              _tmp120_ = _tmp119_;
                              _tmp121_ = vala_ccode_member_access_new_pointer (_tmp120_, "_async_data_");
                              _tmp122_ = _tmp121_;
                              vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp122_);
                              _vala_ccode_node_unref0 (_tmp122_);
                              _vala_ccode_node_unref0 (_tmp120_);
                              _g_free0 (_tmp118_);
                              _vala_code_node_unref0 (block);
                        } else {
                              ValaCCodeIdentifier* _tmp123_ = NULL;
                              ValaCCodeIdentifier* _tmp124_;
                              _tmp123_ = vala_ccode_identifier_new ("data");
                              _tmp124_ = _tmp123_;
                              vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp124_);
                              _vala_ccode_node_unref0 (_tmp124_);
                        }
                  } else {
                        ValaExpression* _tmp125_ = NULL;
                        _tmp125_ = vala_member_access_get_inner (expr);
                        if (_tmp125_ != NULL) {
                              ValaExpression* _tmp126_ = NULL;
                              ValaCCodeExpression* _tmp127_ = NULL;
                              ValaCCodeExpression* delegate_target;
                              ValaDataType* _tmp128_ = NULL;
                              ValaDataType* _tmp129_;
                              ValaDelegateType* _tmp130_;
                              gboolean _tmp131_ = FALSE;
                              gboolean _tmp132_ = FALSE;
                              gboolean _tmp133_ = FALSE;
                              ValaDataType* _tmp134_ = NULL;
                              gboolean _tmp135_;
                              _tmp126_ = vala_member_access_get_inner (expr);
                              _tmp127_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp126_);
                              delegate_target = VALA_CCODE_EXPRESSION (_tmp127_);
                              _tmp128_ = vala_expression_get_target_type ((ValaExpression*) expr);
                              _tmp129_ = _tmp128_;
                              _tmp130_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp129_) ? ((ValaDelegateType*) _tmp129_) : NULL);
                              _vala_code_node_unref0 (delegate_type);
                              delegate_type = _tmp130_;
                              _tmp134_ = vala_expression_get_value_type ((ValaExpression*) expr);
                              _tmp135_ = vala_data_type_get_value_owned (_tmp134_);
                              if (_tmp135_) {
                                    _tmp133_ = TRUE;
                              } else {
                                    gboolean _tmp136_ = FALSE;
                                    if (delegate_type != NULL) {
                                          gboolean _tmp137_;
                                          _tmp137_ = vala_delegate_type_get_is_called_once (delegate_type);
                                          _tmp136_ = _tmp137_;
                                    } else {
                                          _tmp136_ = FALSE;
                                    }
                                    _tmp133_ = _tmp136_;
                              }
                              if (_tmp133_) {
                                    ValaExpression* _tmp138_ = NULL;
                                    ValaDataType* _tmp139_ = NULL;
                                    ValaTypeSymbol* _tmp140_ = NULL;
                                    _tmp138_ = vala_member_access_get_inner (expr);
                                    _tmp139_ = vala_expression_get_value_type (_tmp138_);
                                    _tmp140_ = vala_data_type_get_data_type (_tmp139_);
                                    _tmp132_ = _tmp140_ != NULL;
                              } else {
                                    _tmp132_ = FALSE;
                              }
                              if (_tmp132_) {
                                    ValaExpression* _tmp141_ = NULL;
                                    ValaDataType* _tmp142_ = NULL;
                                    ValaTypeSymbol* _tmp143_ = NULL;
                                    gboolean _tmp144_;
                                    _tmp141_ = vala_member_access_get_inner (expr);
                                    _tmp142_ = vala_expression_get_value_type (_tmp141_);
                                    _tmp143_ = vala_data_type_get_data_type (_tmp142_);
                                    _tmp144_ = vala_typesymbol_is_reference_counting (_tmp143_);
                                    _tmp131_ = _tmp144_;
                              } else {
                                    _tmp131_ = FALSE;
                              }
                              if (_tmp131_) {
                                    ValaExpression* _tmp145_ = NULL;
                                    ValaDataType* _tmp146_ = NULL;
                                    ValaSourceReference* _tmp147_ = NULL;
                                    ValaCCodeExpression* _tmp148_ = NULL;
                                    ValaCCodeExpression* _tmp149_;
                                    ValaCCodeFunctionCall* _tmp150_ = NULL;
                                    ValaCCodeFunctionCall* _tmp151_;
                                    ValaCCodeFunctionCall* ref_call;
                                    ValaCCodeExpression* _tmp152_;
                                    ValaExpression* _tmp153_ = NULL;
                                    ValaDataType* _tmp154_ = NULL;
                                    ValaCCodeExpression* _tmp155_ = NULL;
                                    ValaCCodeExpression* _tmp156_;
                                    _tmp145_ = vala_member_access_get_inner (expr);
                                    _tmp146_ = vala_expression_get_value_type (_tmp145_);
                                    _tmp147_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                                    _tmp148_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp146_, _tmp147_, FALSE);
                                    _tmp149_ = _tmp148_;
                                    _tmp150_ = vala_ccode_function_call_new (_tmp149_);
                                    _tmp151_ = _tmp150_;
                                    _vala_ccode_node_unref0 (_tmp149_);
                                    ref_call = _tmp151_;
                                    vala_ccode_function_call_add_argument (ref_call, delegate_target);
                                    _tmp152_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) ref_call);
                                    _vala_ccode_node_unref0 (delegate_target);
                                    delegate_target = _tmp152_;
                                    _tmp153_ = vala_member_access_get_inner (expr);
                                    _tmp154_ = vala_expression_get_value_type (_tmp153_);
                                    _tmp155_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp154_, FALSE);
                                    _tmp156_ = _tmp155_;
                                    vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, _tmp156_);
                                    _vala_ccode_node_unref0 (_tmp156_);
                                    _vala_ccode_node_unref0 (ref_call);
                              }
                              vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, delegate_target);
                              _vala_ccode_node_unref0 (delegate_target);
                        }
                  }
            }
            _vala_code_node_unref0 (m);
      } else {
            ValaSymbol* _tmp157_ = NULL;
            _tmp157_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
            if (VALA_IS_ARRAY_LENGTH_FIELD (_tmp157_)) {
                  gboolean _tmp158_ = FALSE;
                  ValaDataType* _tmp159_ = NULL;
                  ValaExpression* _tmp162_ = NULL;
                  ValaCCodeExpression* _tmp163_ = NULL;
                  ValaCCodeExpression* _tmp164_;
                  _tmp159_ = vala_expression_get_value_type ((ValaExpression*) expr);
                  if (VALA_IS_ARRAY_TYPE (_tmp159_)) {
                        ValaCodeNode* _tmp160_ = NULL;
                        _tmp160_ = vala_code_node_get_parent_node ((ValaCodeNode*) expr);
                        _tmp158_ = !VALA_IS_ELEMENT_ACCESS (_tmp160_);
                  } else {
                        _tmp158_ = FALSE;
                  }
                  if (_tmp158_) {
                        ValaSourceReference* _tmp161_ = NULL;
                        _tmp161_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                        vala_report_error (_tmp161_, "unsupported use of length field of multi-dimensional array");
                  }
                  _tmp162_ = vala_member_access_get_inner (expr);
                  _tmp163_ = vala_ccode_base_module_get_array_length_cexpression ((ValaCCodeBaseModule*) self, _tmp162_, 1);
                  _tmp164_ = _tmp163_;
                  vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, _tmp164_);
                  _vala_ccode_node_unref0 (_tmp164_);
            } else {
                  ValaSymbol* _tmp165_ = NULL;
                  _tmp165_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                  if (VALA_IS_FIELD (_tmp165_)) {
                        ValaSymbol* _tmp166_ = NULL;
                        ValaField* _tmp167_;
                        ValaField* field;
                        ValaTargetValue* _tmp168_ = NULL;
                        ValaExpression* _tmp169_ = NULL;
                        ValaTargetValue* _tmp172_ = NULL;
                        ValaTargetValue* _tmp173_;
                        _tmp166_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                        _tmp167_ = _vala_code_node_ref0 (VALA_FIELD (_tmp166_));
                        field = _tmp167_;
                        _tmp169_ = vala_member_access_get_inner (expr);
                        if (_tmp169_ != NULL) {
                              ValaExpression* _tmp170_ = NULL;
                              ValaTargetValue* _tmp171_ = NULL;
                              _tmp170_ = vala_member_access_get_inner (expr);
                              _tmp171_ = vala_expression_get_target_value (_tmp170_);
                              _tmp168_ = _tmp171_;
                        } else {
                              _tmp168_ = NULL;
                        }
                        _tmp172_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, field, _tmp168_);
                        _tmp173_ = _tmp172_;
                        vala_expression_set_target_value ((ValaExpression*) expr, _tmp173_);
                        _vala_target_value_unref0 (_tmp173_);
                        _vala_code_node_unref0 (field);
                  } else {
                        ValaSymbol* _tmp174_ = NULL;
                        _tmp174_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                        if (VALA_IS_ENUM_VALUE (_tmp174_)) {
                              ValaSymbol* _tmp175_ = NULL;
                              ValaEnumValue* _tmp176_;
                              ValaEnumValue* ev;
                              ValaSymbol* _tmp177_ = NULL;
                              gchar* _tmp178_ = NULL;
                              gchar* _tmp179_;
                              ValaCCodeConstant* _tmp180_ = NULL;
                              ValaCCodeConstant* _tmp181_;
                              _tmp175_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                              _tmp176_ = _vala_code_node_ref0 (VALA_ENUM_VALUE (_tmp175_));
                              ev = _tmp176_;
                              _tmp177_ = vala_symbol_get_parent_symbol ((ValaSymbol*) ev);
                              vala_ccode_base_module_generate_enum_declaration ((ValaCCodeBaseModule*) self, VALA_ENUM (_tmp177_), ((ValaCCodeBaseModule*) self)->cfile);
                              _tmp178_ = vala_constant_get_cname ((ValaConstant*) ev);
                              _tmp179_ = _tmp178_;
                              _tmp180_ = vala_ccode_constant_new (_tmp179_);
                              _tmp181_ = _tmp180_;
                              vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp181_);
                              _vala_ccode_node_unref0 (_tmp181_);
                              _g_free0 (_tmp179_);
                              _vala_code_node_unref0 (ev);
                        } else {
                              ValaSymbol* _tmp182_ = NULL;
                              _tmp182_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                              if (VALA_IS_CONSTANT (_tmp182_)) {
                                    ValaSymbol* _tmp183_ = NULL;
                                    ValaConstant* _tmp184_;
                                    ValaConstant* c;
                                    gboolean _tmp185_ = FALSE;
                                    gboolean _tmp186_ = FALSE;
                                    ValaSourceReference* _tmp187_ = NULL;
                                    gchar* _tmp193_ = NULL;
                                    gchar* fn;
                                    _tmp183_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                    _tmp184_ = _vala_code_node_ref0 (VALA_CONSTANT (_tmp183_));
                                    c = _tmp184_;
                                    _tmp187_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
                                    if (_tmp187_ != NULL) {
                                          ValaSourceReference* _tmp188_ = NULL;
                                          _tmp188_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                                          _tmp186_ = _tmp188_ != NULL;
                                    } else {
                                          _tmp186_ = FALSE;
                                    }
                                    if (_tmp186_) {
                                          ValaSourceReference* _tmp189_ = NULL;
                                          ValaSourceFile* _tmp190_ = NULL;
                                          ValaSourceReference* _tmp191_ = NULL;
                                          ValaSourceFile* _tmp192_ = NULL;
                                          _tmp189_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
                                          _tmp190_ = vala_source_reference_get_file (_tmp189_);
                                          _tmp191_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                                          _tmp192_ = vala_source_reference_get_file (_tmp191_);
                                          _tmp185_ = _tmp190_ == _tmp192_;
                                    } else {
                                          _tmp185_ = FALSE;
                                    }
                                    vala_ccode_base_module_generate_constant_declaration ((ValaCCodeBaseModule*) self, c, ((ValaCCodeBaseModule*) self)->cfile, _tmp185_);
                                    _tmp193_ = vala_symbol_get_full_name ((ValaSymbol*) c);
                                    fn = _tmp193_;
                                    if (g_strcmp0 (fn, "GLib.Log.FILE") == 0) {
                                          ValaSourceReference* _tmp194_ = NULL;
                                          ValaSourceFile* _tmp195_ = NULL;
                                          const gchar* _tmp196_ = NULL;
                                          gchar* _tmp197_ = NULL;
                                          gchar* s;
                                          gchar* _tmp198_ = NULL;
                                          gchar* _tmp199_;
                                          ValaCCodeConstant* _tmp200_ = NULL;
                                          ValaCCodeConstant* _tmp201_;
                                          _tmp194_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                                          _tmp195_ = vala_source_reference_get_file (_tmp194_);
                                          _tmp196_ = vala_source_file_get_filename (_tmp195_);
                                          _tmp197_ = g_path_get_basename (_tmp196_);
                                          s = _tmp197_;
                                          _tmp198_ = g_strdup_printf ("\"%s\"", s);
                                          _tmp199_ = _tmp198_;
                                          _tmp200_ = vala_ccode_constant_new (_tmp199_);
                                          _tmp201_ = _tmp200_;
                                          vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp201_);
                                          _vala_ccode_node_unref0 (_tmp201_);
                                          _g_free0 (_tmp199_);
                                          _g_free0 (s);
                                    } else {
                                          if (g_strcmp0 (fn, "GLib.Log.LINE") == 0) {
                                                ValaSourceReference* _tmp202_ = NULL;
                                                gint _tmp203_;
                                                gint i;
                                                gchar* _tmp204_ = NULL;
                                                gchar* _tmp205_;
                                                ValaCCodeConstant* _tmp206_ = NULL;
                                                ValaCCodeConstant* _tmp207_;
                                                _tmp202_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                                                _tmp203_ = vala_source_reference_get_first_line (_tmp202_);
                                                i = _tmp203_;
                                                _tmp204_ = g_strdup_printf ("%d", i);
                                                _tmp205_ = _tmp204_;
                                                _tmp206_ = vala_ccode_constant_new (_tmp205_);
                                                _tmp207_ = _tmp206_;
                                                vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp207_);
                                                _vala_ccode_node_unref0 (_tmp207_);
                                                _g_free0 (_tmp205_);
                                          } else {
                                                if (g_strcmp0 (fn, "GLib.Log.METHOD") == 0) {
                                                      gchar* _tmp208_;
                                                      gchar* s;
                                                      ValaMethod* _tmp209_ = NULL;
                                                      gchar* _tmp212_ = NULL;
                                                      gchar* _tmp213_;
                                                      ValaCCodeConstant* _tmp214_ = NULL;
                                                      ValaCCodeConstant* _tmp215_;
                                                      _tmp208_ = g_strdup ("");
                                                      s = _tmp208_;
                                                      _tmp209_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
                                                      if (_tmp209_ != NULL) {
                                                            ValaMethod* _tmp210_ = NULL;
                                                            gchar* _tmp211_ = NULL;
                                                            _tmp210_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
                                                            _tmp211_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp210_);
                                                            _g_free0 (s);
                                                            s = _tmp211_;
                                                      }
                                                      _tmp212_ = g_strdup_printf ("\"%s\"", s);
                                                      _tmp213_ = _tmp212_;
                                                      _tmp214_ = vala_ccode_constant_new (_tmp213_);
                                                      _tmp215_ = _tmp214_;
                                                      vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp215_);
                                                      _vala_ccode_node_unref0 (_tmp215_);
                                                      _g_free0 (_tmp213_);
                                                      _g_free0 (s);
                                                } else {
                                                      gchar* _tmp216_ = NULL;
                                                      gchar* _tmp217_;
                                                      ValaCCodeIdentifier* _tmp218_ = NULL;
                                                      ValaCCodeIdentifier* _tmp219_;
                                                      _tmp216_ = vala_constant_get_cname (c);
                                                      _tmp217_ = _tmp216_;
                                                      _tmp218_ = vala_ccode_identifier_new (_tmp217_);
                                                      _tmp219_ = _tmp218_;
                                                      vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp219_);
                                                      _vala_ccode_node_unref0 (_tmp219_);
                                                      _g_free0 (_tmp217_);
                                                }
                                          }
                                    }
                                    if (array_type != NULL) {
                                          ValaCCodeIdentifier* _tmp220_ = NULL;
                                          ValaCCodeIdentifier* _tmp221_;
                                          ValaCCodeFunctionCall* _tmp222_ = NULL;
                                          ValaCCodeFunctionCall* _tmp223_;
                                          ValaCCodeFunctionCall* ccall;
                                          gchar* _tmp224_ = NULL;
                                          gchar* _tmp225_;
                                          ValaCCodeIdentifier* _tmp226_ = NULL;
                                          ValaCCodeIdentifier* _tmp227_;
                                          _tmp220_ = vala_ccode_identifier_new ("G_N_ELEMENTS");
                                          _tmp221_ = _tmp220_;
                                          _tmp222_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp221_);
                                          _tmp223_ = _tmp222_;
                                          _vala_ccode_node_unref0 (_tmp221_);
                                          ccall = _tmp223_;
                                          _tmp224_ = vala_constant_get_cname (c);
                                          _tmp225_ = _tmp224_;
                                          _tmp226_ = vala_ccode_identifier_new (_tmp225_);
                                          _tmp227_ = _tmp226_;
                                          vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp227_);
                                          _vala_ccode_node_unref0 (_tmp227_);
                                          _g_free0 (_tmp225_);
                                          vala_ccode_base_module_append_array_length ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) ccall);
                                          _vala_ccode_node_unref0 (ccall);
                                    }
                                    _g_free0 (fn);
                                    _vala_code_node_unref0 (c);
                              } else {
                                    ValaSymbol* _tmp228_ = NULL;
                                    _tmp228_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                    if (VALA_IS_PROPERTY (_tmp228_)) {
                                          ValaSymbol* _tmp229_ = NULL;
                                          ValaProperty* _tmp230_;
                                          ValaProperty* prop;
                                          ValaExpression* _tmp236_ = NULL;
                                          gboolean _tmp289_ = FALSE;
                                          gboolean _tmp290_ = FALSE;
                                          gboolean _tmp291_ = FALSE;
                                          gboolean _tmp292_ = FALSE;
                                          gboolean _tmp293_ = FALSE;
                                          gboolean _tmp294_ = FALSE;
                                          ValaMemberBinding _tmp295_;
                                          _tmp229_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                          _tmp230_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp229_));
                                          prop = _tmp230_;
                                          if (!VALA_IS_DYNAMIC_PROPERTY (prop)) {
                                                ValaPropertyAccessor* _tmp231_ = NULL;
                                                gboolean _tmp232_ = FALSE;
                                                gboolean _tmp233_;
                                                _tmp231_ = vala_property_get_get_accessor (prop);
                                                vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp231_, ((ValaCCodeBaseModule*) self)->cfile);
                                                _tmp233_ = vala_symbol_get_external ((ValaSymbol*) prop);
                                                if (!_tmp233_) {
                                                      gboolean _tmp234_;
                                                      _tmp234_ = vala_symbol_get_external_package ((ValaSymbol*) prop);
                                                      _tmp232_ = _tmp234_;
                                                } else {
                                                      _tmp232_ = FALSE;
                                                }
                                                if (_tmp232_) {
                                                      gboolean _tmp235_;
                                                      _tmp235_ = vala_ccode_base_module_add_generated_external_symbol ((ValaCCodeBaseModule*) self, (ValaSymbol*) prop);
                                                      if (_tmp235_) {
                                                            vala_code_visitor_visit_property ((ValaCodeVisitor*) self, prop);
                                                      }
                                                }
                                          }
                                          _tmp236_ = vala_member_access_get_inner (expr);
                                          if (VALA_IS_BASE_ACCESS (_tmp236_)) {
                                                ValaProperty* _tmp237_ = NULL;
                                                _tmp237_ = vala_property_get_base_property (prop);
                                                if (_tmp237_ != NULL) {
                                                      ValaProperty* _tmp238_ = NULL;
                                                      ValaSymbol* _tmp239_ = NULL;
                                                      ValaClass* _tmp240_;
                                                      ValaClass* base_class;
                                                      gchar* _tmp241_ = NULL;
                                                      gchar* _tmp242_;
                                                      gchar* _tmp243_ = NULL;
                                                      gchar* _tmp244_;
                                                      ValaCCodeIdentifier* _tmp245_ = NULL;
                                                      ValaCCodeIdentifier* _tmp246_;
                                                      ValaCCodeFunctionCall* _tmp247_ = NULL;
                                                      ValaCCodeFunctionCall* _tmp248_;
                                                      ValaCCodeFunctionCall* vcast;
                                                      ValaClass* _tmp249_ = NULL;
                                                      gchar* _tmp250_ = NULL;
                                                      gchar* _tmp251_;
                                                      gchar* _tmp252_ = NULL;
                                                      gchar* _tmp253_;
                                                      ValaCCodeIdentifier* _tmp254_ = NULL;
                                                      ValaCCodeIdentifier* _tmp255_;
                                                      const gchar* _tmp256_ = NULL;
                                                      gchar* _tmp257_ = NULL;
                                                      gchar* _tmp258_;
                                                      ValaCCodeMemberAccess* _tmp259_ = NULL;
                                                      ValaCCodeMemberAccess* _tmp260_;
                                                      ValaCCodeFunctionCall* _tmp261_ = NULL;
                                                      ValaCCodeFunctionCall* _tmp262_;
                                                      ValaCCodeFunctionCall* ccall;
                                                      ValaExpression* _tmp263_ = NULL;
                                                      ValaCCodeExpression* _tmp264_ = NULL;
                                                      ValaCCodeExpression* _tmp265_;
                                                      _tmp238_ = vala_property_get_base_property (prop);
                                                      _tmp239_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp238_);
                                                      _tmp240_ = _vala_code_node_ref0 (VALA_CLASS (_tmp239_));
                                                      base_class = _tmp240_;
                                                      _tmp241_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) base_class, NULL);
                                                      _tmp242_ = _tmp241_;
                                                      _tmp243_ = g_strdup_printf ("%s_CLASS", _tmp242_);
                                                      _tmp244_ = _tmp243_;
                                                      _tmp245_ = vala_ccode_identifier_new (_tmp244_);
                                                      _tmp246_ = _tmp245_;
                                                      _tmp247_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp246_);
                                                      _tmp248_ = _tmp247_;
                                                      _vala_ccode_node_unref0 (_tmp246_);
                                                      _g_free0 (_tmp244_);
                                                      _g_free0 (_tmp242_);
                                                      vcast = _tmp248_;
                                                      _tmp249_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
                                                      _tmp250_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) _tmp249_, NULL);
                                                      _tmp251_ = _tmp250_;
                                                      _tmp252_ = g_strdup_printf ("%s_parent_class", _tmp251_);
                                                      _tmp253_ = _tmp252_;
                                                      _tmp254_ = vala_ccode_identifier_new (_tmp253_);
                                                      _tmp255_ = _tmp254_;
                                                      vala_ccode_function_call_add_argument (vcast, (ValaCCodeExpression*) _tmp255_);
                                                      _vala_ccode_node_unref0 (_tmp255_);
                                                      _g_free0 (_tmp253_);
                                                      _g_free0 (_tmp251_);
                                                      _tmp256_ = vala_symbol_get_name ((ValaSymbol*) prop);
                                                      _tmp257_ = g_strdup_printf ("get_%s", _tmp256_);
                                                      _tmp258_ = _tmp257_;
                                                      _tmp259_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) vcast, _tmp258_);
                                                      _tmp260_ = _tmp259_;
                                                      _tmp261_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp260_);
                                                      _tmp262_ = _tmp261_;
                                                      _vala_ccode_node_unref0 (_tmp260_);
                                                      _g_free0 (_tmp258_);
                                                      ccall = _tmp262_;
                                                      _tmp263_ = vala_member_access_get_inner (expr);
                                                      _tmp264_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp263_);
                                                      _tmp265_ = _tmp264_;
                                                      vala_ccode_function_call_add_argument (ccall, _tmp265_);
                                                      _vala_ccode_node_unref0 (_tmp265_);
                                                      vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) ccall);
                                                      _vala_ccode_node_unref0 (ccall);
                                                      _vala_ccode_node_unref0 (vcast);
                                                      _vala_code_node_unref0 (base_class);
                                                      _vala_code_node_unref0 (prop);
                                                      _vala_code_node_unref0 (delegate_type);
                                                      _vala_code_node_unref0 (array_type);
                                                      _vala_ccode_node_unref0 (pub_inst);
                                                      return;
                                                } else {
                                                      ValaProperty* _tmp266_ = NULL;
                                                      _tmp266_ = vala_property_get_base_interface_property (prop);
                                                      if (_tmp266_ != NULL) {
                                                            ValaProperty* _tmp267_ = NULL;
                                                            ValaSymbol* _tmp268_ = NULL;
                                                            ValaInterface* _tmp269_;
                                                            ValaInterface* base_iface;
                                                            ValaClass* _tmp270_ = NULL;
                                                            gchar* _tmp271_ = NULL;
                                                            gchar* _tmp272_;
                                                            gchar* _tmp273_ = NULL;
                                                            gchar* _tmp274_;
                                                            gchar* _tmp275_ = NULL;
                                                            gchar* _tmp276_;
                                                            gchar* parent_iface_var;
                                                            ValaCCodeIdentifier* _tmp277_ = NULL;
                                                            ValaCCodeIdentifier* _tmp278_;
                                                            const gchar* _tmp279_ = NULL;
                                                            gchar* _tmp280_ = NULL;
                                                            gchar* _tmp281_;
                                                            ValaCCodeMemberAccess* _tmp282_ = NULL;
                                                            ValaCCodeMemberAccess* _tmp283_;
                                                            ValaCCodeFunctionCall* _tmp284_ = NULL;
                                                            ValaCCodeFunctionCall* _tmp285_;
                                                            ValaCCodeFunctionCall* ccall;
                                                            ValaExpression* _tmp286_ = NULL;
                                                            ValaCCodeExpression* _tmp287_ = NULL;
                                                            ValaCCodeExpression* _tmp288_;
                                                            _tmp267_ = vala_property_get_base_interface_property (prop);
                                                            _tmp268_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp267_);
                                                            _tmp269_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp268_));
                                                            base_iface = _tmp269_;
                                                            _tmp270_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
                                                            _tmp271_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) _tmp270_, NULL);
                                                            _tmp272_ = _tmp271_;
                                                            _tmp273_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) base_iface, NULL);
                                                            _tmp274_ = _tmp273_;
                                                            _tmp275_ = g_strdup_printf ("%s_%s_parent_iface", _tmp272_, _tmp274_);
                                                            _tmp276_ = _tmp275_;
                                                            _g_free0 (_tmp274_);
                                                            _g_free0 (_tmp272_);
                                                            parent_iface_var = _tmp276_;
                                                            _tmp277_ = vala_ccode_identifier_new (parent_iface_var);
                                                            _tmp278_ = _tmp277_;
                                                            _tmp279_ = vala_symbol_get_name ((ValaSymbol*) prop);
                                                            _tmp280_ = g_strdup_printf ("get_%s", _tmp279_);
                                                            _tmp281_ = _tmp280_;
                                                            _tmp282_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp278_, _tmp281_);
                                                            _tmp283_ = _tmp282_;
                                                            _tmp284_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp283_);
                                                            _tmp285_ = _tmp284_;
                                                            _vala_ccode_node_unref0 (_tmp283_);
                                                            _g_free0 (_tmp281_);
                                                            _vala_ccode_node_unref0 (_tmp278_);
                                                            ccall = _tmp285_;
                                                            _tmp286_ = vala_member_access_get_inner (expr);
                                                            _tmp287_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp286_);
                                                            _tmp288_ = _tmp287_;
                                                            vala_ccode_function_call_add_argument (ccall, _tmp288_);
                                                            _vala_ccode_node_unref0 (_tmp288_);
                                                            vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) ccall);
                                                            _vala_ccode_node_unref0 (ccall);
                                                            _g_free0 (parent_iface_var);
                                                            _vala_code_node_unref0 (base_iface);
                                                            _vala_code_node_unref0 (prop);
                                                            _vala_code_node_unref0 (delegate_type);
                                                            _vala_code_node_unref0 (array_type);
                                                            _vala_ccode_node_unref0 (pub_inst);
                                                            return;
                                                      }
                                                }
                                          }
                                          _tmp295_ = vala_property_get_binding (prop);
                                          if (_tmp295_ == VALA_MEMBER_BINDING_INSTANCE) {
                                                ValaPropertyAccessor* _tmp296_ = NULL;
                                                gboolean _tmp297_;
                                                _tmp296_ = vala_property_get_get_accessor (prop);
                                                _tmp297_ = vala_property_accessor_get_automatic_body (_tmp296_);
                                                _tmp294_ = _tmp297_;
                                          } else {
                                                _tmp294_ = FALSE;
                                          }
                                          if (_tmp294_) {
                                                ValaTypeSymbol* _tmp298_ = NULL;
                                                ValaSymbol* _tmp299_ = NULL;
                                                _tmp298_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
                                                _tmp299_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
                                                _tmp293_ = VALA_SYMBOL (_tmp298_) == _tmp299_;
                                          } else {
                                                _tmp293_ = FALSE;
                                          }
                                          if (_tmp293_) {
                                                ValaTypeSymbol* _tmp300_ = NULL;
                                                _tmp300_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
                                                _tmp292_ = VALA_IS_CLASS (_tmp300_);
                                          } else {
                                                _tmp292_ = FALSE;
                                          }
                                          if (_tmp292_) {
                                                ValaProperty* _tmp301_ = NULL;
                                                _tmp301_ = vala_property_get_base_property (prop);
                                                _tmp291_ = _tmp301_ == NULL;
                                          } else {
                                                _tmp291_ = FALSE;
                                          }
                                          if (_tmp291_) {
                                                ValaProperty* _tmp302_ = NULL;
                                                _tmp302_ = vala_property_get_base_interface_property (prop);
                                                _tmp290_ = _tmp302_ == NULL;
                                          } else {
                                                _tmp290_ = FALSE;
                                          }
                                          if (_tmp290_) {
                                                gboolean _tmp303_ = FALSE;
                                                ValaDataType* _tmp304_ = NULL;
                                                _tmp304_ = vala_property_get_property_type (prop);
                                                if (VALA_IS_ARRAY_TYPE (_tmp304_)) {
                                                      _tmp303_ = TRUE;
                                                } else {
                                                      ValaDataType* _tmp305_ = NULL;
                                                      _tmp305_ = vala_property_get_property_type (prop);
                                                      _tmp303_ = VALA_IS_DELEGATE_TYPE (_tmp305_);
                                                }
                                                _tmp289_ = !_tmp303_;
                                          } else {
                                                _tmp289_ = FALSE;
                                          }
                                          if (_tmp289_) {
                                                ValaCCodeExpression* inst = NULL;
                                                ValaCCodeMemberAccess* _tmp306_ = NULL;
                                                ValaField* _tmp307_ = NULL;
                                                gchar* _tmp308_ = NULL;
                                                gchar* _tmp309_;
                                                ValaCCodeMemberAccess* _tmp310_ = NULL;
                                                ValaCCodeMemberAccess* _tmp311_;
                                                _tmp306_ = vala_ccode_member_access_new_pointer (pub_inst, "priv");
                                                _vala_ccode_node_unref0 (inst);
                                                inst = (ValaCCodeExpression*) _tmp306_;
                                                _tmp307_ = vala_property_get_field (prop);
                                                _tmp308_ = vala_field_get_cname (_tmp307_);
                                                _tmp309_ = _tmp308_;
                                                _tmp310_ = vala_ccode_member_access_new_pointer (inst, _tmp309_);
                                                _tmp311_ = _tmp310_;
                                                vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp311_);
                                                _vala_ccode_node_unref0 (_tmp311_);
                                                _g_free0 (_tmp309_);
                                                _vala_ccode_node_unref0 (inst);
                                          } else {
                                                gboolean _tmp312_;
                                                _tmp312_ = vala_property_get_no_accessor_method (prop);
                                                if (!_tmp312_) {
                                                      ValaProperty* _tmp313_;
                                                      ValaProperty* base_property;
                                                      ValaProperty* _tmp314_ = NULL;
                                                      gchar* getter_cname = NULL;
                                                      ValaCCodeIdentifier* _tmp323_ = NULL;
                                                      ValaCCodeIdentifier* _tmp324_;
                                                      ValaCCodeFunctionCall* _tmp325_ = NULL;
                                                      ValaCCodeFunctionCall* _tmp326_;
                                                      ValaCCodeFunctionCall* ccall;
                                                      ValaMemberBinding _tmp327_;
                                                      ValaPropertyAccessor* _tmp348_ = NULL;
                                                      ValaDataType* _tmp349_ = NULL;
                                                      ValaPropertyAccessor* _tmp350_ = NULL;
                                                      ValaDataType* _tmp351_ = NULL;
                                                      gboolean _tmp352_;
                                                      ValaLocalVariable* _tmp353_ = NULL;
                                                      ValaLocalVariable* temp_var;
                                                      const gchar* _tmp354_ = NULL;
                                                      ValaCCodeExpression* _tmp355_ = NULL;
                                                      ValaCCodeExpression* ctemp;
                                                      ValaDataType* _tmp356_ = NULL;
                                                      gboolean _tmp357_;
                                                      _tmp313_ = _vala_code_node_ref0 (prop);
                                                      base_property = _tmp313_;
                                                      _tmp314_ = vala_property_get_base_property (prop);
                                                      if (_tmp314_ != NULL) {
                                                            ValaProperty* _tmp315_ = NULL;
                                                            ValaProperty* _tmp316_;
                                                            _tmp315_ = vala_property_get_base_property (prop);
                                                            _tmp316_ = _vala_code_node_ref0 (_tmp315_);
                                                            _vala_code_node_unref0 (base_property);
                                                            base_property = _tmp316_;
                                                      } else {
                                                            ValaProperty* _tmp317_ = NULL;
                                                            _tmp317_ = vala_property_get_base_interface_property (prop);
                                                            if (_tmp317_ != NULL) {
                                                                  ValaProperty* _tmp318_ = NULL;
                                                                  ValaProperty* _tmp319_;
                                                                  _tmp318_ = vala_property_get_base_interface_property (prop);
                                                                  _tmp319_ = _vala_code_node_ref0 (_tmp318_);
                                                                  _vala_code_node_unref0 (base_property);
                                                                  base_property = _tmp319_;
                                                            }
                                                      }
                                                      if (VALA_IS_DYNAMIC_PROPERTY (prop)) {
                                                            gchar* _tmp320_ = NULL;
                                                            _tmp320_ = vala_ccode_base_module_get_dynamic_property_getter_cname ((ValaCCodeBaseModule*) self, VALA_DYNAMIC_PROPERTY (prop));
                                                            _g_free0 (getter_cname);
                                                            getter_cname = _tmp320_;
                                                      } else {
                                                            ValaPropertyAccessor* _tmp321_ = NULL;
                                                            gchar* _tmp322_ = NULL;
                                                            _tmp321_ = vala_property_get_get_accessor (base_property);
                                                            _tmp322_ = vala_property_accessor_get_cname (_tmp321_);
                                                            _g_free0 (getter_cname);
                                                            getter_cname = _tmp322_;
                                                      }
                                                      _tmp323_ = vala_ccode_identifier_new (getter_cname);
                                                      _tmp324_ = _tmp323_;
                                                      _tmp325_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp324_);
                                                      _tmp326_ = _tmp325_;
                                                      _vala_ccode_node_unref0 (_tmp324_);
                                                      ccall = _tmp326_;
                                                      _tmp327_ = vala_property_get_binding (prop);
                                                      if (_tmp327_ == VALA_MEMBER_BINDING_INSTANCE) {
                                                            ValaSymbol* _tmp328_ = NULL;
                                                            _tmp328_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
                                                            if (VALA_IS_STRUCT (_tmp328_)) {
                                                                  ValaCCodeExpression* _tmp329_;
                                                                  ValaCCodeUnaryExpression* _tmp330_;
                                                                  ValaCCodeUnaryExpression* unary;
                                                                  gboolean _tmp331_ = FALSE;
                                                                  _tmp329_ = pub_inst;
                                                                  _tmp330_ = _vala_ccode_node_ref0 (VALA_IS_CCODE_UNARY_EXPRESSION (_tmp329_) ? ((ValaCCodeUnaryExpression*) _tmp329_) : NULL);
                                                                  unary = _tmp330_;
                                                                  if (unary != NULL) {
                                                                        ValaCCodeUnaryOperator _tmp332_;
                                                                        _tmp332_ = vala_ccode_unary_expression_get_operator (unary);
                                                                        _tmp331_ = _tmp332_ == VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION;
                                                                  } else {
                                                                        _tmp331_ = FALSE;
                                                                  }
                                                                  if (_tmp331_) {
                                                                        ValaCCodeExpression* _tmp333_ = NULL;
                                                                        ValaCCodeExpression* _tmp334_;
                                                                        _tmp333_ = vala_ccode_unary_expression_get_inner (unary);
                                                                        _tmp334_ = _vala_ccode_node_ref0 (_tmp333_);
                                                                        _vala_ccode_node_unref0 (pub_inst);
                                                                        pub_inst = _tmp334_;
                                                                  } else {
                                                                        gboolean _tmp335_ = FALSE;
                                                                        if (VALA_IS_CCODE_IDENTIFIER (pub_inst)) {
                                                                              _tmp335_ = TRUE;
                                                                        } else {
                                                                              _tmp335_ = VALA_IS_CCODE_MEMBER_ACCESS (pub_inst);
                                                                        }
                                                                        if (_tmp335_) {
                                                                              ValaCCodeUnaryExpression* _tmp336_ = NULL;
                                                                              _tmp336_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, pub_inst);
                                                                              _vala_ccode_node_unref0 (pub_inst);
                                                                              pub_inst = (ValaCCodeExpression*) _tmp336_;
                                                                        } else {
                                                                              ValaExpression* _tmp337_ = NULL;
                                                                              ValaDataType* _tmp338_ = NULL;
                                                                              ValaLocalVariable* _tmp339_ = NULL;
                                                                              ValaLocalVariable* temp_var;
                                                                              ValaCCodeFunction* _tmp340_ = NULL;
                                                                              const gchar* _tmp341_ = NULL;
                                                                              ValaCCodeExpression* _tmp342_ = NULL;
                                                                              ValaCCodeExpression* _tmp343_;
                                                                              const gchar* _tmp344_ = NULL;
                                                                              ValaCCodeExpression* _tmp345_ = NULL;
                                                                              ValaCCodeExpression* _tmp346_;
                                                                              ValaCCodeUnaryExpression* _tmp347_ = NULL;
                                                                              _tmp337_ = vala_member_access_get_inner (expr);
                                                                              _tmp338_ = vala_expression_get_target_type (_tmp337_);
                                                                              _tmp339_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp338_, TRUE, NULL, FALSE);
                                                                              temp_var = _tmp339_;
                                                                              vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                                                                              _tmp340_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                                              _tmp341_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                                                                              _tmp342_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp341_);
                                                                              _tmp343_ = _tmp342_;
                                                                              vala_ccode_function_add_assignment (_tmp340_, _tmp343_, pub_inst);
                                                                              _vala_ccode_node_unref0 (_tmp343_);
                                                                              _tmp344_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                                                                              _tmp345_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp344_);
                                                                              _tmp346_ = _tmp345_;
                                                                              _tmp347_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp346_);
                                                                              _vala_ccode_node_unref0 (pub_inst);
                                                                              pub_inst = (ValaCCodeExpression*) _tmp347_;
                                                                              _vala_ccode_node_unref0 (_tmp346_);
                                                                              _vala_code_node_unref0 (temp_var);
                                                                        }
                                                                  }
                                                                  _vala_ccode_node_unref0 (unary);
                                                            }
                                                            vala_ccode_function_call_add_argument (ccall, pub_inst);
                                                      }
                                                      _tmp348_ = vala_property_get_get_accessor (base_property);
                                                      _tmp349_ = vala_property_accessor_get_value_type (_tmp348_);
                                                      _tmp350_ = vala_property_get_get_accessor (base_property);
                                                      _tmp351_ = vala_property_accessor_get_value_type (_tmp350_);
                                                      _tmp352_ = vala_data_type_get_value_owned (_tmp351_);
                                                      _tmp353_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp349_, _tmp352_, NULL, TRUE);
                                                      temp_var = _tmp353_;
                                                      vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                                                      _tmp354_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                                                      _tmp355_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp354_);
                                                      ctemp = _tmp355_;
                                                      vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, ctemp);
                                                      _tmp356_ = vala_property_get_property_type (base_property);
                                                      _tmp357_ = vala_data_type_is_real_non_null_struct_type (_tmp356_);
                                                      if (_tmp357_) {
                                                            ValaCCodeUnaryExpression* _tmp358_ = NULL;
                                                            ValaCCodeUnaryExpression* _tmp359_;
                                                            ValaCCodeFunction* _tmp360_ = NULL;
                                                            _tmp358_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, ctemp);
                                                            _tmp359_ = _tmp358_;
                                                            vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp359_);
                                                            _vala_ccode_node_unref0 (_tmp359_);
                                                            _tmp360_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                            vala_ccode_function_add_expression (_tmp360_, (ValaCCodeExpression*) ccall);
                                                      } else {
                                                            ValaCCodeFunction* _tmp361_ = NULL;
                                                            ValaDataType* _tmp362_ = NULL;
                                                            ValaDataType* _tmp363_;
                                                            ValaArrayType* _tmp364_;
                                                            gboolean _tmp365_ = FALSE;
                                                            _tmp361_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                            vala_ccode_function_add_assignment (_tmp361_, ctemp, (ValaCCodeExpression*) ccall);
                                                            _tmp362_ = vala_property_get_property_type (base_property);
                                                            _tmp363_ = _tmp362_;
                                                            _tmp364_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp363_) ? ((ValaArrayType*) _tmp363_) : NULL);
                                                            _vala_code_node_unref0 (array_type);
                                                            array_type = _tmp364_;
                                                            if (array_type != NULL) {
                                                                  gboolean _tmp366_;
                                                                  _tmp366_ = vala_property_get_no_array_length (base_property);
                                                                  _tmp365_ = !_tmp366_;
                                                            } else {
                                                                  _tmp365_ = FALSE;
                                                            }
                                                            if (_tmp365_) {
                                                                  {
                                                                        gint dim;
                                                                        dim = 1;
                                                                        {
                                                                              gboolean _tmp367_;
                                                                              _tmp367_ = TRUE;
                                                                              while (TRUE) {
                                                                                    gint _tmp368_;
                                                                                    ValaLocalVariable* _tmp369_ = NULL;
                                                                                    const gchar* _tmp370_ = NULL;
                                                                                    ValaCCodeExpression* _tmp371_ = NULL;
                                                                                    ValaCCodeUnaryExpression* _tmp372_ = NULL;
                                                                                    ValaCCodeUnaryExpression* _tmp373_;
                                                                                    if (!_tmp367_) {
                                                                                          dim++;
                                                                                    }
                                                                                    _tmp367_ = FALSE;
                                                                                    _tmp368_ = vala_array_type_get_rank (array_type);
                                                                                    if (!(dim <= _tmp368_)) {
                                                                                          break;
                                                                                    }
                                                                                    _tmp369_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, ((ValaCCodeBaseModule*) self)->int_type, TRUE, NULL, TRUE);
                                                                                    _vala_code_node_unref0 (temp_var);
                                                                                    temp_var = _tmp369_;
                                                                                    _tmp370_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                                                                                    _tmp371_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp370_);
                                                                                    _vala_ccode_node_unref0 (ctemp);
                                                                                    ctemp = _tmp371_;
                                                                                    vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                                                                                    _tmp372_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, ctemp);
                                                                                    _tmp373_ = _tmp372_;
                                                                                    vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp373_);
                                                                                    _vala_ccode_node_unref0 (_tmp373_);
                                                                                    vala_ccode_base_module_append_array_length ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, ctemp);
                                                                              }
                                                                        }
                                                                  }
                                                            } else {
                                                                  ValaDataType* _tmp374_ = NULL;
                                                                  ValaDataType* _tmp375_;
                                                                  ValaDelegateType* _tmp376_;
                                                                  gboolean _tmp377_ = FALSE;
                                                                  _tmp374_ = vala_property_get_property_type (base_property);
                                                                  _tmp375_ = _tmp374_;
                                                                  _tmp376_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp375_) ? ((ValaDelegateType*) _tmp375_) : NULL);
                                                                  _vala_code_node_unref0 (delegate_type);
                                                                  delegate_type = _tmp376_;
                                                                  if (delegate_type != NULL) {
                                                                        ValaDelegate* _tmp378_ = NULL;
                                                                        gboolean _tmp379_;
                                                                        _tmp378_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                                                                        _tmp379_ = vala_delegate_get_has_target (_tmp378_);
                                                                        _tmp377_ = _tmp379_;
                                                                  } else {
                                                                        _tmp377_ = FALSE;
                                                                  }
                                                                  if (_tmp377_) {
                                                                        ValaVoidType* _tmp380_ = NULL;
                                                                        ValaVoidType* _tmp381_;
                                                                        ValaPointerType* _tmp382_ = NULL;
                                                                        ValaPointerType* _tmp383_;
                                                                        ValaLocalVariable* _tmp384_ = NULL;
                                                                        const gchar* _tmp385_ = NULL;
                                                                        ValaCCodeExpression* _tmp386_ = NULL;
                                                                        ValaCCodeUnaryExpression* _tmp387_ = NULL;
                                                                        ValaCCodeUnaryExpression* _tmp388_;
                                                                        ValaCCodeConstant* _tmp389_ = NULL;
                                                                        ValaCCodeConstant* _tmp390_;
                                                                        _tmp380_ = vala_void_type_new (NULL);
                                                                        _tmp381_ = _tmp380_;
                                                                        _tmp382_ = vala_pointer_type_new ((ValaDataType*) _tmp381_, NULL);
                                                                        _tmp383_ = _tmp382_;
                                                                        _tmp384_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, (ValaDataType*) _tmp383_, TRUE, NULL, TRUE);
                                                                        _vala_code_node_unref0 (temp_var);
                                                                        temp_var = _tmp384_;
                                                                        _vala_code_node_unref0 (_tmp383_);
                                                                        _vala_code_node_unref0 (_tmp381_);
                                                                        _tmp385_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                                                                        _tmp386_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp385_);
                                                                        _vala_ccode_node_unref0 (ctemp);
                                                                        ctemp = _tmp386_;
                                                                        vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                                                                        _tmp387_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, ctemp);
                                                                        _tmp388_ = _tmp387_;
                                                                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp388_);
                                                                        _vala_ccode_node_unref0 (_tmp388_);
                                                                        vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, ctemp);
                                                                        _tmp389_ = vala_ccode_constant_new ("NULL");
                                                                        _tmp390_ = _tmp389_;
                                                                        vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, (ValaCCodeExpression*) _tmp390_);
                                                                        _vala_ccode_node_unref0 (_tmp390_);
                                                                  }
                                                            }
                                                      }
                                                      _vala_ccode_node_unref0 (ctemp);
                                                      _vala_code_node_unref0 (temp_var);
                                                      _vala_ccode_node_unref0 (ccall);
                                                      _g_free0 (getter_cname);
                                                      _vala_code_node_unref0 (base_property);
                                                } else {
                                                      ValaCCodeIdentifier* _tmp391_ = NULL;
                                                      ValaCCodeIdentifier* _tmp392_;
                                                      ValaCCodeFunctionCall* _tmp393_ = NULL;
                                                      ValaCCodeFunctionCall* _tmp394_;
                                                      ValaCCodeFunctionCall* ccall;
                                                      ValaCCodeConstant* _tmp395_ = NULL;
                                                      ValaCCodeConstant* _tmp396_;
                                                      ValaPropertyAccessor* _tmp397_ = NULL;
                                                      ValaDataType* _tmp398_ = NULL;
                                                      gboolean _tmp399_;
                                                      ValaDataType* _tmp410_ = NULL;
                                                      ValaLocalVariable* _tmp411_ = NULL;
                                                      ValaLocalVariable* temp_var;
                                                      const gchar* _tmp412_ = NULL;
                                                      ValaCCodeExpression* _tmp413_ = NULL;
                                                      ValaCCodeExpression* ctemp;
                                                      ValaCCodeUnaryExpression* _tmp414_ = NULL;
                                                      ValaCCodeUnaryExpression* _tmp415_;
                                                      ValaCCodeConstant* _tmp416_ = NULL;
                                                      ValaCCodeConstant* _tmp417_;
                                                      ValaCCodeFunction* _tmp418_ = NULL;
                                                      _tmp391_ = vala_ccode_identifier_new ("g_object_get");
                                                      _tmp392_ = _tmp391_;
                                                      _tmp393_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp392_);
                                                      _tmp394_ = _tmp393_;
                                                      _vala_ccode_node_unref0 (_tmp392_);
                                                      ccall = _tmp394_;
                                                      vala_ccode_function_call_add_argument (ccall, pub_inst);
                                                      _tmp395_ = vala_property_get_canonical_cconstant (prop);
                                                      _tmp396_ = _tmp395_;
                                                      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp396_);
                                                      _vala_ccode_node_unref0 (_tmp396_);
                                                      _tmp397_ = vala_property_get_get_accessor (prop);
                                                      _tmp398_ = vala_property_accessor_get_value_type (_tmp397_);
                                                      _tmp399_ = vala_data_type_get_value_owned (_tmp398_);
                                                      if (!_tmp399_) {
                                                            ValaPropertyAccessor* _tmp400_ = NULL;
                                                            ValaDataType* _tmp401_ = NULL;
                                                            ValaDataType* _tmp402_ = NULL;
                                                            ValaDataType* owned_value_type;
                                                            gboolean _tmp403_;
                                                            _tmp400_ = vala_property_get_get_accessor (prop);
                                                            _tmp401_ = vala_property_accessor_get_value_type (_tmp400_);
                                                            _tmp402_ = vala_data_type_copy (_tmp401_);
                                                            owned_value_type = _tmp402_;
                                                            vala_data_type_set_value_owned (owned_value_type, TRUE);
                                                            _tmp403_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, owned_value_type);
                                                            if (_tmp403_) {
                                                                  ValaPropertyAccessor* _tmp404_ = NULL;
                                                                  ValaSourceReference* _tmp405_ = NULL;
                                                                  gchar* _tmp406_ = NULL;
                                                                  gchar* _tmp407_;
                                                                  gchar* _tmp408_ = NULL;
                                                                  gchar* _tmp409_;
                                                                  _tmp404_ = vala_property_get_get_accessor (prop);
                                                                  _tmp405_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp404_);
                                                                  _tmp406_ = vala_symbol_get_full_name ((ValaSymbol*) prop);
                                                                  _tmp407_ = _tmp406_;
                                                                  _tmp408_ = g_strdup_printf ("unowned return value for getter of property `%s' not supported without" \
" accessor", _tmp407_);
                                                                  _tmp409_ = _tmp408_;
                                                                  vala_report_error (_tmp405_, _tmp409_);
                                                                  _g_free0 (_tmp409_);
                                                                  _g_free0 (_tmp407_);
                                                            }
                                                            _vala_code_node_unref0 (owned_value_type);
                                                      }
                                                      _tmp410_ = vala_expression_get_value_type ((ValaExpression*) expr);
                                                      _tmp411_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp410_, TRUE, NULL, TRUE);
                                                      temp_var = _tmp411_;
                                                      _tmp412_ = vala_symbol_get_name ((ValaSymbol*) temp_var);
                                                      _tmp413_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp412_);
                                                      ctemp = _tmp413_;
                                                      vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, temp_var, FALSE);
                                                      _tmp414_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, ctemp);
                                                      _tmp415_ = _tmp414_;
                                                      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp415_);
                                                      _vala_ccode_node_unref0 (_tmp415_);
                                                      _tmp416_ = vala_ccode_constant_new ("NULL");
                                                      _tmp417_ = _tmp416_;
                                                      vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp417_);
                                                      _vala_ccode_node_unref0 (_tmp417_);
                                                      _tmp418_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                      vala_ccode_function_add_expression (_tmp418_, (ValaCCodeExpression*) ccall);
                                                      vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) expr, ctemp);
                                                      _vala_ccode_node_unref0 (ctemp);
                                                      _vala_code_node_unref0 (temp_var);
                                                      _vala_ccode_node_unref0 (ccall);
                                                }
                                          }
                                          _vala_code_node_unref0 (prop);
                                    } else {
                                          ValaSymbol* _tmp419_ = NULL;
                                          _tmp419_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                          if (VALA_IS_LOCAL_VARIABLE (_tmp419_)) {
                                                ValaSymbol* _tmp420_ = NULL;
                                                ValaLocalVariable* _tmp421_;
                                                ValaLocalVariable* local;
                                                gboolean _tmp422_;
                                                gboolean _tmp427_ = FALSE;
                                                gboolean _tmp428_ = FALSE;
                                                gboolean _tmp429_ = FALSE;
                                                gboolean _tmp430_ = FALSE;
                                                ValaCodeNode* _tmp431_ = NULL;
                                                _tmp420_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                                _tmp421_ = _vala_code_node_ref0 (VALA_LOCAL_VARIABLE (_tmp420_));
                                                local = _tmp421_;
                                                _tmp422_ = vala_expression_get_lvalue ((ValaExpression*) expr);
                                                if (_tmp422_) {
                                                      ValaTargetValue* _tmp423_ = NULL;
                                                      ValaTargetValue* _tmp424_;
                                                      _tmp423_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, local);
                                                      _tmp424_ = _tmp423_;
                                                      vala_expression_set_target_value ((ValaExpression*) expr, _tmp424_);
                                                      _vala_target_value_unref0 (_tmp424_);
                                                } else {
                                                      ValaTargetValue* _tmp425_ = NULL;
                                                      ValaTargetValue* _tmp426_;
                                                      _tmp425_ = vala_code_generator_load_local ((ValaCodeGenerator*) self, local);
                                                      _tmp426_ = _tmp425_;
                                                      vala_expression_set_target_value ((ValaExpression*) expr, _tmp426_);
                                                      _vala_target_value_unref0 (_tmp426_);
                                                }
                                                _tmp431_ = vala_code_node_get_parent_node ((ValaCodeNode*) expr);
                                                if (VALA_IS_RETURN_STATEMENT (_tmp431_)) {
                                                      ValaDataType* _tmp432_ = NULL;
                                                      gboolean _tmp433_;
                                                      _tmp432_ = vala_ccode_base_module_get_current_return_type ((ValaCCodeBaseModule*) self);
                                                      _tmp433_ = vala_data_type_get_value_owned (_tmp432_);
                                                      _tmp430_ = _tmp433_;
                                                } else {
                                                      _tmp430_ = FALSE;
                                                }
                                                if (_tmp430_) {
                                                      ValaDataType* _tmp434_ = NULL;
                                                      gboolean _tmp435_;
                                                      _tmp434_ = vala_variable_get_variable_type ((ValaVariable*) local);
                                                      _tmp435_ = vala_data_type_get_value_owned (_tmp434_);
                                                      _tmp429_ = _tmp435_;
                                                } else {
                                                      _tmp429_ = FALSE;
                                                }
                                                if (_tmp429_) {
                                                      gboolean _tmp436_;
                                                      _tmp436_ = vala_local_variable_get_captured (local);
                                                      _tmp428_ = !_tmp436_;
                                                } else {
                                                      _tmp428_ = FALSE;
                                                }
                                                if (_tmp428_) {
                                                      gboolean _tmp437_;
                                                      _tmp437_ = vala_ccode_base_module_variable_accessible_in_finally ((ValaCCodeBaseModule*) self, local);
                                                      _tmp427_ = !_tmp437_;
                                                } else {
                                                      _tmp427_ = FALSE;
                                                }
                                                if (_tmp427_) {
                                                      ValaDataType* _tmp438_ = NULL;
                                                      _tmp438_ = vala_expression_get_value_type ((ValaExpression*) expr);
                                                      vala_data_type_set_value_owned (_tmp438_, TRUE);
                                                      vala_symbol_set_active ((ValaSymbol*) local, FALSE);
                                                }
                                                _vala_code_node_unref0 (local);
                                          } else {
                                                ValaSymbol* _tmp439_ = NULL;
                                                _tmp439_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                                if (VALA_IS_PARAMETER (_tmp439_)) {
                                                      ValaSymbol* _tmp440_ = NULL;
                                                      ValaParameter* _tmp441_;
                                                      ValaParameter* param;
                                                      gboolean _tmp442_;
                                                      _tmp440_ = vala_expression_get_symbol_reference ((ValaExpression*) expr);
                                                      _tmp441_ = _vala_code_node_ref0 (VALA_PARAMETER (_tmp440_));
                                                      param = _tmp441_;
                                                      _tmp442_ = vala_expression_get_lvalue ((ValaExpression*) expr);
                                                      if (_tmp442_) {
                                                            ValaTargetValue* _tmp443_ = NULL;
                                                            ValaTargetValue* _tmp444_;
                                                            _tmp443_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, param);
                                                            _tmp444_ = _tmp443_;
                                                            vala_expression_set_target_value ((ValaExpression*) expr, _tmp444_);
                                                            _vala_target_value_unref0 (_tmp444_);
                                                      } else {
                                                            ValaTargetValue* _tmp445_ = NULL;
                                                            ValaTargetValue* _tmp446_;
                                                            _tmp445_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, param);
                                                            _tmp446_ = _tmp445_;
                                                            vala_expression_set_target_value ((ValaExpression*) expr, _tmp446_);
                                                            _vala_target_value_unref0 (_tmp446_);
                                                      }
                                                      _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;
      ValaDataType* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaGLibValue* _tmp3_ = NULL;
      ValaGLibValue* _tmp4_;
      ValaGLibValue* _result_;
      ValaDataType* _tmp5_ = NULL;
      ValaDataType* _tmp6_;
      ValaArrayType* _tmp7_;
      ValaArrayType* array_type;
      ValaDataType* _tmp8_ = NULL;
      ValaDataType* _tmp9_;
      ValaDelegateType* _tmp10_;
      ValaDelegateType* delegate_type;
      gboolean _tmp11_;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_val_if_fail (local != NULL, NULL);
      _tmp0_ = vala_variable_get_variable_type ((ValaVariable*) local);
      _tmp1_ = vala_data_type_copy (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = vala_glib_value_new (_tmp2_, NULL);
      _tmp4_ = _tmp3_;
      _vala_code_node_unref0 (_tmp2_);
      _result_ = _tmp4_;
      _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) local);
      _tmp6_ = _tmp5_;
      _tmp7_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp6_) ? ((ValaArrayType*) _tmp6_) : NULL);
      array_type = _tmp7_;
      _tmp8_ = vala_variable_get_variable_type ((ValaVariable*) local);
      _tmp9_ = _tmp8_;
      _tmp10_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp9_) ? ((ValaDelegateType*) _tmp9_) : NULL);
      delegate_type = _tmp10_;
      _tmp11_ = vala_local_variable_get_is_result (local);
      if (_tmp11_) {
            gboolean _tmp12_ = FALSE;
            ValaDataType* _tmp13_ = NULL;
            _tmp13_ = vala_variable_get_variable_type ((ValaVariable*) local);
            if (_tmp13_ != NULL) {
                  ValaDataType* _tmp14_ = NULL;
                  gboolean _tmp15_;
                  _tmp14_ = vala_variable_get_variable_type ((ValaVariable*) local);
                  _tmp15_ = vala_data_type_is_real_non_null_struct_type (_tmp14_);
                  _tmp12_ = _tmp15_;
            } else {
                  _tmp12_ = FALSE;
            }
            if (_tmp12_) {
                  ValaCCodeIdentifier* _tmp16_ = NULL;
                  ValaCCodeIdentifier* _tmp17_;
                  ValaCCodeUnaryExpression* _tmp18_ = NULL;
                  _tmp16_ = vala_ccode_identifier_new ("result");
                  _tmp17_ = _tmp16_;
                  _tmp18_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp17_);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp18_;
                  _vala_ccode_node_unref0 (_tmp17_);
            } else {
                  ValaCCodeIdentifier* _tmp19_ = NULL;
                  _tmp19_ = vala_ccode_identifier_new ("result");
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp19_;
            }
      } else {
            gboolean _tmp20_;
            _tmp20_ = vala_local_variable_get_captured (local);
            if (_tmp20_) {
                  ValaSymbol* _tmp21_ = NULL;
                  ValaBlock* _tmp22_;
                  ValaBlock* block;
                  gint _tmp23_;
                  gchar* _tmp24_ = NULL;
                  gchar* _tmp25_;
                  ValaCCodeExpression* _tmp26_ = NULL;
                  ValaCCodeExpression* _tmp27_;
                  const gchar* _tmp28_ = NULL;
                  gchar* _tmp29_ = NULL;
                  gchar* _tmp30_;
                  ValaCCodeMemberAccess* _tmp31_ = NULL;
                  _tmp21_ = vala_symbol_get_parent_symbol ((ValaSymbol*) local);
                  _tmp22_ = _vala_code_node_ref0 (VALA_BLOCK (_tmp21_));
                  block = _tmp22_;
                  _tmp23_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                  _tmp24_ = g_strdup_printf ("_data%d_", _tmp23_);
                  _tmp25_ = _tmp24_;
                  _tmp26_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp25_);
                  _tmp27_ = _tmp26_;
                  _tmp28_ = vala_symbol_get_name ((ValaSymbol*) local);
                  _tmp29_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp28_);
                  _tmp30_ = _tmp29_;
                  _tmp31_ = vala_ccode_member_access_new_pointer (_tmp27_, _tmp30_);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp31_;
                  _g_free0 (_tmp30_);
                  _vala_ccode_node_unref0 (_tmp27_);
                  _g_free0 (_tmp25_);
                  if (array_type != NULL) {
                        gint _tmp46_;
                        {
                              gint dim;
                              dim = 1;
                              {
                                    gboolean _tmp32_;
                                    _tmp32_ = TRUE;
                                    while (TRUE) {
                                          gint _tmp33_;
                                          gint _tmp34_;
                                          gchar* _tmp35_ = NULL;
                                          gchar* _tmp36_;
                                          ValaCCodeExpression* _tmp37_ = NULL;
                                          ValaCCodeExpression* _tmp38_;
                                          const gchar* _tmp39_ = NULL;
                                          gchar* _tmp40_ = NULL;
                                          gchar* _tmp41_;
                                          gchar* _tmp42_ = NULL;
                                          gchar* _tmp43_;
                                          ValaCCodeMemberAccess* _tmp44_ = NULL;
                                          ValaCCodeMemberAccess* _tmp45_;
                                          if (!_tmp32_) {
                                                dim++;
                                          }
                                          _tmp32_ = FALSE;
                                          _tmp33_ = vala_array_type_get_rank (array_type);
                                          if (!(dim <= _tmp33_)) {
                                                break;
                                          }
                                          _tmp34_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                                          _tmp35_ = g_strdup_printf ("_data%d_", _tmp34_);
                                          _tmp36_ = _tmp35_;
                                          _tmp37_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp36_);
                                          _tmp38_ = _tmp37_;
                                          _tmp39_ = vala_symbol_get_name ((ValaSymbol*) local);
                                          _tmp40_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp39_);
                                          _tmp41_ = _tmp40_;
                                          _tmp42_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp41_, dim);
                                          _tmp43_ = _tmp42_;
                                          _tmp44_ = vala_ccode_member_access_new_pointer (_tmp38_, _tmp43_);
                                          _tmp45_ = _tmp44_;
                                          vala_glib_value_append_array_length_cvalue (_result_, (ValaCCodeExpression*) _tmp45_);
                                          _vala_ccode_node_unref0 (_tmp45_);
                                          _g_free0 (_tmp43_);
                                          _g_free0 (_tmp41_);
                                          _vala_ccode_node_unref0 (_tmp38_);
                                          _g_free0 (_tmp36_);
                                    }
                              }
                        }
                        _tmp46_ = vala_array_type_get_rank (array_type);
                        if (_tmp46_ == 1) {
                              gint _tmp47_;
                              gchar* _tmp48_ = NULL;
                              gchar* _tmp49_;
                              ValaCCodeExpression* _tmp50_ = NULL;
                              ValaCCodeExpression* _tmp51_;
                              const gchar* _tmp52_ = NULL;
                              gchar* _tmp53_ = NULL;
                              gchar* _tmp54_;
                              gchar* _tmp55_ = NULL;
                              gchar* _tmp56_;
                              ValaCCodeMemberAccess* _tmp57_ = NULL;
                              _tmp47_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                              _tmp48_ = g_strdup_printf ("_data%d_", _tmp47_);
                              _tmp49_ = _tmp48_;
                              _tmp50_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp49_);
                              _tmp51_ = _tmp50_;
                              _tmp52_ = vala_symbol_get_name ((ValaSymbol*) local);
                              _tmp53_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp52_);
                              _tmp54_ = _tmp53_;
                              _tmp55_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp54_);
                              _tmp56_ = _tmp55_;
                              _tmp57_ = vala_ccode_member_access_new_pointer (_tmp51_, _tmp56_);
                              _vala_ccode_node_unref0 (_result_->array_size_cvalue);
                              _result_->array_size_cvalue = (ValaCCodeExpression*) _tmp57_;
                              _g_free0 (_tmp56_);
                              _g_free0 (_tmp54_);
                              _vala_ccode_node_unref0 (_tmp51_);
                              _g_free0 (_tmp49_);
                        }
                  } else {
                        gboolean _tmp58_ = FALSE;
                        if (delegate_type != NULL) {
                              ValaDelegate* _tmp59_ = NULL;
                              gboolean _tmp60_;
                              _tmp59_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                              _tmp60_ = vala_delegate_get_has_target (_tmp59_);
                              _tmp58_ = _tmp60_;
                        } else {
                              _tmp58_ = FALSE;
                        }
                        if (_tmp58_) {
                              gint _tmp61_;
                              gchar* _tmp62_ = NULL;
                              gchar* _tmp63_;
                              ValaCCodeExpression* _tmp64_ = NULL;
                              ValaCCodeExpression* _tmp65_;
                              const gchar* _tmp66_ = NULL;
                              gchar* _tmp67_ = NULL;
                              gchar* _tmp68_;
                              gchar* _tmp69_ = NULL;
                              gchar* _tmp70_;
                              ValaCCodeMemberAccess* _tmp71_ = NULL;
                              gint _tmp72_;
                              gchar* _tmp73_ = NULL;
                              gchar* _tmp74_;
                              ValaCCodeExpression* _tmp75_ = NULL;
                              ValaCCodeExpression* _tmp76_;
                              const gchar* _tmp77_ = NULL;
                              gchar* _tmp78_ = NULL;
                              gchar* _tmp79_;
                              gchar* _tmp80_ = NULL;
                              gchar* _tmp81_;
                              ValaCCodeMemberAccess* _tmp82_ = NULL;
                              _tmp61_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                              _tmp62_ = g_strdup_printf ("_data%d_", _tmp61_);
                              _tmp63_ = _tmp62_;
                              _tmp64_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp63_);
                              _tmp65_ = _tmp64_;
                              _tmp66_ = vala_symbol_get_name ((ValaSymbol*) local);
                              _tmp67_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp66_);
                              _tmp68_ = _tmp67_;
                              _tmp69_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp68_);
                              _tmp70_ = _tmp69_;
                              _tmp71_ = vala_ccode_member_access_new_pointer (_tmp65_, _tmp70_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp71_;
                              _g_free0 (_tmp70_);
                              _g_free0 (_tmp68_);
                              _vala_ccode_node_unref0 (_tmp65_);
                              _g_free0 (_tmp63_);
                              _tmp72_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                              _tmp73_ = g_strdup_printf ("_data%d_", _tmp72_);
                              _tmp74_ = _tmp73_;
                              _tmp75_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp74_);
                              _tmp76_ = _tmp75_;
                              _tmp77_ = vala_symbol_get_name ((ValaSymbol*) local);
                              _tmp78_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp77_);
                              _tmp79_ = _tmp78_;
                              _tmp80_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp79_);
                              _tmp81_ = _tmp80_;
                              _tmp82_ = vala_ccode_member_access_new_pointer (_tmp76_, _tmp81_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                              _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp82_;
                              _g_free0 (_tmp81_);
                              _g_free0 (_tmp79_);
                              _vala_ccode_node_unref0 (_tmp76_);
                              _g_free0 (_tmp74_);
                        }
                  }
                  _vala_code_node_unref0 (block);
            } else {
                  const gchar* _tmp83_ = NULL;
                  ValaCCodeExpression* _tmp84_ = NULL;
                  _tmp83_ = vala_symbol_get_name ((ValaSymbol*) local);
                  _tmp84_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp83_);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = _tmp84_;
                  if (array_type != NULL) {
                        gint _tmp94_;
                        {
                              gint dim;
                              dim = 1;
                              {
                                    gboolean _tmp85_;
                                    _tmp85_ = TRUE;
                                    while (TRUE) {
                                          gint _tmp86_;
                                          const gchar* _tmp87_ = NULL;
                                          gchar* _tmp88_ = NULL;
                                          gchar* _tmp89_;
                                          gchar* _tmp90_ = NULL;
                                          gchar* _tmp91_;
                                          ValaCCodeExpression* _tmp92_ = NULL;
                                          ValaCCodeExpression* _tmp93_;
                                          if (!_tmp85_) {
                                                dim++;
                                          }
                                          _tmp85_ = FALSE;
                                          _tmp86_ = vala_array_type_get_rank (array_type);
                                          if (!(dim <= _tmp86_)) {
                                                break;
                                          }
                                          _tmp87_ = vala_symbol_get_name ((ValaSymbol*) local);
                                          _tmp88_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp87_);
                                          _tmp89_ = _tmp88_;
                                          _tmp90_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp89_, dim);
                                          _tmp91_ = _tmp90_;
                                          _tmp92_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp91_);
                                          _tmp93_ = _tmp92_;
                                          vala_glib_value_append_array_length_cvalue (_result_, _tmp93_);
                                          _vala_ccode_node_unref0 (_tmp93_);
                                          _g_free0 (_tmp91_);
                                          _g_free0 (_tmp89_);
                                    }
                              }
                        }
                        _tmp94_ = vala_array_type_get_rank (array_type);
                        if (_tmp94_ == 1) {
                              const gchar* _tmp95_ = NULL;
                              gchar* _tmp96_ = NULL;
                              gchar* _tmp97_;
                              gchar* _tmp98_ = NULL;
                              gchar* _tmp99_;
                              ValaCCodeExpression* _tmp100_ = NULL;
                              _tmp95_ = vala_symbol_get_name ((ValaSymbol*) local);
                              _tmp96_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp95_);
                              _tmp97_ = _tmp96_;
                              _tmp98_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp97_);
                              _tmp99_ = _tmp98_;
                              _tmp100_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp99_);
                              _vala_ccode_node_unref0 (_result_->array_size_cvalue);
                              _result_->array_size_cvalue = _tmp100_;
                              _g_free0 (_tmp99_);
                              _g_free0 (_tmp97_);
                        }
                  } else {
                        gboolean _tmp101_ = FALSE;
                        if (delegate_type != NULL) {
                              ValaDelegate* _tmp102_ = NULL;
                              gboolean _tmp103_;
                              _tmp102_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                              _tmp103_ = vala_delegate_get_has_target (_tmp102_);
                              _tmp101_ = _tmp103_;
                        } else {
                              _tmp101_ = FALSE;
                        }
                        if (_tmp101_) {
                              gboolean _tmp104_;
                              _tmp104_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
                              if (_tmp104_) {
                                    ValaCCodeIdentifier* _tmp105_ = NULL;
                                    ValaCCodeIdentifier* _tmp106_;
                                    const gchar* _tmp107_ = NULL;
                                    gchar* _tmp108_ = NULL;
                                    gchar* _tmp109_;
                                    gchar* _tmp110_ = NULL;
                                    gchar* _tmp111_;
                                    ValaCCodeMemberAccess* _tmp112_ = NULL;
                                    ValaCCodeIdentifier* _tmp113_ = NULL;
                                    ValaCCodeIdentifier* _tmp114_;
                                    const gchar* _tmp115_ = NULL;
                                    gchar* _tmp116_ = NULL;
                                    gchar* _tmp117_;
                                    gchar* _tmp118_ = NULL;
                                    gchar* _tmp119_;
                                    ValaCCodeMemberAccess* _tmp120_ = NULL;
                                    _tmp105_ = vala_ccode_identifier_new ("data");
                                    _tmp106_ = _tmp105_;
                                    _tmp107_ = vala_symbol_get_name ((ValaSymbol*) local);
                                    _tmp108_ = vala_ccode_base_module_get_variable_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 ((ValaCCodeExpression*) _tmp106_, _tmp111_);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                                    _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp112_;
                                    _g_free0 (_tmp111_);
                                    _g_free0 (_tmp109_);
                                    _vala_ccode_node_unref0 (_tmp106_);
                                    _tmp113_ = vala_ccode_identifier_new ("data");
                                    _tmp114_ = _tmp113_;
                                    _tmp115_ = vala_symbol_get_name ((ValaSymbol*) local);
                                    _tmp116_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp115_);
                                    _tmp117_ = _tmp116_;
                                    _tmp118_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp117_);
                                    _tmp119_ = _tmp118_;
                                    _tmp120_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp114_, _tmp119_);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                                    _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp120_;
                                    _g_free0 (_tmp119_);
                                    _g_free0 (_tmp117_);
                                    _vala_ccode_node_unref0 (_tmp114_);
                              } else {
                                    const gchar* _tmp121_ = NULL;
                                    gchar* _tmp122_ = NULL;
                                    gchar* _tmp123_;
                                    gchar* _tmp124_ = NULL;
                                    gchar* _tmp125_;
                                    ValaCCodeIdentifier* _tmp126_ = NULL;
                                    ValaDataType* _tmp127_ = NULL;
                                    gboolean _tmp128_;
                                    _tmp121_ = vala_symbol_get_name ((ValaSymbol*) local);
                                    _tmp122_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp121_);
                                    _tmp123_ = _tmp122_;
                                    _tmp124_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp123_);
                                    _tmp125_ = _tmp124_;
                                    _tmp126_ = vala_ccode_identifier_new (_tmp125_);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                                    _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp126_;
                                    _g_free0 (_tmp125_);
                                    _g_free0 (_tmp123_);
                                    _tmp127_ = vala_variable_get_variable_type ((ValaVariable*) local);
                                    _tmp128_ = vala_data_type_get_value_owned (_tmp127_);
                                    if (_tmp128_) {
                                          const gchar* _tmp129_ = NULL;
                                          gchar* _tmp130_ = NULL;
                                          gchar* _tmp131_;
                                          gchar* _tmp132_ = NULL;
                                          gchar* _tmp133_;
                                          ValaCCodeIdentifier* _tmp134_ = NULL;
                                          _tmp129_ = vala_symbol_get_name ((ValaSymbol*) local);
                                          _tmp130_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp129_);
                                          _tmp131_ = _tmp130_;
                                          _tmp132_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp131_);
                                          _tmp133_ = _tmp132_;
                                          _tmp134_ = vala_ccode_identifier_new (_tmp133_);
                                          _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                                          _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp134_;
                                          _g_free0 (_tmp133_);
                                          _g_free0 (_tmp131_);
                                    }
                              }
                        }
                  }
            }
      }
      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;
      ValaDataType* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaGLibValue* _tmp3_ = NULL;
      ValaGLibValue* _tmp4_;
      ValaGLibValue* _result_;
      gboolean _tmp5_ = FALSE;
      gboolean _tmp6_;
      ValaDataType* _tmp9_ = NULL;
      ValaDataType* _tmp10_;
      ValaArrayType* _tmp11_;
      ValaArrayType* array_type;
      ValaDataType* _tmp12_ = NULL;
      ValaDataType* _tmp13_;
      ValaDelegateType* _tmp14_;
      ValaDelegateType* delegate_type;
      const gchar* _tmp15_ = NULL;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_val_if_fail (param != NULL, NULL);
      _tmp0_ = vala_variable_get_variable_type ((ValaVariable*) param);
      _tmp1_ = vala_data_type_copy (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = vala_glib_value_new (_tmp2_, NULL);
      _tmp4_ = _tmp3_;
      _vala_code_node_unref0 (_tmp2_);
      _result_ = _tmp4_;
      _tmp6_ = vala_parameter_get_captured (param);
      if (_tmp6_) {
            _tmp5_ = TRUE;
      } else {
            gboolean _tmp7_;
            _tmp7_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
            _tmp5_ = _tmp7_;
      }
      if (_tmp5_) {
            ValaDataType* _tmp8_ = NULL;
            _tmp8_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
            vala_data_type_set_value_owned (_tmp8_, TRUE);
      }
      _tmp9_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      _tmp10_ = _tmp9_;
      _tmp11_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp10_) ? ((ValaArrayType*) _tmp10_) : NULL);
      array_type = _tmp11_;
      _tmp12_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      _tmp13_ = _tmp12_;
      _tmp14_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp13_) ? ((ValaDelegateType*) _tmp13_) : NULL);
      delegate_type = _tmp14_;
      _tmp15_ = vala_symbol_get_name ((ValaSymbol*) param);
      if (g_strcmp0 (_tmp15_, "this") == 0) {
            gboolean _tmp16_;
            _tmp16_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
            if (_tmp16_) {
                  ValaCCodeIdentifier* _tmp17_ = NULL;
                  ValaCCodeIdentifier* _tmp18_;
                  ValaCCodeMemberAccess* _tmp19_ = NULL;
                  _tmp17_ = vala_ccode_identifier_new ("data");
                  _tmp18_ = _tmp17_;
                  _tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "self");
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp19_;
                  _vala_ccode_node_unref0 (_tmp18_);
            } else {
                  ValaDataType* _tmp20_ = NULL;
                  ValaTypeSymbol* _tmp21_ = NULL;
                  ValaTypeSymbol* _tmp22_;
                  ValaStruct* _tmp23_;
                  ValaStruct* st;
                  gboolean _tmp24_ = FALSE;
                  _tmp20_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                  _tmp21_ = vala_data_type_get_data_type (_tmp20_);
                  _tmp22_ = _tmp21_;
                  _tmp23_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp22_) ? ((ValaStruct*) _tmp22_) : NULL);
                  st = _tmp23_;
                  if (st != NULL) {
                        gboolean _tmp25_;
                        _tmp25_ = vala_struct_is_simple_type (st);
                        _tmp24_ = !_tmp25_;
                  } else {
                        _tmp24_ = FALSE;
                  }
                  if (_tmp24_) {
                        ValaCCodeIdentifier* _tmp26_ = NULL;
                        _tmp26_ = vala_ccode_identifier_new ("(*self)");
                        _vala_ccode_node_unref0 (_result_->cvalue);
                        _result_->cvalue = (ValaCCodeExpression*) _tmp26_;
                  } else {
                        ValaCCodeIdentifier* _tmp27_ = NULL;
                        _tmp27_ = vala_ccode_identifier_new ("self");
                        _vala_ccode_node_unref0 (_result_->cvalue);
                        _result_->cvalue = (ValaCCodeExpression*) _tmp27_;
                  }
                  _vala_code_node_unref0 (st);
            }
      } else {
            const gchar* _tmp28_ = NULL;
            gchar* _tmp29_;
            gchar* name;
            gboolean _tmp30_;
            gboolean _tmp167_ = FALSE;
            gboolean _tmp168_;
            _tmp28_ = vala_symbol_get_name ((ValaSymbol*) param);
            _tmp29_ = g_strdup (_tmp28_);
            name = _tmp29_;
            _tmp30_ = vala_parameter_get_captured (param);
            if (_tmp30_) {
                  ValaSymbol* _tmp31_ = NULL;
                  ValaSymbol* _tmp32_;
                  ValaBlock* _tmp33_;
                  ValaBlock* block;
                  gint _tmp37_;
                  gchar* _tmp38_ = NULL;
                  gchar* _tmp39_;
                  ValaCCodeExpression* _tmp40_ = NULL;
                  ValaCCodeExpression* _tmp41_;
                  const gchar* _tmp42_ = NULL;
                  gchar* _tmp43_ = NULL;
                  gchar* _tmp44_;
                  ValaCCodeMemberAccess* _tmp45_ = NULL;
                  _tmp31_ = vala_symbol_get_parent_symbol ((ValaSymbol*) param);
                  _tmp32_ = _tmp31_;
                  _tmp33_ = _vala_code_node_ref0 (VALA_IS_BLOCK (_tmp32_) ? ((ValaBlock*) _tmp32_) : NULL);
                  block = _tmp33_;
                  if (block == NULL) {
                        ValaSymbol* _tmp34_ = NULL;
                        ValaBlock* _tmp35_ = NULL;
                        ValaBlock* _tmp36_;
                        _tmp34_ = vala_symbol_get_parent_symbol ((ValaSymbol*) param);
                        _tmp35_ = vala_subroutine_get_body ((ValaSubroutine*) VALA_METHOD (_tmp34_));
                        _tmp36_ = _vala_code_node_ref0 (_tmp35_);
                        _vala_code_node_unref0 (block);
                        block = _tmp36_;
                  }
                  _tmp37_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                  _tmp38_ = g_strdup_printf ("_data%d_", _tmp37_);
                  _tmp39_ = _tmp38_;
                  _tmp40_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp39_);
                  _tmp41_ = _tmp40_;
                  _tmp42_ = vala_symbol_get_name ((ValaSymbol*) param);
                  _tmp43_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp42_);
                  _tmp44_ = _tmp43_;
                  _tmp45_ = vala_ccode_member_access_new_pointer (_tmp41_, _tmp44_);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp45_;
                  _g_free0 (_tmp44_);
                  _vala_ccode_node_unref0 (_tmp41_);
                  _g_free0 (_tmp39_);
                  if (array_type != NULL) {
                        {
                              gint dim;
                              dim = 1;
                              {
                                    gboolean _tmp46_;
                                    _tmp46_ = TRUE;
                                    while (TRUE) {
                                          gint _tmp47_;
                                          gint _tmp48_;
                                          gchar* _tmp49_ = NULL;
                                          gchar* _tmp50_;
                                          ValaCCodeExpression* _tmp51_ = NULL;
                                          ValaCCodeExpression* _tmp52_;
                                          gchar* _tmp53_ = NULL;
                                          gchar* _tmp54_;
                                          ValaCCodeMemberAccess* _tmp55_ = NULL;
                                          ValaCCodeMemberAccess* _tmp56_;
                                          if (!_tmp46_) {
                                                dim++;
                                          }
                                          _tmp46_ = FALSE;
                                          _tmp47_ = vala_array_type_get_rank (array_type);
                                          if (!(dim <= _tmp47_)) {
                                                break;
                                          }
                                          _tmp48_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                                          _tmp49_ = g_strdup_printf ("_data%d_", _tmp48_);
                                          _tmp50_ = _tmp49_;
                                          _tmp51_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp50_);
                                          _tmp52_ = _tmp51_;
                                          _tmp53_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, param, dim);
                                          _tmp54_ = _tmp53_;
                                          _tmp55_ = vala_ccode_member_access_new_pointer (_tmp52_, _tmp54_);
                                          _tmp56_ = _tmp55_;
                                          vala_glib_value_append_array_length_cvalue (_result_, (ValaCCodeExpression*) _tmp56_);
                                          _vala_ccode_node_unref0 (_tmp56_);
                                          _g_free0 (_tmp54_);
                                          _vala_ccode_node_unref0 (_tmp52_);
                                          _g_free0 (_tmp50_);
                                    }
                              }
                        }
                  } else {
                        gboolean _tmp57_ = FALSE;
                        if (delegate_type != NULL) {
                              ValaDelegate* _tmp58_ = NULL;
                              gboolean _tmp59_;
                              _tmp58_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                              _tmp59_ = vala_delegate_get_has_target (_tmp58_);
                              _tmp57_ = _tmp59_;
                        } else {
                              _tmp57_ = FALSE;
                        }
                        if (_tmp57_) {
                              gint _tmp60_;
                              gchar* _tmp61_ = NULL;
                              gchar* _tmp62_;
                              ValaCCodeExpression* _tmp63_ = NULL;
                              ValaCCodeExpression* _tmp64_;
                              const gchar* _tmp65_ = NULL;
                              gchar* _tmp66_ = NULL;
                              gchar* _tmp67_;
                              gchar* _tmp68_ = NULL;
                              gchar* _tmp69_;
                              ValaCCodeMemberAccess* _tmp70_ = NULL;
                              gint _tmp71_;
                              gchar* _tmp72_ = NULL;
                              gchar* _tmp73_;
                              ValaCCodeExpression* _tmp74_ = NULL;
                              ValaCCodeExpression* _tmp75_;
                              const gchar* _tmp76_ = NULL;
                              gchar* _tmp77_ = NULL;
                              gchar* _tmp78_;
                              gchar* _tmp79_ = NULL;
                              gchar* _tmp80_;
                              ValaCCodeMemberAccess* _tmp81_ = NULL;
                              _tmp60_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                              _tmp61_ = g_strdup_printf ("_data%d_", _tmp60_);
                              _tmp62_ = _tmp61_;
                              _tmp63_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp62_);
                              _tmp64_ = _tmp63_;
                              _tmp65_ = vala_symbol_get_name ((ValaSymbol*) param);
                              _tmp66_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp65_);
                              _tmp67_ = _tmp66_;
                              _tmp68_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp67_);
                              _tmp69_ = _tmp68_;
                              _tmp70_ = vala_ccode_member_access_new_pointer (_tmp64_, _tmp69_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp70_;
                              _g_free0 (_tmp69_);
                              _g_free0 (_tmp67_);
                              _vala_ccode_node_unref0 (_tmp64_);
                              _g_free0 (_tmp62_);
                              _tmp71_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, block);
                              _tmp72_ = g_strdup_printf ("_data%d_", _tmp71_);
                              _tmp73_ = _tmp72_;
                              _tmp74_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp73_);
                              _tmp75_ = _tmp74_;
                              _tmp76_ = vala_symbol_get_name ((ValaSymbol*) param);
                              _tmp77_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp76_);
                              _tmp78_ = _tmp77_;
                              _tmp79_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp78_);
                              _tmp80_ = _tmp79_;
                              _tmp81_ = vala_ccode_member_access_new_pointer (_tmp75_, _tmp80_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                              _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp81_;
                              _g_free0 (_tmp80_);
                              _g_free0 (_tmp78_);
                              _vala_ccode_node_unref0 (_tmp75_);
                              _g_free0 (_tmp73_);
                        }
                  }
                  _vala_code_node_unref0 (block);
            } else {
                  gboolean _tmp82_;
                  _tmp82_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
                  if (_tmp82_) {
                        const gchar* _tmp83_ = NULL;
                        ValaCCodeExpression* _tmp84_ = NULL;
                        gboolean _tmp85_ = FALSE;
                        _tmp83_ = vala_symbol_get_name ((ValaSymbol*) param);
                        _tmp84_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp83_);
                        _vala_ccode_node_unref0 (_result_->cvalue);
                        _result_->cvalue = _tmp84_;
                        if (delegate_type != NULL) {
                              ValaDelegate* _tmp86_ = NULL;
                              gboolean _tmp87_;
                              _tmp86_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                              _tmp87_ = vala_delegate_get_has_target (_tmp86_);
                              _tmp85_ = _tmp87_;
                        } else {
                              _tmp85_ = FALSE;
                        }
                        if (_tmp85_) {
                              ValaCCodeIdentifier* _tmp88_ = NULL;
                              ValaCCodeIdentifier* _tmp89_;
                              const gchar* _tmp90_ = NULL;
                              gchar* _tmp91_ = NULL;
                              gchar* _tmp92_;
                              gchar* _tmp93_ = NULL;
                              gchar* _tmp94_;
                              ValaCCodeMemberAccess* _tmp95_ = NULL;
                              ValaCCodeIdentifier* _tmp96_ = NULL;
                              ValaCCodeIdentifier* _tmp97_;
                              const gchar* _tmp98_ = NULL;
                              gchar* _tmp99_ = NULL;
                              gchar* _tmp100_;
                              gchar* _tmp101_ = NULL;
                              gchar* _tmp102_;
                              ValaCCodeMemberAccess* _tmp103_ = NULL;
                              _tmp88_ = vala_ccode_identifier_new ("data");
                              _tmp89_ = _tmp88_;
                              _tmp90_ = vala_symbol_get_name ((ValaSymbol*) param);
                              _tmp91_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp90_);
                              _tmp92_ = _tmp91_;
                              _tmp93_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp92_);
                              _tmp94_ = _tmp93_;
                              _tmp95_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp89_, _tmp94_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp95_;
                              _g_free0 (_tmp94_);
                              _g_free0 (_tmp92_);
                              _vala_ccode_node_unref0 (_tmp89_);
                              _tmp96_ = vala_ccode_identifier_new ("data");
                              _tmp97_ = _tmp96_;
                              _tmp98_ = vala_symbol_get_name ((ValaSymbol*) param);
                              _tmp99_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp98_);
                              _tmp100_ = _tmp99_;
                              _tmp101_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp100_);
                              _tmp102_ = _tmp101_;
                              _tmp103_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp97_, _tmp102_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                              _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp103_;
                              _g_free0 (_tmp102_);
                              _g_free0 (_tmp100_);
                              _vala_ccode_node_unref0 (_tmp97_);
                        }
                  } else {
                        ValaDataType* _tmp104_ = NULL;
                        ValaTypeSymbol* _tmp105_ = NULL;
                        ValaTypeSymbol* _tmp106_;
                        ValaStruct* _tmp107_;
                        ValaStruct* type_as_struct;
                        ValaParameterDirection _tmp108_;
                        gboolean _tmp110_ = FALSE;
                        ValaParameterDirection _tmp111_;
                        gboolean _tmp145_ = FALSE;
                        _tmp104_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                        _tmp105_ = vala_data_type_get_data_type (_tmp104_);
                        _tmp106_ = _tmp105_;
                        _tmp107_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp106_) ? ((ValaStruct*) _tmp106_) : NULL);
                        type_as_struct = _tmp107_;
                        _tmp108_ = vala_parameter_get_direction (param);
                        if (_tmp108_ == VALA_PARAMETER_DIRECTION_OUT) {
                              gchar* _tmp109_;
                              _tmp109_ = g_strconcat ("_", name, NULL);
                              _g_free0 (name);
                              name = _tmp109_;
                        }
                        _tmp111_ = vala_parameter_get_direction (param);
                        if (_tmp111_ == VALA_PARAMETER_DIRECTION_REF) {
                              _tmp110_ = TRUE;
                        } else {
                              gboolean _tmp112_ = FALSE;
                              gboolean _tmp113_ = FALSE;
                              gboolean _tmp114_ = FALSE;
                              ValaParameterDirection _tmp115_;
                              _tmp115_ = vala_parameter_get_direction (param);
                              if (_tmp115_ == VALA_PARAMETER_DIRECTION_IN) {
                                    _tmp114_ = type_as_struct != NULL;
                              } else {
                                    _tmp114_ = FALSE;
                              }
                              if (_tmp114_) {
                                    gboolean _tmp116_;
                                    _tmp116_ = vala_struct_is_simple_type (type_as_struct);
                                    _tmp113_ = !_tmp116_;
                              } else {
                                    _tmp113_ = FALSE;
                              }
                              if (_tmp113_) {
                                    ValaDataType* _tmp117_ = NULL;
                                    gboolean _tmp118_;
                                    _tmp117_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                                    _tmp118_ = vala_data_type_get_nullable (_tmp117_);
                                    _tmp112_ = !_tmp118_;
                              } else {
                                    _tmp112_ = FALSE;
                              }
                              _tmp110_ = _tmp112_;
                        }
                        if (_tmp110_) {
                              gchar* _tmp119_ = NULL;
                              gchar* _tmp120_;
                              ValaCCodeIdentifier* _tmp121_ = NULL;
                              ValaCCodeIdentifier* _tmp122_;
                              ValaCCodeUnaryExpression* _tmp123_ = NULL;
                              _tmp119_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, name);
                              _tmp120_ = _tmp119_;
                              _tmp121_ = vala_ccode_identifier_new (_tmp120_);
                              _tmp122_ = _tmp121_;
                              _tmp123_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp122_);
                              _vala_ccode_node_unref0 (_result_->cvalue);
                              _result_->cvalue = (ValaCCodeExpression*) _tmp123_;
                              _vala_ccode_node_unref0 (_tmp122_);
                              _g_free0 (_tmp120_);
                        } else {
                              gboolean _tmp124_ = FALSE;
                              gboolean _tmp125_ = FALSE;
                              gboolean _tmp126_ = FALSE;
                              gboolean _tmp127_ = FALSE;
                              ValaPropertyAccessor* _tmp128_ = NULL;
                              _tmp128_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
                              if (_tmp128_ != NULL) {
                                    ValaPropertyAccessor* _tmp129_ = NULL;
                                    gboolean _tmp130_;
                                    _tmp129_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
                                    _tmp130_ = vala_property_accessor_get_writable (_tmp129_);
                                    _tmp127_ = _tmp130_;
                              } else {
                                    _tmp127_ = FALSE;
                              }
                              if (_tmp127_) {
                                    ValaPropertyAccessor* _tmp131_ = NULL;
                                    ValaParameter* _tmp132_ = NULL;
                                    _tmp131_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
                                    _tmp132_ = vala_property_accessor_get_value_parameter (_tmp131_);
                                    _tmp126_ = _tmp132_ == param;
                              } else {
                                    _tmp126_ = FALSE;
                              }
                              if (_tmp126_) {
                                    ValaPropertyAccessor* _tmp133_ = NULL;
                                    ValaProperty* _tmp134_ = NULL;
                                    ValaDataType* _tmp135_ = NULL;
                                    gboolean _tmp136_;
                                    _tmp133_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
                                    _tmp134_ = vala_property_accessor_get_prop (_tmp133_);
                                    _tmp135_ = vala_property_get_property_type (_tmp134_);
                                    _tmp136_ = vala_data_type_is_real_struct_type (_tmp135_);
                                    _tmp125_ = _tmp136_;
                              } else {
                                    _tmp125_ = FALSE;
                              }
                              if (_tmp125_) {
                                    ValaPropertyAccessor* _tmp137_ = NULL;
                                    ValaProperty* _tmp138_ = NULL;
                                    ValaDataType* _tmp139_ = NULL;
                                    gboolean _tmp140_;
                                    _tmp137_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
                                    _tmp138_ = vala_property_accessor_get_prop (_tmp137_);
                                    _tmp139_ = vala_property_get_property_type (_tmp138_);
                                    _tmp140_ = vala_data_type_get_nullable (_tmp139_);
                                    _tmp124_ = !_tmp140_;
                              } else {
                                    _tmp124_ = FALSE;
                              }
                              if (_tmp124_) {
                                    ValaCCodeIdentifier* _tmp141_ = NULL;
                                    ValaCCodeIdentifier* _tmp142_;
                                    ValaCCodeUnaryExpression* _tmp143_ = NULL;
                                    _tmp141_ = vala_ccode_identifier_new ("value");
                                    _tmp142_ = _tmp141_;
                                    _tmp143_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp142_);
                                    _vala_ccode_node_unref0 (_result_->cvalue);
                                    _result_->cvalue = (ValaCCodeExpression*) _tmp143_;
                                    _vala_ccode_node_unref0 (_tmp142_);
                              } else {
                                    ValaCCodeExpression* _tmp144_ = NULL;
                                    _tmp144_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, name);
                                    _vala_ccode_node_unref0 (_result_->cvalue);
                                    _result_->cvalue = _tmp144_;
                              }
                        }
                        if (delegate_type != NULL) {
                              ValaDelegate* _tmp146_ = NULL;
                              gboolean _tmp147_;
                              _tmp146_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                              _tmp147_ = vala_delegate_get_has_target (_tmp146_);
                              _tmp145_ = _tmp147_;
                        } else {
                              _tmp145_ = FALSE;
                        }
                        if (_tmp145_) {
                              gchar* _tmp148_ = NULL;
                              gchar* _tmp149_;
                              gchar* _tmp150_ = NULL;
                              gchar* _tmp151_;
                              ValaCCodeIdentifier* _tmp152_ = NULL;
                              ValaCCodeExpression* _tmp153_;
                              ValaCCodeExpression* target_expr;
                              gchar* _tmp154_ = NULL;
                              gchar* _tmp155_;
                              gchar* _tmp156_ = NULL;
                              gchar* _tmp157_;
                              ValaCCodeIdentifier* _tmp158_ = NULL;
                              ValaCCodeExpression* _tmp159_;
                              ValaCCodeExpression* delegate_target_destroy_notify;
                              ValaParameterDirection _tmp160_;
                              ValaCCodeExpression* _tmp163_;
                              ValaDataType* _tmp164_ = NULL;
                              gboolean _tmp165_;
                              _tmp148_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, name);
                              _tmp149_ = _tmp148_;
                              _tmp150_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp149_);
                              _tmp151_ = _tmp150_;
                              _tmp152_ = vala_ccode_identifier_new (_tmp151_);
                              _tmp153_ = (ValaCCodeExpression*) _tmp152_;
                              _g_free0 (_tmp151_);
                              _g_free0 (_tmp149_);
                              target_expr = _tmp153_;
                              _tmp154_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, name);
                              _tmp155_ = _tmp154_;
                              _tmp156_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp155_);
                              _tmp157_ = _tmp156_;
                              _tmp158_ = vala_ccode_identifier_new (_tmp157_);
                              _tmp159_ = (ValaCCodeExpression*) _tmp158_;
                              _g_free0 (_tmp157_);
                              _g_free0 (_tmp155_);
                              delegate_target_destroy_notify = _tmp159_;
                              _tmp160_ = vala_parameter_get_direction (param);
                              if (_tmp160_ == VALA_PARAMETER_DIRECTION_REF) {
                                    ValaCCodeUnaryExpression* _tmp161_ = NULL;
                                    ValaCCodeUnaryExpression* _tmp162_ = NULL;
                                    _tmp161_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, target_expr);
                                    _vala_ccode_node_unref0 (target_expr);
                                    target_expr = (ValaCCodeExpression*) _tmp161_;
                                    _tmp162_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, delegate_target_destroy_notify);
                                    _vala_ccode_node_unref0 (delegate_target_destroy_notify);
                                    delegate_target_destroy_notify = (ValaCCodeExpression*) _tmp162_;
                              }
                              _tmp163_ = _vala_ccode_node_ref0 (target_expr);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = _tmp163_;
                              _tmp164_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                              _tmp165_ = vala_data_type_get_value_owned (_tmp164_);
                              if (_tmp165_) {
                                    ValaCCodeExpression* _tmp166_;
                                    _tmp166_ = _vala_ccode_node_ref0 (delegate_target_destroy_notify);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                                    _result_->delegate_target_destroy_notify_cvalue = _tmp166_;
                              }
                              _vala_ccode_node_unref0 (delegate_target_destroy_notify);
                              _vala_ccode_node_unref0 (target_expr);
                        }
                        _vala_code_node_unref0 (type_as_struct);
                  }
            }
            _tmp168_ = vala_parameter_get_captured (param);
            if (!_tmp168_) {
                  _tmp167_ = array_type != NULL;
            } else {
                  _tmp167_ = FALSE;
            }
            if (_tmp167_) {
                  gboolean _tmp169_ = FALSE;
                  gboolean _tmp170_;
                  _tmp170_ = vala_variable_get_no_array_length ((ValaVariable*) param);
                  if (!_tmp170_) {
                        gboolean _tmp171_;
                        _tmp171_ = vala_variable_get_array_null_terminated ((ValaVariable*) param);
                        _tmp169_ = !_tmp171_;
                  } else {
                        _tmp169_ = FALSE;
                  }
                  if (_tmp169_) {
                        {
                              gint dim;
                              dim = 1;
                              {
                                    gboolean _tmp172_;
                                    _tmp172_ = TRUE;
                                    while (TRUE) {
                                          gint _tmp173_;
                                          gchar* _tmp174_ = NULL;
                                          gchar* _tmp175_;
                                          ValaCCodeExpression* _tmp176_ = NULL;
                                          ValaCCodeExpression* _tmp177_;
                                          ValaCCodeExpression* length_expr;
                                          ValaParameterDirection _tmp178_;
                                          if (!_tmp172_) {
                                                dim++;
                                          }
                                          _tmp172_ = FALSE;
                                          _tmp173_ = vala_array_type_get_rank (array_type);
                                          if (!(dim <= _tmp173_)) {
                                                break;
                                          }
                                          _tmp174_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, param, dim);
                                          _tmp175_ = _tmp174_;
                                          _tmp176_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp175_);
                                          _tmp177_ = _tmp176_;
                                          _g_free0 (_tmp175_);
                                          length_expr = _tmp177_;
                                          _tmp178_ = vala_parameter_get_direction (param);
                                          if (_tmp178_ == VALA_PARAMETER_DIRECTION_OUT) {
                                                gchar* _tmp179_ = NULL;
                                                gchar* _tmp180_;
                                                gchar* _tmp181_ = NULL;
                                                gchar* _tmp182_;
                                                ValaCCodeExpression* _tmp183_ = NULL;
                                                _tmp179_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, name);
                                                _tmp180_ = _tmp179_;
                                                _tmp181_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp180_, dim);
                                                _tmp182_ = _tmp181_;
                                                _tmp183_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp182_);
                                                _vala_ccode_node_unref0 (length_expr);
                                                length_expr = _tmp183_;
                                                _g_free0 (_tmp182_);
                                                _g_free0 (_tmp180_);
                                          } else {
                                                ValaParameterDirection _tmp184_;
                                                _tmp184_ = vala_parameter_get_direction (param);
                                                if (_tmp184_ == VALA_PARAMETER_DIRECTION_REF) {
                                                      ValaCCodeUnaryExpression* _tmp185_ = NULL;
                                                      _tmp185_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, length_expr);
                                                      _vala_ccode_node_unref0 (length_expr);
                                                      length_expr = (ValaCCodeExpression*) _tmp185_;
                                                }
                                          }
                                          vala_glib_value_append_array_length_cvalue (_result_, length_expr);
                                          _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* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* value_type;
      ValaGLibValue* _tmp4_ = NULL;
      ValaGLibValue* _result_;
      ValaDataType* _tmp5_ = NULL;
      ValaDataType* _tmp6_;
      ValaArrayType* _tmp7_;
      ValaArrayType* array_type;
      ValaDataType* _tmp8_ = NULL;
      ValaDataType* _tmp9_;
      ValaDelegateType* _tmp10_;
      ValaDelegateType* delegate_type;
      ValaMemberBinding _tmp11_;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_val_if_fail (field != NULL, NULL);
      _tmp0_ = vala_variable_get_variable_type ((ValaVariable*) field);
      _tmp1_ = vala_data_type_copy (_tmp0_);
      value_type = _tmp1_;
      if (instance != NULL) {
            ValaDataType* _tmp2_ = NULL;
            ValaDataType* _tmp3_ = NULL;
            _tmp2_ = vala_target_value_get_value_type (instance);
            _tmp3_ = vala_data_type_get_actual_type (value_type, _tmp2_, NULL, (ValaCodeNode*) field);
            _vala_code_node_unref0 (value_type);
            value_type = _tmp3_;
      }
      _tmp4_ = vala_glib_value_new (value_type, NULL);
      _result_ = _tmp4_;
      _tmp5_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      _tmp6_ = _tmp5_;
      _tmp7_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp6_) ? ((ValaArrayType*) _tmp6_) : NULL);
      array_type = _tmp7_;
      _tmp8_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      _tmp9_ = _tmp8_;
      _tmp10_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp9_) ? ((ValaDelegateType*) _tmp9_) : NULL);
      delegate_type = _tmp10_;
      _tmp11_ = vala_field_get_binding (field);
      if (_tmp11_ == VALA_MEMBER_BINDING_INSTANCE) {
            ValaCCodeExpression* pub_inst;
            ValaSymbol* _tmp13_ = NULL;
            ValaDataType* _tmp14_ = NULL;
            ValaDataType* instance_target_type;
            ValaTypeSymbol* _tmp15_ = NULL;
            ValaTypeSymbol* _tmp16_;
            ValaClass* _tmp17_;
            ValaClass* cl;
            gboolean _tmp18_ = FALSE;
            ValaTypeSymbol* _tmp19_ = NULL;
            gboolean is_gtypeinstance;
            ValaCCodeExpression* inst = NULL;
            gboolean _tmp22_ = FALSE;
            gboolean _tmp26_ = FALSE;
            ValaTypeSymbol* _tmp27_ = NULL;
            gboolean _tmp28_;
            gboolean _tmp37_ = FALSE;
            pub_inst = NULL;
            if (instance != NULL) {
                  ValaCCodeExpression* _tmp12_ = NULL;
                  _tmp12_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, instance);
                  _vala_ccode_node_unref0 (pub_inst);
                  pub_inst = _tmp12_;
            }
            _tmp13_ = vala_symbol_get_parent_symbol ((ValaSymbol*) field);
            _tmp14_ = vala_ccode_base_module_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp13_));
            instance_target_type = _tmp14_;
            _tmp15_ = vala_data_type_get_data_type (instance_target_type);
            _tmp16_ = _tmp15_;
            _tmp17_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp16_) ? ((ValaClass*) _tmp16_) : NULL);
            cl = _tmp17_;
            _tmp19_ = vala_data_type_get_data_type (instance_target_type);
            if (_tmp19_ == VALA_TYPESYMBOL (cl)) {
                  gboolean _tmp20_ = FALSE;
                  if (cl == NULL) {
                        _tmp20_ = TRUE;
                  } else {
                        gboolean _tmp21_;
                        _tmp21_ = vala_class_get_is_compact (cl);
                        _tmp20_ = !_tmp21_;
                  }
                  _tmp18_ = _tmp20_;
            } else {
                  _tmp18_ = FALSE;
            }
            is_gtypeinstance = _tmp18_;
            if (is_gtypeinstance) {
                  ValaSymbolAccessibility _tmp23_;
                  _tmp23_ = vala_symbol_get_access ((ValaSymbol*) field);
                  _tmp22_ = _tmp23_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
            } else {
                  _tmp22_ = FALSE;
            }
            if (_tmp22_) {
                  ValaCCodeMemberAccess* _tmp24_ = NULL;
                  _tmp24_ = vala_ccode_member_access_new_pointer (pub_inst, "priv");
                  _vala_ccode_node_unref0 (inst);
                  inst = (ValaCCodeExpression*) _tmp24_;
            } else {
                  ValaCCodeExpression* _tmp25_;
                  if (cl != NULL) {
                        vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, ((ValaCCodeBaseModule*) self)->cfile);
                  }
                  _tmp25_ = _vala_ccode_node_ref0 (pub_inst);
                  _vala_ccode_node_unref0 (inst);
                  inst = _tmp25_;
            }
            _tmp27_ = vala_data_type_get_data_type (instance_target_type);
            _tmp28_ = vala_typesymbol_is_reference_type (_tmp27_);
            if (_tmp28_) {
                  _tmp26_ = TRUE;
            } else {
                  gboolean _tmp29_ = FALSE;
                  if (instance != NULL) {
                        ValaDataType* _tmp30_ = NULL;
                        _tmp30_ = vala_target_value_get_value_type (instance);
                        _tmp29_ = VALA_IS_POINTER_TYPE (_tmp30_);
                  } else {
                        _tmp29_ = FALSE;
                  }
                  _tmp26_ = _tmp29_;
            }
            if (_tmp26_) {
                  gchar* _tmp31_ = NULL;
                  gchar* _tmp32_;
                  ValaCCodeMemberAccess* _tmp33_ = NULL;
                  _tmp31_ = vala_field_get_cname (field);
                  _tmp32_ = _tmp31_;
                  _tmp33_ = vala_ccode_member_access_new_pointer (inst, _tmp32_);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp33_;
                  _g_free0 (_tmp32_);
            } else {
                  gchar* _tmp34_ = NULL;
                  gchar* _tmp35_;
                  ValaCCodeMemberAccess* _tmp36_ = NULL;
                  _tmp34_ = vala_field_get_cname (field);
                  _tmp35_ = _tmp34_;
                  _tmp36_ = vala_ccode_member_access_new (inst, _tmp35_, FALSE);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp36_;
                  _g_free0 (_tmp35_);
            }
            if (array_type != NULL) {
                  gboolean _tmp38_;
                  _tmp38_ = vala_variable_get_no_array_length ((ValaVariable*) field);
                  _tmp37_ = !_tmp38_;
            } else {
                  _tmp37_ = FALSE;
            }
            if (_tmp37_) {
                  gboolean _tmp49_ = FALSE;
                  gint _tmp50_;
                  {
                        gint dim;
                        dim = 1;
                        {
                              gboolean _tmp39_;
                              _tmp39_ = TRUE;
                              while (TRUE) {
                                    gint _tmp40_;
                                    ValaCCodeExpression* length_expr;
                                    gchar* length_cname = NULL;
                                    gboolean _tmp41_;
                                    ValaSymbol* _tmp45_ = NULL;
                                    gboolean _tmp46_;
                                    if (!_tmp39_) {
                                          dim++;
                                    }
                                    _tmp39_ = FALSE;
                                    _tmp40_ = vala_array_type_get_rank (array_type);
                                    if (!(dim <= _tmp40_)) {
                                          break;
                                    }
                                    length_expr = NULL;
                                    _tmp41_ = vala_variable_get_has_array_length_cname ((ValaVariable*) field);
                                    if (_tmp41_) {
                                          gchar* _tmp42_ = NULL;
                                          _tmp42_ = vala_variable_get_array_length_cname ((ValaVariable*) field);
                                          _g_free0 (length_cname);
                                          length_cname = _tmp42_;
                                    } else {
                                          const gchar* _tmp43_ = NULL;
                                          gchar* _tmp44_ = NULL;
                                          _tmp43_ = vala_symbol_get_name ((ValaSymbol*) field);
                                          _tmp44_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp43_, dim);
                                          _g_free0 (length_cname);
                                          length_cname = _tmp44_;
                                    }
                                    _tmp45_ = vala_symbol_get_parent_symbol ((ValaSymbol*) field);
                                    _tmp46_ = vala_typesymbol_is_reference_type (VALA_TYPESYMBOL (_tmp45_));
                                    if (_tmp46_) {
                                          ValaCCodeMemberAccess* _tmp47_ = NULL;
                                          _tmp47_ = vala_ccode_member_access_new_pointer (inst, length_cname);
                                          _vala_ccode_node_unref0 (length_expr);
                                          length_expr = (ValaCCodeExpression*) _tmp47_;
                                    } else {
                                          ValaCCodeMemberAccess* _tmp48_ = NULL;
                                          _tmp48_ = vala_ccode_member_access_new (inst, length_cname, FALSE);
                                          _vala_ccode_node_unref0 (length_expr);
                                          length_expr = (ValaCCodeExpression*) _tmp48_;
                                    }
                                    vala_glib_value_append_array_length_cvalue (_result_, length_expr);
                                    _g_free0 (length_cname);
                                    _vala_ccode_node_unref0 (length_expr);
                              }
                        }
                  }
                  _tmp50_ = vala_array_type_get_rank (array_type);
                  if (_tmp50_ == 1) {
                        gboolean _tmp51_;
                        _tmp51_ = vala_symbol_is_internal_symbol ((ValaSymbol*) field);
                        _tmp49_ = _tmp51_;
                  } else {
                        _tmp49_ = FALSE;
                  }
                  if (_tmp49_) {
                        const gchar* _tmp52_ = NULL;
                        gchar* _tmp53_ = NULL;
                        gchar* size_cname;
                        ValaSymbol* _tmp54_ = NULL;
                        gboolean _tmp55_;
                        _tmp52_ = vala_symbol_get_name ((ValaSymbol*) field);
                        _tmp53_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp52_);
                        size_cname = _tmp53_;
                        _tmp54_ = vala_symbol_get_parent_symbol ((ValaSymbol*) field);
                        _tmp55_ = vala_typesymbol_is_reference_type (VALA_TYPESYMBOL (_tmp54_));
                        if (_tmp55_) {
                              ValaCCodeMemberAccess* _tmp56_ = NULL;
                              ValaCCodeMemberAccess* _tmp57_;
                              _tmp56_ = vala_ccode_member_access_new_pointer (inst, size_cname);
                              _tmp57_ = _tmp56_;
                              vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _result_, (ValaCCodeExpression*) _tmp57_);
                              _vala_ccode_node_unref0 (_tmp57_);
                        } else {
                              ValaCCodeMemberAccess* _tmp58_ = NULL;
                              ValaCCodeMemberAccess* _tmp59_;
                              _tmp58_ = vala_ccode_member_access_new (inst, size_cname, FALSE);
                              _tmp59_ = _tmp58_;
                              vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _result_, (ValaCCodeExpression*) _tmp59_);
                              _vala_ccode_node_unref0 (_tmp59_);
                        }
                        _g_free0 (size_cname);
                  }
            } else {
                  gboolean _tmp60_ = FALSE;
                  gboolean _tmp61_ = FALSE;
                  if (delegate_type != NULL) {
                        ValaDelegate* _tmp62_ = NULL;
                        gboolean _tmp63_;
                        _tmp62_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                        _tmp63_ = vala_delegate_get_has_target (_tmp62_);
                        _tmp61_ = _tmp63_;
                  } else {
                        _tmp61_ = FALSE;
                  }
                  if (_tmp61_) {
                        gboolean _tmp64_;
                        _tmp64_ = vala_variable_get_no_delegate_target ((ValaVariable*) field);
                        _tmp60_ = !_tmp64_;
                  } else {
                        _tmp60_ = FALSE;
                  }
                  if (_tmp60_) {
                        gchar* _tmp65_ = NULL;
                        gchar* _tmp66_;
                        gchar* _tmp67_ = NULL;
                        gchar* _tmp68_;
                        gchar* target_cname;
                        gchar* _tmp69_ = NULL;
                        gchar* _tmp70_;
                        gchar* _tmp71_ = NULL;
                        gchar* _tmp72_;
                        gchar* target_destroy_notify_cname;
                        ValaSymbol* _tmp73_ = NULL;
                        gboolean _tmp74_;
                        _tmp65_ = vala_field_get_cname (field);
                        _tmp66_ = _tmp65_;
                        _tmp67_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp66_);
                        _tmp68_ = _tmp67_;
                        _g_free0 (_tmp66_);
                        target_cname = _tmp68_;
                        _tmp69_ = vala_field_get_cname (field);
                        _tmp70_ = _tmp69_;
                        _tmp71_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp70_);
                        _tmp72_ = _tmp71_;
                        _g_free0 (_tmp70_);
                        target_destroy_notify_cname = _tmp72_;
                        _tmp73_ = vala_symbol_get_parent_symbol ((ValaSymbol*) field);
                        _tmp74_ = vala_typesymbol_is_reference_type (VALA_TYPESYMBOL (_tmp73_));
                        if (_tmp74_) {
                              ValaCCodeMemberAccess* _tmp75_ = NULL;
                              ValaDataType* _tmp76_ = NULL;
                              gboolean _tmp77_;
                              _tmp75_ = vala_ccode_member_access_new_pointer (inst, target_cname);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp75_;
                              _tmp76_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                              _tmp77_ = vala_data_type_get_value_owned (_tmp76_);
                              if (_tmp77_) {
                                    ValaCCodeMemberAccess* _tmp78_ = NULL;
                                    _tmp78_ = vala_ccode_member_access_new_pointer (inst, target_destroy_notify_cname);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                                    _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp78_;
                              }
                        } else {
                              ValaCCodeMemberAccess* _tmp79_ = NULL;
                              ValaDataType* _tmp80_ = NULL;
                              gboolean _tmp81_;
                              _tmp79_ = vala_ccode_member_access_new (inst, target_cname, FALSE);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp79_;
                              _tmp80_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                              _tmp81_ = vala_data_type_get_value_owned (_tmp80_);
                              if (_tmp81_) {
                                    ValaCCodeMemberAccess* _tmp82_ = NULL;
                                    _tmp82_ = vala_ccode_member_access_new (inst, target_destroy_notify_cname, FALSE);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                                    _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp82_;
                              }
                        }
                        _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 {
            ValaMemberBinding _tmp83_;
            _tmp83_ = vala_field_get_binding (field);
            if (_tmp83_ == VALA_MEMBER_BINDING_CLASS) {
                  ValaSymbol* _tmp84_ = NULL;
                  ValaClass* _tmp85_;
                  ValaClass* cl;
                  gchar* _tmp86_ = NULL;
                  gchar* _tmp87_;
                  gchar* _tmp88_;
                  gchar* _tmp89_;
                  ValaCCodeIdentifier* _tmp90_ = NULL;
                  ValaCCodeIdentifier* _tmp91_;
                  ValaCCodeFunctionCall* _tmp92_ = NULL;
                  ValaCCodeFunctionCall* _tmp93_;
                  ValaCCodeFunctionCall* cast;
                  ValaCCodeExpression* klass = NULL;
                  ValaSymbolAccessibility _tmp109_;
                  _tmp84_ = vala_symbol_get_parent_symbol ((ValaSymbol*) field);
                  _tmp85_ = _vala_code_node_ref0 (VALA_CLASS (_tmp84_));
                  cl = _tmp85_;
                  _tmp86_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                  _tmp87_ = _tmp86_;
                  _tmp88_ = g_strconcat (_tmp87_, "_CLASS", NULL);
                  _tmp89_ = _tmp88_;
                  _tmp90_ = vala_ccode_identifier_new (_tmp89_);
                  _tmp91_ = _tmp90_;
                  _tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
                  _tmp93_ = _tmp92_;
                  _vala_ccode_node_unref0 (_tmp91_);
                  _g_free0 (_tmp89_);
                  _g_free0 (_tmp87_);
                  cast = _tmp93_;
                  if (instance == NULL) {
                        if (((ValaCCodeBaseModule*) self)->in_static_or_class_context) {
                              ValaCCodeIdentifier* _tmp94_ = NULL;
                              _tmp94_ = vala_ccode_identifier_new ("klass");
                              _vala_ccode_node_unref0 (klass);
                              klass = (ValaCCodeExpression*) _tmp94_;
                        } else {
                              ValaCCodeIdentifier* _tmp95_ = NULL;
                              ValaCCodeIdentifier* _tmp96_;
                              ValaCCodeFunctionCall* _tmp97_ = NULL;
                              ValaCCodeFunctionCall* _tmp98_;
                              ValaCCodeFunctionCall* k;
                              ValaCCodeIdentifier* _tmp99_ = NULL;
                              ValaCCodeIdentifier* _tmp100_;
                              ValaCCodeExpression* _tmp101_;
                              _tmp95_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
                              _tmp96_ = _tmp95_;
                              _tmp97_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp96_);
                              _tmp98_ = _tmp97_;
                              _vala_ccode_node_unref0 (_tmp96_);
                              k = _tmp98_;
                              _tmp99_ = vala_ccode_identifier_new ("self");
                              _tmp100_ = _tmp99_;
                              vala_ccode_function_call_add_argument (k, (ValaCCodeExpression*) _tmp100_);
                              _vala_ccode_node_unref0 (_tmp100_);
                              _tmp101_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) k);
                              _vala_ccode_node_unref0 (klass);
                              klass = _tmp101_;
                              _vala_ccode_node_unref0 (k);
                        }
                  } else {
                        ValaCCodeIdentifier* _tmp102_ = NULL;
                        ValaCCodeIdentifier* _tmp103_;
                        ValaCCodeFunctionCall* _tmp104_ = NULL;
                        ValaCCodeFunctionCall* _tmp105_;
                        ValaCCodeFunctionCall* k;
                        ValaCCodeExpression* _tmp106_ = NULL;
                        ValaCCodeExpression* _tmp107_;
                        ValaCCodeExpression* _tmp108_;
                        _tmp102_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
                        _tmp103_ = _tmp102_;
                        _tmp104_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp103_);
                        _tmp105_ = _tmp104_;
                        _vala_ccode_node_unref0 (_tmp103_);
                        k = _tmp105_;
                        _tmp106_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, instance);
                        _tmp107_ = _tmp106_;
                        vala_ccode_function_call_add_argument (k, _tmp107_);
                        _vala_ccode_node_unref0 (_tmp107_);
                        _tmp108_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) k);
                        _vala_ccode_node_unref0 (klass);
                        klass = _tmp108_;
                        _vala_ccode_node_unref0 (k);
                  }
                  vala_ccode_function_call_add_argument (cast, klass);
                  _tmp109_ = vala_symbol_get_access ((ValaSymbol*) field);
                  if (_tmp109_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                        gchar* _tmp110_ = NULL;
                        gchar* _tmp111_;
                        gchar* _tmp112_ = NULL;
                        gchar* _tmp113_;
                        ValaCCodeIdentifier* _tmp114_ = NULL;
                        ValaCCodeIdentifier* _tmp115_;
                        ValaCCodeFunctionCall* _tmp116_ = NULL;
                        ValaCCodeFunctionCall* _tmp117_;
                        ValaCCodeFunctionCall* ccall;
                        gchar* _tmp118_ = NULL;
                        gchar* _tmp119_;
                        ValaCCodeMemberAccess* _tmp120_ = NULL;
                        _tmp110_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
                        _tmp111_ = _tmp110_;
                        _tmp112_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp111_);
                        _tmp113_ = _tmp112_;
                        _tmp114_ = vala_ccode_identifier_new (_tmp113_);
                        _tmp115_ = _tmp114_;
                        _tmp116_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp115_);
                        _tmp117_ = _tmp116_;
                        _vala_ccode_node_unref0 (_tmp115_);
                        _g_free0 (_tmp113_);
                        _g_free0 (_tmp111_);
                        ccall = _tmp117_;
                        vala_ccode_function_call_add_argument (ccall, klass);
                        _tmp118_ = vala_field_get_cname (field);
                        _tmp119_ = _tmp118_;
                        _tmp120_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ccall, _tmp119_);
                        _vala_ccode_node_unref0 (_result_->cvalue);
                        _result_->cvalue = (ValaCCodeExpression*) _tmp120_;
                        _g_free0 (_tmp119_);
                        _vala_ccode_node_unref0 (ccall);
                  } else {
                        gchar* _tmp121_ = NULL;
                        gchar* _tmp122_;
                        ValaCCodeMemberAccess* _tmp123_ = NULL;
                        _tmp121_ = vala_field_get_cname (field);
                        _tmp122_ = _tmp121_;
                        _tmp123_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) cast, _tmp122_);
                        _vala_ccode_node_unref0 (_result_->cvalue);
                        _result_->cvalue = (ValaCCodeExpression*) _tmp123_;
                        _g_free0 (_tmp122_);
                  }
                  _vala_ccode_node_unref0 (klass);
                  _vala_ccode_node_unref0 (cast);
                  _vala_code_node_unref0 (cl);
            } else {
                  gchar* _tmp124_ = NULL;
                  gchar* _tmp125_;
                  ValaCCodeIdentifier* _tmp126_ = NULL;
                  gboolean _tmp127_ = FALSE;
                  vala_ccode_base_module_generate_field_declaration ((ValaCCodeBaseModule*) self, field, ((ValaCCodeBaseModule*) self)->cfile);
                  _tmp124_ = vala_field_get_cname (field);
                  _tmp125_ = _tmp124_;
                  _tmp126_ = vala_ccode_identifier_new (_tmp125_);
                  _vala_ccode_node_unref0 (_result_->cvalue);
                  _result_->cvalue = (ValaCCodeExpression*) _tmp126_;
                  _g_free0 (_tmp125_);
                  if (array_type != NULL) {
                        gboolean _tmp128_;
                        _tmp128_ = vala_variable_get_no_array_length ((ValaVariable*) field);
                        _tmp127_ = !_tmp128_;
                  } else {
                        _tmp127_ = FALSE;
                  }
                  if (_tmp127_) {
                        gboolean _tmp138_ = FALSE;
                        gint _tmp139_;
                        {
                              gint dim;
                              dim = 1;
                              {
                                    gboolean _tmp129_;
                                    _tmp129_ = TRUE;
                                    while (TRUE) {
                                          gint _tmp130_;
                                          gchar* length_cname = NULL;
                                          gboolean _tmp131_;
                                          ValaCCodeIdentifier* _tmp136_ = NULL;
                                          ValaCCodeIdentifier* _tmp137_;
                                          if (!_tmp129_) {
                                                dim++;
                                          }
                                          _tmp129_ = FALSE;
                                          _tmp130_ = vala_array_type_get_rank (array_type);
                                          if (!(dim <= _tmp130_)) {
                                                break;
                                          }
                                          _tmp131_ = vala_variable_get_has_array_length_cname ((ValaVariable*) field);
                                          if (_tmp131_) {
                                                gchar* _tmp132_ = NULL;
                                                _tmp132_ = vala_variable_get_array_length_cname ((ValaVariable*) field);
                                                _g_free0 (length_cname);
                                                length_cname = _tmp132_;
                                          } else {
                                                gchar* _tmp133_ = NULL;
                                                gchar* _tmp134_;
                                                gchar* _tmp135_ = NULL;
                                                _tmp133_ = vala_field_get_cname (field);
                                                _tmp134_ = _tmp133_;
                                                _tmp135_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp134_, dim);
                                                _g_free0 (length_cname);
                                                length_cname = _tmp135_;
                                                _g_free0 (_tmp134_);
                                          }
                                          _tmp136_ = vala_ccode_identifier_new (length_cname);
                                          _tmp137_ = _tmp136_;
                                          vala_glib_value_append_array_length_cvalue (_result_, (ValaCCodeExpression*) _tmp137_);
                                          _vala_ccode_node_unref0 (_tmp137_);
                                          _g_free0 (length_cname);
                                    }
                              }
                        }
                        _tmp139_ = vala_array_type_get_rank (array_type);
                        if (_tmp139_ == 1) {
                              gboolean _tmp140_;
                              _tmp140_ = vala_symbol_is_internal_symbol ((ValaSymbol*) field);
                              _tmp138_ = _tmp140_;
                        } else {
                              _tmp138_ = FALSE;
                        }
                        if (_tmp138_) {
                              gchar* _tmp141_ = NULL;
                              gchar* _tmp142_;
                              gchar* _tmp143_ = NULL;
                              gchar* _tmp144_;
                              ValaCCodeIdentifier* _tmp145_ = NULL;
                              ValaCCodeIdentifier* _tmp146_;
                              _tmp141_ = vala_field_get_cname (field);
                              _tmp142_ = _tmp141_;
                              _tmp143_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp142_);
                              _tmp144_ = _tmp143_;
                              _tmp145_ = vala_ccode_identifier_new (_tmp144_);
                              _tmp146_ = _tmp145_;
                              vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _result_, (ValaCCodeExpression*) _tmp146_);
                              _vala_ccode_node_unref0 (_tmp146_);
                              _g_free0 (_tmp144_);
                              _g_free0 (_tmp142_);
                        }
                  } else {
                        gboolean _tmp147_ = FALSE;
                        gboolean _tmp148_ = FALSE;
                        if (delegate_type != NULL) {
                              ValaDelegate* _tmp149_ = NULL;
                              gboolean _tmp150_;
                              _tmp149_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                              _tmp150_ = vala_delegate_get_has_target (_tmp149_);
                              _tmp148_ = _tmp150_;
                        } else {
                              _tmp148_ = FALSE;
                        }
                        if (_tmp148_) {
                              gboolean _tmp151_;
                              _tmp151_ = vala_variable_get_no_delegate_target ((ValaVariable*) field);
                              _tmp147_ = !_tmp151_;
                        } else {
                              _tmp147_ = FALSE;
                        }
                        if (_tmp147_) {
                              gchar* _tmp152_ = NULL;
                              gchar* _tmp153_;
                              gchar* _tmp154_ = NULL;
                              gchar* _tmp155_;
                              ValaCCodeIdentifier* _tmp156_ = NULL;
                              ValaDataType* _tmp157_ = NULL;
                              gboolean _tmp158_;
                              _tmp152_ = vala_field_get_cname (field);
                              _tmp153_ = _tmp152_;
                              _tmp154_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp153_);
                              _tmp155_ = _tmp154_;
                              _tmp156_ = vala_ccode_identifier_new (_tmp155_);
                              _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                              _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp156_;
                              _g_free0 (_tmp155_);
                              _g_free0 (_tmp153_);
                              _tmp157_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
                              _tmp158_ = vala_data_type_get_value_owned (_tmp157_);
                              if (_tmp158_) {
                                    gchar* _tmp159_ = NULL;
                                    gchar* _tmp160_;
                                    gchar* _tmp161_ = NULL;
                                    gchar* _tmp162_;
                                    ValaCCodeIdentifier* _tmp163_ = NULL;
                                    _tmp159_ = vala_field_get_cname (field);
                                    _tmp160_ = _tmp159_;
                                    _tmp161_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp160_);
                                    _tmp162_ = _tmp161_;
                                    _tmp163_ = vala_ccode_identifier_new (_tmp162_);
                                    _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                                    _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp163_;
                                    _g_free0 (_tmp162_);
                                    _g_free0 (_tmp160_);
                              }
                        }
                  }
            }
      }
      result = (ValaTargetValue*) _result_;
      _vala_code_node_unref0 (delegate_type);
      _vala_code_node_unref0 (array_type);
      _vala_code_node_unref0 (value_type);
      return result;
}


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


static ValaTargetValue* vala_ccode_member_access_module_load_variable (ValaCCodeMemberAccessModule* self, ValaVariable* variable, ValaTargetValue* value) {
      ValaTargetValue* result = NULL;
      ValaGLibValue* _tmp0_;
      ValaGLibValue* _result_;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaArrayType* _tmp3_;
      ValaArrayType* array_type;
      ValaDataType* _tmp4_ = NULL;
      ValaDataType* _tmp5_;
      ValaDelegateType* _tmp6_;
      ValaDelegateType* delegate_type;
      ValaDataType* _tmp35_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (variable != NULL, NULL);
      g_return_val_if_fail (value != NULL, NULL);
      _tmp0_ = _vala_target_value_ref0 (VALA_GLIB_VALUE (value));
      _result_ = _tmp0_;
      _tmp1_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      _tmp2_ = _tmp1_;
      _tmp3_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp2_) ? ((ValaArrayType*) _tmp2_) : NULL);
      array_type = _tmp3_;
      _tmp4_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      _tmp5_ = _tmp4_;
      _tmp6_ = _vala_code_node_ref0 (VALA_IS_DELEGATE_TYPE (_tmp5_) ? ((ValaDelegateType*) _tmp5_) : NULL);
      delegate_type = _tmp6_;
      if (array_type != NULL) {
            gboolean _tmp7_;
            _tmp7_ = vala_variable_get_array_null_terminated (variable);
            if (_tmp7_) {
                  ValaCCodeIdentifier* _tmp8_ = NULL;
                  ValaCCodeIdentifier* _tmp9_;
                  ValaCCodeFunctionCall* _tmp10_ = NULL;
                  ValaCCodeFunctionCall* _tmp11_;
                  ValaCCodeFunctionCall* len_call;
                  ((ValaCCodeBaseModule*) self)->requires_array_length = TRUE;
                  _tmp8_ = vala_ccode_identifier_new ("_vala_array_length");
                  _tmp9_ = _tmp8_;
                  _tmp10_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp9_);
                  _tmp11_ = _tmp10_;
                  _vala_ccode_node_unref0 (_tmp9_);
                  len_call = _tmp11_;
                  vala_ccode_function_call_add_argument (len_call, _result_->cvalue);
                  _vala_iterable_unref0 (_result_->array_length_cvalues);
                  _result_->array_length_cvalues = NULL;
                  vala_glib_value_append_array_length_cvalue (_result_, (ValaCCodeExpression*) len_call);
                  _vala_ccode_node_unref0 (len_call);
            } else {
                  gboolean _tmp12_;
                  _tmp12_ = vala_variable_get_has_array_length_cexpr (variable);
                  if (_tmp12_) {
                        gchar* _tmp13_ = NULL;
                        gchar* _tmp14_;
                        ValaCCodeConstant* _tmp15_ = NULL;
                        ValaCCodeConstant* _tmp16_;
                        ValaCCodeConstant* length_expr;
                        _tmp13_ = vala_variable_get_array_length_cexpr (variable);
                        _tmp14_ = _tmp13_;
                        _tmp15_ = vala_ccode_constant_new (_tmp14_);
                        _tmp16_ = _tmp15_;
                        _g_free0 (_tmp14_);
                        length_expr = _tmp16_;
                        _vala_iterable_unref0 (_result_->array_length_cvalues);
                        _result_->array_length_cvalues = NULL;
                        vala_glib_value_append_array_length_cvalue (_result_, (ValaCCodeExpression*) length_expr);
                        _vala_ccode_node_unref0 (length_expr);
                  } else {
                        gboolean _tmp17_;
                        _tmp17_ = vala_variable_get_no_array_length (variable);
                        if (_tmp17_) {
                              _vala_iterable_unref0 (_result_->array_length_cvalues);
                              _result_->array_length_cvalues = NULL;
                              {
                                    gint dim;
                                    dim = 1;
                                    {
                                          gboolean _tmp18_;
                                          _tmp18_ = TRUE;
                                          while (TRUE) {
                                                gint _tmp19_;
                                                ValaCCodeConstant* _tmp20_ = NULL;
                                                ValaCCodeConstant* _tmp21_;
                                                if (!_tmp18_) {
                                                      dim++;
                                                }
                                                _tmp18_ = FALSE;
                                                _tmp19_ = vala_array_type_get_rank (array_type);
                                                if (!(dim <= _tmp19_)) {
                                                      break;
                                                }
                                                _tmp20_ = vala_ccode_constant_new ("-1");
                                                _tmp21_ = _tmp20_;
                                                vala_glib_value_append_array_length_cvalue (_result_, (ValaCCodeExpression*) _tmp21_);
                                                _vala_ccode_node_unref0 (_tmp21_);
                                          }
                                    }
                              }
                        } else {
                              const gchar* _tmp22_ = NULL;
                              _tmp22_ = vala_variable_get_array_length_type (variable);
                              if (_tmp22_ != NULL) {
                                    {
                                          gint dim;
                                          dim = 1;
                                          {
                                                gboolean _tmp23_;
                                                _tmp23_ = TRUE;
                                                while (TRUE) {
                                                      gint _tmp24_;
                                                      gpointer _tmp25_ = NULL;
                                                      ValaCCodeExpression* _tmp26_;
                                                      ValaCCodeCastExpression* _tmp27_ = NULL;
                                                      ValaCCodeCastExpression* _tmp28_;
                                                      if (!_tmp23_) {
                                                            dim++;
                                                      }
                                                      _tmp23_ = FALSE;
                                                      _tmp24_ = vala_array_type_get_rank (array_type);
                                                      if (!(dim <= _tmp24_)) {
                                                            break;
                                                      }
                                                      _tmp25_ = vala_list_get (_result_->array_length_cvalues, dim - 1);
                                                      _tmp26_ = (ValaCCodeExpression*) _tmp25_;
                                                      _tmp27_ = vala_ccode_cast_expression_new (_tmp26_, "gint");
                                                      _tmp28_ = _tmp27_;
                                                      vala_list_set (_result_->array_length_cvalues, dim - 1, (ValaCCodeExpression*) _tmp28_);
                                                      _vala_ccode_node_unref0 (_tmp28_);
                                                      _vala_ccode_node_unref0 (_tmp26_);
                                                }
                                          }
                                    }
                              }
                        }
                  }
            }
      } else {
            gboolean _tmp29_ = FALSE;
            if (delegate_type != NULL) {
                  ValaDelegate* _tmp30_ = NULL;
                  gboolean _tmp31_;
                  _tmp30_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                  _tmp31_ = vala_delegate_get_has_target (_tmp30_);
                  _tmp29_ = _tmp31_;
            } else {
                  _tmp29_ = FALSE;
            }
            if (_tmp29_) {
                  gboolean _tmp32_;
                  ValaCCodeConstant* _tmp34_ = NULL;
                  _tmp32_ = vala_variable_get_no_delegate_target (variable);
                  if (_tmp32_) {
                        ValaCCodeConstant* _tmp33_ = NULL;
                        _tmp33_ = vala_ccode_constant_new ("NULL");
                        _vala_ccode_node_unref0 (_result_->delegate_target_cvalue);
                        _result_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp33_;
                  }
                  _tmp34_ = vala_ccode_constant_new ("NULL");
                  _vala_ccode_node_unref0 (_result_->delegate_target_destroy_notify_cvalue);
                  _result_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp34_;
            }
      }
      _tmp35_ = vala_target_value_get_value_type ((ValaTargetValue*) _result_);
      vala_data_type_set_value_owned (_tmp35_, FALSE);
      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_load_local (ValaCodeGenerator* base, ValaLocalVariable* local) {
      ValaCCodeMemberAccessModule * self;
      ValaTargetValue* result = NULL;
      ValaTargetValue* _tmp0_ = NULL;
      ValaTargetValue* _tmp1_;
      ValaTargetValue* _tmp2_ = NULL;
      ValaTargetValue* _tmp3_;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_val_if_fail (local != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, local);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_member_access_module_load_variable (self, (ValaVariable*) local, _tmp1_);
      _tmp3_ = _tmp2_;
      _vala_target_value_unref0 (_tmp1_);
      result = _tmp3_;
      return result;
}


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


static ValaTargetValue* vala_ccode_member_access_module_real_load_this_parameter (ValaCCodeBaseModule* base, ValaTypeSymbol* sym) {
      ValaCCodeMemberAccessModule * self;
      ValaTargetValue* result = NULL;
      ValaDataType* _tmp0_ = NULL;
      ValaDataType* _tmp1_;
      ValaParameter* _tmp2_ = NULL;
      ValaParameter* _tmp3_;
      ValaParameter* param;
      ValaTargetValue* _tmp4_ = NULL;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_val_if_fail (sym != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_data_type_for_symbol (sym);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_parameter_new ("this", _tmp1_, NULL);
      _tmp3_ = _tmp2_;
      _vala_code_node_unref0 (_tmp1_);
      param = _tmp3_;
      _tmp4_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, param);
      result = _tmp4_;
      _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;
      ValaTargetValue* _tmp0_ = NULL;
      ValaTargetValue* _tmp1_;
      ValaTargetValue* _tmp2_ = NULL;
      ValaTargetValue* _tmp3_;
      self = (ValaCCodeMemberAccessModule*) base;
      g_return_val_if_fail (field != NULL, NULL);
      _tmp0_ = vala_ccode_base_module_get_field_cvalue ((ValaCCodeBaseModule*) self, field, instance);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_ccode_member_access_module_load_variable (self, (ValaVariable*) field, _tmp1_);
      _tmp3_ = _tmp2_;
      _vala_target_value_unref0 (_tmp1_);
      result = _tmp3_;
      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);
      VALA_CODE_VISITOR_CLASS (klass)->visit_member_access = vala_ccode_member_access_module_real_visit_member_access;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->get_local_cvalue = vala_ccode_member_access_module_real_get_local_cvalue;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_cvalue = vala_ccode_member_access_module_real_get_parameter_cvalue;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->get_field_cvalue = vala_ccode_member_access_module_real_get_field_cvalue;
      VALA_CODE_GENERATOR_CLASS (klass)->load_local = vala_ccode_member_access_module_real_load_local;
      VALA_CODE_GENERATOR_CLASS (klass)->load_parameter = vala_ccode_member_access_module_real_load_parameter;
      VALA_CCODE_BASE_MODULE_CLASS (klass)->load_this_parameter = vala_ccode_member_access_module_real_load_this_parameter;
      VALA_CODE_GENERATOR_CLASS (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;
}




Generated by  Doxygen 1.6.0   Back to index