Logo Search packages:      
Sourcecode: vala-0.14 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;
      gboolean in_plugin;
      gchar* module_init_param_name;
      gboolean gvaluecollector_h_needed;
      gboolean requires_array_free;
      gboolean requires_array_move;
      gboolean requires_array_length;
      ValaSet* wrappers;
};

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

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

struct _ValaCCodeStructModuleClass {
      ValaCCodeBaseModuleClass parent_class;
};

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

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

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

struct _ValaCCodeControlFlowModuleClass {
      ValaCCodeMethodModuleClass parent_class;
};

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

struct _ValaCCodeMemberAccessModuleClass {
      ValaCCodeControlFlowModuleClass parent_class;
};

struct _ValaGLibValue {
      ValaTargetValue parent_instance;
      ValaGLibValuePrivate * priv;
      ValaCCodeExpression* cvalue;
      gboolean non_null;
      gchar* ctype;
      ValaList* array_length_cvalues;
      ValaCCodeExpression* array_size_cvalue;
      gboolean array_null_terminated;
      ValaCCodeExpression* array_length_cexpr;
      ValaCCodeExpression* delegate_target_cvalue;
      ValaCCodeExpression* delegate_target_destroy_notify_cvalue;
};

struct _ValaGLibValueClass {
      ValaTargetValueClass parent_class;
};


static gpointer vala_ccode_member_access_module_parent_class = NULL;

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