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

valamemberaccess.c

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

/* valamemberaccess.vala
 *
 * Copyright (C) 2006-2011  Jürg Billeter
 *
 * 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>
 */

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <valagee.h>


#define VALA_TYPE_CODE_NODE (vala_code_node_get_type ())
#define VALA_CODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_NODE, ValaCodeNode))
#define VALA_CODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_NODE, ValaCodeNodeClass))
#define VALA_IS_CODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_NODE))
#define VALA_IS_CODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_NODE))
#define VALA_CODE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_NODE, ValaCodeNodeClass))

typedef struct _ValaCodeNode ValaCodeNode;
typedef struct _ValaCodeNodeClass ValaCodeNodeClass;
typedef struct _ValaCodeNodePrivate ValaCodeNodePrivate;

#define VALA_TYPE_CODE_VISITOR (vala_code_visitor_get_type ())
#define VALA_CODE_VISITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_VISITOR, ValaCodeVisitor))
#define VALA_CODE_VISITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_VISITOR, ValaCodeVisitorClass))
#define VALA_IS_CODE_VISITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_VISITOR))
#define VALA_IS_CODE_VISITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_VISITOR))
#define VALA_CODE_VISITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_VISITOR, ValaCodeVisitorClass))

typedef struct _ValaCodeVisitor ValaCodeVisitor;
typedef struct _ValaCodeVisitorClass ValaCodeVisitorClass;

#define VALA_TYPE_CODE_CONTEXT (vala_code_context_get_type ())
#define VALA_CODE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_CONTEXT, ValaCodeContext))
#define VALA_CODE_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_CONTEXT, ValaCodeContextClass))
#define VALA_IS_CODE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_CONTEXT))
#define VALA_IS_CODE_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_CONTEXT))
#define VALA_CODE_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_CONTEXT, ValaCodeContextClass))

typedef struct _ValaCodeContext ValaCodeContext;
typedef struct _ValaCodeContextClass ValaCodeContextClass;

#define VALA_TYPE_CODE_GENERATOR (vala_code_generator_get_type ())
#define VALA_CODE_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_GENERATOR, ValaCodeGenerator))
#define VALA_CODE_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_GENERATOR, ValaCodeGeneratorClass))
#define VALA_IS_CODE_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_GENERATOR))
#define VALA_IS_CODE_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_GENERATOR))
#define VALA_CODE_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_GENERATOR, ValaCodeGeneratorClass))

typedef struct _ValaCodeGenerator ValaCodeGenerator;
typedef struct _ValaCodeGeneratorClass ValaCodeGeneratorClass;

#define VALA_TYPE_DATA_TYPE (vala_data_type_get_type ())
#define VALA_DATA_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DATA_TYPE, ValaDataType))
#define VALA_DATA_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DATA_TYPE, ValaDataTypeClass))
#define VALA_IS_DATA_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DATA_TYPE))
#define VALA_IS_DATA_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DATA_TYPE))
#define VALA_DATA_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DATA_TYPE, ValaDataTypeClass))

typedef struct _ValaDataType ValaDataType;
typedef struct _ValaDataTypeClass ValaDataTypeClass;

#define VALA_TYPE_EXPRESSION (vala_expression_get_type ())
#define VALA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_EXPRESSION, ValaExpression))
#define VALA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_EXPRESSION, ValaExpressionClass))
#define VALA_IS_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_EXPRESSION))
#define VALA_IS_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_EXPRESSION))
#define VALA_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_EXPRESSION, ValaExpressionClass))

typedef struct _ValaExpression ValaExpression;
typedef struct _ValaExpressionClass ValaExpressionClass;

#define VALA_TYPE_SYMBOL (vala_symbol_get_type ())
#define VALA_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SYMBOL, ValaSymbol))
#define VALA_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SYMBOL, ValaSymbolClass))
#define VALA_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SYMBOL))
#define VALA_IS_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SYMBOL))
#define VALA_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SYMBOL, ValaSymbolClass))

typedef struct _ValaSymbol ValaSymbol;
typedef struct _ValaSymbolClass ValaSymbolClass;

#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))

typedef struct _ValaVariable ValaVariable;
typedef struct _ValaVariableClass ValaVariableClass;

#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
#define VALA_IS_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOCAL_VARIABLE))
#define VALA_IS_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LOCAL_VARIABLE))
#define VALA_LOCAL_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))

typedef struct _ValaLocalVariable ValaLocalVariable;
typedef struct _ValaLocalVariableClass ValaLocalVariableClass;

#define VALA_TYPE_ATTRIBUTE (vala_attribute_get_type ())
#define VALA_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ATTRIBUTE, ValaAttribute))
#define VALA_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ATTRIBUTE, ValaAttributeClass))
#define VALA_IS_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ATTRIBUTE))
#define VALA_IS_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ATTRIBUTE))
#define VALA_ATTRIBUTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ATTRIBUTE, ValaAttributeClass))

typedef struct _ValaAttribute ValaAttribute;
typedef struct _ValaAttributeClass ValaAttributeClass;
typedef struct _ValaExpressionPrivate ValaExpressionPrivate;

#define VALA_TYPE_MEMBER_ACCESS (vala_member_access_get_type ())
#define VALA_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess))
#define VALA_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccessClass))
#define VALA_IS_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER_ACCESS))
#define VALA_IS_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER_ACCESS))
#define VALA_MEMBER_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccessClass))

typedef struct _ValaMemberAccess ValaMemberAccess;
typedef struct _ValaMemberAccessClass ValaMemberAccessClass;
typedef struct _ValaMemberAccessPrivate ValaMemberAccessPrivate;
#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_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

#define VALA_TYPE_SOURCE_REFERENCE (vala_source_reference_get_type ())
#define VALA_SOURCE_REFERENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SOURCE_REFERENCE, ValaSourceReference))
#define VALA_SOURCE_REFERENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SOURCE_REFERENCE, ValaSourceReferenceClass))
#define VALA_IS_SOURCE_REFERENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SOURCE_REFERENCE))
#define VALA_IS_SOURCE_REFERENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SOURCE_REFERENCE))
#define VALA_SOURCE_REFERENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SOURCE_REFERENCE, ValaSourceReferenceClass))

typedef struct _ValaSourceReference ValaSourceReference;
typedef struct _ValaSourceReferenceClass ValaSourceReferenceClass;

#define VALA_TYPE_PROPERTY (vala_property_get_type ())
#define VALA_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PROPERTY, ValaProperty))
#define VALA_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PROPERTY, ValaPropertyClass))
#define VALA_IS_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PROPERTY))
#define VALA_IS_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PROPERTY))
#define VALA_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PROPERTY, ValaPropertyClass))

typedef struct _ValaProperty ValaProperty;
typedef struct _ValaPropertyClass ValaPropertyClass;

#define VALA_TYPE_SUBROUTINE (vala_subroutine_get_type ())
#define VALA_SUBROUTINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SUBROUTINE, ValaSubroutine))
#define VALA_SUBROUTINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SUBROUTINE, ValaSubroutineClass))
#define VALA_IS_SUBROUTINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SUBROUTINE))
#define VALA_IS_SUBROUTINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SUBROUTINE))
#define VALA_SUBROUTINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SUBROUTINE, ValaSubroutineClass))

typedef struct _ValaSubroutine ValaSubroutine;
typedef struct _ValaSubroutineClass ValaSubroutineClass;

#define VALA_TYPE_METHOD (vala_method_get_type ())
#define VALA_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD, ValaMethod))
#define VALA_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD, ValaMethodClass))
#define VALA_IS_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD))
#define VALA_IS_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD))
#define VALA_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD, ValaMethodClass))

typedef struct _ValaMethod ValaMethod;
typedef struct _ValaMethodClass ValaMethodClass;

#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))

typedef struct _ValaConstant ValaConstant;
typedef struct _ValaConstantClass ValaConstantClass;

#define VALA_TYPE_MEMBER_BINDING (vala_member_binding_get_type ())

#define VALA_TYPE_PARAMETER (vala_parameter_get_type ())
#define VALA_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PARAMETER, ValaParameter))
#define VALA_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PARAMETER, ValaParameterClass))
#define VALA_IS_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PARAMETER))
#define VALA_IS_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PARAMETER))
#define VALA_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PARAMETER, ValaParameterClass))

typedef struct _ValaParameter ValaParameter;
typedef struct _ValaParameterClass ValaParameterClass;

#define VALA_TYPE_SEMANTIC_ANALYZER (vala_semantic_analyzer_get_type ())
#define VALA_SEMANTIC_ANALYZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzer))
#define VALA_SEMANTIC_ANALYZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzerClass))
#define VALA_IS_SEMANTIC_ANALYZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SEMANTIC_ANALYZER))
#define VALA_IS_SEMANTIC_ANALYZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SEMANTIC_ANALYZER))
#define VALA_SEMANTIC_ANALYZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzerClass))

typedef struct _ValaSemanticAnalyzer ValaSemanticAnalyzer;
typedef struct _ValaSemanticAnalyzerClass ValaSemanticAnalyzerClass;
typedef struct _ValaCodeVisitorPrivate ValaCodeVisitorPrivate;

#define VALA_TYPE_SOURCE_FILE (vala_source_file_get_type ())
#define VALA_SOURCE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SOURCE_FILE, ValaSourceFile))
#define VALA_SOURCE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SOURCE_FILE, ValaSourceFileClass))
#define VALA_IS_SOURCE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SOURCE_FILE))
#define VALA_IS_SOURCE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SOURCE_FILE))
#define VALA_SOURCE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SOURCE_FILE, ValaSourceFileClass))

typedef struct _ValaSourceFile ValaSourceFile;
typedef struct _ValaSourceFileClass ValaSourceFileClass;

#define VALA_TYPE_NAMESPACE (vala_namespace_get_type ())
#define VALA_NAMESPACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NAMESPACE, ValaNamespace))
#define VALA_NAMESPACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NAMESPACE, ValaNamespaceClass))
#define VALA_IS_NAMESPACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_NAMESPACE))
#define VALA_IS_NAMESPACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_NAMESPACE))
#define VALA_NAMESPACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_NAMESPACE, ValaNamespaceClass))

typedef struct _ValaNamespace ValaNamespace;
typedef struct _ValaNamespaceClass ValaNamespaceClass;

#define VALA_TYPE_TYPESYMBOL (vala_typesymbol_get_type ())
#define VALA_TYPESYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPESYMBOL, ValaTypeSymbol))
#define VALA_TYPESYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPESYMBOL, ValaTypeSymbolClass))
#define VALA_IS_TYPESYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPESYMBOL))
#define VALA_IS_TYPESYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPESYMBOL))
#define VALA_TYPESYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPESYMBOL, ValaTypeSymbolClass))

typedef struct _ValaTypeSymbol ValaTypeSymbol;
typedef struct _ValaTypeSymbolClass ValaTypeSymbolClass;

#define VALA_TYPE_OBJECT_TYPE_SYMBOL (vala_object_type_symbol_get_type ())
#define VALA_OBJECT_TYPE_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol))
#define VALA_OBJECT_TYPE_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbolClass))
#define VALA_IS_OBJECT_TYPE_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_OBJECT_TYPE_SYMBOL))
#define VALA_IS_OBJECT_TYPE_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_OBJECT_TYPE_SYMBOL))
#define VALA_OBJECT_TYPE_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbolClass))

typedef struct _ValaObjectTypeSymbol ValaObjectTypeSymbol;
typedef struct _ValaObjectTypeSymbolClass ValaObjectTypeSymbolClass;

#define VALA_TYPE_CLASS (vala_class_get_type ())
#define VALA_CLASS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CLASS, ValaClass))
#define VALA_CLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CLASS, ValaClassClass))
#define VALA_IS_CLASS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CLASS))
#define VALA_IS_CLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CLASS))
#define VALA_CLASS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CLASS, ValaClassClass))

typedef struct _ValaClass ValaClass;
typedef struct _ValaClassClass ValaClassClass;

#define VALA_TYPE_STRUCT (vala_struct_get_type ())
#define VALA_STRUCT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRUCT, ValaStruct))
#define VALA_STRUCT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRUCT, ValaStructClass))
#define VALA_IS_STRUCT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRUCT))
#define VALA_IS_STRUCT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRUCT))
#define VALA_STRUCT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRUCT, ValaStructClass))

typedef struct _ValaStruct ValaStruct;
typedef struct _ValaStructClass ValaStructClass;

#define VALA_TYPE_INTERFACE (vala_interface_get_type ())
#define VALA_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INTERFACE, ValaInterface))
#define VALA_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INTERFACE, ValaInterfaceClass))
#define VALA_IS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INTERFACE))
#define VALA_IS_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INTERFACE))
#define VALA_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INTERFACE, ValaInterfaceClass))

typedef struct _ValaInterface ValaInterface;
typedef struct _ValaInterfaceClass ValaInterfaceClass;

#define VALA_TYPE_ENUM (vala_enum_get_type ())
#define VALA_ENUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM, ValaEnum))
#define VALA_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM, ValaEnumClass))
#define VALA_IS_ENUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ENUM))
#define VALA_IS_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ENUM))
#define VALA_ENUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ENUM, ValaEnumClass))

typedef struct _ValaEnum ValaEnum;
typedef struct _ValaEnumClass ValaEnumClass;

#define VALA_TYPE_ENUM_VALUE (vala_enum_value_get_type ())
#define VALA_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValue))
#define VALA_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))
#define VALA_IS_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ENUM_VALUE))
#define VALA_IS_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ENUM_VALUE))
#define VALA_ENUM_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))

typedef struct _ValaEnumValue ValaEnumValue;
typedef struct _ValaEnumValueClass ValaEnumValueClass;

#define VALA_TYPE_ERROR_DOMAIN (vala_error_domain_get_type ())
#define VALA_ERROR_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain))
#define VALA_ERROR_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ERROR_DOMAIN, ValaErrorDomainClass))
#define VALA_IS_ERROR_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ERROR_DOMAIN))
#define VALA_IS_ERROR_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ERROR_DOMAIN))
#define VALA_ERROR_DOMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ERROR_DOMAIN, ValaErrorDomainClass))

typedef struct _ValaErrorDomain ValaErrorDomain;
typedef struct _ValaErrorDomainClass ValaErrorDomainClass;

#define VALA_TYPE_ERROR_CODE (vala_error_code_get_type ())
#define VALA_ERROR_CODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ERROR_CODE, ValaErrorCode))
#define VALA_ERROR_CODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ERROR_CODE, ValaErrorCodeClass))
#define VALA_IS_ERROR_CODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ERROR_CODE))
#define VALA_IS_ERROR_CODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ERROR_CODE))
#define VALA_ERROR_CODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ERROR_CODE, ValaErrorCodeClass))

typedef struct _ValaErrorCode ValaErrorCode;
typedef struct _ValaErrorCodeClass ValaErrorCodeClass;

#define VALA_TYPE_DELEGATE (vala_delegate_get_type ())
#define VALA_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELEGATE, ValaDelegate))
#define VALA_DELEGATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELEGATE, ValaDelegateClass))
#define VALA_IS_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DELEGATE))
#define VALA_IS_DELEGATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DELEGATE))
#define VALA_DELEGATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DELEGATE, ValaDelegateClass))

typedef struct _ValaDelegate ValaDelegate;
typedef struct _ValaDelegateClass ValaDelegateClass;

#define VALA_TYPE_FIELD (vala_field_get_type ())
#define VALA_FIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FIELD, ValaField))
#define VALA_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FIELD, ValaFieldClass))
#define VALA_IS_FIELD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FIELD))
#define VALA_IS_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FIELD))
#define VALA_FIELD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FIELD, ValaFieldClass))

typedef struct _ValaField ValaField;
typedef struct _ValaFieldClass ValaFieldClass;

#define VALA_TYPE_CREATION_METHOD (vala_creation_method_get_type ())
#define VALA_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethod))
#define VALA_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))
#define VALA_IS_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CREATION_METHOD))
#define VALA_IS_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CREATION_METHOD))
#define VALA_CREATION_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))

typedef struct _ValaCreationMethod ValaCreationMethod;
typedef struct _ValaCreationMethodClass ValaCreationMethodClass;

#define VALA_TYPE_PROPERTY_ACCESSOR (vala_property_accessor_get_type ())
#define VALA_PROPERTY_ACCESSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor))
#define VALA_PROPERTY_ACCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessorClass))
#define VALA_IS_PROPERTY_ACCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PROPERTY_ACCESSOR))
#define VALA_IS_PROPERTY_ACCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PROPERTY_ACCESSOR))
#define VALA_PROPERTY_ACCESSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessorClass))

typedef struct _ValaPropertyAccessor ValaPropertyAccessor;
typedef struct _ValaPropertyAccessorClass ValaPropertyAccessorClass;

#define VALA_TYPE_SIGNAL (vala_signal_get_type ())
#define VALA_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SIGNAL, ValaSignal))
#define VALA_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SIGNAL, ValaSignalClass))
#define VALA_IS_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SIGNAL))
#define VALA_IS_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SIGNAL))
#define VALA_SIGNAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SIGNAL, ValaSignalClass))

typedef struct _ValaSignal ValaSignal;
typedef struct _ValaSignalClass ValaSignalClass;

#define VALA_TYPE_CONSTRUCTOR (vala_constructor_get_type ())
#define VALA_CONSTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTRUCTOR, ValaConstructor))
#define VALA_CONSTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTRUCTOR, ValaConstructorClass))
#define VALA_IS_CONSTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTRUCTOR))
#define VALA_IS_CONSTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTRUCTOR))
#define VALA_CONSTRUCTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTRUCTOR, ValaConstructorClass))

typedef struct _ValaConstructor ValaConstructor;
typedef struct _ValaConstructorClass ValaConstructorClass;

#define VALA_TYPE_DESTRUCTOR (vala_destructor_get_type ())
#define VALA_DESTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DESTRUCTOR, ValaDestructor))
#define VALA_DESTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DESTRUCTOR, ValaDestructorClass))
#define VALA_IS_DESTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DESTRUCTOR))
#define VALA_IS_DESTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DESTRUCTOR))
#define VALA_DESTRUCTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DESTRUCTOR, ValaDestructorClass))

typedef struct _ValaDestructor ValaDestructor;
typedef struct _ValaDestructorClass ValaDestructorClass;

#define VALA_TYPE_TYPEPARAMETER (vala_typeparameter_get_type ())
#define VALA_TYPEPARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPEPARAMETER, ValaTypeParameter))
#define VALA_TYPEPARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPEPARAMETER, ValaTypeParameterClass))
#define VALA_IS_TYPEPARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPEPARAMETER))
#define VALA_IS_TYPEPARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPEPARAMETER))
#define VALA_TYPEPARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPEPARAMETER, ValaTypeParameterClass))

typedef struct _ValaTypeParameter ValaTypeParameter;
typedef struct _ValaTypeParameterClass ValaTypeParameterClass;

#define VALA_TYPE_USING_DIRECTIVE (vala_using_directive_get_type ())
#define VALA_USING_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_USING_DIRECTIVE, ValaUsingDirective))
#define VALA_USING_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_USING_DIRECTIVE, ValaUsingDirectiveClass))
#define VALA_IS_USING_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_USING_DIRECTIVE))
#define VALA_IS_USING_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_USING_DIRECTIVE))
#define VALA_USING_DIRECTIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_USING_DIRECTIVE, ValaUsingDirectiveClass))

typedef struct _ValaUsingDirective ValaUsingDirective;
typedef struct _ValaUsingDirectiveClass ValaUsingDirectiveClass;

#define VALA_TYPE_BLOCK (vala_block_get_type ())
#define VALA_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BLOCK, ValaBlock))
#define VALA_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BLOCK, ValaBlockClass))
#define VALA_IS_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BLOCK))
#define VALA_IS_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BLOCK))
#define VALA_BLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BLOCK, ValaBlockClass))

typedef struct _ValaBlock ValaBlock;
typedef struct _ValaBlockClass ValaBlockClass;

#define VALA_TYPE_EMPTY_STATEMENT (vala_empty_statement_get_type ())
#define VALA_EMPTY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_EMPTY_STATEMENT, ValaEmptyStatement))
#define VALA_EMPTY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_EMPTY_STATEMENT, ValaEmptyStatementClass))
#define VALA_IS_EMPTY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_EMPTY_STATEMENT))
#define VALA_IS_EMPTY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_EMPTY_STATEMENT))
#define VALA_EMPTY_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_EMPTY_STATEMENT, ValaEmptyStatementClass))

typedef struct _ValaEmptyStatement ValaEmptyStatement;
typedef struct _ValaEmptyStatementClass ValaEmptyStatementClass;

#define VALA_TYPE_DECLARATION_STATEMENT (vala_declaration_statement_get_type ())
#define VALA_DECLARATION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DECLARATION_STATEMENT, ValaDeclarationStatement))
#define VALA_DECLARATION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DECLARATION_STATEMENT, ValaDeclarationStatementClass))
#define VALA_IS_DECLARATION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DECLARATION_STATEMENT))
#define VALA_IS_DECLARATION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DECLARATION_STATEMENT))
#define VALA_DECLARATION_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DECLARATION_STATEMENT, ValaDeclarationStatementClass))

typedef struct _ValaDeclarationStatement ValaDeclarationStatement;
typedef struct _ValaDeclarationStatementClass ValaDeclarationStatementClass;

#define VALA_TYPE_INITIALIZER_LIST (vala_initializer_list_get_type ())
#define VALA_INITIALIZER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INITIALIZER_LIST, ValaInitializerList))
#define VALA_INITIALIZER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INITIALIZER_LIST, ValaInitializerListClass))
#define VALA_IS_INITIALIZER_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INITIALIZER_LIST))
#define VALA_IS_INITIALIZER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INITIALIZER_LIST))
#define VALA_INITIALIZER_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INITIALIZER_LIST, ValaInitializerListClass))

typedef struct _ValaInitializerList ValaInitializerList;
typedef struct _ValaInitializerListClass ValaInitializerListClass;

#define VALA_TYPE_EXPRESSION_STATEMENT (vala_expression_statement_get_type ())
#define VALA_EXPRESSION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_EXPRESSION_STATEMENT, ValaExpressionStatement))
#define VALA_EXPRESSION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_EXPRESSION_STATEMENT, ValaExpressionStatementClass))
#define VALA_IS_EXPRESSION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_EXPRESSION_STATEMENT))
#define VALA_IS_EXPRESSION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_EXPRESSION_STATEMENT))
#define VALA_EXPRESSION_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_EXPRESSION_STATEMENT, ValaExpressionStatementClass))

typedef struct _ValaExpressionStatement ValaExpressionStatement;
typedef struct _ValaExpressionStatementClass ValaExpressionStatementClass;

#define VALA_TYPE_IF_STATEMENT (vala_if_statement_get_type ())
#define VALA_IF_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_IF_STATEMENT, ValaIfStatement))
#define VALA_IF_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_IF_STATEMENT, ValaIfStatementClass))
#define VALA_IS_IF_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_IF_STATEMENT))
#define VALA_IS_IF_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_IF_STATEMENT))
#define VALA_IF_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_IF_STATEMENT, ValaIfStatementClass))

typedef struct _ValaIfStatement ValaIfStatement;
typedef struct _ValaIfStatementClass ValaIfStatementClass;

#define VALA_TYPE_SWITCH_STATEMENT (vala_switch_statement_get_type ())
#define VALA_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SWITCH_STATEMENT, ValaSwitchStatement))
#define VALA_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SWITCH_STATEMENT, ValaSwitchStatementClass))
#define VALA_IS_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SWITCH_STATEMENT))
#define VALA_IS_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SWITCH_STATEMENT))
#define VALA_SWITCH_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SWITCH_STATEMENT, ValaSwitchStatementClass))

typedef struct _ValaSwitchStatement ValaSwitchStatement;
typedef struct _ValaSwitchStatementClass ValaSwitchStatementClass;

#define VALA_TYPE_SWITCH_SECTION (vala_switch_section_get_type ())
#define VALA_SWITCH_SECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SWITCH_SECTION, ValaSwitchSection))
#define VALA_SWITCH_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SWITCH_SECTION, ValaSwitchSectionClass))
#define VALA_IS_SWITCH_SECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SWITCH_SECTION))
#define VALA_IS_SWITCH_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SWITCH_SECTION))
#define VALA_SWITCH_SECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SWITCH_SECTION, ValaSwitchSectionClass))

typedef struct _ValaSwitchSection ValaSwitchSection;
typedef struct _ValaSwitchSectionClass ValaSwitchSectionClass;

#define VALA_TYPE_SWITCH_LABEL (vala_switch_label_get_type ())
#define VALA_SWITCH_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SWITCH_LABEL, ValaSwitchLabel))
#define VALA_SWITCH_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SWITCH_LABEL, ValaSwitchLabelClass))
#define VALA_IS_SWITCH_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SWITCH_LABEL))
#define VALA_IS_SWITCH_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SWITCH_LABEL))
#define VALA_SWITCH_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SWITCH_LABEL, ValaSwitchLabelClass))

typedef struct _ValaSwitchLabel ValaSwitchLabel;
typedef struct _ValaSwitchLabelClass ValaSwitchLabelClass;

#define VALA_TYPE_LOOP (vala_loop_get_type ())
#define VALA_LOOP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOOP, ValaLoop))
#define VALA_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOOP, ValaLoopClass))
#define VALA_IS_LOOP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOOP))
#define VALA_IS_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LOOP))
#define VALA_LOOP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LOOP, ValaLoopClass))

typedef struct _ValaLoop ValaLoop;
typedef struct _ValaLoopClass ValaLoopClass;

#define VALA_TYPE_WHILE_STATEMENT (vala_while_statement_get_type ())
#define VALA_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_WHILE_STATEMENT, ValaWhileStatement))
#define VALA_WHILE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_WHILE_STATEMENT, ValaWhileStatementClass))
#define VALA_IS_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_WHILE_STATEMENT))
#define VALA_IS_WHILE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_WHILE_STATEMENT))
#define VALA_WHILE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_WHILE_STATEMENT, ValaWhileStatementClass))

typedef struct _ValaWhileStatement ValaWhileStatement;
typedef struct _ValaWhileStatementClass ValaWhileStatementClass;

#define VALA_TYPE_DO_STATEMENT (vala_do_statement_get_type ())
#define VALA_DO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DO_STATEMENT, ValaDoStatement))
#define VALA_DO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DO_STATEMENT, ValaDoStatementClass))
#define VALA_IS_DO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DO_STATEMENT))
#define VALA_IS_DO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DO_STATEMENT))
#define VALA_DO_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DO_STATEMENT, ValaDoStatementClass))

typedef struct _ValaDoStatement ValaDoStatement;
typedef struct _ValaDoStatementClass ValaDoStatementClass;

#define VALA_TYPE_FOR_STATEMENT (vala_for_statement_get_type ())
#define VALA_FOR_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FOR_STATEMENT, ValaForStatement))
#define VALA_FOR_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FOR_STATEMENT, ValaForStatementClass))
#define VALA_IS_FOR_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FOR_STATEMENT))
#define VALA_IS_FOR_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FOR_STATEMENT))
#define VALA_FOR_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FOR_STATEMENT, ValaForStatementClass))

typedef struct _ValaForStatement ValaForStatement;
typedef struct _ValaForStatementClass ValaForStatementClass;

#define VALA_TYPE_FOREACH_STATEMENT (vala_foreach_statement_get_type ())
#define VALA_FOREACH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatement))
#define VALA_FOREACH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatementClass))
#define VALA_IS_FOREACH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FOREACH_STATEMENT))
#define VALA_IS_FOREACH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FOREACH_STATEMENT))
#define VALA_FOREACH_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatementClass))

typedef struct _ValaForeachStatement ValaForeachStatement;
typedef struct _ValaForeachStatementClass ValaForeachStatementClass;

#define VALA_TYPE_BREAK_STATEMENT (vala_break_statement_get_type ())
#define VALA_BREAK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BREAK_STATEMENT, ValaBreakStatement))
#define VALA_BREAK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BREAK_STATEMENT, ValaBreakStatementClass))
#define VALA_IS_BREAK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BREAK_STATEMENT))
#define VALA_IS_BREAK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BREAK_STATEMENT))
#define VALA_BREAK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BREAK_STATEMENT, ValaBreakStatementClass))

typedef struct _ValaBreakStatement ValaBreakStatement;
typedef struct _ValaBreakStatementClass ValaBreakStatementClass;

#define VALA_TYPE_CONTINUE_STATEMENT (vala_continue_statement_get_type ())
#define VALA_CONTINUE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONTINUE_STATEMENT, ValaContinueStatement))
#define VALA_CONTINUE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONTINUE_STATEMENT, ValaContinueStatementClass))
#define VALA_IS_CONTINUE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONTINUE_STATEMENT))
#define VALA_IS_CONTINUE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONTINUE_STATEMENT))
#define VALA_CONTINUE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONTINUE_STATEMENT, ValaContinueStatementClass))

typedef struct _ValaContinueStatement ValaContinueStatement;
typedef struct _ValaContinueStatementClass ValaContinueStatementClass;

#define VALA_TYPE_RETURN_STATEMENT (vala_return_statement_get_type ())
#define VALA_RETURN_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_RETURN_STATEMENT, ValaReturnStatement))
#define VALA_RETURN_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_RETURN_STATEMENT, ValaReturnStatementClass))
#define VALA_IS_RETURN_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_RETURN_STATEMENT))
#define VALA_IS_RETURN_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_RETURN_STATEMENT))
#define VALA_RETURN_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_RETURN_STATEMENT, ValaReturnStatementClass))

typedef struct _ValaReturnStatement ValaReturnStatement;
typedef struct _ValaReturnStatementClass ValaReturnStatementClass;

#define VALA_TYPE_YIELD_STATEMENT (vala_yield_statement_get_type ())
#define VALA_YIELD_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_YIELD_STATEMENT, ValaYieldStatement))
#define VALA_YIELD_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_YIELD_STATEMENT, ValaYieldStatementClass))
#define VALA_IS_YIELD_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_YIELD_STATEMENT))
#define VALA_IS_YIELD_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_YIELD_STATEMENT))
#define VALA_YIELD_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_YIELD_STATEMENT, ValaYieldStatementClass))

typedef struct _ValaYieldStatement ValaYieldStatement;
typedef struct _ValaYieldStatementClass ValaYieldStatementClass;

#define VALA_TYPE_THROW_STATEMENT (vala_throw_statement_get_type ())
#define VALA_THROW_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_THROW_STATEMENT, ValaThrowStatement))
#define VALA_THROW_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_THROW_STATEMENT, ValaThrowStatementClass))
#define VALA_IS_THROW_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_THROW_STATEMENT))
#define VALA_IS_THROW_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_THROW_STATEMENT))
#define VALA_THROW_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_THROW_STATEMENT, ValaThrowStatementClass))

typedef struct _ValaThrowStatement ValaThrowStatement;
typedef struct _ValaThrowStatementClass ValaThrowStatementClass;

#define VALA_TYPE_TRY_STATEMENT (vala_try_statement_get_type ())
#define VALA_TRY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TRY_STATEMENT, ValaTryStatement))
#define VALA_TRY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TRY_STATEMENT, ValaTryStatementClass))
#define VALA_IS_TRY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TRY_STATEMENT))
#define VALA_IS_TRY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TRY_STATEMENT))
#define VALA_TRY_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TRY_STATEMENT, ValaTryStatementClass))

typedef struct _ValaTryStatement ValaTryStatement;
typedef struct _ValaTryStatementClass ValaTryStatementClass;

#define VALA_TYPE_CATCH_CLAUSE (vala_catch_clause_get_type ())
#define VALA_CATCH_CLAUSE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CATCH_CLAUSE, ValaCatchClause))
#define VALA_CATCH_CLAUSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CATCH_CLAUSE, ValaCatchClauseClass))
#define VALA_IS_CATCH_CLAUSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CATCH_CLAUSE))
#define VALA_IS_CATCH_CLAUSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CATCH_CLAUSE))
#define VALA_CATCH_CLAUSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CATCH_CLAUSE, ValaCatchClauseClass))

typedef struct _ValaCatchClause ValaCatchClause;
typedef struct _ValaCatchClauseClass ValaCatchClauseClass;

#define VALA_TYPE_LOCK_STATEMENT (vala_lock_statement_get_type ())
#define VALA_LOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCK_STATEMENT, ValaLockStatement))
#define VALA_LOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCK_STATEMENT, ValaLockStatementClass))
#define VALA_IS_LOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOCK_STATEMENT))
#define VALA_IS_LOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LOCK_STATEMENT))
#define VALA_LOCK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LOCK_STATEMENT, ValaLockStatementClass))

typedef struct _ValaLockStatement ValaLockStatement;
typedef struct _ValaLockStatementClass ValaLockStatementClass;

#define VALA_TYPE_UNLOCK_STATEMENT (vala_unlock_statement_get_type ())
#define VALA_UNLOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatement))
#define VALA_UNLOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatementClass))
#define VALA_IS_UNLOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_UNLOCK_STATEMENT))
#define VALA_IS_UNLOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_UNLOCK_STATEMENT))
#define VALA_UNLOCK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatementClass))

typedef struct _ValaUnlockStatement ValaUnlockStatement;
typedef struct _ValaUnlockStatementClass ValaUnlockStatementClass;

#define VALA_TYPE_DELETE_STATEMENT (vala_delete_statement_get_type ())
#define VALA_DELETE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatement))
#define VALA_DELETE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatementClass))
#define VALA_IS_DELETE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DELETE_STATEMENT))
#define VALA_IS_DELETE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DELETE_STATEMENT))
#define VALA_DELETE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatementClass))

typedef struct _ValaDeleteStatement ValaDeleteStatement;
typedef struct _ValaDeleteStatementClass ValaDeleteStatementClass;

#define VALA_TYPE_ARRAY_CREATION_EXPRESSION (vala_array_creation_expression_get_type ())
#define VALA_ARRAY_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ARRAY_CREATION_EXPRESSION, ValaArrayCreationExpression))
#define VALA_ARRAY_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ARRAY_CREATION_EXPRESSION, ValaArrayCreationExpressionClass))
#define VALA_IS_ARRAY_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ARRAY_CREATION_EXPRESSION))
#define VALA_IS_ARRAY_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ARRAY_CREATION_EXPRESSION))
#define VALA_ARRAY_CREATION_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ARRAY_CREATION_EXPRESSION, ValaArrayCreationExpressionClass))

typedef struct _ValaArrayCreationExpression ValaArrayCreationExpression;
typedef struct _ValaArrayCreationExpressionClass ValaArrayCreationExpressionClass;

#define VALA_TYPE_LITERAL (vala_literal_get_type ())
#define VALA_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LITERAL, ValaLiteral))
#define VALA_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LITERAL, ValaLiteralClass))
#define VALA_IS_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LITERAL))
#define VALA_IS_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LITERAL))
#define VALA_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LITERAL, ValaLiteralClass))

typedef struct _ValaLiteral ValaLiteral;
typedef struct _ValaLiteralClass ValaLiteralClass;

#define VALA_TYPE_BOOLEAN_LITERAL (vala_boolean_literal_get_type ())
#define VALA_BOOLEAN_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteral))
#define VALA_BOOLEAN_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteralClass))
#define VALA_IS_BOOLEAN_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BOOLEAN_LITERAL))
#define VALA_IS_BOOLEAN_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BOOLEAN_LITERAL))
#define VALA_BOOLEAN_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteralClass))

typedef struct _ValaBooleanLiteral ValaBooleanLiteral;
typedef struct _ValaBooleanLiteralClass ValaBooleanLiteralClass;

#define VALA_TYPE_CHARACTER_LITERAL (vala_character_literal_get_type ())
#define VALA_CHARACTER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteral))
#define VALA_CHARACTER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteralClass))
#define VALA_IS_CHARACTER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CHARACTER_LITERAL))
#define VALA_IS_CHARACTER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CHARACTER_LITERAL))
#define VALA_CHARACTER_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteralClass))

typedef struct _ValaCharacterLiteral ValaCharacterLiteral;
typedef struct _ValaCharacterLiteralClass ValaCharacterLiteralClass;

#define VALA_TYPE_INTEGER_LITERAL (vala_integer_literal_get_type ())
#define VALA_INTEGER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral))
#define VALA_INTEGER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteralClass))
#define VALA_IS_INTEGER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INTEGER_LITERAL))
#define VALA_IS_INTEGER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INTEGER_LITERAL))
#define VALA_INTEGER_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteralClass))

typedef struct _ValaIntegerLiteral ValaIntegerLiteral;
typedef struct _ValaIntegerLiteralClass ValaIntegerLiteralClass;

#define VALA_TYPE_REAL_LITERAL (vala_real_literal_get_type ())
#define VALA_REAL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REAL_LITERAL, ValaRealLiteral))
#define VALA_REAL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REAL_LITERAL, ValaRealLiteralClass))
#define VALA_IS_REAL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REAL_LITERAL))
#define VALA_IS_REAL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REAL_LITERAL))
#define VALA_REAL_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REAL_LITERAL, ValaRealLiteralClass))

typedef struct _ValaRealLiteral ValaRealLiteral;
typedef struct _ValaRealLiteralClass ValaRealLiteralClass;

#define VALA_TYPE_REGEX_LITERAL (vala_regex_literal_get_type ())
#define VALA_REGEX_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteral))
#define VALA_REGEX_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteralClass))
#define VALA_IS_REGEX_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REGEX_LITERAL))
#define VALA_IS_REGEX_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REGEX_LITERAL))
#define VALA_REGEX_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteralClass))

typedef struct _ValaRegexLiteral ValaRegexLiteral;
typedef struct _ValaRegexLiteralClass ValaRegexLiteralClass;

#define VALA_TYPE_STRING_LITERAL (vala_string_literal_get_type ())
#define VALA_STRING_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRING_LITERAL, ValaStringLiteral))
#define VALA_STRING_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRING_LITERAL, ValaStringLiteralClass))
#define VALA_IS_STRING_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRING_LITERAL))
#define VALA_IS_STRING_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRING_LITERAL))
#define VALA_STRING_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRING_LITERAL, ValaStringLiteralClass))

typedef struct _ValaStringLiteral ValaStringLiteral;
typedef struct _ValaStringLiteralClass ValaStringLiteralClass;

#define VALA_TYPE_TEMPLATE (vala_template_get_type ())
#define VALA_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TEMPLATE, ValaTemplate))
#define VALA_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TEMPLATE, ValaTemplateClass))
#define VALA_IS_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TEMPLATE))
#define VALA_IS_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TEMPLATE))
#define VALA_TEMPLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TEMPLATE, ValaTemplateClass))

typedef struct _ValaTemplate ValaTemplate;
typedef struct _ValaTemplateClass ValaTemplateClass;

#define VALA_TYPE_LIST_LITERAL (vala_list_literal_get_type ())
#define VALA_LIST_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LIST_LITERAL, ValaListLiteral))
#define VALA_LIST_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LIST_LITERAL, ValaListLiteralClass))
#define VALA_IS_LIST_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LIST_LITERAL))
#define VALA_IS_LIST_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LIST_LITERAL))
#define VALA_LIST_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LIST_LITERAL, ValaListLiteralClass))

typedef struct _ValaListLiteral ValaListLiteral;
typedef struct _ValaListLiteralClass ValaListLiteralClass;

#define VALA_TYPE_SET_LITERAL (vala_set_literal_get_type ())
#define VALA_SET_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SET_LITERAL, ValaSetLiteral))
#define VALA_SET_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SET_LITERAL, ValaSetLiteralClass))
#define VALA_IS_SET_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SET_LITERAL))
#define VALA_IS_SET_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SET_LITERAL))
#define VALA_SET_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SET_LITERAL, ValaSetLiteralClass))

typedef struct _ValaSetLiteral ValaSetLiteral;
typedef struct _ValaSetLiteralClass ValaSetLiteralClass;

#define VALA_TYPE_MAP_LITERAL (vala_map_literal_get_type ())
#define VALA_MAP_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MAP_LITERAL, ValaMapLiteral))
#define VALA_MAP_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MAP_LITERAL, ValaMapLiteralClass))
#define VALA_IS_MAP_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MAP_LITERAL))
#define VALA_IS_MAP_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MAP_LITERAL))
#define VALA_MAP_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MAP_LITERAL, ValaMapLiteralClass))

typedef struct _ValaMapLiteral ValaMapLiteral;
typedef struct _ValaMapLiteralClass ValaMapLiteralClass;

#define VALA_TYPE_TUPLE (vala_tuple_get_type ())
#define VALA_TUPLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TUPLE, ValaTuple))
#define VALA_TUPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TUPLE, ValaTupleClass))
#define VALA_IS_TUPLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TUPLE))
#define VALA_IS_TUPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TUPLE))
#define VALA_TUPLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TUPLE, ValaTupleClass))

typedef struct _ValaTuple ValaTuple;
typedef struct _ValaTupleClass ValaTupleClass;

#define VALA_TYPE_NULL_LITERAL (vala_null_literal_get_type ())
#define VALA_NULL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NULL_LITERAL, ValaNullLiteral))
#define VALA_NULL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NULL_LITERAL, ValaNullLiteralClass))
#define VALA_IS_NULL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_NULL_LITERAL))
#define VALA_IS_NULL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_NULL_LITERAL))
#define VALA_NULL_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_NULL_LITERAL, ValaNullLiteralClass))

typedef struct _ValaNullLiteral ValaNullLiteral;
typedef struct _ValaNullLiteralClass ValaNullLiteralClass;

#define VALA_TYPE_METHOD_CALL (vala_method_call_get_type ())
#define VALA_METHOD_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD_CALL, ValaMethodCall))
#define VALA_METHOD_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD_CALL, ValaMethodCallClass))
#define VALA_IS_METHOD_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD_CALL))
#define VALA_IS_METHOD_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD_CALL))
#define VALA_METHOD_CALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD_CALL, ValaMethodCallClass))

typedef struct _ValaMethodCall ValaMethodCall;
typedef struct _ValaMethodCallClass ValaMethodCallClass;

#define VALA_TYPE_ELEMENT_ACCESS (vala_element_access_get_type ())
#define VALA_ELEMENT_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ELEMENT_ACCESS, ValaElementAccess))
#define VALA_ELEMENT_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ELEMENT_ACCESS, ValaElementAccessClass))
#define VALA_IS_ELEMENT_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ELEMENT_ACCESS))
#define VALA_IS_ELEMENT_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ELEMENT_ACCESS))
#define VALA_ELEMENT_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ELEMENT_ACCESS, ValaElementAccessClass))

typedef struct _ValaElementAccess ValaElementAccess;
typedef struct _ValaElementAccessClass ValaElementAccessClass;

#define VALA_TYPE_SLICE_EXPRESSION (vala_slice_expression_get_type ())
#define VALA_SLICE_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SLICE_EXPRESSION, ValaSliceExpression))
#define VALA_SLICE_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SLICE_EXPRESSION, ValaSliceExpressionClass))
#define VALA_IS_SLICE_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SLICE_EXPRESSION))
#define VALA_IS_SLICE_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SLICE_EXPRESSION))
#define VALA_SLICE_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SLICE_EXPRESSION, ValaSliceExpressionClass))

typedef struct _ValaSliceExpression ValaSliceExpression;
typedef struct _ValaSliceExpressionClass ValaSliceExpressionClass;

#define VALA_TYPE_BASE_ACCESS (vala_base_access_get_type ())
#define VALA_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccess))
#define VALA_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))
#define VALA_IS_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BASE_ACCESS))
#define VALA_IS_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BASE_ACCESS))
#define VALA_BASE_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))

typedef struct _ValaBaseAccess ValaBaseAccess;
typedef struct _ValaBaseAccessClass ValaBaseAccessClass;

#define VALA_TYPE_POSTFIX_EXPRESSION (vala_postfix_expression_get_type ())
#define VALA_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpression))
#define VALA_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))
#define VALA_IS_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POSTFIX_EXPRESSION))
#define VALA_IS_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POSTFIX_EXPRESSION))
#define VALA_POSTFIX_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))

typedef struct _ValaPostfixExpression ValaPostfixExpression;
typedef struct _ValaPostfixExpressionClass ValaPostfixExpressionClass;

#define VALA_TYPE_OBJECT_CREATION_EXPRESSION (vala_object_creation_expression_get_type ())
#define VALA_OBJECT_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_OBJECT_CREATION_EXPRESSION, ValaObjectCreationExpression))
#define VALA_OBJECT_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_OBJECT_CREATION_EXPRESSION, ValaObjectCreationExpressionClass))
#define VALA_IS_OBJECT_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_OBJECT_CREATION_EXPRESSION))
#define VALA_IS_OBJECT_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_OBJECT_CREATION_EXPRESSION))
#define VALA_OBJECT_CREATION_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_OBJECT_CREATION_EXPRESSION, ValaObjectCreationExpressionClass))

typedef struct _ValaObjectCreationExpression ValaObjectCreationExpression;
typedef struct _ValaObjectCreationExpressionClass ValaObjectCreationExpressionClass;

#define VALA_TYPE_SIZEOF_EXPRESSION (vala_sizeof_expression_get_type ())
#define VALA_SIZEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SIZEOF_EXPRESSION, ValaSizeofExpression))
#define VALA_SIZEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SIZEOF_EXPRESSION, ValaSizeofExpressionClass))
#define VALA_IS_SIZEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SIZEOF_EXPRESSION))
#define VALA_IS_SIZEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SIZEOF_EXPRESSION))
#define VALA_SIZEOF_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SIZEOF_EXPRESSION, ValaSizeofExpressionClass))

typedef struct _ValaSizeofExpression ValaSizeofExpression;
typedef struct _ValaSizeofExpressionClass ValaSizeofExpressionClass;

#define VALA_TYPE_TYPEOF_EXPRESSION (vala_typeof_expression_get_type ())
#define VALA_TYPEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPEOF_EXPRESSION, ValaTypeofExpression))
#define VALA_TYPEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPEOF_EXPRESSION, ValaTypeofExpressionClass))
#define VALA_IS_TYPEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPEOF_EXPRESSION))
#define VALA_IS_TYPEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPEOF_EXPRESSION))
#define VALA_TYPEOF_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPEOF_EXPRESSION, ValaTypeofExpressionClass))

typedef struct _ValaTypeofExpression ValaTypeofExpression;
typedef struct _ValaTypeofExpressionClass ValaTypeofExpressionClass;

#define VALA_TYPE_UNARY_EXPRESSION (vala_unary_expression_get_type ())
#define VALA_UNARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpression))
#define VALA_UNARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpressionClass))
#define VALA_IS_UNARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_UNARY_EXPRESSION))
#define VALA_IS_UNARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_UNARY_EXPRESSION))
#define VALA_UNARY_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpressionClass))

typedef struct _ValaUnaryExpression ValaUnaryExpression;
typedef struct _ValaUnaryExpressionClass ValaUnaryExpressionClass;

#define VALA_TYPE_CAST_EXPRESSION (vala_cast_expression_get_type ())
#define VALA_CAST_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CAST_EXPRESSION, ValaCastExpression))
#define VALA_CAST_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CAST_EXPRESSION, ValaCastExpressionClass))
#define VALA_IS_CAST_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CAST_EXPRESSION))
#define VALA_IS_CAST_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CAST_EXPRESSION))
#define VALA_CAST_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CAST_EXPRESSION, ValaCastExpressionClass))

typedef struct _ValaCastExpression ValaCastExpression;
typedef struct _ValaCastExpressionClass ValaCastExpressionClass;

#define VALA_TYPE_NAMED_ARGUMENT (vala_named_argument_get_type ())
#define VALA_NAMED_ARGUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgument))
#define VALA_NAMED_ARGUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgumentClass))
#define VALA_IS_NAMED_ARGUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_NAMED_ARGUMENT))
#define VALA_IS_NAMED_ARGUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_NAMED_ARGUMENT))
#define VALA_NAMED_ARGUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgumentClass))

typedef struct _ValaNamedArgument ValaNamedArgument;
typedef struct _ValaNamedArgumentClass ValaNamedArgumentClass;

#define VALA_TYPE_POINTER_INDIRECTION (vala_pointer_indirection_get_type ())
#define VALA_POINTER_INDIRECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POINTER_INDIRECTION, ValaPointerIndirection))
#define VALA_POINTER_INDIRECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POINTER_INDIRECTION, ValaPointerIndirectionClass))
#define VALA_IS_POINTER_INDIRECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POINTER_INDIRECTION))
#define VALA_IS_POINTER_INDIRECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POINTER_INDIRECTION))
#define VALA_POINTER_INDIRECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POINTER_INDIRECTION, ValaPointerIndirectionClass))

typedef struct _ValaPointerIndirection ValaPointerIndirection;
typedef struct _ValaPointerIndirectionClass ValaPointerIndirectionClass;

#define VALA_TYPE_ADDRESSOF_EXPRESSION (vala_addressof_expression_get_type ())
#define VALA_ADDRESSOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ADDRESSOF_EXPRESSION, ValaAddressofExpression))
#define VALA_ADDRESSOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ADDRESSOF_EXPRESSION, ValaAddressofExpressionClass))
#define VALA_IS_ADDRESSOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ADDRESSOF_EXPRESSION))
#define VALA_IS_ADDRESSOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ADDRESSOF_EXPRESSION))
#define VALA_ADDRESSOF_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ADDRESSOF_EXPRESSION, ValaAddressofExpressionClass))

typedef struct _ValaAddressofExpression ValaAddressofExpression;
typedef struct _ValaAddressofExpressionClass ValaAddressofExpressionClass;

#define VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION (vala_reference_transfer_expression_get_type ())
#define VALA_REFERENCE_TRANSFER_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION, ValaReferenceTransferExpression))
#define VALA_REFERENCE_TRANSFER_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION, ValaReferenceTransferExpressionClass))
#define VALA_IS_REFERENCE_TRANSFER_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION))
#define VALA_IS_REFERENCE_TRANSFER_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION))
#define VALA_REFERENCE_TRANSFER_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION, ValaReferenceTransferExpressionClass))

typedef struct _ValaReferenceTransferExpression ValaReferenceTransferExpression;
typedef struct _ValaReferenceTransferExpressionClass ValaReferenceTransferExpressionClass;

#define VALA_TYPE_BINARY_EXPRESSION (vala_binary_expression_get_type ())
#define VALA_BINARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpression))
#define VALA_BINARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpressionClass))
#define VALA_IS_BINARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BINARY_EXPRESSION))
#define VALA_IS_BINARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BINARY_EXPRESSION))
#define VALA_BINARY_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpressionClass))

typedef struct _ValaBinaryExpression ValaBinaryExpression;
typedef struct _ValaBinaryExpressionClass ValaBinaryExpressionClass;

#define VALA_TYPE_TYPECHECK (vala_typecheck_get_type ())
#define VALA_TYPECHECK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPECHECK, ValaTypeCheck))
#define VALA_TYPECHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPECHECK, ValaTypeCheckClass))
#define VALA_IS_TYPECHECK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPECHECK))
#define VALA_IS_TYPECHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPECHECK))
#define VALA_TYPECHECK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPECHECK, ValaTypeCheckClass))

typedef struct _ValaTypeCheck ValaTypeCheck;
typedef struct _ValaTypeCheckClass ValaTypeCheckClass;

#define VALA_TYPE_CONDITIONAL_EXPRESSION (vala_conditional_expression_get_type ())
#define VALA_CONDITIONAL_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpression))
#define VALA_CONDITIONAL_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpressionClass))
#define VALA_IS_CONDITIONAL_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONDITIONAL_EXPRESSION))
#define VALA_IS_CONDITIONAL_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONDITIONAL_EXPRESSION))
#define VALA_CONDITIONAL_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpressionClass))

typedef struct _ValaConditionalExpression ValaConditionalExpression;
typedef struct _ValaConditionalExpressionClass ValaConditionalExpressionClass;

#define VALA_TYPE_LAMBDA_EXPRESSION (vala_lambda_expression_get_type ())
#define VALA_LAMBDA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LAMBDA_EXPRESSION, ValaLambdaExpression))
#define VALA_LAMBDA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LAMBDA_EXPRESSION, ValaLambdaExpressionClass))
#define VALA_IS_LAMBDA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LAMBDA_EXPRESSION))
#define VALA_IS_LAMBDA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LAMBDA_EXPRESSION))
#define VALA_LAMBDA_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LAMBDA_EXPRESSION, ValaLambdaExpressionClass))

typedef struct _ValaLambdaExpression ValaLambdaExpression;
typedef struct _ValaLambdaExpressionClass ValaLambdaExpressionClass;

#define VALA_TYPE_ASSIGNMENT (vala_assignment_get_type ())
#define VALA_ASSIGNMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ASSIGNMENT, ValaAssignment))
#define VALA_ASSIGNMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ASSIGNMENT, ValaAssignmentClass))
#define VALA_IS_ASSIGNMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ASSIGNMENT))
#define VALA_IS_ASSIGNMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ASSIGNMENT))
#define VALA_ASSIGNMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ASSIGNMENT, ValaAssignmentClass))

typedef struct _ValaAssignment ValaAssignment;
typedef struct _ValaAssignmentClass ValaAssignmentClass;
typedef struct _ValaSemanticAnalyzerPrivate ValaSemanticAnalyzerPrivate;

#define VALA_TYPE_VALUE_TYPE (vala_value_type_get_type ())
#define VALA_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VALUE_TYPE, ValaValueType))
#define VALA_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VALUE_TYPE, ValaValueTypeClass))
#define VALA_IS_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VALUE_TYPE))
#define VALA_IS_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VALUE_TYPE))
#define VALA_VALUE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VALUE_TYPE, ValaValueTypeClass))

typedef struct _ValaValueType ValaValueType;
typedef struct _ValaValueTypeClass ValaValueTypeClass;

#define VALA_TYPE_STRUCT_VALUE_TYPE (vala_struct_value_type_get_type ())
#define VALA_STRUCT_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRUCT_VALUE_TYPE, ValaStructValueType))
#define VALA_STRUCT_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRUCT_VALUE_TYPE, ValaStructValueTypeClass))
#define VALA_IS_STRUCT_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRUCT_VALUE_TYPE))
#define VALA_IS_STRUCT_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRUCT_VALUE_TYPE))
#define VALA_STRUCT_VALUE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRUCT_VALUE_TYPE, ValaStructValueTypeClass))

typedef struct _ValaStructValueType ValaStructValueType;
typedef struct _ValaStructValueTypeClass ValaStructValueTypeClass;

#define VALA_TYPE_SCOPE (vala_scope_get_type ())
#define VALA_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SCOPE, ValaScope))
#define VALA_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SCOPE, ValaScopeClass))
#define VALA_IS_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SCOPE))
#define VALA_IS_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SCOPE))
#define VALA_SCOPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SCOPE, ValaScopeClass))

typedef struct _ValaScope ValaScope;
typedef struct _ValaScopeClass ValaScopeClass;

#define VALA_TYPE_POINTER_TYPE (vala_pointer_type_get_type ())
#define VALA_POINTER_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POINTER_TYPE, ValaPointerType))
#define VALA_POINTER_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POINTER_TYPE, ValaPointerTypeClass))
#define VALA_IS_POINTER_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POINTER_TYPE))
#define VALA_IS_POINTER_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POINTER_TYPE))
#define VALA_POINTER_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POINTER_TYPE, ValaPointerTypeClass))

typedef struct _ValaPointerType ValaPointerType;
typedef struct _ValaPointerTypeClass ValaPointerTypeClass;

#define VALA_TYPE_REFERENCE_TYPE (vala_reference_type_get_type ())
#define VALA_REFERENCE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REFERENCE_TYPE, ValaReferenceType))
#define VALA_REFERENCE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REFERENCE_TYPE, ValaReferenceTypeClass))
#define VALA_IS_REFERENCE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REFERENCE_TYPE))
#define VALA_IS_REFERENCE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REFERENCE_TYPE))
#define VALA_REFERENCE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REFERENCE_TYPE, ValaReferenceTypeClass))

typedef struct _ValaReferenceType ValaReferenceType;
typedef struct _ValaReferenceTypeClass ValaReferenceTypeClass;

#define VALA_TYPE_OBJECT_TYPE (vala_object_type_get_type ())
#define VALA_OBJECT_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_OBJECT_TYPE, ValaObjectType))
#define VALA_OBJECT_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_OBJECT_TYPE, ValaObjectTypeClass))
#define VALA_IS_OBJECT_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_OBJECT_TYPE))
#define VALA_IS_OBJECT_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_OBJECT_TYPE))
#define VALA_OBJECT_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_OBJECT_TYPE, ValaObjectTypeClass))

typedef struct _ValaObjectType ValaObjectType;
typedef struct _ValaObjectTypeClass ValaObjectTypeClass;

#define VALA_TYPE_VOID_TYPE (vala_void_type_get_type ())
#define VALA_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VOID_TYPE, ValaVoidType))
#define VALA_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))
#define VALA_IS_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VOID_TYPE))
#define VALA_IS_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VOID_TYPE))
#define VALA_VOID_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))

typedef struct _ValaVoidType ValaVoidType;
typedef struct _ValaVoidTypeClass ValaVoidTypeClass;

#define VALA_TYPE_COMMENT (vala_comment_get_type ())
#define VALA_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_COMMENT, ValaComment))
#define VALA_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_COMMENT, ValaCommentClass))
#define VALA_IS_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_COMMENT))
#define VALA_IS_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_COMMENT))
#define VALA_COMMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_COMMENT, ValaCommentClass))

typedef struct _ValaComment ValaComment;
typedef struct _ValaCommentClass ValaCommentClass;

#define VALA_TYPE_DYNAMIC_METHOD (vala_dynamic_method_get_type ())
#define VALA_DYNAMIC_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DYNAMIC_METHOD, ValaDynamicMethod))
#define VALA_DYNAMIC_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DYNAMIC_METHOD, ValaDynamicMethodClass))
#define VALA_IS_DYNAMIC_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DYNAMIC_METHOD))
#define VALA_IS_DYNAMIC_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DYNAMIC_METHOD))
#define VALA_DYNAMIC_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DYNAMIC_METHOD, ValaDynamicMethodClass))

typedef struct _ValaDynamicMethod ValaDynamicMethod;
typedef struct _ValaDynamicMethodClass ValaDynamicMethodClass;

#define VALA_TYPE_ERROR_TYPE (vala_error_type_get_type ())
#define VALA_ERROR_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ERROR_TYPE, ValaErrorType))
#define VALA_ERROR_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ERROR_TYPE, ValaErrorTypeClass))
#define VALA_IS_ERROR_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ERROR_TYPE))
#define VALA_IS_ERROR_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ERROR_TYPE))
#define VALA_ERROR_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ERROR_TYPE, ValaErrorTypeClass))

typedef struct _ValaErrorType ValaErrorType;
typedef struct _ValaErrorTypeClass ValaErrorTypeClass;

#define VALA_TYPE_SYMBOL_ACCESSIBILITY (vala_symbol_accessibility_get_type ())

#define VALA_TYPE_ASSIGNMENT_OPERATOR (vala_assignment_operator_get_type ())

#define VALA_TYPE_DYNAMIC_SIGNAL (vala_dynamic_signal_get_type ())
#define VALA_DYNAMIC_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignal))
#define VALA_DYNAMIC_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignalClass))
#define VALA_IS_DYNAMIC_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DYNAMIC_SIGNAL))
#define VALA_IS_DYNAMIC_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DYNAMIC_SIGNAL))
#define VALA_DYNAMIC_SIGNAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignalClass))

typedef struct _ValaDynamicSignal ValaDynamicSignal;
typedef struct _ValaDynamicSignalClass ValaDynamicSignalClass;

#define VALA_TYPE_DYNAMIC_PROPERTY (vala_dynamic_property_get_type ())
#define VALA_DYNAMIC_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DYNAMIC_PROPERTY, ValaDynamicProperty))
#define VALA_DYNAMIC_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DYNAMIC_PROPERTY, ValaDynamicPropertyClass))
#define VALA_IS_DYNAMIC_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DYNAMIC_PROPERTY))
#define VALA_IS_DYNAMIC_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DYNAMIC_PROPERTY))
#define VALA_DYNAMIC_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DYNAMIC_PROPERTY, ValaDynamicPropertyClass))

typedef struct _ValaDynamicProperty ValaDynamicProperty;
typedef struct _ValaDynamicPropertyClass ValaDynamicPropertyClass;

#define VALA_TYPE_PARAMETER_DIRECTION (vala_parameter_direction_get_type ())

#define VALA_TYPE_GENERIC_TYPE (vala_generic_type_get_type ())
#define VALA_GENERIC_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GENERIC_TYPE, ValaGenericType))
#define VALA_GENERIC_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GENERIC_TYPE, ValaGenericTypeClass))
#define VALA_IS_GENERIC_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GENERIC_TYPE))
#define VALA_IS_GENERIC_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GENERIC_TYPE))
#define VALA_GENERIC_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GENERIC_TYPE, ValaGenericTypeClass))

typedef struct _ValaGenericType ValaGenericType;
typedef struct _ValaGenericTypeClass ValaGenericTypeClass;

#define VALA_TYPE_FIELD_PROTOTYPE (vala_field_prototype_get_type ())
#define VALA_FIELD_PROTOTYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FIELD_PROTOTYPE, ValaFieldPrototype))
#define VALA_FIELD_PROTOTYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FIELD_PROTOTYPE, ValaFieldPrototypeClass))
#define VALA_IS_FIELD_PROTOTYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FIELD_PROTOTYPE))
#define VALA_IS_FIELD_PROTOTYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FIELD_PROTOTYPE))
#define VALA_FIELD_PROTOTYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FIELD_PROTOTYPE, ValaFieldPrototypeClass))

typedef struct _ValaFieldPrototype ValaFieldPrototype;
typedef struct _ValaFieldPrototypeClass ValaFieldPrototypeClass;

#define VALA_TYPE_INVALID_TYPE (vala_invalid_type_get_type ())
#define VALA_INVALID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INVALID_TYPE, ValaInvalidType))
#define VALA_INVALID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INVALID_TYPE, ValaInvalidTypeClass))
#define VALA_IS_INVALID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INVALID_TYPE))
#define VALA_IS_INVALID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INVALID_TYPE))
#define VALA_INVALID_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INVALID_TYPE, ValaInvalidTypeClass))

typedef struct _ValaInvalidType ValaInvalidType;
typedef struct _ValaInvalidTypeClass ValaInvalidTypeClass;

struct _ValaCodeNode {
      GTypeInstance parent_instance;
      volatile int ref_count;
      ValaCodeNodePrivate * priv;
      GList* attributes;
};

struct _ValaCodeNodeClass {
      GTypeClass parent_class;
      void (*finalize) (ValaCodeNode *self);
      void (*accept) (ValaCodeNode* self, ValaCodeVisitor* visitor);
      void (*accept_children) (ValaCodeNode* self, ValaCodeVisitor* visitor);
      gboolean (*check) (ValaCodeNode* self, ValaCodeContext* context);
      void (*emit) (ValaCodeNode* self, ValaCodeGenerator* codegen);
      void (*replace_type) (ValaCodeNode* self, ValaDataType* old_type, ValaDataType* new_type);
      void (*replace_expression) (ValaCodeNode* self, ValaExpression* old_node, ValaExpression* new_node);
      gchar* (*to_string) (ValaCodeNode* self);
      void (*get_defined_variables) (ValaCodeNode* self, ValaCollection* collection);
      void (*get_used_variables) (ValaCodeNode* self, ValaCollection* collection);
};

struct _ValaExpression {
      ValaCodeNode parent_instance;
      ValaExpressionPrivate * priv;
};

struct _ValaExpressionClass {
      ValaCodeNodeClass parent_class;
      gboolean (*is_constant) (ValaExpression* self);
      gboolean (*is_pure) (ValaExpression* self);
      gboolean (*is_non_null) (ValaExpression* self);
};

struct _ValaMemberAccess {
      ValaExpression parent_instance;
      ValaMemberAccessPrivate * priv;
};

struct _ValaMemberAccessClass {
      ValaExpressionClass parent_class;
};

01191 struct _ValaMemberAccessPrivate {
      gchar* _member_name;
      gboolean _pointer_member_access;
      gboolean _prototype_access;
      gboolean _creation_member;
      gboolean _qualified;
      ValaExpression* _inner;
      ValaList* type_argument_list;
};

typedef enum  {
      VALA_MEMBER_BINDING_INSTANCE,
      VALA_MEMBER_BINDING_CLASS,
      VALA_MEMBER_BINDING_STATIC
} ValaMemberBinding;

struct _ValaCodeVisitor {
      GTypeInstance parent_instance;
      volatile int ref_count;
      ValaCodeVisitorPrivate * priv;
};

struct _ValaCodeVisitorClass {
      GTypeClass parent_class;
      void (*finalize) (ValaCodeVisitor *self);
      void (*visit_source_file) (ValaCodeVisitor* self, ValaSourceFile* source_file);
      void (*visit_namespace) (ValaCodeVisitor* self, ValaNamespace* ns);
      void (*visit_class) (ValaCodeVisitor* self, ValaClass* cl);
      void (*visit_struct) (ValaCodeVisitor* self, ValaStruct* st);
      void (*visit_interface) (ValaCodeVisitor* self, ValaInterface* iface);
      void (*visit_enum) (ValaCodeVisitor* self, ValaEnum* en);
      void (*visit_enum_value) (ValaCodeVisitor* self, ValaEnumValue* ev);
      void (*visit_error_domain) (ValaCodeVisitor* self, ValaErrorDomain* edomain);
      void (*visit_error_code) (ValaCodeVisitor* self, ValaErrorCode* ecode);
      void (*visit_delegate) (ValaCodeVisitor* self, ValaDelegate* d);
      void (*visit_constant) (ValaCodeVisitor* self, ValaConstant* c);
      void (*visit_field) (ValaCodeVisitor* self, ValaField* f);
      void (*visit_method) (ValaCodeVisitor* self, ValaMethod* m);
      void (*visit_creation_method) (ValaCodeVisitor* self, ValaCreationMethod* m);
      void (*visit_formal_parameter) (ValaCodeVisitor* self, ValaParameter* p);
      void (*visit_property) (ValaCodeVisitor* self, ValaProperty* prop);
      void (*visit_property_accessor) (ValaCodeVisitor* self, ValaPropertyAccessor* acc);
      void (*visit_signal) (ValaCodeVisitor* self, ValaSignal* sig);
      void (*visit_constructor) (ValaCodeVisitor* self, ValaConstructor* c);
      void (*visit_destructor) (ValaCodeVisitor* self, ValaDestructor* d);
      void (*visit_type_parameter) (ValaCodeVisitor* self, ValaTypeParameter* p);
      void (*visit_using_directive) (ValaCodeVisitor* self, ValaUsingDirective* ns);
      void (*visit_data_type) (ValaCodeVisitor* self, ValaDataType* type);
      void (*visit_block) (ValaCodeVisitor* self, ValaBlock* b);
      void (*visit_empty_statement) (ValaCodeVisitor* self, ValaEmptyStatement* stmt);
      void (*visit_declaration_statement) (ValaCodeVisitor* self, ValaDeclarationStatement* stmt);
      void (*visit_local_variable) (ValaCodeVisitor* self, ValaLocalVariable* local);
      void (*visit_initializer_list) (ValaCodeVisitor* self, ValaInitializerList* list);
      void (*visit_expression_statement) (ValaCodeVisitor* self, ValaExpressionStatement* stmt);
      void (*visit_if_statement) (ValaCodeVisitor* self, ValaIfStatement* stmt);
      void (*visit_switch_statement) (ValaCodeVisitor* self, ValaSwitchStatement* stmt);
      void (*visit_switch_section) (ValaCodeVisitor* self, ValaSwitchSection* section);
      void (*visit_switch_label) (ValaCodeVisitor* self, ValaSwitchLabel* label);
      void (*visit_loop) (ValaCodeVisitor* self, ValaLoop* stmt);
      void (*visit_while_statement) (ValaCodeVisitor* self, ValaWhileStatement* stmt);
      void (*visit_do_statement) (ValaCodeVisitor* self, ValaDoStatement* stmt);
      void (*visit_for_statement) (ValaCodeVisitor* self, ValaForStatement* stmt);
      void (*visit_foreach_statement) (ValaCodeVisitor* self, ValaForeachStatement* stmt);
      void (*visit_break_statement) (ValaCodeVisitor* self, ValaBreakStatement* stmt);
      void (*visit_continue_statement) (ValaCodeVisitor* self, ValaContinueStatement* stmt);
      void (*visit_return_statement) (ValaCodeVisitor* self, ValaReturnStatement* stmt);
      void (*visit_yield_statement) (ValaCodeVisitor* self, ValaYieldStatement* y);
      void (*visit_throw_statement) (ValaCodeVisitor* self, ValaThrowStatement* stmt);
      void (*visit_try_statement) (ValaCodeVisitor* self, ValaTryStatement* stmt);
      void (*visit_catch_clause) (ValaCodeVisitor* self, ValaCatchClause* clause);
      void (*visit_lock_statement) (ValaCodeVisitor* self, ValaLockStatement* stmt);
      void (*visit_unlock_statement) (ValaCodeVisitor* self, ValaUnlockStatement* stmt);
      void (*visit_delete_statement) (ValaCodeVisitor* self, ValaDeleteStatement* stmt);
      void (*visit_expression) (ValaCodeVisitor* self, ValaExpression* expr);
      void (*visit_array_creation_expression) (ValaCodeVisitor* self, ValaArrayCreationExpression* expr);
      void (*visit_boolean_literal) (ValaCodeVisitor* self, ValaBooleanLiteral* lit);
      void (*visit_character_literal) (ValaCodeVisitor* self, ValaCharacterLiteral* lit);
      void (*visit_integer_literal) (ValaCodeVisitor* self, ValaIntegerLiteral* lit);
      void (*visit_real_literal) (ValaCodeVisitor* self, ValaRealLiteral* lit);
      void (*visit_regex_literal) (ValaCodeVisitor* self, ValaRegexLiteral* lit);
      void (*visit_string_literal) (ValaCodeVisitor* self, ValaStringLiteral* lit);
      void (*visit_template) (ValaCodeVisitor* self, ValaTemplate* tmpl);
      void (*visit_list_literal) (ValaCodeVisitor* self, ValaListLiteral* lit);
      void (*visit_set_literal) (ValaCodeVisitor* self, ValaSetLiteral* lit);
      void (*visit_map_literal) (ValaCodeVisitor* self, ValaMapLiteral* lit);
      void (*visit_tuple) (ValaCodeVisitor* self, ValaTuple* tuple);
      void (*visit_null_literal) (ValaCodeVisitor* self, ValaNullLiteral* lit);
      void (*visit_member_access) (ValaCodeVisitor* self, ValaMemberAccess* expr);
      void (*visit_method_call) (ValaCodeVisitor* self, ValaMethodCall* expr);
      void (*visit_element_access) (ValaCodeVisitor* self, ValaElementAccess* expr);
      void (*visit_slice_expression) (ValaCodeVisitor* self, ValaSliceExpression* expr);
      void (*visit_base_access) (ValaCodeVisitor* self, ValaBaseAccess* expr);
      void (*visit_postfix_expression) (ValaCodeVisitor* self, ValaPostfixExpression* expr);
      void (*visit_object_creation_expression) (ValaCodeVisitor* self, ValaObjectCreationExpression* expr);
      void (*visit_sizeof_expression) (ValaCodeVisitor* self, ValaSizeofExpression* expr);
      void (*visit_typeof_expression) (ValaCodeVisitor* self, ValaTypeofExpression* expr);
      void (*visit_unary_expression) (ValaCodeVisitor* self, ValaUnaryExpression* expr);
      void (*visit_cast_expression) (ValaCodeVisitor* self, ValaCastExpression* expr);
      void (*visit_named_argument) (ValaCodeVisitor* self, ValaNamedArgument* expr);
      void (*visit_pointer_indirection) (ValaCodeVisitor* self, ValaPointerIndirection* expr);
      void (*visit_addressof_expression) (ValaCodeVisitor* self, ValaAddressofExpression* expr);
      void (*visit_reference_transfer_expression) (ValaCodeVisitor* self, ValaReferenceTransferExpression* expr);
      void (*visit_binary_expression) (ValaCodeVisitor* self, ValaBinaryExpression* expr);
      void (*visit_type_check) (ValaCodeVisitor* self, ValaTypeCheck* expr);
      void (*visit_conditional_expression) (ValaCodeVisitor* self, ValaConditionalExpression* expr);
      void (*visit_lambda_expression) (ValaCodeVisitor* self, ValaLambdaExpression* expr);
      void (*visit_assignment) (ValaCodeVisitor* self, ValaAssignment* a);
      void (*visit_end_full_expression) (ValaCodeVisitor* self, ValaExpression* expr);
};

struct _ValaSemanticAnalyzer {
      ValaCodeVisitor parent_instance;
      ValaSemanticAnalyzerPrivate * priv;
      ValaSymbol* root_symbol;
      ValaBlock* insert_block;
      ValaDataType* void_type;
      ValaDataType* bool_type;
      ValaDataType* string_type;
      ValaDataType* regex_type;
      ValaDataType* uchar_type;
      ValaDataType* short_type;
      ValaDataType* ushort_type;
      ValaDataType* int_type;
      ValaDataType* uint_type;
      ValaDataType* long_type;
      ValaDataType* ulong_type;
      ValaDataType* size_t_type;
      ValaDataType* ssize_t_type;
      ValaDataType* int8_type;
      ValaDataType* unichar_type;
      ValaDataType* double_type;
      ValaDataType* type_type;
      ValaClass* object_type;
      ValaStructValueType* gvalue_type;
      ValaDataType* glist_type;
      ValaDataType* gslist_type;
      ValaDataType* garray_type;
      ValaDataType* gvaluearray_type;
      ValaClass* gerror_type;
      ValaDataType* list_type;
      ValaDataType* tuple_type;
      ValaDataType* error_type;
      gint next_lambda_id;
      ValaList* replaced_nodes;
};

struct _ValaSemanticAnalyzerClass {
      ValaCodeVisitorClass parent_class;
};

typedef enum  {
      VALA_SYMBOL_ACCESSIBILITY_PRIVATE,
      VALA_SYMBOL_ACCESSIBILITY_INTERNAL,
      VALA_SYMBOL_ACCESSIBILITY_PROTECTED,
      VALA_SYMBOL_ACCESSIBILITY_PUBLIC
} ValaSymbolAccessibility;

typedef enum  {
      VALA_ASSIGNMENT_OPERATOR_NONE,
      VALA_ASSIGNMENT_OPERATOR_SIMPLE,
      VALA_ASSIGNMENT_OPERATOR_BITWISE_OR,
      VALA_ASSIGNMENT_OPERATOR_BITWISE_AND,
      VALA_ASSIGNMENT_OPERATOR_BITWISE_XOR,
      VALA_ASSIGNMENT_OPERATOR_ADD,
      VALA_ASSIGNMENT_OPERATOR_SUB,
      VALA_ASSIGNMENT_OPERATOR_MUL,
      VALA_ASSIGNMENT_OPERATOR_DIV,
      VALA_ASSIGNMENT_OPERATOR_PERCENT,
      VALA_ASSIGNMENT_OPERATOR_SHIFT_LEFT,
      VALA_ASSIGNMENT_OPERATOR_SHIFT_RIGHT
} ValaAssignmentOperator;

typedef enum  {
      VALA_PARAMETER_DIRECTION_IN,
      VALA_PARAMETER_DIRECTION_OUT,
      VALA_PARAMETER_DIRECTION_REF
} ValaParameterDirection;


static gpointer vala_member_access_parent_class = NULL;

gpointer vala_code_node_ref (gpointer instance);
void vala_code_node_unref (gpointer instance);
GParamSpec* vala_param_spec_code_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_code_node (GValue* value, gpointer v_object);
void vala_value_take_code_node (GValue* value, gpointer v_object);
gpointer vala_value_get_code_node (const GValue* value);
GType vala_code_node_get_type (void) G_GNUC_CONST;
gpointer vala_code_visitor_ref (gpointer instance);
void vala_code_visitor_unref (gpointer instance);
GParamSpec* vala_param_spec_code_visitor (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_code_visitor (GValue* value, gpointer v_object);
void vala_value_take_code_visitor (GValue* value, gpointer v_object);
gpointer vala_value_get_code_visitor (const GValue* value);
GType vala_code_visitor_get_type (void) G_GNUC_CONST;
gpointer vala_code_context_ref (gpointer instance);
void vala_code_context_unref (gpointer instance);
GParamSpec* vala_param_spec_code_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_code_context (GValue* value, gpointer v_object);
void vala_value_take_code_context (GValue* value, gpointer v_object);
gpointer vala_value_get_code_context (const GValue* value);
GType vala_code_context_get_type (void) G_GNUC_CONST;
GType vala_code_generator_get_type (void) G_GNUC_CONST;
GType vala_data_type_get_type (void) G_GNUC_CONST;
GType vala_expression_get_type (void) G_GNUC_CONST;
GType vala_symbol_get_type (void) G_GNUC_CONST;
GType vala_variable_get_type (void) G_GNUC_CONST;
GType vala_local_variable_get_type (void) G_GNUC_CONST;
GType vala_attribute_get_type (void) G_GNUC_CONST;
GType vala_member_access_get_type (void) G_GNUC_CONST;
#define VALA_MEMBER_ACCESS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccessPrivate))
enum  {
      VALA_MEMBER_ACCESS_DUMMY_PROPERTY
};
gpointer vala_source_reference_ref (gpointer instance);
void vala_source_reference_unref (gpointer instance);
GParamSpec* vala_param_spec_source_reference (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_source_reference (GValue* value, gpointer v_object);
void vala_value_take_source_reference (GValue* value, gpointer v_object);
gpointer vala_value_get_source_reference (const GValue* value);
GType vala_source_reference_get_type (void) G_GNUC_CONST;
ValaMemberAccess* vala_member_access_new (ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference);
ValaMemberAccess* vala_member_access_construct (GType object_type, ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference);
ValaExpression* vala_expression_construct (GType object_type);
void vala_member_access_set_inner (ValaMemberAccess* self, ValaExpression* value);
void vala_member_access_set_member_name (ValaMemberAccess* self, const gchar* value);
void vala_code_node_set_source_reference (ValaCodeNode* self, ValaSourceReference* value);
ValaMemberAccess* vala_member_access_new_simple (const gchar* member_name, ValaSourceReference* source_reference);
ValaMemberAccess* vala_member_access_construct_simple (GType object_type, const gchar* member_name, ValaSourceReference* source_reference);
ValaMemberAccess* vala_member_access_new_pointer (ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference);
ValaMemberAccess* vala_member_access_construct_pointer (GType object_type, ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference);
void vala_member_access_set_pointer_member_access (ValaMemberAccess* self, gboolean value);
void vala_member_access_add_type_argument (ValaMemberAccess* self, ValaDataType* arg);
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
ValaList* vala_member_access_get_type_arguments (ValaMemberAccess* self);
static void vala_member_access_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor);
void vala_code_visitor_visit_member_access (ValaCodeVisitor* self, ValaMemberAccess* expr);
void vala_code_visitor_visit_expression (ValaCodeVisitor* self, ValaExpression* expr);
static void vala_member_access_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor);
ValaExpression* vala_member_access_get_inner (ValaMemberAccess* self);
void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
static gchar* vala_member_access_real_to_string (ValaCodeNode* base);
ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
gboolean vala_symbol_is_instance_member (ValaSymbol* self);
const gchar* vala_member_access_get_member_name (ValaMemberAccess* self);
gchar* vala_code_node_to_string (ValaCodeNode* self);
gchar* vala_symbol_get_full_name (ValaSymbol* self);
static void vala_member_access_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node);
static gboolean vala_member_access_real_is_pure (ValaExpression* base);
gboolean vala_expression_is_pure (ValaExpression* self);
GType vala_property_get_type (void) G_GNUC_CONST;
static void vala_member_access_real_replace_type (ValaCodeNode* base, ValaDataType* old_type, ValaDataType* new_type);
static gboolean vala_member_access_real_is_constant (ValaExpression* base);
GType vala_subroutine_get_type (void) G_GNUC_CONST;
GType vala_method_get_type (void) G_GNUC_CONST;
GType vala_constant_get_type (void) G_GNUC_CONST;
GType vala_member_binding_get_type (void) G_GNUC_CONST;
ValaMemberBinding vala_method_get_binding (ValaMethod* self);
gboolean vala_member_access_get_prototype_access (ValaMemberAccess* self);
static gboolean vala_member_access_real_is_non_null (ValaExpression* base);
ValaDataType* vala_constant_get_type_reference (ValaConstant* self);
gboolean vala_data_type_get_nullable (ValaDataType* self);
static gboolean vala_member_access_real_check (ValaCodeNode* base, ValaCodeContext* context);
gboolean vala_code_node_get_checked (ValaCodeNode* self);
gboolean vala_code_node_get_error (ValaCodeNode* self);
void vala_code_node_set_checked (ValaCodeNode* self, gboolean value);
gboolean vala_code_node_check (ValaCodeNode* self, ValaCodeContext* context);
GType vala_parameter_get_type (void) G_GNUC_CONST;
void vala_expression_set_symbol_reference (ValaExpression* self, ValaSymbol* value);
gboolean vala_member_access_get_qualified (ValaMemberAccess* self);
GType vala_semantic_analyzer_get_type (void) G_GNUC_CONST;
ValaSemanticAnalyzer* vala_code_context_get_analyzer (ValaCodeContext* self);
gpointer vala_source_file_ref (gpointer instance);
void vala_source_file_unref (gpointer instance);
GParamSpec* vala_param_spec_source_file (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_source_file (GValue* value, gpointer v_object);
void vala_value_take_source_file (GValue* value, gpointer v_object);
gpointer vala_value_get_source_file (const GValue* value);
GType vala_source_file_get_type (void) G_GNUC_CONST;
GType vala_namespace_get_type (void) G_GNUC_CONST;
GType vala_typesymbol_get_type (void) G_GNUC_CONST;
GType vala_object_type_symbol_get_type (void) G_GNUC_CONST;
GType vala_class_get_type (void) G_GNUC_CONST;
GType vala_struct_get_type (void) G_GNUC_CONST;
GType vala_interface_get_type (void) G_GNUC_CONST;
GType vala_enum_get_type (void) G_GNUC_CONST;
GType vala_enum_value_get_type (void) G_GNUC_CONST;
GType vala_error_domain_get_type (void) G_GNUC_CONST;
GType vala_error_code_get_type (void) G_GNUC_CONST;
GType vala_delegate_get_type (void) G_GNUC_CONST;
GType vala_field_get_type (void) G_GNUC_CONST;
GType vala_creation_method_get_type (void) G_GNUC_CONST;
GType vala_property_accessor_get_type (void) G_GNUC_CONST;
GType vala_signal_get_type (void) G_GNUC_CONST;
GType vala_constructor_get_type (void) G_GNUC_CONST;
GType vala_destructor_get_type (void) G_GNUC_CONST;
GType vala_typeparameter_get_type (void) G_GNUC_CONST;
GType vala_using_directive_get_type (void) G_GNUC_CONST;
GType vala_block_get_type (void) G_GNUC_CONST;
GType vala_empty_statement_get_type (void) G_GNUC_CONST;
GType vala_declaration_statement_get_type (void) G_GNUC_CONST;
GType vala_initializer_list_get_type (void) G_GNUC_CONST;
GType vala_expression_statement_get_type (void) G_GNUC_CONST;
GType vala_if_statement_get_type (void) G_GNUC_CONST;
GType vala_switch_statement_get_type (void) G_GNUC_CONST;
GType vala_switch_section_get_type (void) G_GNUC_CONST;
GType vala_switch_label_get_type (void) G_GNUC_CONST;
GType vala_loop_get_type (void) G_GNUC_CONST;
GType vala_while_statement_get_type (void) G_GNUC_CONST;
GType vala_do_statement_get_type (void) G_GNUC_CONST;
GType vala_for_statement_get_type (void) G_GNUC_CONST;
GType vala_foreach_statement_get_type (void) G_GNUC_CONST;
GType vala_break_statement_get_type (void) G_GNUC_CONST;
GType vala_continue_statement_get_type (void) G_GNUC_CONST;
GType vala_return_statement_get_type (void) G_GNUC_CONST;
GType vala_yield_statement_get_type (void) G_GNUC_CONST;
GType vala_throw_statement_get_type (void) G_GNUC_CONST;
GType vala_try_statement_get_type (void) G_GNUC_CONST;
GType vala_catch_clause_get_type (void) G_GNUC_CONST;
GType vala_lock_statement_get_type (void) G_GNUC_CONST;
GType vala_unlock_statement_get_type (void) G_GNUC_CONST;
GType vala_delete_statement_get_type (void) G_GNUC_CONST;
GType vala_array_creation_expression_get_type (void) G_GNUC_CONST;
GType vala_literal_get_type (void) G_GNUC_CONST;
GType vala_boolean_literal_get_type (void) G_GNUC_CONST;
GType vala_character_literal_get_type (void) G_GNUC_CONST;
GType vala_integer_literal_get_type (void) G_GNUC_CONST;
GType vala_real_literal_get_type (void) G_GNUC_CONST;
GType vala_regex_literal_get_type (void) G_GNUC_CONST;
GType vala_string_literal_get_type (void) G_GNUC_CONST;
GType vala_template_get_type (void) G_GNUC_CONST;
GType vala_list_literal_get_type (void) G_GNUC_CONST;
GType vala_set_literal_get_type (void) G_GNUC_CONST;
GType vala_map_literal_get_type (void) G_GNUC_CONST;
GType vala_tuple_get_type (void) G_GNUC_CONST;
GType vala_null_literal_get_type (void) G_GNUC_CONST;
GType vala_method_call_get_type (void) G_GNUC_CONST;
GType vala_element_access_get_type (void) G_GNUC_CONST;
GType vala_slice_expression_get_type (void) G_GNUC_CONST;
GType vala_base_access_get_type (void) G_GNUC_CONST;
GType vala_postfix_expression_get_type (void) G_GNUC_CONST;
GType vala_object_creation_expression_get_type (void) G_GNUC_CONST;
GType vala_sizeof_expression_get_type (void) G_GNUC_CONST;
GType vala_typeof_expression_get_type (void) G_GNUC_CONST;
GType vala_unary_expression_get_type (void) G_GNUC_CONST;
GType vala_cast_expression_get_type (void) G_GNUC_CONST;
GType vala_named_argument_get_type (void) G_GNUC_CONST;
GType vala_pointer_indirection_get_type (void) G_GNUC_CONST;
GType vala_addressof_expression_get_type (void) G_GNUC_CONST;
GType vala_reference_transfer_expression_get_type (void) G_GNUC_CONST;
GType vala_binary_expression_get_type (void) G_GNUC_CONST;
GType vala_typecheck_get_type (void) G_GNUC_CONST;
GType vala_conditional_expression_get_type (void) G_GNUC_CONST;
GType vala_lambda_expression_get_type (void) G_GNUC_CONST;
GType vala_assignment_get_type (void) G_GNUC_CONST;
GType vala_value_type_get_type (void) G_GNUC_CONST;
GType vala_struct_value_type_get_type (void) G_GNUC_CONST;
gpointer vala_scope_ref (gpointer instance);
void vala_scope_unref (gpointer instance);
GParamSpec* vala_param_spec_scope (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_scope (GValue* value, gpointer v_object);
void vala_value_take_scope (GValue* value, gpointer v_object);
gpointer vala_value_get_scope (const GValue* value);
GType vala_scope_get_type (void) G_GNUC_CONST;
ValaScope* vala_symbol_get_scope (ValaSymbol* self);
ValaSymbol* vala_scope_lookup (ValaScope* self, const gchar* name);
gboolean vala_semantic_analyzer_is_in_instance_method (ValaSemanticAnalyzer* self);
void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
void vala_report_error (ValaSourceReference* source, const gchar* message);
ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
ValaSymbol* vala_semantic_analyzer_get_current_symbol (ValaSemanticAnalyzer* self);
ValaParameter* vala_method_get_this_parameter (ValaMethod* self);
ValaParameter* vala_property_get_this_parameter (ValaProperty* self);
ValaMemberBinding vala_property_get_binding (ValaProperty* self);
ValaParameter* vala_constructor_get_this_parameter (ValaConstructor* self);
ValaMemberBinding vala_constructor_get_binding (ValaConstructor* self);
ValaParameter* vala_destructor_get_this_parameter (ValaDestructor* self);
ValaMemberBinding vala_destructor_get_binding (ValaDestructor* self);
ValaSymbol* vala_semantic_analyzer_symbol_lookup_inherited (ValaSymbol* sym, const gchar* name);
ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
ValaList* vala_source_reference_get_using_directives (ValaSourceReference* self);
ValaSymbol* vala_using_directive_get_namespace_symbol (ValaUsingDirective* self);
ValaDataType* vala_expression_get_value_type (ValaExpression* self);
GType vala_pointer_type_get_type (void) G_GNUC_CONST;
ValaDataType* vala_pointer_type_get_base_type (ValaPointerType* self);
ValaPointerIndirection* vala_pointer_indirection_new (ValaExpression* inner, ValaSourceReference* source_reference);
ValaPointerIndirection* vala_pointer_indirection_construct (GType object_type, ValaExpression* inner, ValaSourceReference* source_reference);
gboolean vala_member_access_get_pointer_member_access (ValaMemberAccess* self);
ValaSymbol* vala_data_type_get_pointer_member (ValaDataType* self, const gchar* member_name);
ValaTypeSymbol* vala_data_type_get_data_type (ValaDataType* self);
ValaSymbol* vala_data_type_get_member (ValaDataType* self, const gchar* member_name);
gboolean vala_data_type_get_is_dynamic (ValaDataType* self);
GType vala_reference_type_get_type (void) G_GNUC_CONST;
GType vala_object_type_get_type (void) G_GNUC_CONST;
ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
ValaExpression* vala_method_call_get_call (ValaMethodCall* self);
ValaDataType* vala_expression_get_target_type (ValaExpression* self);
ValaDataType* vala_data_type_copy (ValaDataType* self);
void vala_data_type_set_value_owned (ValaDataType* self, gboolean value);
ValaVoidType* vala_void_type_new (ValaSourceReference* source_reference);
ValaVoidType* vala_void_type_construct (GType object_type, ValaSourceReference* source_reference);
GType vala_void_type_get_type (void) G_GNUC_CONST;
gpointer vala_comment_ref (gpointer instance);
void vala_comment_unref (gpointer instance);
GParamSpec* vala_param_spec_comment (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_comment (GValue* value, gpointer v_object);
void vala_value_take_comment (GValue* value, gpointer v_object);
gpointer vala_value_get_comment (const GValue* value);
GType vala_comment_get_type (void) G_GNUC_CONST;
ValaDynamicMethod* vala_dynamic_method_new (ValaDataType* dynamic_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
ValaDynamicMethod* vala_dynamic_method_construct (GType object_type, ValaDataType* dynamic_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
GType vala_dynamic_method_get_type (void) G_GNUC_CONST;
void vala_dynamic_method_set_invocation (ValaDynamicMethod* self, ValaMethodCall* value);
ValaErrorType* vala_error_type_new (ValaErrorDomain* error_domain, ValaErrorCode* error_code, ValaSourceReference* source_reference);
ValaErrorType* vala_error_type_construct (GType object_type, ValaErrorDomain* error_domain, ValaErrorCode* error_code, ValaSourceReference* source_reference);
GType vala_error_type_get_type (void) G_GNUC_CONST;
void vala_error_type_set_dynamic_error (ValaErrorType* self, gboolean value);
void vala_code_node_add_error_type (ValaCodeNode* self, ValaDataType* error_type);
GType vala_symbol_accessibility_get_type (void) G_GNUC_CONST;
void vala_symbol_set_access (ValaSymbol* self, ValaSymbolAccessibility value);
void vala_method_add_parameter (ValaMethod* self, ValaParameter* param);
ValaParameter* vala_parameter_new_with_ellipsis (ValaSourceReference* source_reference);
ValaParameter* vala_parameter_construct_with_ellipsis (GType object_type, ValaSourceReference* source_reference);
ValaObjectTypeSymbol* vala_object_type_get_type_symbol (ValaObjectType* self);
void vala_scope_add (ValaScope* self, const gchar* name, ValaSymbol* sym);
ValaExpression* vala_assignment_get_left (ValaAssignment* self);
GType vala_assignment_operator_get_type (void) G_GNUC_CONST;
ValaAssignmentOperator vala_assignment_get_operator (ValaAssignment* self);
ValaDynamicSignal* vala_dynamic_signal_new (ValaDataType* dynamic_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
ValaDynamicSignal* vala_dynamic_signal_construct (GType object_type, ValaDataType* dynamic_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
GType vala_dynamic_signal_get_type (void) G_GNUC_CONST;
ValaExpression* vala_assignment_get_right (ValaAssignment* self);
void vala_dynamic_signal_set_handler (ValaDynamicSignal* self, ValaExpression* value);
ValaDynamicProperty* vala_dynamic_property_new (ValaDataType* dynamic_type, const gchar* name, ValaSourceReference* source_reference, ValaComment* comment);
ValaDynamicProperty* vala_dynamic_property_construct (GType object_type, ValaDataType* dynamic_type, const gchar* name, ValaSourceReference* source_reference, ValaComment* comment);
GType vala_dynamic_property_get_type (void) G_GNUC_CONST;
ValaPropertyAccessor* vala_property_accessor_new (gboolean readable, gboolean writable, gboolean construction, ValaDataType* value_type, ValaBlock* body, ValaSourceReference* source_reference, ValaComment* comment);
ValaPropertyAccessor* vala_property_accessor_construct (GType object_type, gboolean readable, gboolean writable, gboolean construction, ValaDataType* value_type, ValaBlock* body, ValaSourceReference* source_reference, ValaComment* comment);
void vala_property_set_set_accessor (ValaProperty* self, ValaPropertyAccessor* value);
void vala_symbol_set_owner (ValaSymbol* self, ValaScope* value);
ValaList* vala_method_call_get_argument_list (ValaMethodCall* self);
void vala_property_set_property_type (ValaProperty* self, ValaDataType* value);
ValaDataType* vala_property_get_property_type (ValaProperty* self);
void vala_property_set_get_accessor (ValaProperty* self, ValaPropertyAccessor* value);
ValaSymbol* vala_semantic_analyzer_find_parent_method_or_property_accessor (ValaSemanticAnalyzer* self, ValaSymbol* sym);
ValaSymbol* vala_semantic_analyzer_get_current_method_or_property_accessor (ValaSemanticAnalyzer* self);
void vala_method_set_closure (ValaMethod* self, gboolean value);
void vala_method_add_captured_variable (ValaMethod* self, ValaLocalVariable* local);
void vala_local_variable_set_captured (ValaLocalVariable* self, gboolean value);
void vala_block_set_captured (ValaBlock* self, gboolean value);
void vala_parameter_set_captured (ValaParameter* self, gboolean value);
ValaBlock* vala_subroutine_get_body (ValaSubroutine* self);
GType vala_parameter_direction_get_type (void) G_GNUC_CONST;
ValaParameterDirection vala_parameter_get_direction (ValaParameter* self);
ValaProperty* vala_property_accessor_get_prop (ValaPropertyAccessor* self);
ValaSymbolAccessibility vala_symbol_get_access (ValaSymbol* self);
ValaMemberBinding vala_field_get_binding (ValaField* self);
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
GType vala_generic_type_get_type (void) G_GNUC_CONST;
gboolean vala_method_get_is_async_callback (ValaMethod* self);
ValaMethod* vala_semantic_analyzer_get_current_async_method (ValaSemanticAnalyzer* self);
ValaMethod* vala_semantic_analyzer_get_current_method (ValaSemanticAnalyzer* self);
ValaMethod* vala_method_get_callback_method (ValaMethod* self);
ValaMethod* vala_method_get_base_method (ValaMethod* self);
ValaSignal* vala_method_get_signal_reference (ValaMethod* self);
ValaMethod* vala_method_get_base_interface_method (ValaMethod* self);
ValaList* vala_method_get_parameters (ValaMethod* self);
ValaTypeParameter* vala_data_type_get_type_parameter (ValaDataType* self);
ValaDataType* vala_method_get_return_type (ValaMethod* self);
ValaProperty* vala_property_get_base_property (ValaProperty* self);
ValaProperty* vala_property_get_base_interface_property (ValaProperty* self);
gboolean vala_expression_get_lvalue (ValaExpression* self);
ValaPropertyAccessor* vala_property_get_set_accessor (ValaProperty* self);
ValaPropertyAccessor* vala_property_get_get_accessor (ValaProperty* self);
void vala_symbol_set_used (ValaSymbol* self, gboolean value);
gboolean vala_symbol_check_deprecated (ValaSymbol* self, ValaSourceReference* source_ref);
gboolean vala_symbol_check_experimental (ValaSymbol* self, ValaSourceReference* source_ref);
gboolean vala_typesymbol_is_subtype_of (ValaTypeSymbol* self, ValaTypeSymbol* t);
ValaList* vala_object_type_symbol_get_type_parameters (ValaObjectTypeSymbol* self);
ValaList* vala_data_type_get_type_arguments (ValaDataType* self);
void vala_member_access_set_prototype_access (ValaMemberAccess* self, gboolean value);
ValaDataType* vala_semantic_analyzer_get_value_type_for_symbol (ValaSemanticAnalyzer* self, ValaSymbol* sym, gboolean lvalue);
void vala_expression_set_value_type (ValaExpression* self, ValaDataType* value);
ValaFieldPrototype* vala_field_prototype_new (ValaField* field_symbol);
ValaFieldPrototype* vala_field_prototype_construct (GType object_type, ValaField* field_symbol);
GType vala_field_prototype_get_type (void) G_GNUC_CONST;
ValaInvalidType* vala_invalid_type_new (void);
ValaInvalidType* vala_invalid_type_construct (GType object_type);
GType vala_invalid_type_get_type (void) G_GNUC_CONST;
gboolean vala_data_type_get_value_owned (ValaDataType* self);
gboolean vala_code_context_get_experimental_non_null (ValaCodeContext* self);
void vala_expression_set_formal_value_type (ValaExpression* self, ValaDataType* value);
ValaDataType* vala_expression_get_formal_value_type (ValaExpression* self);
ValaDataType* vala_data_type_get_actual_type (ValaDataType* self, ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaCodeNode* node_reference);
ValaDataType* vala_semantic_analyzer_get_data_type_for_symbol (ValaTypeSymbol* sym);
void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
static void vala_member_access_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
void vala_code_node_emit (ValaCodeNode* self, ValaCodeGenerator* codegen);
static void vala_member_access_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection);
void vala_code_node_get_defined_variables (ValaCodeNode* self, ValaCollection* collection);
static void vala_member_access_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection);
void vala_code_node_get_used_variables (ValaCodeNode* self, ValaCollection* collection);
gboolean vala_member_access_get_creation_member (ValaMemberAccess* self);
void vala_member_access_set_creation_member (ValaMemberAccess* self, gboolean value);
void vala_member_access_set_qualified (ValaMemberAccess* self, gboolean value);
static void vala_member_access_finalize (ValaCodeNode* obj);


/**
 * Creates a new member access expression.
 *
 * @param inner            parent of the member
 * @param member_name      member name
 * @param source_reference reference to source code
 * @return                 newly created member access expression
 */
ValaMemberAccess* vala_member_access_construct (GType object_type, ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference) {
      ValaMemberAccess* self = NULL;
      g_return_val_if_fail (member_name != NULL, NULL);
      self = (ValaMemberAccess*) vala_expression_construct (object_type);
      vala_member_access_set_inner (self, inner);
      vala_member_access_set_member_name (self, member_name);
      vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
      return self;
}


ValaMemberAccess* vala_member_access_new (ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference) {
      return vala_member_access_construct (VALA_TYPE_MEMBER_ACCESS, inner, member_name, source_reference);
}


ValaMemberAccess* vala_member_access_construct_simple (GType object_type, const gchar* member_name, ValaSourceReference* source_reference) {
      ValaMemberAccess* self = NULL;
      g_return_val_if_fail (member_name != NULL, NULL);
      self = (ValaMemberAccess*) vala_expression_construct (object_type);
      vala_member_access_set_member_name (self, member_name);
      vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
      return self;
}


ValaMemberAccess* vala_member_access_new_simple (const gchar* member_name, ValaSourceReference* source_reference) {
      return vala_member_access_construct_simple (VALA_TYPE_MEMBER_ACCESS, member_name, source_reference);
}


ValaMemberAccess* vala_member_access_construct_pointer (GType object_type, ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference) {
      ValaMemberAccess* self = NULL;
      g_return_val_if_fail (inner != NULL, NULL);
      g_return_val_if_fail (member_name != NULL, NULL);
      self = (ValaMemberAccess*) vala_expression_construct (object_type);
      vala_member_access_set_inner (self, inner);
      vala_member_access_set_member_name (self, member_name);
      vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
      vala_member_access_set_pointer_member_access (self, TRUE);
      return self;
}


ValaMemberAccess* vala_member_access_new_pointer (ValaExpression* inner, const gchar* member_name, ValaSourceReference* source_reference) {
      return vala_member_access_construct_pointer (VALA_TYPE_MEMBER_ACCESS, inner, member_name, source_reference);
}


/**
 * Appends the specified type as generic type argument.
 *
 * @param arg a type reference
 */
void vala_member_access_add_type_argument (ValaMemberAccess* self, ValaDataType* arg) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (arg != NULL);
      vala_collection_add ((ValaCollection*) self->priv->type_argument_list, arg);
      vala_code_node_set_parent_node ((ValaCodeNode*) arg, (ValaCodeNode*) self);
}


/**
 * Returns a copy of the list of generic type arguments.
 *
 * @return type argument list
 */
static gpointer _vala_iterable_ref0 (gpointer self) {
      return self ? vala_iterable_ref (self) : NULL;
}


ValaList* vala_member_access_get_type_arguments (ValaMemberAccess* self) {
      ValaList* result = NULL;
      ValaList* _tmp0_;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp0_ = _vala_iterable_ref0 (self->priv->type_argument_list);
      result = _tmp0_;
      return result;
}


static void vala_member_access_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaMemberAccess * self;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (visitor != NULL);
      vala_code_visitor_visit_member_access (visitor, self);
      vala_code_visitor_visit_expression (visitor, (ValaExpression*) self);
}


static void vala_member_access_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaMemberAccess * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (visitor != NULL);
      _tmp0_ = vala_member_access_get_inner (self);
      if (_tmp0_ != NULL) {
            ValaExpression* _tmp1_ = NULL;
            _tmp1_ = vala_member_access_get_inner (self);
            vala_code_node_accept ((ValaCodeNode*) _tmp1_, visitor);
      }
      {
            ValaList* _tmp2_;
            ValaList* _type_arg_list;
            gint _tmp3_;
            gint _type_arg_size;
            gint _type_arg_index;
            _tmp2_ = _vala_iterable_ref0 (self->priv->type_argument_list);
            _type_arg_list = _tmp2_;
            _tmp3_ = vala_collection_get_size ((ValaCollection*) _type_arg_list);
            _type_arg_size = _tmp3_;
            _type_arg_index = -1;
            while (TRUE) {
                  gpointer _tmp4_ = NULL;
                  ValaDataType* type_arg;
                  _type_arg_index = _type_arg_index + 1;
                  if (!(_type_arg_index < _type_arg_size)) {
                        break;
                  }
                  _tmp4_ = vala_list_get (_type_arg_list, _type_arg_index);
                  type_arg = (ValaDataType*) _tmp4_;
                  vala_code_node_accept ((ValaCodeNode*) type_arg, visitor);
                  _vala_code_node_unref0 (type_arg);
            }
            _vala_iterable_unref0 (_type_arg_list);
      }
}


static gchar* vala_member_access_real_to_string (ValaCodeNode* base) {
      ValaMemberAccess * self;
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      ValaSymbol* _tmp1_ = NULL;
      self = (ValaMemberAccess*) base;
      _tmp1_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      if (_tmp1_ == NULL) {
            _tmp0_ = TRUE;
      } else {
            ValaSymbol* _tmp2_ = NULL;
            gboolean _tmp3_;
            _tmp2_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
            _tmp3_ = vala_symbol_is_instance_member (_tmp2_);
            _tmp0_ = _tmp3_;
      }
      if (_tmp0_) {
            ValaExpression* _tmp4_ = NULL;
            _tmp4_ = vala_member_access_get_inner (self);
            if (_tmp4_ == NULL) {
                  gchar* _tmp5_;
                  _tmp5_ = g_strdup (self->priv->_member_name);
                  result = _tmp5_;
                  return result;
            } else {
                  ValaExpression* _tmp6_ = NULL;
                  gchar* _tmp7_ = NULL;
                  gchar* _tmp8_;
                  gchar* _tmp9_ = NULL;
                  gchar* _tmp10_;
                  _tmp6_ = vala_member_access_get_inner (self);
                  _tmp7_ = vala_code_node_to_string ((ValaCodeNode*) _tmp6_);
                  _tmp8_ = _tmp7_;
                  _tmp9_ = g_strdup_printf ("%s.%s", _tmp8_, self->priv->_member_name);
                  _tmp10_ = _tmp9_;
                  _g_free0 (_tmp8_);
                  result = _tmp10_;
                  return result;
            }
      } else {
            ValaSymbol* _tmp11_ = NULL;
            gchar* _tmp12_ = NULL;
            _tmp11_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
            _tmp12_ = vala_symbol_get_full_name (_tmp11_);
            result = _tmp12_;
            return result;
      }
}


static void vala_member_access_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node) {
      ValaMemberAccess * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (old_node != NULL);
      g_return_if_fail (new_node != NULL);
      _tmp0_ = vala_member_access_get_inner (self);
      if (_tmp0_ == old_node) {
            vala_member_access_set_inner (self, new_node);
      }
}


static gboolean vala_member_access_real_is_pure (ValaExpression* base) {
      ValaMemberAccess * self;
      gboolean result = FALSE;
      gboolean _tmp0_ = FALSE;
      gboolean _tmp1_ = FALSE;
      ValaExpression* _tmp2_ = NULL;
      self = (ValaMemberAccess*) base;
      _tmp2_ = vala_member_access_get_inner (self);
      if (_tmp2_ == NULL) {
            _tmp1_ = TRUE;
      } else {
            ValaExpression* _tmp3_ = NULL;
            gboolean _tmp4_;
            _tmp3_ = vala_member_access_get_inner (self);
            _tmp4_ = vala_expression_is_pure (_tmp3_);
            _tmp1_ = _tmp4_;
      }
      if (_tmp1_) {
            ValaSymbol* _tmp5_ = NULL;
            _tmp5_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
            _tmp0_ = !VALA_IS_PROPERTY (_tmp5_);
      } else {
            _tmp0_ = FALSE;
      }
      result = _tmp0_;
      return result;
}


static void vala_member_access_real_replace_type (ValaCodeNode* base, ValaDataType* old_type, ValaDataType* new_type) {
      ValaMemberAccess * self;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (old_type != NULL);
      g_return_if_fail (new_type != NULL);
      {
            gint i;
            i = 0;
            {
                  gboolean _tmp0_;
                  _tmp0_ = TRUE;
                  while (TRUE) {
                        gint _tmp1_;
                        gpointer _tmp2_ = NULL;
                        ValaDataType* _tmp3_;
                        gboolean _tmp4_;
                        if (!_tmp0_) {
                              i++;
                        }
                        _tmp0_ = FALSE;
                        _tmp1_ = vala_collection_get_size ((ValaCollection*) self->priv->type_argument_list);
                        if (!(i < _tmp1_)) {
                              break;
                        }
                        _tmp2_ = vala_list_get (self->priv->type_argument_list, i);
                        _tmp3_ = (ValaDataType*) _tmp2_;
                        _tmp4_ = _tmp3_ == old_type;
                        _vala_code_node_unref0 (_tmp3_);
                        if (_tmp4_) {
                              vala_list_set (self->priv->type_argument_list, i, new_type);
                              return;
                        }
                  }
            }
      }
}


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


static gboolean vala_member_access_real_is_constant (ValaExpression* base) {
      ValaMemberAccess * self;
      gboolean result = FALSE;
      ValaSymbol* _tmp0_ = NULL;
      ValaSymbol* _tmp1_;
      ValaMethod* _tmp2_;
      ValaMethod* method;
      ValaSymbol* _tmp3_ = NULL;
      self = (ValaMemberAccess*) base;
      _tmp0_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp1_) ? ((ValaMethod*) _tmp1_) : NULL);
      method = _tmp2_;
      _tmp3_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      if (VALA_IS_CONSTANT (_tmp3_)) {
            result = TRUE;
            _vala_code_node_unref0 (method);
            return result;
      } else {
            gboolean _tmp4_ = FALSE;
            if (method != NULL) {
                  gboolean _tmp5_ = FALSE;
                  ValaMemberBinding _tmp6_;
                  _tmp6_ = vala_method_get_binding (method);
                  if (_tmp6_ == VALA_MEMBER_BINDING_STATIC) {
                        _tmp5_ = TRUE;
                  } else {
                        _tmp5_ = self->priv->_prototype_access;
                  }
                  _tmp4_ = _tmp5_;
            } else {
                  _tmp4_ = FALSE;
            }
            if (_tmp4_) {
                  result = TRUE;
                  _vala_code_node_unref0 (method);
                  return result;
            } else {
                  result = FALSE;
                  _vala_code_node_unref0 (method);
                  return result;
            }
      }
      _vala_code_node_unref0 (method);
}


static gboolean vala_member_access_real_is_non_null (ValaExpression* base) {
      ValaMemberAccess * self;
      gboolean result = FALSE;
      ValaSymbol* _tmp0_ = NULL;
      ValaSymbol* _tmp1_;
      ValaConstant* _tmp2_;
      ValaConstant* c;
      self = (ValaMemberAccess*) base;
      _tmp0_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_CONSTANT (_tmp1_) ? ((ValaConstant*) _tmp1_) : NULL);
      c = _tmp2_;
      if (c != NULL) {
            ValaDataType* _tmp3_ = NULL;
            gboolean _tmp4_;
            _tmp3_ = vala_constant_get_type_reference (c);
            _tmp4_ = vala_data_type_get_nullable (_tmp3_);
            result = !_tmp4_;
            _vala_code_node_unref0 (c);
            return result;
      } else {
            result = FALSE;
            _vala_code_node_unref0 (c);
            return result;
      }
      _vala_code_node_unref0 (c);
}


static gboolean vala_member_access_real_check (ValaCodeNode* base, ValaCodeContext* context) {
      ValaMemberAccess * self;
      gboolean result = FALSE;
      gboolean _tmp0_;
      ValaExpression* _tmp2_ = NULL;
      ValaSymbol* base_symbol;
      ValaParameter* this_parameter;
      gboolean may_access_instance_members;
      gboolean may_access_klass_members;
      ValaSymbol* _tmp249_ = NULL;
      ValaSymbol* _tmp262_ = NULL;
      ValaSymbol* _tmp263_;
      ValaSymbol* member;
      ValaSymbolAccessibility access;
      gboolean instance;
      gboolean klass;
      gboolean generics;
      gboolean _tmp264_;
      ValaSourceReference* _tmp425_ = NULL;
      ValaSourceReference* _tmp426_ = NULL;
      gboolean _tmp457_ = FALSE;
      gboolean _tmp481_ = FALSE;
      gboolean _tmp482_ = FALSE;
      gboolean _tmp593_;
      self = (ValaMemberAccess*) base;
      g_return_val_if_fail (context != NULL, FALSE);
      _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
      if (_tmp0_) {
            gboolean _tmp1_;
            _tmp1_ = vala_code_node_get_error ((ValaCodeNode*) self);
            result = !_tmp1_;
            return result;
      }
      vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
      _tmp2_ = vala_member_access_get_inner (self);
      if (_tmp2_ != NULL) {
            ValaExpression* _tmp3_ = NULL;
            _tmp3_ = vala_member_access_get_inner (self);
            vala_code_node_check ((ValaCodeNode*) _tmp3_, context);
      }
      {
            ValaList* _tmp4_;
            ValaList* _type_arg_list;
            gint _tmp5_;
            gint _type_arg_size;
            gint _type_arg_index;
            _tmp4_ = _vala_iterable_ref0 (self->priv->type_argument_list);
            _type_arg_list = _tmp4_;
            _tmp5_ = vala_collection_get_size ((ValaCollection*) _type_arg_list);
            _type_arg_size = _tmp5_;
            _type_arg_index = -1;
            while (TRUE) {
                  gpointer _tmp6_ = NULL;
                  ValaDataType* type_arg;
                  _type_arg_index = _type_arg_index + 1;
                  if (!(_type_arg_index < _type_arg_size)) {
                        break;
                  }
                  _tmp6_ = vala_list_get (_type_arg_list, _type_arg_index);
                  type_arg = (ValaDataType*) _tmp6_;
                  vala_code_node_check ((ValaCodeNode*) type_arg, context);
                  _vala_code_node_unref0 (type_arg);
            }
            _vala_iterable_unref0 (_type_arg_list);
      }
      base_symbol = NULL;
      this_parameter = NULL;
      may_access_instance_members = FALSE;
      may_access_klass_members = FALSE;
      vala_expression_set_symbol_reference ((ValaExpression*) self, NULL);
      if (self->priv->_qualified) {
            ValaSemanticAnalyzer* _tmp7_ = NULL;
            ValaSymbol* _tmp8_;
            ValaSemanticAnalyzer* _tmp9_ = NULL;
            ValaScope* _tmp10_ = NULL;
            ValaSymbol* _tmp11_ = NULL;
            ValaSymbol* _tmp12_;
            _tmp7_ = vala_code_context_get_analyzer (context);
            _tmp8_ = _vala_code_node_ref0 (_tmp7_->root_symbol);
            _vala_code_node_unref0 (base_symbol);
            base_symbol = _tmp8_;
            _tmp9_ = vala_code_context_get_analyzer (context);
            _tmp10_ = vala_symbol_get_scope (_tmp9_->root_symbol);
            _tmp11_ = vala_scope_lookup (_tmp10_, self->priv->_member_name);
            _tmp12_ = _tmp11_;
            vala_expression_set_symbol_reference ((ValaExpression*) self, _tmp12_);
            _vala_code_node_unref0 (_tmp12_);
      } else {
            ValaExpression* _tmp13_ = NULL;
            _tmp13_ = vala_member_access_get_inner (self);
            if (_tmp13_ == NULL) {
                  ValaSemanticAnalyzer* _tmp17_ = NULL;
                  ValaSymbol* _tmp18_ = NULL;
                  ValaSymbol* _tmp19_;
                  gboolean method_found;
                  ValaSemanticAnalyzer* _tmp20_ = NULL;
                  ValaSymbol* _tmp21_ = NULL;
                  ValaSymbol* _tmp22_;
                  ValaSymbol* sym;
                  gboolean _tmp52_ = FALSE;
                  ValaSymbol* _tmp53_ = NULL;
                  if (g_strcmp0 (self->priv->_member_name, "this") == 0) {
                        ValaSemanticAnalyzer* _tmp14_ = NULL;
                        gboolean _tmp15_;
                        _tmp14_ = vala_code_context_get_analyzer (context);
                        _tmp15_ = vala_semantic_analyzer_is_in_instance_method (_tmp14_);
                        if (!_tmp15_) {
                              ValaSourceReference* _tmp16_ = NULL;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp16_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp16_, "This access invalid outside of instance methods");
                              result = FALSE;
                              _vala_code_node_unref0 (this_parameter);
                              _vala_code_node_unref0 (base_symbol);
                              return result;
                        }
                  }
                  _tmp17_ = vala_code_context_get_analyzer (context);
                  _tmp18_ = vala_semantic_analyzer_get_current_symbol (_tmp17_);
                  _tmp19_ = _vala_code_node_ref0 (_tmp18_);
                  _vala_code_node_unref0 (base_symbol);
                  base_symbol = _tmp19_;
                  method_found = FALSE;
                  _tmp20_ = vala_code_context_get_analyzer (context);
                  _tmp21_ = vala_semantic_analyzer_get_current_symbol (_tmp20_);
                  _tmp22_ = _vala_code_node_ref0 (_tmp21_);
                  sym = _tmp22_;
                  while (TRUE) {
                        gboolean _tmp23_ = FALSE;
                        ValaSemanticAnalyzer* _tmp46_ = NULL;
                        ValaSymbol* _tmp47_ = NULL;
                        ValaSymbol* _tmp48_;
                        ValaSymbol* _tmp49_ = NULL;
                        ValaSymbol* _tmp50_ = NULL;
                        ValaSymbol* _tmp51_;
                        if (sym != NULL) {
                              ValaSymbol* _tmp24_ = NULL;
                              _tmp24_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                              _tmp23_ = _tmp24_ == NULL;
                        } else {
                              _tmp23_ = FALSE;
                        }
                        if (!_tmp23_) {
                              break;
                        }
                        if (!method_found) {
                              if (VALA_IS_CREATION_METHOD (sym)) {
                                    ValaCreationMethod* _tmp25_;
                                    ValaCreationMethod* cm;
                                    ValaParameter* _tmp26_ = NULL;
                                    ValaParameter* _tmp27_;
                                    _tmp25_ = _vala_code_node_ref0 (VALA_CREATION_METHOD (sym));
                                    cm = _tmp25_;
                                    _tmp26_ = vala_method_get_this_parameter ((ValaMethod*) cm);
                                    _tmp27_ = _vala_code_node_ref0 (_tmp26_);
                                    _vala_code_node_unref0 (this_parameter);
                                    this_parameter = _tmp27_;
                                    may_access_instance_members = TRUE;
                                    may_access_klass_members = TRUE;
                                    method_found = TRUE;
                                    _vala_code_node_unref0 (cm);
                              } else {
                                    if (VALA_IS_PROPERTY (sym)) {
                                          ValaProperty* _tmp28_;
                                          ValaProperty* prop;
                                          ValaParameter* _tmp29_ = NULL;
                                          ValaParameter* _tmp30_;
                                          ValaMemberBinding _tmp31_;
                                          ValaMemberBinding _tmp32_;
                                          _tmp28_ = _vala_code_node_ref0 (VALA_PROPERTY (sym));
                                          prop = _tmp28_;
                                          _tmp29_ = vala_property_get_this_parameter (prop);
                                          _tmp30_ = _vala_code_node_ref0 (_tmp29_);
                                          _vala_code_node_unref0 (this_parameter);
                                          this_parameter = _tmp30_;
                                          _tmp31_ = vala_property_get_binding (prop);
                                          may_access_instance_members = _tmp31_ == VALA_MEMBER_BINDING_INSTANCE;
                                          _tmp32_ = vala_property_get_binding (prop);
                                          may_access_klass_members = _tmp32_ != VALA_MEMBER_BINDING_STATIC;
                                          method_found = TRUE;
                                          _vala_code_node_unref0 (prop);
                                    } else {
                                          if (VALA_IS_CONSTRUCTOR (sym)) {
                                                ValaConstructor* _tmp33_;
                                                ValaConstructor* c;
                                                ValaParameter* _tmp34_ = NULL;
                                                ValaParameter* _tmp35_;
                                                ValaMemberBinding _tmp36_;
                                                _tmp33_ = _vala_code_node_ref0 (VALA_CONSTRUCTOR (sym));
                                                c = _tmp33_;
                                                _tmp34_ = vala_constructor_get_this_parameter (c);
                                                _tmp35_ = _vala_code_node_ref0 (_tmp34_);
                                                _vala_code_node_unref0 (this_parameter);
                                                this_parameter = _tmp35_;
                                                _tmp36_ = vala_constructor_get_binding (c);
                                                may_access_instance_members = _tmp36_ == VALA_MEMBER_BINDING_INSTANCE;
                                                may_access_klass_members = TRUE;
                                                method_found = TRUE;
                                                _vala_code_node_unref0 (c);
                                          } else {
                                                if (VALA_IS_DESTRUCTOR (sym)) {
                                                      ValaDestructor* _tmp37_;
                                                      ValaDestructor* d;
                                                      ValaParameter* _tmp38_ = NULL;
                                                      ValaParameter* _tmp39_;
                                                      ValaMemberBinding _tmp40_;
                                                      _tmp37_ = _vala_code_node_ref0 (VALA_DESTRUCTOR (sym));
                                                      d = _tmp37_;
                                                      _tmp38_ = vala_destructor_get_this_parameter (d);
                                                      _tmp39_ = _vala_code_node_ref0 (_tmp38_);
                                                      _vala_code_node_unref0 (this_parameter);
                                                      this_parameter = _tmp39_;
                                                      _tmp40_ = vala_destructor_get_binding (d);
                                                      may_access_instance_members = _tmp40_ == VALA_MEMBER_BINDING_INSTANCE;
                                                      may_access_klass_members = TRUE;
                                                      method_found = TRUE;
                                                      _vala_code_node_unref0 (d);
                                                } else {
                                                      if (VALA_IS_METHOD (sym)) {
                                                            ValaMethod* _tmp41_;
                                                            ValaMethod* m;
                                                            ValaParameter* _tmp42_ = NULL;
                                                            ValaParameter* _tmp43_;
                                                            ValaMemberBinding _tmp44_;
                                                            ValaMemberBinding _tmp45_;
                                                            _tmp41_ = _vala_code_node_ref0 (VALA_METHOD (sym));
                                                            m = _tmp41_;
                                                            _tmp42_ = vala_method_get_this_parameter (m);
                                                            _tmp43_ = _vala_code_node_ref0 (_tmp42_);
                                                            _vala_code_node_unref0 (this_parameter);
                                                            this_parameter = _tmp43_;
                                                            _tmp44_ = vala_method_get_binding (m);
                                                            may_access_instance_members = _tmp44_ == VALA_MEMBER_BINDING_INSTANCE;
                                                            _tmp45_ = vala_method_get_binding (m);
                                                            may_access_klass_members = _tmp45_ != VALA_MEMBER_BINDING_STATIC;
                                                            method_found = TRUE;
                                                            _vala_code_node_unref0 (m);
                                                      }
                                                }
                                          }
                                    }
                              }
                        }
                        _tmp46_ = vala_code_context_get_analyzer (context);
                        _tmp47_ = vala_semantic_analyzer_symbol_lookup_inherited (sym, self->priv->_member_name);
                        _tmp48_ = _tmp47_;
                        vala_expression_set_symbol_reference ((ValaExpression*) self, _tmp48_);
                        _vala_code_node_unref0 (_tmp48_);
                        _tmp49_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        if (_tmp49_ == NULL) {
                              if (VALA_IS_TYPESYMBOL (sym)) {
                                    _vala_code_node_unref0 (this_parameter);
                                    this_parameter = NULL;
                                    may_access_instance_members = FALSE;
                                    may_access_klass_members = FALSE;
                              }
                        }
                        _tmp50_ = vala_symbol_get_parent_symbol (sym);
                        _tmp51_ = _vala_code_node_ref0 (_tmp50_);
                        _vala_code_node_unref0 (sym);
                        sym = _tmp51_;
                  }
                  _tmp53_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  if (_tmp53_ == NULL) {
                        ValaSourceReference* _tmp54_ = NULL;
                        _tmp54_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp52_ = _tmp54_ != NULL;
                  } else {
                        _tmp52_ = FALSE;
                  }
                  if (_tmp52_) {
                        {
                              ValaSourceReference* _tmp55_ = NULL;
                              ValaList* _tmp56_ = NULL;
                              ValaList* _tmp57_;
                              ValaList* _ns_list;
                              gint _tmp58_;
                              gint _ns_size;
                              gint _ns_index;
                              _tmp55_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp56_ = vala_source_reference_get_using_directives (_tmp55_);
                              _tmp57_ = _vala_iterable_ref0 (_tmp56_);
                              _ns_list = _tmp57_;
                              _tmp58_ = vala_collection_get_size ((ValaCollection*) _ns_list);
                              _ns_size = _tmp58_;
                              _ns_index = -1;
                              while (TRUE) {
                                    gpointer _tmp59_ = NULL;
                                    ValaUsingDirective* ns;
                                    ValaSymbol* _tmp60_ = NULL;
                                    ValaScope* _tmp61_ = NULL;
                                    ValaSymbol* _tmp62_ = NULL;
                                    ValaSymbol* local_sym;
                                    _ns_index = _ns_index + 1;
                                    if (!(_ns_index < _ns_size)) {
                                          break;
                                    }
                                    _tmp59_ = vala_list_get (_ns_list, _ns_index);
                                    ns = (ValaUsingDirective*) _tmp59_;
                                    _tmp60_ = vala_using_directive_get_namespace_symbol (ns);
                                    _tmp61_ = vala_symbol_get_scope (_tmp60_);
                                    _tmp62_ = vala_scope_lookup (_tmp61_, self->priv->_member_name);
                                    local_sym = _tmp62_;
                                    if (local_sym != NULL) {
                                          gboolean _tmp63_ = FALSE;
                                          ValaSymbol* _tmp64_ = NULL;
                                          _tmp64_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                          if (_tmp64_ != NULL) {
                                                ValaSymbol* _tmp65_ = NULL;
                                                _tmp65_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                                _tmp63_ = _tmp65_ != local_sym;
                                          } else {
                                                _tmp63_ = FALSE;
                                          }
                                          if (_tmp63_) {
                                                ValaSourceReference* _tmp66_ = NULL;
                                                ValaSymbol* _tmp67_ = NULL;
                                                gchar* _tmp68_ = NULL;
                                                gchar* _tmp69_;
                                                gchar* _tmp70_ = NULL;
                                                gchar* _tmp71_;
                                                gchar* _tmp72_ = NULL;
                                                gchar* _tmp73_;
                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                _tmp66_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                _tmp67_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                                _tmp68_ = vala_symbol_get_full_name (_tmp67_);
                                                _tmp69_ = _tmp68_;
                                                _tmp70_ = vala_symbol_get_full_name (local_sym);
                                                _tmp71_ = _tmp70_;
                                                _tmp72_ = g_strdup_printf ("`%s' is an ambiguous reference between `%s' and `%s'", self->priv->_member_name, _tmp69_, _tmp71_);
                                                _tmp73_ = _tmp72_;
                                                vala_report_error (_tmp66_, _tmp73_);
                                                _g_free0 (_tmp73_);
                                                _g_free0 (_tmp71_);
                                                _g_free0 (_tmp69_);
                                                result = FALSE;
                                                _vala_code_node_unref0 (local_sym);
                                                _vala_code_node_unref0 (ns);
                                                _vala_iterable_unref0 (_ns_list);
                                                _vala_code_node_unref0 (sym);
                                                _vala_code_node_unref0 (this_parameter);
                                                _vala_code_node_unref0 (base_symbol);
                                                return result;
                                          }
                                          vala_expression_set_symbol_reference ((ValaExpression*) self, local_sym);
                                    }
                                    _vala_code_node_unref0 (local_sym);
                                    _vala_code_node_unref0 (ns);
                              }
                              _vala_iterable_unref0 (_ns_list);
                        }
                  }
                  _vala_code_node_unref0 (sym);
            } else {
                  ValaExpression* _tmp74_ = NULL;
                  gboolean _tmp75_;
                  ValaExpression* _tmp76_ = NULL;
                  ValaDataType* _tmp77_ = NULL;
                  ValaExpression* _tmp89_ = NULL;
                  gboolean _tmp99_ = FALSE;
                  ValaExpression* _tmp100_ = NULL;
                  gboolean _tmp112_ = FALSE;
                  ValaSymbol* _tmp113_ = NULL;
                  gboolean _tmp132_ = FALSE;
                  gboolean _tmp133_ = FALSE;
                  ValaSymbol* _tmp134_ = NULL;
                  _tmp74_ = vala_member_access_get_inner (self);
                  _tmp75_ = vala_code_node_get_error ((ValaCodeNode*) _tmp74_);
                  if (_tmp75_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        _vala_code_node_unref0 (this_parameter);
                        _vala_code_node_unref0 (base_symbol);
                        return result;
                  }
                  _tmp76_ = vala_member_access_get_inner (self);
                  _tmp77_ = vala_expression_get_value_type (_tmp76_);
                  if (VALA_IS_POINTER_TYPE (_tmp77_)) {
                        ValaExpression* _tmp78_ = NULL;
                        ValaDataType* _tmp79_ = NULL;
                        ValaDataType* _tmp80_;
                        ValaPointerType* _tmp81_;
                        ValaPointerType* pointer_type;
                        gboolean _tmp82_ = FALSE;
                        _tmp78_ = vala_member_access_get_inner (self);
                        _tmp79_ = vala_expression_get_value_type (_tmp78_);
                        _tmp80_ = _tmp79_;
                        _tmp81_ = _vala_code_node_ref0 (VALA_IS_POINTER_TYPE (_tmp80_) ? ((ValaPointerType*) _tmp80_) : NULL);
                        pointer_type = _tmp81_;
                        if (pointer_type != NULL) {
                              ValaDataType* _tmp83_ = NULL;
                              _tmp83_ = vala_pointer_type_get_base_type (pointer_type);
                              _tmp82_ = VALA_IS_VALUE_TYPE (_tmp83_);
                        } else {
                              _tmp82_ = FALSE;
                        }
                        if (_tmp82_) {
                              ValaExpression* _tmp84_ = NULL;
                              ValaSourceReference* _tmp85_ = NULL;
                              ValaPointerIndirection* _tmp86_ = NULL;
                              ValaPointerIndirection* _tmp87_;
                              ValaExpression* _tmp88_ = NULL;
                              _tmp84_ = vala_member_access_get_inner (self);
                              _tmp85_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp86_ = vala_pointer_indirection_new (_tmp84_, _tmp85_);
                              _tmp87_ = _tmp86_;
                              vala_member_access_set_inner (self, (ValaExpression*) _tmp87_);
                              _vala_code_node_unref0 (_tmp87_);
                              _tmp88_ = vala_member_access_get_inner (self);
                              vala_code_node_check ((ValaCodeNode*) _tmp88_, context);
                              vala_member_access_set_pointer_member_access (self, FALSE);
                        }
                        _vala_code_node_unref0 (pointer_type);
                  }
                  _tmp89_ = vala_member_access_get_inner (self);
                  if (VALA_IS_MEMBER_ACCESS (_tmp89_)) {
                        ValaExpression* _tmp90_ = NULL;
                        ValaMemberAccess* _tmp91_;
                        ValaMemberAccess* ma;
                        _tmp90_ = vala_member_access_get_inner (self);
                        _tmp91_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp90_));
                        ma = _tmp91_;
                        if (ma->priv->_prototype_access) {
                              ValaSourceReference* _tmp92_ = NULL;
                              ValaExpression* _tmp93_ = NULL;
                              ValaSymbol* _tmp94_ = NULL;
                              gchar* _tmp95_ = NULL;
                              gchar* _tmp96_;
                              gchar* _tmp97_ = NULL;
                              gchar* _tmp98_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp92_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp93_ = vala_member_access_get_inner (self);
                              _tmp94_ = vala_expression_get_symbol_reference (_tmp93_);
                              _tmp95_ = vala_symbol_get_full_name (_tmp94_);
                              _tmp96_ = _tmp95_;
                              _tmp97_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp96_);
                              _tmp98_ = _tmp97_;
                              vala_report_error (_tmp92_, _tmp98_);
                              _g_free0 (_tmp98_);
                              _g_free0 (_tmp96_);
                              result = FALSE;
                              _vala_code_node_unref0 (ma);
                              _vala_code_node_unref0 (this_parameter);
                              _vala_code_node_unref0 (base_symbol);
                              return result;
                        }
                        _vala_code_node_unref0 (ma);
                  }
                  _tmp100_ = vala_member_access_get_inner (self);
                  if (VALA_IS_MEMBER_ACCESS (_tmp100_)) {
                        _tmp99_ = TRUE;
                  } else {
                        ValaExpression* _tmp101_ = NULL;
                        _tmp101_ = vala_member_access_get_inner (self);
                        _tmp99_ = VALA_IS_BASE_ACCESS (_tmp101_);
                  }
                  if (_tmp99_) {
                        ValaExpression* _tmp102_ = NULL;
                        ValaSymbol* _tmp103_ = NULL;
                        ValaSymbol* _tmp104_;
                        gboolean _tmp105_ = FALSE;
                        ValaSymbol* _tmp106_ = NULL;
                        _tmp102_ = vala_member_access_get_inner (self);
                        _tmp103_ = vala_expression_get_symbol_reference (_tmp102_);
                        _tmp104_ = _vala_code_node_ref0 (_tmp103_);
                        _vala_code_node_unref0 (base_symbol);
                        base_symbol = _tmp104_;
                        _tmp106_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        if (_tmp106_ == NULL) {
                              gboolean _tmp107_ = FALSE;
                              if (VALA_IS_NAMESPACE (base_symbol)) {
                                    _tmp107_ = TRUE;
                              } else {
                                    _tmp107_ = VALA_IS_TYPESYMBOL (base_symbol);
                              }
                              _tmp105_ = _tmp107_;
                        } else {
                              _tmp105_ = FALSE;
                        }
                        if (_tmp105_) {
                              ValaScope* _tmp108_ = NULL;
                              ValaSymbol* _tmp109_ = NULL;
                              ValaSymbol* _tmp110_;
                              ValaExpression* _tmp111_ = NULL;
                              _tmp108_ = vala_symbol_get_scope (base_symbol);
                              _tmp109_ = vala_scope_lookup (_tmp108_, self->priv->_member_name);
                              _tmp110_ = _tmp109_;
                              vala_expression_set_symbol_reference ((ValaExpression*) self, _tmp110_);
                              _vala_code_node_unref0 (_tmp110_);
                              _tmp111_ = vala_member_access_get_inner (self);
                              if (VALA_IS_BASE_ACCESS (_tmp111_)) {
                                    may_access_instance_members = TRUE;
                                    may_access_klass_members = TRUE;
                              }
                        }
                  }
                  _tmp113_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  if (_tmp113_ == NULL) {
                        ValaExpression* _tmp114_ = NULL;
                        ValaDataType* _tmp115_ = NULL;
                        _tmp114_ = vala_member_access_get_inner (self);
                        _tmp115_ = vala_expression_get_value_type (_tmp114_);
                        _tmp112_ = _tmp115_ != NULL;
                  } else {
                        _tmp112_ = FALSE;
                  }
                  if (_tmp112_) {
                        ValaSymbol* _tmp131_ = NULL;
                        if (self->priv->_pointer_member_access) {
                              ValaExpression* _tmp116_ = NULL;
                              ValaDataType* _tmp117_ = NULL;
                              ValaSymbol* _tmp118_ = NULL;
                              ValaSymbol* _tmp119_;
                              _tmp116_ = vala_member_access_get_inner (self);
                              _tmp117_ = vala_expression_get_value_type (_tmp116_);
                              _tmp118_ = vala_data_type_get_pointer_member (_tmp117_, self->priv->_member_name);
                              _tmp119_ = _tmp118_;
                              vala_expression_set_symbol_reference ((ValaExpression*) self, _tmp119_);
                              _vala_code_node_unref0 (_tmp119_);
                        } else {
                              ValaExpression* _tmp120_ = NULL;
                              ValaDataType* _tmp121_ = NULL;
                              ValaTypeSymbol* _tmp122_ = NULL;
                              ValaExpression* _tmp127_ = NULL;
                              ValaDataType* _tmp128_ = NULL;
                              ValaSymbol* _tmp129_ = NULL;
                              ValaSymbol* _tmp130_;
                              _tmp120_ = vala_member_access_get_inner (self);
                              _tmp121_ = vala_expression_get_value_type (_tmp120_);
                              _tmp122_ = vala_data_type_get_data_type (_tmp121_);
                              if (_tmp122_ != NULL) {
                                    ValaExpression* _tmp123_ = NULL;
                                    ValaDataType* _tmp124_ = NULL;
                                    ValaTypeSymbol* _tmp125_ = NULL;
                                    ValaSymbol* _tmp126_;
                                    _tmp123_ = vala_member_access_get_inner (self);
                                    _tmp124_ = vala_expression_get_value_type (_tmp123_);
                                    _tmp125_ = vala_data_type_get_data_type (_tmp124_);
                                    _tmp126_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp125_);
                                    _vala_code_node_unref0 (base_symbol);
                                    base_symbol = _tmp126_;
                              }
                              _tmp127_ = vala_member_access_get_inner (self);
                              _tmp128_ = vala_expression_get_value_type (_tmp127_);
                              _tmp129_ = vala_data_type_get_member (_tmp128_, self->priv->_member_name);
                              _tmp130_ = _tmp129_;
                              vala_expression_set_symbol_reference ((ValaExpression*) self, _tmp130_);
                              _vala_code_node_unref0 (_tmp130_);
                        }
                        _tmp131_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        if (_tmp131_ != NULL) {
                              may_access_instance_members = TRUE;
                              may_access_klass_members = TRUE;
                        }
                  }
                  _tmp134_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  if (_tmp134_ == NULL) {
                        ValaExpression* _tmp135_ = NULL;
                        ValaDataType* _tmp136_ = NULL;
                        _tmp135_ = vala_member_access_get_inner (self);
                        _tmp136_ = vala_expression_get_value_type (_tmp135_);
                        _tmp133_ = _tmp136_ != NULL;
                  } else {
                        _tmp133_ = FALSE;
                  }
                  if (_tmp133_) {
                        ValaExpression* _tmp137_ = NULL;
                        ValaDataType* _tmp138_ = NULL;
                        gboolean _tmp139_;
                        _tmp137_ = vala_member_access_get_inner (self);
                        _tmp138_ = vala_expression_get_value_type (_tmp137_);
                        _tmp139_ = vala_data_type_get_is_dynamic (_tmp138_);
                        _tmp132_ = _tmp139_;
                  } else {
                        _tmp132_ = FALSE;
                  }
                  if (_tmp132_) {
                        ValaExpression* _tmp140_ = NULL;
                        ValaDataType* _tmp141_ = NULL;
                        ValaObjectType* _tmp142_;
                        ValaObjectType* dynamic_object_type;
                        ValaCodeNode* _tmp143_ = NULL;
                        ValaSymbol* _tmp225_ = NULL;
                        ValaSymbol* _tmp248_ = NULL;
                        _tmp140_ = vala_member_access_get_inner (self);
                        _tmp141_ = vala_expression_get_value_type (_tmp140_);
                        _tmp142_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE (_tmp141_));
                        dynamic_object_type = _tmp142_;
                        _tmp143_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                        if (VALA_IS_METHOD_CALL (_tmp143_)) {
                              ValaCodeNode* _tmp144_ = NULL;
                              ValaMethodCall* _tmp145_;
                              ValaMethodCall* invoc;
                              ValaExpression* _tmp146_ = NULL;
                              _tmp144_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                              _tmp145_ = _vala_code_node_ref0 (VALA_METHOD_CALL (_tmp144_));
                              invoc = _tmp145_;
                              _tmp146_ = vala_method_call_get_call (invoc);
                              if (_tmp146_ == VALA_EXPRESSION (self)) {
                                    ValaDataType* ret_type = NULL;
                                    ValaDataType* _tmp147_ = NULL;
                                    ValaExpression* _tmp155_ = NULL;
                                    ValaDataType* _tmp156_ = NULL;
                                    ValaSourceReference* _tmp157_ = NULL;
                                    ValaDynamicMethod* _tmp158_ = NULL;
                                    ValaDynamicMethod* m;
                                    ValaErrorType* _tmp159_ = NULL;
                                    ValaErrorType* err;
                                    ValaParameter* _tmp160_ = NULL;
                                    ValaParameter* _tmp161_;
                                    ValaObjectTypeSymbol* _tmp162_ = NULL;
                                    ValaScope* _tmp163_ = NULL;
                                    _tmp147_ = vala_expression_get_target_type ((ValaExpression*) invoc);
                                    if (_tmp147_ != NULL) {
                                          ValaDataType* _tmp148_ = NULL;
                                          ValaDataType* _tmp149_ = NULL;
                                          _tmp148_ = vala_expression_get_target_type ((ValaExpression*) invoc);
                                          _tmp149_ = vala_data_type_copy (_tmp148_);
                                          _vala_code_node_unref0 (ret_type);
                                          ret_type = _tmp149_;
                                          vala_data_type_set_value_owned (ret_type, TRUE);
                                    } else {
                                          ValaCodeNode* _tmp150_ = NULL;
                                          _tmp150_ = vala_code_node_get_parent_node ((ValaCodeNode*) invoc);
                                          if (VALA_IS_EXPRESSION_STATEMENT (_tmp150_)) {
                                                ValaVoidType* _tmp151_ = NULL;
                                                _tmp151_ = vala_void_type_new (NULL);
                                                _vala_code_node_unref0 (ret_type);
                                                ret_type = (ValaDataType*) _tmp151_;
                                          } else {
                                                ValaExpression* _tmp152_ = NULL;
                                                ValaDataType* _tmp153_ = NULL;
                                                ValaDataType* _tmp154_ = NULL;
                                                _tmp152_ = vala_member_access_get_inner (self);
                                                _tmp153_ = vala_expression_get_value_type (_tmp152_);
                                                _tmp154_ = vala_data_type_copy (_tmp153_);
                                                _vala_code_node_unref0 (ret_type);
                                                ret_type = _tmp154_;
                                          }
                                    }
                                    _tmp155_ = vala_member_access_get_inner (self);
                                    _tmp156_ = vala_expression_get_value_type (_tmp155_);
                                    _tmp157_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    _tmp158_ = vala_dynamic_method_new (_tmp156_, self->priv->_member_name, ret_type, _tmp157_, NULL);
                                    m = _tmp158_;
                                    vala_dynamic_method_set_invocation (m, invoc);
                                    _tmp159_ = vala_error_type_new (NULL, NULL, NULL);
                                    err = _tmp159_;
                                    vala_error_type_set_dynamic_error (err, TRUE);
                                    vala_code_node_add_error_type ((ValaCodeNode*) m, (ValaDataType*) err);
                                    vala_symbol_set_access ((ValaSymbol*) m, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
                                    _tmp160_ = vala_parameter_new_with_ellipsis (NULL);
                                    _tmp161_ = _tmp160_;
                                    vala_method_add_parameter ((ValaMethod*) m, _tmp161_);
                                    _vala_code_node_unref0 (_tmp161_);
                                    _tmp162_ = vala_object_type_get_type_symbol (dynamic_object_type);
                                    _tmp163_ = vala_symbol_get_scope ((ValaSymbol*) _tmp162_);
                                    vala_scope_add (_tmp163_, NULL, (ValaSymbol*) m);
                                    vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) m);
                                    _vala_code_node_unref0 (err);
                                    _vala_code_node_unref0 (m);
                                    _vala_code_node_unref0 (ret_type);
                              }
                              _vala_code_node_unref0 (invoc);
                        } else {
                              ValaCodeNode* _tmp164_ = NULL;
                              _tmp164_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                              if (VALA_IS_ASSIGNMENT (_tmp164_)) {
                                    ValaCodeNode* _tmp165_ = NULL;
                                    ValaAssignment* _tmp166_;
                                    ValaAssignment* a;
                                    gboolean _tmp167_ = FALSE;
                                    ValaExpression* _tmp168_ = NULL;
                                    _tmp165_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                    _tmp166_ = _vala_code_node_ref0 (VALA_ASSIGNMENT (_tmp165_));
                                    a = _tmp166_;
                                    _tmp168_ = vala_assignment_get_left (a);
                                    if (_tmp168_ == VALA_EXPRESSION (self)) {
                                          gboolean _tmp169_ = FALSE;
                                          ValaAssignmentOperator _tmp170_;
                                          _tmp170_ = vala_assignment_get_operator (a);
                                          if (_tmp170_ == VALA_ASSIGNMENT_OPERATOR_ADD) {
                                                _tmp169_ = TRUE;
                                          } else {
                                                ValaAssignmentOperator _tmp171_;
                                                _tmp171_ = vala_assignment_get_operator (a);
                                                _tmp169_ = _tmp171_ == VALA_ASSIGNMENT_OPERATOR_SUB;
                                          }
                                          _tmp167_ = _tmp169_;
                                    } else {
                                          _tmp167_ = FALSE;
                                    }
                                    if (_tmp167_) {
                                          ValaExpression* _tmp172_ = NULL;
                                          ValaDataType* _tmp173_ = NULL;
                                          ValaVoidType* _tmp174_ = NULL;
                                          ValaVoidType* _tmp175_;
                                          ValaSourceReference* _tmp176_ = NULL;
                                          ValaDynamicSignal* _tmp177_ = NULL;
                                          ValaDynamicSignal* _tmp178_;
                                          ValaDynamicSignal* s;
                                          ValaExpression* _tmp179_ = NULL;
                                          ValaObjectTypeSymbol* _tmp180_ = NULL;
                                          ValaScope* _tmp181_ = NULL;
                                          _tmp172_ = vala_member_access_get_inner (self);
                                          _tmp173_ = vala_expression_get_value_type (_tmp172_);
                                          _tmp174_ = vala_void_type_new (NULL);
                                          _tmp175_ = _tmp174_;
                                          _tmp176_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                          _tmp177_ = vala_dynamic_signal_new (_tmp173_, self->priv->_member_name, (ValaDataType*) _tmp175_, _tmp176_, NULL);
                                          _tmp178_ = _tmp177_;
                                          _vala_code_node_unref0 (_tmp175_);
                                          s = _tmp178_;
                                          _tmp179_ = vala_assignment_get_right (a);
                                          vala_dynamic_signal_set_handler (s, _tmp179_);
                                          vala_symbol_set_access ((ValaSymbol*) s, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
                                          _tmp180_ = vala_object_type_get_type_symbol (dynamic_object_type);
                                          _tmp181_ = vala_symbol_get_scope ((ValaSymbol*) _tmp180_);
                                          vala_scope_add (_tmp181_, NULL, (ValaSymbol*) s);
                                          vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) s);
                                          _vala_code_node_unref0 (s);
                                    } else {
                                          ValaExpression* _tmp182_ = NULL;
                                          _tmp182_ = vala_assignment_get_left (a);
                                          if (_tmp182_ == VALA_EXPRESSION (self)) {
                                                ValaExpression* _tmp183_ = NULL;
                                                ValaDataType* _tmp184_ = NULL;
                                                ValaSourceReference* _tmp185_ = NULL;
                                                ValaDynamicProperty* _tmp186_ = NULL;
                                                ValaDynamicProperty* prop;
                                                ValaSourceReference* _tmp187_ = NULL;
                                                ValaPropertyAccessor* _tmp188_ = NULL;
                                                ValaPropertyAccessor* _tmp189_;
                                                ValaExpression* _tmp190_ = NULL;
                                                ValaDataType* _tmp191_ = NULL;
                                                ValaTypeSymbol* _tmp192_ = NULL;
                                                ValaScope* _tmp193_ = NULL;
                                                ValaObjectTypeSymbol* _tmp194_ = NULL;
                                                ValaScope* _tmp195_ = NULL;
                                                _tmp183_ = vala_member_access_get_inner (self);
                                                _tmp184_ = vala_expression_get_value_type (_tmp183_);
                                                _tmp185_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                _tmp186_ = vala_dynamic_property_new (_tmp184_, self->priv->_member_name, _tmp185_, NULL);
                                                prop = _tmp186_;
                                                vala_symbol_set_access ((ValaSymbol*) prop, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
                                                _tmp187_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
                                                _tmp188_ = vala_property_accessor_new (FALSE, TRUE, FALSE, NULL, NULL, _tmp187_, NULL);
                                                _tmp189_ = _tmp188_;
                                                vala_property_set_set_accessor ((ValaProperty*) prop, _tmp189_);
                                                _vala_code_node_unref0 (_tmp189_);
                                                _tmp190_ = vala_member_access_get_inner (self);
                                                _tmp191_ = vala_expression_get_value_type (_tmp190_);
                                                _tmp192_ = vala_data_type_get_data_type (_tmp191_);
                                                _tmp193_ = vala_symbol_get_scope ((ValaSymbol*) _tmp192_);
                                                vala_symbol_set_owner ((ValaSymbol*) prop, _tmp193_);
                                                _tmp194_ = vala_object_type_get_type_symbol (dynamic_object_type);
                                                _tmp195_ = vala_symbol_get_scope ((ValaSymbol*) _tmp194_);
                                                vala_scope_add (_tmp195_, NULL, (ValaSymbol*) prop);
                                                vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) prop);
                                                _vala_code_node_unref0 (prop);
                                          }
                                    }
                                    _vala_code_node_unref0 (a);
                              } else {
                                    gboolean _tmp196_ = FALSE;
                                    gboolean _tmp197_ = FALSE;
                                    ValaCodeNode* _tmp198_ = NULL;
                                    _tmp198_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                    if (VALA_IS_MEMBER_ACCESS (_tmp198_)) {
                                          ValaExpression* _tmp199_ = NULL;
                                          _tmp199_ = vala_member_access_get_inner (self);
                                          _tmp197_ = VALA_IS_MEMBER_ACCESS (_tmp199_);
                                    } else {
                                          _tmp197_ = FALSE;
                                    }
                                    if (_tmp197_) {
                                          ValaCodeNode* _tmp200_ = NULL;
                                          ValaCodeNode* _tmp201_ = NULL;
                                          _tmp200_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                          _tmp201_ = vala_code_node_get_parent_node (_tmp200_);
                                          _tmp196_ = VALA_IS_METHOD_CALL (_tmp201_);
                                    } else {
                                          _tmp196_ = FALSE;
                                    }
                                    if (_tmp196_) {
                                          ValaCodeNode* _tmp202_ = NULL;
                                          ValaMemberAccess* _tmp203_;
                                          ValaMemberAccess* ma;
                                          gboolean _tmp204_ = FALSE;
                                          _tmp202_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                          _tmp203_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp202_));
                                          ma = _tmp203_;
                                          if (g_strcmp0 (ma->priv->_member_name, "connect") == 0) {
                                                _tmp204_ = TRUE;
                                          } else {
                                                _tmp204_ = g_strcmp0 (ma->priv->_member_name, "connect_after") == 0;
                                          }
                                          if (_tmp204_) {
                                                ValaExpression* _tmp205_ = NULL;
                                                ValaDataType* _tmp206_ = NULL;
                                                ValaVoidType* _tmp207_ = NULL;
                                                ValaVoidType* _tmp208_;
                                                ValaSourceReference* _tmp209_ = NULL;
                                                ValaDynamicSignal* _tmp210_ = NULL;
                                                ValaDynamicSignal* _tmp211_;
                                                ValaDynamicSignal* s;
                                                ValaCodeNode* _tmp212_ = NULL;
                                                ValaCodeNode* _tmp213_ = NULL;
                                                ValaMethodCall* _tmp214_;
                                                ValaMethodCall* mcall;
                                                ValaList* _tmp215_ = NULL;
                                                ValaList* _tmp216_;
                                                gint _tmp217_;
                                                gboolean _tmp218_;
                                                ValaObjectTypeSymbol* _tmp223_ = NULL;
                                                ValaScope* _tmp224_ = NULL;
                                                _tmp205_ = vala_member_access_get_inner (self);
                                                _tmp206_ = vala_expression_get_value_type (_tmp205_);
                                                _tmp207_ = vala_void_type_new (NULL);
                                                _tmp208_ = _tmp207_;
                                                _tmp209_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                _tmp210_ = vala_dynamic_signal_new (_tmp206_, self->priv->_member_name, (ValaDataType*) _tmp208_, _tmp209_, NULL);
                                                _tmp211_ = _tmp210_;
                                                _vala_code_node_unref0 (_tmp208_);
                                                s = _tmp211_;
                                                _tmp212_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                                _tmp213_ = vala_code_node_get_parent_node (_tmp212_);
                                                _tmp214_ = _vala_code_node_ref0 (VALA_METHOD_CALL (_tmp213_));
                                                mcall = _tmp214_;
                                                _tmp215_ = vala_method_call_get_argument_list (mcall);
                                                _tmp216_ = _tmp215_;
                                                _tmp217_ = vala_collection_get_size ((ValaCollection*) _tmp216_);
                                                _tmp218_ = _tmp217_ > 0;
                                                _vala_iterable_unref0 (_tmp216_);
                                                if (_tmp218_) {
                                                      ValaList* _tmp219_ = NULL;
                                                      ValaList* _tmp220_;
                                                      gpointer _tmp221_ = NULL;
                                                      ValaExpression* _tmp222_;
                                                      _tmp219_ = vala_method_call_get_argument_list (mcall);
                                                      _tmp220_ = _tmp219_;
                                                      _tmp221_ = vala_list_get (_tmp220_, 0);
                                                      _tmp222_ = (ValaExpression*) _tmp221_;
                                                      vala_dynamic_signal_set_handler (s, _tmp222_);
                                                      _vala_code_node_unref0 (_tmp222_);
                                                      _vala_iterable_unref0 (_tmp220_);
                                                }
                                                vala_symbol_set_access ((ValaSymbol*) s, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
                                                _tmp223_ = vala_object_type_get_type_symbol (dynamic_object_type);
                                                _tmp224_ = vala_symbol_get_scope ((ValaSymbol*) _tmp223_);
                                                vala_scope_add (_tmp224_, NULL, (ValaSymbol*) s);
                                                vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) s);
                                                _vala_code_node_unref0 (mcall);
                                                _vala_code_node_unref0 (s);
                                          }
                                          _vala_code_node_unref0 (ma);
                                    }
                              }
                        }
                        _tmp225_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        if (_tmp225_ == NULL) {
                              ValaExpression* _tmp226_ = NULL;
                              ValaDataType* _tmp227_ = NULL;
                              ValaSourceReference* _tmp228_ = NULL;
                              ValaDynamicProperty* _tmp229_ = NULL;
                              ValaDynamicProperty* prop;
                              ValaDataType* _tmp230_ = NULL;
                              ValaDataType* _tmp236_ = NULL;
                              ValaDataType* _tmp237_ = NULL;
                              ValaDataType* _tmp238_;
                              ValaSourceReference* _tmp239_ = NULL;
                              ValaPropertyAccessor* _tmp240_ = NULL;
                              ValaPropertyAccessor* _tmp241_;
                              ValaExpression* _tmp242_ = NULL;
                              ValaDataType* _tmp243_ = NULL;
                              ValaTypeSymbol* _tmp244_ = NULL;
                              ValaScope* _tmp245_ = NULL;
                              ValaObjectTypeSymbol* _tmp246_ = NULL;
                              ValaScope* _tmp247_ = NULL;
                              _tmp226_ = vala_member_access_get_inner (self);
                              _tmp227_ = vala_expression_get_value_type (_tmp226_);
                              _tmp228_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp229_ = vala_dynamic_property_new (_tmp227_, self->priv->_member_name, _tmp228_, NULL);
                              prop = _tmp229_;
                              _tmp230_ = vala_expression_get_target_type ((ValaExpression*) self);
                              if (_tmp230_ != NULL) {
                                    ValaDataType* _tmp231_ = NULL;
                                    _tmp231_ = vala_expression_get_target_type ((ValaExpression*) self);
                                    vala_property_set_property_type ((ValaProperty*) prop, _tmp231_);
                              } else {
                                    ValaExpression* _tmp232_ = NULL;
                                    ValaDataType* _tmp233_ = NULL;
                                    ValaDataType* _tmp234_ = NULL;
                                    ValaDataType* _tmp235_;
                                    _tmp232_ = vala_member_access_get_inner (self);
                                    _tmp233_ = vala_expression_get_value_type (_tmp232_);
                                    _tmp234_ = vala_data_type_copy (_tmp233_);
                                    _tmp235_ = _tmp234_;
                                    vala_property_set_property_type ((ValaProperty*) prop, _tmp235_);
                                    _vala_code_node_unref0 (_tmp235_);
                              }
                              vala_symbol_set_access ((ValaSymbol*) prop, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
                              _tmp236_ = vala_property_get_property_type ((ValaProperty*) prop);
                              _tmp237_ = vala_data_type_copy (_tmp236_);
                              _tmp238_ = _tmp237_;
                              _tmp239_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
                              _tmp240_ = vala_property_accessor_new (TRUE, FALSE, FALSE, _tmp238_, NULL, _tmp239_, NULL);
                              _tmp241_ = _tmp240_;
                              vala_property_set_get_accessor ((ValaProperty*) prop, _tmp241_);
                              _vala_code_node_unref0 (_tmp241_);
                              _vala_code_node_unref0 (_tmp238_);
                              _tmp242_ = vala_member_access_get_inner (self);
                              _tmp243_ = vala_expression_get_value_type (_tmp242_);
                              _tmp244_ = vala_data_type_get_data_type (_tmp243_);
                              _tmp245_ = vala_symbol_get_scope ((ValaSymbol*) _tmp244_);
                              vala_symbol_set_owner ((ValaSymbol*) prop, _tmp245_);
                              _tmp246_ = vala_object_type_get_type_symbol (dynamic_object_type);
                              _tmp247_ = vala_symbol_get_scope ((ValaSymbol*) _tmp246_);
                              vala_scope_add (_tmp247_, NULL, (ValaSymbol*) prop);
                              vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) prop);
                              _vala_code_node_unref0 (prop);
                        }
                        _tmp248_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        if (_tmp248_ != NULL) {
                              may_access_instance_members = TRUE;
                              may_access_klass_members = TRUE;
                        }
                        _vala_code_node_unref0 (dynamic_object_type);
                  }
            }
      }
      _tmp249_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      if (_tmp249_ == NULL) {
            gchar* _tmp250_;
            gchar* base_type_name;
            gboolean _tmp251_ = FALSE;
            ValaExpression* _tmp252_ = NULL;
            ValaSourceReference* _tmp259_ = NULL;
            gchar* _tmp260_ = NULL;
            gchar* _tmp261_;
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            _tmp250_ = g_strdup ("(null)");
            base_type_name = _tmp250_;
            _tmp252_ = vala_member_access_get_inner (self);
            if (_tmp252_ != NULL) {
                  ValaExpression* _tmp253_ = NULL;
                  ValaDataType* _tmp254_ = NULL;
                  _tmp253_ = vala_member_access_get_inner (self);
                  _tmp254_ = vala_expression_get_value_type (_tmp253_);
                  _tmp251_ = _tmp254_ != NULL;
            } else {
                  _tmp251_ = FALSE;
            }
            if (_tmp251_) {
                  ValaExpression* _tmp255_ = NULL;
                  ValaDataType* _tmp256_ = NULL;
                  gchar* _tmp257_ = NULL;
                  _tmp255_ = vala_member_access_get_inner (self);
                  _tmp256_ = vala_expression_get_value_type (_tmp255_);
                  _tmp257_ = vala_code_node_to_string ((ValaCodeNode*) _tmp256_);
                  _g_free0 (base_type_name);
                  base_type_name = _tmp257_;
            } else {
                  if (base_symbol != NULL) {
                        gchar* _tmp258_ = NULL;
                        _tmp258_ = vala_symbol_get_full_name (base_symbol);
                        _g_free0 (base_type_name);
                        base_type_name = _tmp258_;
                  }
            }
            _tmp259_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp260_ = g_strdup_printf ("The name `%s' does not exist in the context of `%s'", self->priv->_member_name, base_type_name);
            _tmp261_ = _tmp260_;
            vala_report_error (_tmp259_, _tmp261_);
            _g_free0 (_tmp261_);
            result = FALSE;
            _g_free0 (base_type_name);
            _vala_code_node_unref0 (this_parameter);
            _vala_code_node_unref0 (base_symbol);
            return result;
      }
      _tmp262_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      _tmp263_ = _vala_code_node_ref0 (_tmp262_);
      member = _tmp263_;
      access = VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
      instance = FALSE;
      klass = FALSE;
      generics = FALSE;
      _tmp264_ = vala_code_node_check ((ValaCodeNode*) member, context);
      if (!_tmp264_) {
            result = FALSE;
            _vala_code_node_unref0 (member);
            _vala_code_node_unref0 (this_parameter);
            _vala_code_node_unref0 (base_symbol);
            return result;
      }
      if (VALA_IS_LOCAL_VARIABLE (member)) {
            ValaLocalVariable* _tmp265_;
            ValaLocalVariable* local;
            ValaSymbol* _tmp266_ = NULL;
            ValaSymbol* _tmp267_;
            ValaBlock* _tmp268_;
            ValaBlock* block;
            gboolean _tmp269_ = FALSE;
            _tmp265_ = _vala_code_node_ref0 (VALA_LOCAL_VARIABLE (member));
            local = _tmp265_;
            _tmp266_ = vala_symbol_get_parent_symbol ((ValaSymbol*) local);
            _tmp267_ = _tmp266_;
            _tmp268_ = _vala_code_node_ref0 (VALA_IS_BLOCK (_tmp267_) ? ((ValaBlock*) _tmp267_) : NULL);
            block = _tmp268_;
            if (block != NULL) {
                  ValaSemanticAnalyzer* _tmp270_ = NULL;
                  ValaSymbol* _tmp271_ = NULL;
                  ValaSymbol* _tmp272_;
                  ValaSemanticAnalyzer* _tmp273_ = NULL;
                  ValaSymbol* _tmp274_ = NULL;
                  _tmp270_ = vala_code_context_get_analyzer (context);
                  _tmp271_ = vala_semantic_analyzer_find_parent_method_or_property_accessor (_tmp270_, (ValaSymbol*) block);
                  _tmp272_ = _tmp271_;
                  _tmp273_ = vala_code_context_get_analyzer (context);
                  _tmp274_ = vala_semantic_analyzer_get_current_method_or_property_accessor (_tmp273_);
                  _tmp269_ = _tmp272_ != _tmp274_;
                  _vala_code_node_unref0 (_tmp272_);
            } else {
                  _tmp269_ = FALSE;
            }
            if (_tmp269_) {
                  ValaSemanticAnalyzer* _tmp275_ = NULL;
                  ValaSymbol* _tmp276_ = NULL;
                  ValaSymbol* _tmp277_;
                  ValaSymbol* sym;
                  _tmp275_ = vala_code_context_get_analyzer (context);
                  _tmp276_ = vala_semantic_analyzer_get_current_method_or_property_accessor (_tmp275_);
                  _tmp277_ = _vala_code_node_ref0 (_tmp276_);
                  sym = _tmp277_;
                  while (TRUE) {
                        ValaSymbol* _tmp278_;
                        ValaMethod* _tmp279_;
                        ValaMethod* method;
                        ValaSymbol* _tmp280_ = NULL;
                        ValaSymbol* _tmp281_;
                        if (!(sym != VALA_SYMBOL (block))) {
                              break;
                        }
                        _tmp278_ = sym;
                        _tmp279_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp278_) ? ((ValaMethod*) _tmp278_) : NULL);
                        method = _tmp279_;
                        if (method != NULL) {
                              vala_method_set_closure (method, TRUE);
                              vala_method_add_captured_variable (method, local);
                        }
                        _tmp280_ = vala_symbol_get_parent_symbol (sym);
                        _tmp281_ = _vala_code_node_ref0 (_tmp280_);
                        _vala_code_node_unref0 (sym);
                        sym = _tmp281_;
                        _vala_code_node_unref0 (method);
                  }
                  vala_local_variable_set_captured (local, TRUE);
                  vala_block_set_captured (block, TRUE);
                  _vala_code_node_unref0 (sym);
            }
            _vala_code_node_unref0 (block);
            _vala_code_node_unref0 (local);
      } else {
            if (VALA_IS_PARAMETER (member)) {
                  ValaParameter* _tmp282_;
                  ValaParameter* param;
                  ValaSymbol* _tmp283_ = NULL;
                  ValaSymbol* _tmp284_;
                  ValaMethod* _tmp285_;
                  ValaMethod* m;
                  gboolean _tmp286_ = FALSE;
                  gboolean _tmp287_ = FALSE;
                  _tmp282_ = _vala_code_node_ref0 (VALA_PARAMETER (member));
                  param = _tmp282_;
                  _tmp283_ = vala_symbol_get_parent_symbol ((ValaSymbol*) param);
                  _tmp284_ = _tmp283_;
                  _tmp285_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp284_) ? ((ValaMethod*) _tmp284_) : NULL);
                  m = _tmp285_;
                  if (m != NULL) {
                        ValaSemanticAnalyzer* _tmp288_ = NULL;
                        ValaSymbol* _tmp289_ = NULL;
                        _tmp288_ = vala_code_context_get_analyzer (context);
                        _tmp289_ = vala_semantic_analyzer_get_current_method_or_property_accessor (_tmp288_);
                        _tmp287_ = VALA_SYMBOL (m) != _tmp289_;
                  } else {
                        _tmp287_ = FALSE;
                  }
                  if (_tmp287_) {
                        ValaParameter* _tmp290_ = NULL;
                        _tmp290_ = vala_method_get_this_parameter (m);
                        _tmp286_ = param != _tmp290_;
                  } else {
                        _tmp286_ = FALSE;
                  }
                  if (_tmp286_) {
                        ValaSemanticAnalyzer* _tmp291_ = NULL;
                        ValaSymbol* _tmp292_ = NULL;
                        ValaSymbol* _tmp293_;
                        ValaSymbol* sym;
                        ValaBlock* _tmp298_ = NULL;
                        ValaParameterDirection _tmp299_;
                        _tmp291_ = vala_code_context_get_analyzer (context);
                        _tmp292_ = vala_semantic_analyzer_get_current_method_or_property_accessor (_tmp291_);
                        _tmp293_ = _vala_code_node_ref0 (_tmp292_);
                        sym = _tmp293_;
                        while (TRUE) {
                              ValaSymbol* _tmp294_;
                              ValaMethod* _tmp295_;
                              ValaMethod* method;
                              ValaSymbol* _tmp296_ = NULL;
                              ValaSymbol* _tmp297_;
                              if (!(sym != VALA_SYMBOL (m))) {
                                    break;
                              }
                              _tmp294_ = sym;
                              _tmp295_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp294_) ? ((ValaMethod*) _tmp294_) : NULL);
                              method = _tmp295_;
                              if (method != NULL) {
                                    vala_method_set_closure (method, TRUE);
                              }
                              _tmp296_ = vala_symbol_get_parent_symbol (sym);
                              _tmp297_ = _vala_code_node_ref0 (_tmp296_);
                              _vala_code_node_unref0 (sym);
                              sym = _tmp297_;
                              _vala_code_node_unref0 (method);
                        }
                        vala_parameter_set_captured (param, TRUE);
                        _tmp298_ = vala_subroutine_get_body ((ValaSubroutine*) m);
                        vala_block_set_captured (_tmp298_, TRUE);
                        _tmp299_ = vala_parameter_get_direction (param);
                        if (_tmp299_ != VALA_PARAMETER_DIRECTION_IN) {
                              ValaSourceReference* _tmp300_ = NULL;
                              gchar* _tmp301_ = NULL;
                              gchar* _tmp302_;
                              gchar* _tmp303_ = NULL;
                              gchar* _tmp304_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp300_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp301_ = vala_symbol_get_full_name ((ValaSymbol*) param);
                              _tmp302_ = _tmp301_;
                              _tmp303_ = g_strdup_printf ("Cannot capture reference or output parameter `%s'", _tmp302_);
                              _tmp304_ = _tmp303_;
                              vala_report_error (_tmp300_, _tmp304_);
                              _g_free0 (_tmp304_);
                              _g_free0 (_tmp302_);
                        }
                        _vala_code_node_unref0 (sym);
                  } else {
                        ValaSymbol* _tmp305_ = NULL;
                        ValaSymbol* _tmp306_ = NULL;
                        ValaSymbol* _tmp307_;
                        ValaPropertyAccessor* _tmp308_;
                        ValaPropertyAccessor* acc;
                        gboolean _tmp309_ = FALSE;
                        gboolean _tmp310_ = FALSE;
                        _tmp305_ = vala_symbol_get_parent_symbol ((ValaSymbol*) param);
                        _tmp306_ = vala_symbol_get_parent_symbol (_tmp305_);
                        _tmp307_ = _tmp306_;
                        _tmp308_ = _vala_code_node_ref0 (VALA_IS_PROPERTY_ACCESSOR (_tmp307_) ? ((ValaPropertyAccessor*) _tmp307_) : NULL);
                        acc = _tmp308_;
                        if (acc != NULL) {
                              ValaSemanticAnalyzer* _tmp311_ = NULL;
                              ValaSymbol* _tmp312_ = NULL;
                              _tmp311_ = vala_code_context_get_analyzer (context);
                              _tmp312_ = vala_semantic_analyzer_get_current_method_or_property_accessor (_tmp311_);
                              _tmp310_ = VALA_SYMBOL (acc) != _tmp312_;
                        } else {
                              _tmp310_ = FALSE;
                        }
                        if (_tmp310_) {
                              ValaProperty* _tmp313_ = NULL;
                              ValaParameter* _tmp314_ = NULL;
                              _tmp313_ = vala_property_accessor_get_prop (acc);
                              _tmp314_ = vala_property_get_this_parameter (_tmp313_);
                              _tmp309_ = param != _tmp314_;
                        } else {
                              _tmp309_ = FALSE;
                        }
                        if (_tmp309_) {
                              ValaSemanticAnalyzer* _tmp315_ = NULL;
                              ValaSymbol* _tmp316_ = NULL;
                              ValaSymbol* _tmp317_;
                              ValaSymbol* sym;
                              ValaBlock* _tmp322_ = NULL;
                              _tmp315_ = vala_code_context_get_analyzer (context);
                              _tmp316_ = vala_semantic_analyzer_get_current_method_or_property_accessor (_tmp315_);
                              _tmp317_ = _vala_code_node_ref0 (_tmp316_);
                              sym = _tmp317_;
                              while (TRUE) {
                                    ValaSymbol* _tmp318_;
                                    ValaMethod* _tmp319_;
                                    ValaMethod* method;
                                    ValaSymbol* _tmp320_ = NULL;
                                    ValaSymbol* _tmp321_;
                                    if (!(sym != VALA_SYMBOL (m))) {
                                          break;
                                    }
                                    _tmp318_ = sym;
                                    _tmp319_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp318_) ? ((ValaMethod*) _tmp318_) : NULL);
                                    method = _tmp319_;
                                    if (method != NULL) {
                                          vala_method_set_closure (method, TRUE);
                                    }
                                    _tmp320_ = vala_symbol_get_parent_symbol (sym);
                                    _tmp321_ = _vala_code_node_ref0 (_tmp320_);
                                    _vala_code_node_unref0 (sym);
                                    sym = _tmp321_;
                                    _vala_code_node_unref0 (method);
                              }
                              vala_parameter_set_captured (param, TRUE);
                              _tmp322_ = vala_subroutine_get_body ((ValaSubroutine*) acc);
                              vala_block_set_captured (_tmp322_, TRUE);
                              _vala_code_node_unref0 (sym);
                        }
                        _vala_code_node_unref0 (acc);
                  }
                  _vala_code_node_unref0 (m);
                  _vala_code_node_unref0 (param);
            } else {
                  if (VALA_IS_FIELD (member)) {
                        ValaField* _tmp323_;
                        ValaField* f;
                        ValaSymbolAccessibility _tmp324_;
                        ValaMemberBinding _tmp325_;
                        ValaMemberBinding _tmp326_;
                        ValaDataType* _tmp327_ = NULL;
                        _tmp323_ = _vala_code_node_ref0 (VALA_FIELD (member));
                        f = _tmp323_;
                        _tmp324_ = vala_symbol_get_access ((ValaSymbol*) f);
                        access = _tmp324_;
                        _tmp325_ = vala_field_get_binding (f);
                        instance = _tmp325_ == VALA_MEMBER_BINDING_INSTANCE;
                        _tmp326_ = vala_field_get_binding (f);
                        klass = _tmp326_ == VALA_MEMBER_BINDING_CLASS;
                        _tmp327_ = vala_variable_get_variable_type ((ValaVariable*) f);
                        if (VALA_IS_GENERIC_TYPE (_tmp327_)) {
                              generics = TRUE;
                        }
                        _vala_code_node_unref0 (f);
                  } else {
                        if (VALA_IS_CONSTANT (member)) {
                              ValaConstant* _tmp328_;
                              ValaConstant* c;
                              ValaSymbolAccessibility _tmp329_;
                              _tmp328_ = _vala_code_node_ref0 (VALA_CONSTANT (member));
                              c = _tmp328_;
                              _tmp329_ = vala_symbol_get_access ((ValaSymbol*) c);
                              access = _tmp329_;
                              _vala_code_node_unref0 (c);
                        } else {
                              if (VALA_IS_METHOD (member)) {
                                    ValaMethod* _tmp330_;
                                    ValaMethod* m;
                                    gboolean _tmp331_;
                                    ValaSymbolAccessibility _tmp360_;
                                    ValaMemberBinding _tmp362_;
                                    ValaDataType* _tmp372_ = NULL;
                                    ValaDataType* _tmp373_;
                                    ValaGenericType* _tmp374_;
                                    ValaGenericType* generic_type;
                                    gboolean _tmp375_ = FALSE;
                                    _tmp330_ = _vala_code_node_ref0 (VALA_METHOD (member));
                                    m = _tmp330_;
                                    _tmp331_ = vala_method_get_is_async_callback (m);
                                    if (_tmp331_) {
                                          ValaSemanticAnalyzer* _tmp332_ = NULL;
                                          ValaMethod* _tmp333_ = NULL;
                                          ValaMethod* _tmp334_;
                                          ValaMethod* async_method;
                                          ValaSemanticAnalyzer* _tmp335_ = NULL;
                                          ValaMethod* _tmp336_ = NULL;
                                          ValaMethod* _tmp345_ = NULL;
                                          ValaSymbol* _tmp346_ = NULL;
                                          ValaSymbol* _tmp347_;
                                          _tmp332_ = vala_code_context_get_analyzer (context);
                                          _tmp333_ = vala_semantic_analyzer_get_current_async_method (_tmp332_);
                                          _tmp334_ = _vala_code_node_ref0 (_tmp333_);
                                          async_method = _tmp334_;
                                          _tmp335_ = vala_code_context_get_analyzer (context);
                                          _tmp336_ = vala_semantic_analyzer_get_current_method (_tmp335_);
                                          if (async_method != _tmp336_) {
                                                ValaSemanticAnalyzer* _tmp337_ = NULL;
                                                ValaMethod* _tmp338_ = NULL;
                                                ValaSymbol* _tmp339_;
                                                ValaSymbol* sym;
                                                ValaBlock* _tmp344_ = NULL;
                                                _tmp337_ = vala_code_context_get_analyzer (context);
                                                _tmp338_ = vala_semantic_analyzer_get_current_method (_tmp337_);
                                                _tmp339_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp338_);
                                                sym = _tmp339_;
                                                while (TRUE) {
                                                      ValaSymbol* _tmp340_;
                                                      ValaMethod* _tmp341_;
                                                      ValaMethod* method;
                                                      ValaSymbol* _tmp342_ = NULL;
                                                      ValaSymbol* _tmp343_;
                                                      if (!(sym != VALA_SYMBOL (async_method))) {
                                                            break;
                                                      }
                                                      _tmp340_ = sym;
                                                      _tmp341_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp340_) ? ((ValaMethod*) _tmp340_) : NULL);
                                                      method = _tmp341_;
                                                      if (method != NULL) {
                                                            vala_method_set_closure (method, TRUE);
                                                      }
                                                      _tmp342_ = vala_symbol_get_parent_symbol (sym);
                                                      _tmp343_ = _vala_code_node_ref0 (_tmp342_);
                                                      _vala_code_node_unref0 (sym);
                                                      sym = _tmp343_;
                                                      _vala_code_node_unref0 (method);
                                                }
                                                _tmp344_ = vala_subroutine_get_body ((ValaSubroutine*) async_method);
                                                vala_block_set_captured (_tmp344_, TRUE);
                                                _vala_code_node_unref0 (sym);
                                          }
                                          _tmp345_ = vala_method_get_callback_method (async_method);
                                          _vala_code_node_unref0 (m);
                                          m = _tmp345_;
                                          vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) m);
                                          _tmp346_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                          _tmp347_ = _vala_code_node_ref0 (_tmp346_);
                                          _vala_code_node_unref0 (member);
                                          member = _tmp347_;
                                          _vala_code_node_unref0 (async_method);
                                    } else {
                                          ValaMethod* _tmp348_ = NULL;
                                          _tmp348_ = vala_method_get_base_method (m);
                                          if (_tmp348_ != NULL) {
                                                ValaMethod* _tmp349_ = NULL;
                                                ValaMethod* _tmp350_;
                                                ValaSignal* _tmp351_ = NULL;
                                                ValaSymbol* _tmp353_ = NULL;
                                                ValaSymbol* _tmp354_;
                                                _tmp349_ = vala_method_get_base_method (m);
                                                _tmp350_ = _vala_code_node_ref0 (_tmp349_);
                                                _vala_code_node_unref0 (m);
                                                m = _tmp350_;
                                                _tmp351_ = vala_method_get_signal_reference (m);
                                                if (_tmp351_ != NULL) {
                                                      ValaSignal* _tmp352_ = NULL;
                                                      _tmp352_ = vala_method_get_signal_reference (m);
                                                      vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) _tmp352_);
                                                } else {
                                                      vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) m);
                                                }
                                                _tmp353_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                                _tmp354_ = _vala_code_node_ref0 (_tmp353_);
                                                _vala_code_node_unref0 (member);
                                                member = _tmp354_;
                                          } else {
                                                ValaMethod* _tmp355_ = NULL;
                                                _tmp355_ = vala_method_get_base_interface_method (m);
                                                if (_tmp355_ != NULL) {
                                                      ValaMethod* _tmp356_ = NULL;
                                                      ValaMethod* _tmp357_;
                                                      ValaSymbol* _tmp358_ = NULL;
                                                      ValaSymbol* _tmp359_;
                                                      _tmp356_ = vala_method_get_base_interface_method (m);
                                                      _tmp357_ = _vala_code_node_ref0 (_tmp356_);
                                                      _vala_code_node_unref0 (m);
                                                      m = _tmp357_;
                                                      vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) m);
                                                      _tmp358_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                                      _tmp359_ = _vala_code_node_ref0 (_tmp358_);
                                                      _vala_code_node_unref0 (member);
                                                      member = _tmp359_;
                                                }
                                          }
                                    }
                                    _tmp360_ = vala_symbol_get_access ((ValaSymbol*) m);
                                    access = _tmp360_;
                                    if (!VALA_IS_CREATION_METHOD (m)) {
                                          ValaMemberBinding _tmp361_;
                                          _tmp361_ = vala_method_get_binding (m);
                                          instance = _tmp361_ == VALA_MEMBER_BINDING_INSTANCE;
                                    }
                                    _tmp362_ = vala_method_get_binding (m);
                                    klass = _tmp362_ == VALA_MEMBER_BINDING_CLASS;
                                    {
                                          ValaList* _tmp363_ = NULL;
                                          ValaList* _param_list;
                                          gint _tmp364_;
                                          gint _param_size;
                                          gint _param_index;
                                          _tmp363_ = vala_method_get_parameters (m);
                                          _param_list = _tmp363_;
                                          _tmp364_ = vala_collection_get_size ((ValaCollection*) _param_list);
                                          _param_size = _tmp364_;
                                          _param_index = -1;
                                          while (TRUE) {
                                                gpointer _tmp365_ = NULL;
                                                ValaParameter* param;
                                                ValaDataType* _tmp366_ = NULL;
                                                ValaDataType* _tmp367_;
                                                ValaGenericType* _tmp368_;
                                                ValaGenericType* generic_type;
                                                gboolean _tmp369_ = FALSE;
                                                _param_index = _param_index + 1;
                                                if (!(_param_index < _param_size)) {
                                                      break;
                                                }
                                                _tmp365_ = vala_list_get (_param_list, _param_index);
                                                param = (ValaParameter*) _tmp365_;
                                                _tmp366_ = vala_variable_get_variable_type ((ValaVariable*) param);
                                                _tmp367_ = _tmp366_;
                                                _tmp368_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp367_) ? ((ValaGenericType*) _tmp367_) : NULL);
                                                generic_type = _tmp368_;
                                                if (generic_type != NULL) {
                                                      ValaTypeParameter* _tmp370_ = NULL;
                                                      ValaSymbol* _tmp371_ = NULL;
                                                      _tmp370_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
                                                      _tmp371_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp370_);
                                                      _tmp369_ = VALA_IS_TYPESYMBOL (_tmp371_);
                                                } else {
                                                      _tmp369_ = FALSE;
                                                }
                                                if (_tmp369_) {
                                                      generics = TRUE;
                                                      _vala_code_node_unref0 (generic_type);
                                                      _vala_code_node_unref0 (param);
                                                      break;
                                                }
                                                _vala_code_node_unref0 (generic_type);
                                                _vala_code_node_unref0 (param);
                                          }
                                          _vala_iterable_unref0 (_param_list);
                                    }
                                    _tmp372_ = vala_method_get_return_type (m);
                                    _tmp373_ = _tmp372_;
                                    _tmp374_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp373_) ? ((ValaGenericType*) _tmp373_) : NULL);
                                    generic_type = _tmp374_;
                                    if (generic_type != NULL) {
                                          ValaTypeParameter* _tmp376_ = NULL;
                                          ValaSymbol* _tmp377_ = NULL;
                                          _tmp376_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
                                          _tmp377_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp376_);
                                          _tmp375_ = VALA_IS_TYPESYMBOL (_tmp377_);
                                    } else {
                                          _tmp375_ = FALSE;
                                    }
                                    if (_tmp375_) {
                                          generics = TRUE;
                                    }
                                    _vala_code_node_unref0 (generic_type);
                                    _vala_code_node_unref0 (m);
                              } else {
                                    if (VALA_IS_PROPERTY (member)) {
                                          ValaProperty* _tmp378_;
                                          ValaProperty* prop;
                                          gboolean _tmp379_;
                                          ValaProperty* _tmp380_ = NULL;
                                          ValaSymbolAccessibility _tmp390_;
                                          gboolean _tmp391_;
                                          ValaMemberBinding _tmp422_;
                                          ValaDataType* _tmp423_ = NULL;
                                          _tmp378_ = _vala_code_node_ref0 (VALA_PROPERTY (member));
                                          prop = _tmp378_;
                                          _tmp379_ = vala_code_node_check ((ValaCodeNode*) prop, context);
                                          if (!_tmp379_) {
                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                result = FALSE;
                                                _vala_code_node_unref0 (prop);
                                                _vala_code_node_unref0 (member);
                                                _vala_code_node_unref0 (this_parameter);
                                                _vala_code_node_unref0 (base_symbol);
                                                return result;
                                          }
                                          _tmp380_ = vala_property_get_base_property (prop);
                                          if (_tmp380_ != NULL) {
                                                ValaProperty* _tmp381_ = NULL;
                                                ValaProperty* _tmp382_;
                                                ValaSymbol* _tmp383_ = NULL;
                                                ValaSymbol* _tmp384_;
                                                _tmp381_ = vala_property_get_base_property (prop);
                                                _tmp382_ = _vala_code_node_ref0 (_tmp381_);
                                                _vala_code_node_unref0 (prop);
                                                prop = _tmp382_;
                                                vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) prop);
                                                _tmp383_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                                _tmp384_ = _vala_code_node_ref0 (_tmp383_);
                                                _vala_code_node_unref0 (member);
                                                member = _tmp384_;
                                          } else {
                                                ValaProperty* _tmp385_ = NULL;
                                                _tmp385_ = vala_property_get_base_interface_property (prop);
                                                if (_tmp385_ != NULL) {
                                                      ValaProperty* _tmp386_ = NULL;
                                                      ValaProperty* _tmp387_;
                                                      ValaSymbol* _tmp388_ = NULL;
                                                      ValaSymbol* _tmp389_;
                                                      _tmp386_ = vala_property_get_base_interface_property (prop);
                                                      _tmp387_ = _vala_code_node_ref0 (_tmp386_);
                                                      _vala_code_node_unref0 (prop);
                                                      prop = _tmp387_;
                                                      vala_expression_set_symbol_reference ((ValaExpression*) self, (ValaSymbol*) prop);
                                                      _tmp388_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                                      _tmp389_ = _vala_code_node_ref0 (_tmp388_);
                                                      _vala_code_node_unref0 (member);
                                                      member = _tmp389_;
                                                }
                                          }
                                          _tmp390_ = vala_symbol_get_access ((ValaSymbol*) prop);
                                          access = _tmp390_;
                                          _tmp391_ = vala_expression_get_lvalue ((ValaExpression*) self);
                                          if (_tmp391_) {
                                                ValaPropertyAccessor* _tmp392_ = NULL;
                                                ValaSymbolAccessibility _tmp398_;
                                                _tmp392_ = vala_property_get_set_accessor (prop);
                                                if (_tmp392_ == NULL) {
                                                      ValaSourceReference* _tmp393_ = NULL;
                                                      gchar* _tmp394_ = NULL;
                                                      gchar* _tmp395_;
                                                      gchar* _tmp396_ = NULL;
                                                      gchar* _tmp397_;
                                                      vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                      _tmp393_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                      _tmp394_ = vala_symbol_get_full_name ((ValaSymbol*) prop);
                                                      _tmp395_ = _tmp394_;
                                                      _tmp396_ = g_strdup_printf ("Property `%s' is read-only", _tmp395_);
                                                      _tmp397_ = _tmp396_;
                                                      vala_report_error (_tmp393_, _tmp397_);
                                                      _g_free0 (_tmp397_);
                                                      _g_free0 (_tmp395_);
                                                      result = FALSE;
                                                      _vala_code_node_unref0 (prop);
                                                      _vala_code_node_unref0 (member);
                                                      _vala_code_node_unref0 (this_parameter);
                                                      _vala_code_node_unref0 (base_symbol);
                                                      return result;
                                                }
                                                _tmp398_ = vala_symbol_get_access ((ValaSymbol*) prop);
                                                if (_tmp398_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
                                                      ValaPropertyAccessor* _tmp399_ = NULL;
                                                      ValaSymbolAccessibility _tmp400_;
                                                      _tmp399_ = vala_property_get_set_accessor (prop);
                                                      _tmp400_ = vala_symbol_get_access ((ValaSymbol*) _tmp399_);
                                                      access = _tmp400_;
                                                } else {
                                                      gboolean _tmp401_ = FALSE;
                                                      ValaSymbolAccessibility _tmp402_;
                                                      _tmp402_ = vala_symbol_get_access ((ValaSymbol*) prop);
                                                      if (_tmp402_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED) {
                                                            ValaPropertyAccessor* _tmp403_ = NULL;
                                                            ValaSymbolAccessibility _tmp404_;
                                                            _tmp403_ = vala_property_get_set_accessor (prop);
                                                            _tmp404_ = vala_symbol_get_access ((ValaSymbol*) _tmp403_);
                                                            _tmp401_ = _tmp404_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
                                                      } else {
                                                            _tmp401_ = FALSE;
                                                      }
                                                      if (_tmp401_) {
                                                            ValaPropertyAccessor* _tmp405_ = NULL;
                                                            ValaSymbolAccessibility _tmp406_;
                                                            _tmp405_ = vala_property_get_set_accessor (prop);
                                                            _tmp406_ = vala_symbol_get_access ((ValaSymbol*) _tmp405_);
                                                            access = _tmp406_;
                                                      }
                                                }
                                          } else {
                                                ValaPropertyAccessor* _tmp407_ = NULL;
                                                ValaSymbolAccessibility _tmp413_;
                                                _tmp407_ = vala_property_get_get_accessor (prop);
                                                if (_tmp407_ == NULL) {
                                                      ValaSourceReference* _tmp408_ = NULL;
                                                      gchar* _tmp409_ = NULL;
                                                      gchar* _tmp410_;
                                                      gchar* _tmp411_ = NULL;
                                                      gchar* _tmp412_;
                                                      vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                      _tmp408_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                      _tmp409_ = vala_symbol_get_full_name ((ValaSymbol*) prop);
                                                      _tmp410_ = _tmp409_;
                                                      _tmp411_ = g_strdup_printf ("Property `%s' is write-only", _tmp410_);
                                                      _tmp412_ = _tmp411_;
                                                      vala_report_error (_tmp408_, _tmp412_);
                                                      _g_free0 (_tmp412_);
                                                      _g_free0 (_tmp410_);
                                                      result = FALSE;
                                                      _vala_code_node_unref0 (prop);
                                                      _vala_code_node_unref0 (member);
                                                      _vala_code_node_unref0 (this_parameter);
                                                      _vala_code_node_unref0 (base_symbol);
                                                      return result;
                                                }
                                                _tmp413_ = vala_symbol_get_access ((ValaSymbol*) prop);
                                                if (_tmp413_ == VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
                                                      ValaPropertyAccessor* _tmp414_ = NULL;
                                                      ValaSymbolAccessibility _tmp415_;
                                                      _tmp414_ = vala_property_get_get_accessor (prop);
                                                      _tmp415_ = vala_symbol_get_access ((ValaSymbol*) _tmp414_);
                                                      access = _tmp415_;
                                                } else {
                                                      gboolean _tmp416_ = FALSE;
                                                      ValaSymbolAccessibility _tmp417_;
                                                      _tmp417_ = vala_symbol_get_access ((ValaSymbol*) prop);
                                                      if (_tmp417_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED) {
                                                            ValaPropertyAccessor* _tmp418_ = NULL;
                                                            ValaSymbolAccessibility _tmp419_;
                                                            _tmp418_ = vala_property_get_get_accessor (prop);
                                                            _tmp419_ = vala_symbol_get_access ((ValaSymbol*) _tmp418_);
                                                            _tmp416_ = _tmp419_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
                                                      } else {
                                                            _tmp416_ = FALSE;
                                                      }
                                                      if (_tmp416_) {
                                                            ValaPropertyAccessor* _tmp420_ = NULL;
                                                            ValaSymbolAccessibility _tmp421_;
                                                            _tmp420_ = vala_property_get_get_accessor (prop);
                                                            _tmp421_ = vala_symbol_get_access ((ValaSymbol*) _tmp420_);
                                                            access = _tmp421_;
                                                      }
                                                }
                                          }
                                          _tmp422_ = vala_property_get_binding (prop);
                                          instance = _tmp422_ == VALA_MEMBER_BINDING_INSTANCE;
                                          _tmp423_ = vala_property_get_property_type (prop);
                                          if (VALA_IS_GENERIC_TYPE (_tmp423_)) {
                                                generics = TRUE;
                                          }
                                          _vala_code_node_unref0 (prop);
                                    } else {
                                          if (VALA_IS_SIGNAL (member)) {
                                                ValaSymbolAccessibility _tmp424_;
                                                instance = TRUE;
                                                _tmp424_ = vala_symbol_get_access (member);
                                                access = _tmp424_;
                                          }
                                    }
                              }
                        }
                  }
            }
      }
      vala_symbol_set_used (member, TRUE);
      _tmp425_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
      vala_symbol_check_deprecated (member, _tmp425_);
      _tmp426_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
      vala_symbol_check_experimental (member, _tmp426_);
      if (access == VALA_SYMBOL_ACCESSIBILITY_PROTECTED) {
            ValaSymbol* _tmp427_ = NULL;
            ValaTypeSymbol* _tmp428_;
            ValaTypeSymbol* target_type;
            gboolean in_subtype;
            _tmp427_ = vala_symbol_get_parent_symbol (member);
            _tmp428_ = _vala_code_node_ref0 (VALA_TYPESYMBOL (_tmp427_));
            target_type = _tmp428_;
            in_subtype = FALSE;
            {
                  ValaSemanticAnalyzer* _tmp429_ = NULL;
                  ValaSymbol* _tmp430_ = NULL;
                  ValaSymbol* _tmp431_;
                  ValaSymbol* this_symbol;
                  _tmp429_ = vala_code_context_get_analyzer (context);
                  _tmp430_ = vala_semantic_analyzer_get_current_symbol (_tmp429_);
                  _tmp431_ = _vala_code_node_ref0 (_tmp430_);
                  this_symbol = _tmp431_;
                  {
                        gboolean _tmp432_;
                        _tmp432_ = TRUE;
                        while (TRUE) {
                              ValaSymbol* _tmp435_;
                              ValaClass* _tmp436_;
                              ValaClass* cl;
                              gboolean _tmp437_ = FALSE;
                              if (!_tmp432_) {
                                    ValaSymbol* _tmp433_ = NULL;
                                    ValaSymbol* _tmp434_;
                                    _tmp433_ = vala_symbol_get_parent_symbol (this_symbol);
                                    _tmp434_ = _vala_code_node_ref0 (_tmp433_);
                                    _vala_code_node_unref0 (this_symbol);
                                    this_symbol = _tmp434_;
                              }
                              _tmp432_ = FALSE;
                              if (!(this_symbol != NULL)) {
                                    break;
                              }
                              if (this_symbol == VALA_SYMBOL (target_type)) {
                                    in_subtype = TRUE;
                                    break;
                              }
                              _tmp435_ = this_symbol;
                              _tmp436_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp435_) ? ((ValaClass*) _tmp435_) : NULL);
                              cl = _tmp436_;
                              if (cl != NULL) {
                                    gboolean _tmp438_;
                                    _tmp438_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, target_type);
                                    _tmp437_ = _tmp438_;
                              } else {
                                    _tmp437_ = FALSE;
                              }
                              if (_tmp437_) {
                                    in_subtype = TRUE;
                                    _vala_code_node_unref0 (cl);
                                    break;
                              }
                              _vala_code_node_unref0 (cl);
                        }
                  }
                  _vala_code_node_unref0 (this_symbol);
            }
            if (!in_subtype) {
                  ValaSourceReference* _tmp439_ = NULL;
                  gchar* _tmp440_ = NULL;
                  gchar* _tmp441_;
                  gchar* _tmp442_ = NULL;
                  gchar* _tmp443_;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp439_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp440_ = vala_symbol_get_full_name (member);
                  _tmp441_ = _tmp440_;
                  _tmp442_ = g_strdup_printf ("Access to protected member `%s' denied", _tmp441_);
                  _tmp443_ = _tmp442_;
                  vala_report_error (_tmp439_, _tmp443_);
                  _g_free0 (_tmp443_);
                  _g_free0 (_tmp441_);
                  result = FALSE;
                  _vala_code_node_unref0 (target_type);
                  _vala_code_node_unref0 (member);
                  _vala_code_node_unref0 (this_parameter);
                  _vala_code_node_unref0 (base_symbol);
                  return result;
            }
            _vala_code_node_unref0 (target_type);
      } else {
            if (access == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                  ValaSymbol* _tmp444_ = NULL;
                  ValaSymbol* _tmp445_;
                  ValaSymbol* target_type;
                  gboolean in_target_type;
                  _tmp444_ = vala_symbol_get_parent_symbol (member);
                  _tmp445_ = _vala_code_node_ref0 (_tmp444_);
                  target_type = _tmp445_;
                  in_target_type = FALSE;
                  {
                        ValaSemanticAnalyzer* _tmp446_ = NULL;
                        ValaSymbol* _tmp447_ = NULL;
                        ValaSymbol* _tmp448_;
                        ValaSymbol* this_symbol;
                        _tmp446_ = vala_code_context_get_analyzer (context);
                        _tmp447_ = vala_semantic_analyzer_get_current_symbol (_tmp446_);
                        _tmp448_ = _vala_code_node_ref0 (_tmp447_);
                        this_symbol = _tmp448_;
                        {
                              gboolean _tmp449_;
                              _tmp449_ = TRUE;
                              while (TRUE) {
                                    if (!_tmp449_) {
                                          ValaSymbol* _tmp450_ = NULL;
                                          ValaSymbol* _tmp451_;
                                          _tmp450_ = vala_symbol_get_parent_symbol (this_symbol);
                                          _tmp451_ = _vala_code_node_ref0 (_tmp450_);
                                          _vala_code_node_unref0 (this_symbol);
                                          this_symbol = _tmp451_;
                                    }
                                    _tmp449_ = FALSE;
                                    if (!(this_symbol != NULL)) {
                                          break;
                                    }
                                    if (target_type == this_symbol) {
                                          in_target_type = TRUE;
                                          break;
                                    }
                              }
                        }
                        _vala_code_node_unref0 (this_symbol);
                  }
                  if (!in_target_type) {
                        ValaSourceReference* _tmp452_ = NULL;
                        gchar* _tmp453_ = NULL;
                        gchar* _tmp454_;
                        gchar* _tmp455_ = NULL;
                        gchar* _tmp456_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp452_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp453_ = vala_symbol_get_full_name (member);
                        _tmp454_ = _tmp453_;
                        _tmp455_ = g_strdup_printf ("Access to private member `%s' denied", _tmp454_);
                        _tmp456_ = _tmp455_;
                        vala_report_error (_tmp452_, _tmp456_);
                        _g_free0 (_tmp456_);
                        _g_free0 (_tmp454_);
                        result = FALSE;
                        _vala_code_node_unref0 (target_type);
                        _vala_code_node_unref0 (member);
                        _vala_code_node_unref0 (this_parameter);
                        _vala_code_node_unref0 (base_symbol);
                        return result;
                  }
                  _vala_code_node_unref0 (target_type);
            }
      }
      if (generics) {
            ValaExpression* _tmp458_ = NULL;
            _tmp458_ = vala_member_access_get_inner (self);
            _tmp457_ = _tmp458_ != NULL;
      } else {
            _tmp457_ = FALSE;
      }
      if (_tmp457_) {
            ValaExpression* _tmp459_ = NULL;
            ValaDataType* _tmp460_ = NULL;
            ValaDataType* _tmp461_;
            ValaDataType* instance_type;
            ValaExpression* _tmp462_ = NULL;
            ValaDataType* _tmp463_ = NULL;
            ValaDataType* _tmp464_;
            ValaPointerType* _tmp465_;
            ValaPointerType* pointer_type;
            ValaDataType* _tmp468_;
            ValaObjectType* _tmp469_;
            ValaObjectType* object_type;
            gboolean _tmp470_ = FALSE;
            gboolean _tmp471_ = FALSE;
            _tmp459_ = vala_member_access_get_inner (self);
            _tmp460_ = vala_expression_get_value_type (_tmp459_);
            _tmp461_ = _vala_code_node_ref0 (_tmp460_);
            instance_type = _tmp461_;
            _tmp462_ = vala_member_access_get_inner (self);
            _tmp463_ = vala_expression_get_value_type (_tmp462_);
            _tmp464_ = _tmp463_;
            _tmp465_ = _vala_code_node_ref0 (VALA_IS_POINTER_TYPE (_tmp464_) ? ((ValaPointerType*) _tmp464_) : NULL);
            pointer_type = _tmp465_;
            if (pointer_type != NULL) {
                  ValaDataType* _tmp466_ = NULL;
                  ValaDataType* _tmp467_;
                  _tmp466_ = vala_pointer_type_get_base_type (pointer_type);
                  _tmp467_ = _vala_code_node_ref0 (_tmp466_);
                  _vala_code_node_unref0 (instance_type);
                  instance_type = _tmp467_;
            }
            _tmp468_ = instance_type;
            _tmp469_ = _vala_code_node_ref0 (VALA_IS_OBJECT_TYPE (_tmp468_) ? ((ValaObjectType*) _tmp468_) : NULL);
            object_type = _tmp469_;
            if (object_type != NULL) {
                  ValaObjectTypeSymbol* _tmp472_ = NULL;
                  ValaList* _tmp473_ = NULL;
                  ValaList* _tmp474_;
                  gint _tmp475_;
                  _tmp472_ = vala_object_type_get_type_symbol (object_type);
                  _tmp473_ = vala_object_type_symbol_get_type_parameters (_tmp472_);
                  _tmp474_ = _tmp473_;
                  _tmp475_ = vala_collection_get_size ((ValaCollection*) _tmp474_);
                  _tmp471_ = _tmp475_ > 0;
                  _vala_iterable_unref0 (_tmp474_);
            } else {
                  _tmp471_ = FALSE;
            }
            if (_tmp471_) {
                  ValaList* _tmp476_ = NULL;
                  ValaList* _tmp477_;
                  gint _tmp478_;
                  _tmp476_ = vala_data_type_get_type_arguments (instance_type);
                  _tmp477_ = _tmp476_;
                  _tmp478_ = vala_collection_get_size ((ValaCollection*) _tmp477_);
                  _tmp470_ = _tmp478_ == 0;
                  _vala_iterable_unref0 (_tmp477_);
            } else {
                  _tmp470_ = FALSE;
            }
            if (_tmp470_) {
                  ValaExpression* _tmp479_ = NULL;
                  ValaSourceReference* _tmp480_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp479_ = vala_member_access_get_inner (self);
                  _tmp480_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp479_);
                  vala_report_error (_tmp480_, "missing generic type arguments");
                  result = FALSE;
                  _vala_code_node_unref0 (object_type);
                  _vala_code_node_unref0 (pointer_type);
                  _vala_code_node_unref0 (instance_type);
                  _vala_code_node_unref0 (member);
                  _vala_code_node_unref0 (this_parameter);
                  _vala_code_node_unref0 (base_symbol);
                  return result;
            }
            _vala_code_node_unref0 (object_type);
            _vala_code_node_unref0 (pointer_type);
            _vala_code_node_unref0 (instance_type);
      }
      if (instance) {
            _tmp482_ = !may_access_instance_members;
      } else {
            _tmp482_ = FALSE;
      }
      if (_tmp482_) {
            _tmp481_ = TRUE;
      } else {
            gboolean _tmp483_ = FALSE;
            if (klass) {
                  _tmp483_ = !may_access_klass_members;
            } else {
                  _tmp483_ = FALSE;
            }
            _tmp481_ = _tmp483_;
      }
      if (_tmp481_) {
            ValaSymbol* _tmp484_ = NULL;
            ValaDataType* _tmp496_ = NULL;
            vala_member_access_set_prototype_access (self, TRUE);
            _tmp484_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
            if (VALA_IS_METHOD (_tmp484_)) {
                  ValaSemanticAnalyzer* _tmp485_ = NULL;
                  ValaSymbol* _tmp486_ = NULL;
                  gboolean _tmp487_;
                  ValaDataType* _tmp488_ = NULL;
                  ValaDataType* _tmp489_;
                  _tmp485_ = vala_code_context_get_analyzer (context);
                  _tmp486_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  _tmp487_ = vala_expression_get_lvalue ((ValaExpression*) self);
                  _tmp488_ = vala_semantic_analyzer_get_value_type_for_symbol (_tmp485_, _tmp486_, _tmp487_);
                  _tmp489_ = _tmp488_;
                  vala_expression_set_value_type ((ValaExpression*) self, _tmp489_);
                  _vala_code_node_unref0 (_tmp489_);
            } else {
                  ValaSymbol* _tmp490_ = NULL;
                  _tmp490_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  if (VALA_IS_FIELD (_tmp490_)) {
                        ValaSymbol* _tmp491_ = NULL;
                        ValaFieldPrototype* _tmp492_ = NULL;
                        ValaFieldPrototype* _tmp493_;
                        _tmp491_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        _tmp492_ = vala_field_prototype_new (VALA_FIELD (_tmp491_));
                        _tmp493_ = _tmp492_;
                        vala_expression_set_value_type ((ValaExpression*) self, (ValaDataType*) _tmp493_);
                        _vala_code_node_unref0 (_tmp493_);
                  } else {
                        ValaInvalidType* _tmp494_ = NULL;
                        ValaInvalidType* _tmp495_;
                        _tmp494_ = vala_invalid_type_new ();
                        _tmp495_ = _tmp494_;
                        vala_expression_set_value_type ((ValaExpression*) self, (ValaDataType*) _tmp495_);
                        _vala_code_node_unref0 (_tmp495_);
                  }
            }
            _tmp496_ = vala_expression_get_target_type ((ValaExpression*) self);
            if (_tmp496_ != NULL) {
                  ValaDataType* _tmp497_ = NULL;
                  ValaDataType* _tmp498_ = NULL;
                  gboolean _tmp499_;
                  _tmp497_ = vala_expression_get_value_type ((ValaExpression*) self);
                  _tmp498_ = vala_expression_get_target_type ((ValaExpression*) self);
                  _tmp499_ = vala_data_type_get_value_owned (_tmp498_);
                  vala_data_type_set_value_owned (_tmp497_, _tmp499_);
            }
      } else {
            gboolean _tmp500_ = FALSE;
            gboolean _tmp510_ = FALSE;
            gboolean _tmp511_ = FALSE;
            gboolean _tmp512_ = FALSE;
            gboolean _tmp513_ = FALSE;
            gboolean _tmp514_;
            ValaSemanticAnalyzer* _tmp528_ = NULL;
            ValaSymbol* _tmp529_ = NULL;
            gboolean _tmp530_;
            ValaDataType* _tmp531_ = NULL;
            ValaDataType* _tmp532_;
            gboolean _tmp533_ = FALSE;
            ValaExpression* _tmp534_ = NULL;
            ValaSymbol* _tmp542_ = NULL;
            if (instance) {
                  ValaExpression* _tmp501_ = NULL;
                  _tmp501_ = vala_member_access_get_inner (self);
                  _tmp500_ = _tmp501_ == NULL;
            } else {
                  _tmp500_ = FALSE;
            }
            if (_tmp500_) {
                  ValaSourceReference* _tmp502_ = NULL;
                  ValaMemberAccess* _tmp503_ = NULL;
                  ValaMemberAccess* _tmp504_;
                  ValaExpression* _tmp505_ = NULL;
                  ValaDataType* _tmp506_ = NULL;
                  ValaDataType* _tmp507_ = NULL;
                  ValaDataType* _tmp508_;
                  ValaExpression* _tmp509_ = NULL;
                  _tmp502_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp503_ = vala_member_access_new (NULL, "this", _tmp502_);
                  _tmp504_ = _tmp503_;
                  vala_member_access_set_inner (self, (ValaExpression*) _tmp504_);
                  _vala_code_node_unref0 (_tmp504_);
                  _tmp505_ = vala_member_access_get_inner (self);
                  _tmp506_ = vala_variable_get_variable_type ((ValaVariable*) this_parameter);
                  _tmp507_ = vala_data_type_copy (_tmp506_);
                  _tmp508_ = _tmp507_;
                  vala_expression_set_value_type (_tmp505_, _tmp508_);
                  _vala_code_node_unref0 (_tmp508_);
                  _tmp509_ = vala_member_access_get_inner (self);
                  vala_expression_set_symbol_reference (_tmp509_, (ValaSymbol*) this_parameter);
            }
            _tmp514_ = vala_code_context_get_experimental_non_null (context);
            if (_tmp514_) {
                  _tmp513_ = instance;
            } else {
                  _tmp513_ = FALSE;
            }
            if (_tmp513_) {
                  ValaExpression* _tmp515_ = NULL;
                  ValaDataType* _tmp516_ = NULL;
                  gboolean _tmp517_;
                  _tmp515_ = vala_member_access_get_inner (self);
                  _tmp516_ = vala_expression_get_value_type (_tmp515_);
                  _tmp517_ = vala_data_type_get_nullable (_tmp516_);
                  _tmp512_ = _tmp517_;
            } else {
                  _tmp512_ = FALSE;
            }
            if (_tmp512_) {
                  ValaExpression* _tmp518_ = NULL;
                  ValaDataType* _tmp519_ = NULL;
                  _tmp518_ = vala_member_access_get_inner (self);
                  _tmp519_ = vala_expression_get_value_type (_tmp518_);
                  _tmp511_ = !VALA_IS_POINTER_TYPE (_tmp519_);
            } else {
                  _tmp511_ = FALSE;
            }
            if (_tmp511_) {
                  ValaExpression* _tmp520_ = NULL;
                  ValaDataType* _tmp521_ = NULL;
                  _tmp520_ = vala_member_access_get_inner (self);
                  _tmp521_ = vala_expression_get_value_type (_tmp520_);
                  _tmp510_ = !VALA_IS_GENERIC_TYPE (_tmp521_);
            } else {
                  _tmp510_ = FALSE;
            }
            if (_tmp510_) {
                  ValaSourceReference* _tmp522_ = NULL;
                  ValaSymbol* _tmp523_ = NULL;
                  gchar* _tmp524_ = NULL;
                  gchar* _tmp525_;
                  gchar* _tmp526_ = NULL;
                  gchar* _tmp527_;
                  _tmp522_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp523_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  _tmp524_ = vala_symbol_get_full_name (_tmp523_);
                  _tmp525_ = _tmp524_;
                  _tmp526_ = g_strdup_printf ("Access to instance member `%s' from nullable reference denied", _tmp525_);
                  _tmp527_ = _tmp526_;
                  vala_report_error (_tmp522_, _tmp527_);
                  _g_free0 (_tmp527_);
                  _g_free0 (_tmp525_);
            }
            _tmp528_ = vala_code_context_get_analyzer (context);
            _tmp529_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
            _tmp530_ = vala_expression_get_lvalue ((ValaExpression*) self);
            _tmp531_ = vala_semantic_analyzer_get_value_type_for_symbol (_tmp528_, _tmp529_, _tmp530_);
            _tmp532_ = _tmp531_;
            vala_expression_set_formal_value_type ((ValaExpression*) self, _tmp532_);
            _vala_code_node_unref0 (_tmp532_);
            _tmp534_ = vala_member_access_get_inner (self);
            if (_tmp534_ != NULL) {
                  ValaDataType* _tmp535_ = NULL;
                  _tmp535_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
                  _tmp533_ = _tmp535_ != NULL;
            } else {
                  _tmp533_ = FALSE;
            }
            if (_tmp533_) {
                  ValaDataType* _tmp536_ = NULL;
                  ValaExpression* _tmp537_ = NULL;
                  ValaDataType* _tmp538_ = NULL;
                  ValaDataType* _tmp539_ = NULL;
                  ValaDataType* _tmp540_;
                  _tmp536_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
                  _tmp537_ = vala_member_access_get_inner (self);
                  _tmp538_ = vala_expression_get_value_type (_tmp537_);
                  _tmp539_ = vala_data_type_get_actual_type (_tmp536_, _tmp538_, NULL, (ValaCodeNode*) self);
                  _tmp540_ = _tmp539_;
                  vala_expression_set_value_type ((ValaExpression*) self, _tmp540_);
                  _vala_code_node_unref0 (_tmp540_);
            } else {
                  ValaDataType* _tmp541_ = NULL;
                  _tmp541_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
                  vala_expression_set_value_type ((ValaExpression*) self, _tmp541_);
            }
            _tmp542_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
            if (VALA_IS_METHOD (_tmp542_)) {
                  ValaSymbol* _tmp543_ = NULL;
                  ValaMethod* _tmp544_;
                  ValaMethod* m;
                  ValaDataType* _tmp545_ = NULL;
                  ValaMethod* base_method = NULL;
                  ValaMethod* _tmp549_ = NULL;
                  gboolean _tmp556_ = FALSE;
                  _tmp543_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  _tmp544_ = _vala_code_node_ref0 (VALA_METHOD (_tmp543_));
                  m = _tmp544_;
                  _tmp545_ = vala_expression_get_target_type ((ValaExpression*) self);
                  if (_tmp545_ != NULL) {
                        ValaDataType* _tmp546_ = NULL;
                        ValaDataType* _tmp547_ = NULL;
                        gboolean _tmp548_;
                        _tmp546_ = vala_expression_get_value_type ((ValaExpression*) self);
                        _tmp547_ = vala_expression_get_target_type ((ValaExpression*) self);
                        _tmp548_ = vala_data_type_get_value_owned (_tmp547_);
                        vala_data_type_set_value_owned (_tmp546_, _tmp548_);
                  }
                  _tmp549_ = vala_method_get_base_method (m);
                  if (_tmp549_ != NULL) {
                        ValaMethod* _tmp550_ = NULL;
                        ValaMethod* _tmp551_;
                        _tmp550_ = vala_method_get_base_method (m);
                        _tmp551_ = _vala_code_node_ref0 (_tmp550_);
                        _vala_code_node_unref0 (base_method);
                        base_method = _tmp551_;
                  } else {
                        ValaMethod* _tmp552_ = NULL;
                        _tmp552_ = vala_method_get_base_interface_method (m);
                        if (_tmp552_ != NULL) {
                              ValaMethod* _tmp553_ = NULL;
                              ValaMethod* _tmp554_;
                              _tmp553_ = vala_method_get_base_interface_method (m);
                              _tmp554_ = _vala_code_node_ref0 (_tmp553_);
                              _vala_code_node_unref0 (base_method);
                              base_method = _tmp554_;
                        } else {
                              ValaMethod* _tmp555_;
                              _tmp555_ = _vala_code_node_ref0 (m);
                              _vala_code_node_unref0 (base_method);
                              base_method = _tmp555_;
                        }
                  }
                  if (instance) {
                        ValaSymbol* _tmp557_ = NULL;
                        _tmp557_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_method);
                        _tmp556_ = VALA_IS_TYPESYMBOL (_tmp557_);
                  } else {
                        _tmp556_ = FALSE;
                  }
                  if (_tmp556_) {
                        ValaExpression* _tmp558_ = NULL;
                        ValaSemanticAnalyzer* _tmp559_ = NULL;
                        ValaSymbol* _tmp560_ = NULL;
                        ValaDataType* _tmp561_ = NULL;
                        ValaDataType* _tmp562_;
                        _tmp558_ = vala_member_access_get_inner (self);
                        _tmp559_ = vala_code_context_get_analyzer (context);
                        _tmp560_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_method);
                        _tmp561_ = vala_semantic_analyzer_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp560_));
                        _tmp562_ = _tmp561_;
                        vala_expression_set_target_type (_tmp558_, _tmp562_);
                        _vala_code_node_unref0 (_tmp562_);
                  }
                  _vala_code_node_unref0 (base_method);
                  _vala_code_node_unref0 (m);
            } else {
                  ValaSymbol* _tmp563_ = NULL;
                  _tmp563_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                  if (VALA_IS_PROPERTY (_tmp563_)) {
                        ValaSymbol* _tmp564_ = NULL;
                        ValaProperty* _tmp565_;
                        ValaProperty* prop;
                        ValaProperty* base_property = NULL;
                        ValaProperty* _tmp566_ = NULL;
                        gboolean _tmp573_ = FALSE;
                        _tmp564_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        _tmp565_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp564_));
                        prop = _tmp565_;
                        _tmp566_ = vala_property_get_base_property (prop);
                        if (_tmp566_ != NULL) {
                              ValaProperty* _tmp567_ = NULL;
                              ValaProperty* _tmp568_;
                              _tmp567_ = vala_property_get_base_property (prop);
                              _tmp568_ = _vala_code_node_ref0 (_tmp567_);
                              _vala_code_node_unref0 (base_property);
                              base_property = _tmp568_;
                        } else {
                              ValaProperty* _tmp569_ = NULL;
                              _tmp569_ = vala_property_get_base_interface_property (prop);
                              if (_tmp569_ != NULL) {
                                    ValaProperty* _tmp570_ = NULL;
                                    ValaProperty* _tmp571_;
                                    _tmp570_ = vala_property_get_base_interface_property (prop);
                                    _tmp571_ = _vala_code_node_ref0 (_tmp570_);
                                    _vala_code_node_unref0 (base_property);
                                    base_property = _tmp571_;
                              } else {
                                    ValaProperty* _tmp572_;
                                    _tmp572_ = _vala_code_node_ref0 (prop);
                                    _vala_code_node_unref0 (base_property);
                                    base_property = _tmp572_;
                              }
                        }
                        if (instance) {
                              ValaSymbol* _tmp574_ = NULL;
                              _tmp574_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_property);
                              _tmp573_ = _tmp574_ != NULL;
                        } else {
                              _tmp573_ = FALSE;
                        }
                        if (_tmp573_) {
                              ValaExpression* _tmp575_ = NULL;
                              ValaSemanticAnalyzer* _tmp576_ = NULL;
                              ValaSymbol* _tmp577_ = NULL;
                              ValaDataType* _tmp578_ = NULL;
                              ValaDataType* _tmp579_;
                              _tmp575_ = vala_member_access_get_inner (self);
                              _tmp576_ = vala_code_context_get_analyzer (context);
                              _tmp577_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_property);
                              _tmp578_ = vala_semantic_analyzer_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp577_));
                              _tmp579_ = _tmp578_;
                              vala_expression_set_target_type (_tmp575_, _tmp579_);
                              _vala_code_node_unref0 (_tmp579_);
                        }
                        _vala_code_node_unref0 (base_property);
                        _vala_code_node_unref0 (prop);
                  } else {
                        gboolean _tmp580_ = FALSE;
                        gboolean _tmp581_ = FALSE;
                        gboolean _tmp582_ = FALSE;
                        ValaSymbol* _tmp583_ = NULL;
                        _tmp583_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                        if (VALA_IS_FIELD (_tmp583_)) {
                              _tmp582_ = TRUE;
                        } else {
                              ValaSymbol* _tmp584_ = NULL;
                              _tmp584_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                              _tmp582_ = VALA_IS_SIGNAL (_tmp584_);
                        }
                        if (_tmp582_) {
                              _tmp581_ = instance;
                        } else {
                              _tmp581_ = FALSE;
                        }
                        if (_tmp581_) {
                              ValaSymbol* _tmp585_ = NULL;
                              ValaSymbol* _tmp586_ = NULL;
                              _tmp585_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                              _tmp586_ = vala_symbol_get_parent_symbol (_tmp585_);
                              _tmp580_ = _tmp586_ != NULL;
                        } else {
                              _tmp580_ = FALSE;
                        }
                        if (_tmp580_) {
                              ValaExpression* _tmp587_ = NULL;
                              ValaSemanticAnalyzer* _tmp588_ = NULL;
                              ValaSymbol* _tmp589_ = NULL;
                              ValaSymbol* _tmp590_ = NULL;
                              ValaDataType* _tmp591_ = NULL;
                              ValaDataType* _tmp592_;
                              _tmp587_ = vala_member_access_get_inner (self);
                              _tmp588_ = vala_code_context_get_analyzer (context);
                              _tmp589_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                              _tmp590_ = vala_symbol_get_parent_symbol (_tmp589_);
                              _tmp591_ = vala_semantic_analyzer_get_data_type_for_symbol (VALA_TYPESYMBOL (_tmp590_));
                              _tmp592_ = _tmp591_;
                              vala_expression_set_target_type (_tmp587_, _tmp592_);
                              _vala_code_node_unref0 (_tmp592_);
                        }
                  }
            }
      }
      _tmp593_ = vala_code_node_get_error ((ValaCodeNode*) self);
      result = !_tmp593_;
      _vala_code_node_unref0 (member);
      _vala_code_node_unref0 (this_parameter);
      _vala_code_node_unref0 (base_symbol);
      return result;
}


static void vala_member_access_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen) {
      ValaMemberAccess * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (codegen != NULL);
      _tmp0_ = vala_member_access_get_inner (self);
      if (_tmp0_ != NULL) {
            ValaExpression* _tmp1_ = NULL;
            _tmp1_ = vala_member_access_get_inner (self);
            vala_code_node_emit ((ValaCodeNode*) _tmp1_, codegen);
      }
      vala_code_visitor_visit_member_access ((ValaCodeVisitor*) codegen, self);
      vala_code_visitor_visit_expression ((ValaCodeVisitor*) codegen, (ValaExpression*) self);
}


static void vala_member_access_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaMemberAccess * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (collection != NULL);
      _tmp0_ = vala_member_access_get_inner (self);
      if (_tmp0_ != NULL) {
            ValaExpression* _tmp1_ = NULL;
            _tmp1_ = vala_member_access_get_inner (self);
            vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp1_, collection);
      }
}


static void vala_member_access_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaMemberAccess * self;
      ValaExpression* _tmp0_ = NULL;
      ValaSymbol* _tmp2_ = NULL;
      ValaSymbol* _tmp3_;
      ValaLocalVariable* _tmp4_;
      ValaLocalVariable* local;
      self = (ValaMemberAccess*) base;
      g_return_if_fail (collection != NULL);
      _tmp0_ = vala_member_access_get_inner (self);
      if (_tmp0_ != NULL) {
            ValaExpression* _tmp1_ = NULL;
            _tmp1_ = vala_member_access_get_inner (self);
            vala_code_node_get_used_variables ((ValaCodeNode*) _tmp1_, collection);
      }
      _tmp2_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
      _tmp3_ = _tmp2_;
      _tmp4_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp3_) ? ((ValaLocalVariable*) _tmp3_) : NULL);
      local = _tmp4_;
      if (local != NULL) {
            vala_collection_add (collection, local);
      }
      _vala_code_node_unref0 (local);
}


ValaExpression* vala_member_access_get_inner (ValaMemberAccess* self) {
      ValaExpression* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_inner;
      return result;
}


void vala_member_access_set_inner (ValaMemberAccess* self, ValaExpression* value) {
      ValaExpression* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = _vala_code_node_ref0 (value);
      _vala_code_node_unref0 (self->priv->_inner);
      self->priv->_inner = _tmp0_;
      if (self->priv->_inner != NULL) {
            vala_code_node_set_parent_node ((ValaCodeNode*) self->priv->_inner, (ValaCodeNode*) self);
      }
}


const gchar* vala_member_access_get_member_name (ValaMemberAccess* self) {
      const gchar* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_member_name;
      return result;
}


void vala_member_access_set_member_name (ValaMemberAccess* self, const gchar* value) {
      gchar* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = g_strdup (value);
      _g_free0 (self->priv->_member_name);
      self->priv->_member_name = _tmp0_;
}


gboolean vala_member_access_get_pointer_member_access (ValaMemberAccess* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_pointer_member_access;
      return result;
}


void vala_member_access_set_pointer_member_access (ValaMemberAccess* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_pointer_member_access = value;
}


gboolean vala_member_access_get_prototype_access (ValaMemberAccess* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_prototype_access;
      return result;
}


void vala_member_access_set_prototype_access (ValaMemberAccess* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_prototype_access = value;
}


gboolean vala_member_access_get_creation_member (ValaMemberAccess* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_creation_member;
      return result;
}


void vala_member_access_set_creation_member (ValaMemberAccess* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_creation_member = value;
}


gboolean vala_member_access_get_qualified (ValaMemberAccess* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_qualified;
      return result;
}


void vala_member_access_set_qualified (ValaMemberAccess* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_qualified = value;
}


static void vala_member_access_class_init (ValaMemberAccessClass * klass) {
      vala_member_access_parent_class = g_type_class_peek_parent (klass);
      VALA_CODE_NODE_CLASS (klass)->finalize = vala_member_access_finalize;
      g_type_class_add_private (klass, sizeof (ValaMemberAccessPrivate));
      VALA_CODE_NODE_CLASS (klass)->accept = vala_member_access_real_accept;
      VALA_CODE_NODE_CLASS (klass)->accept_children = vala_member_access_real_accept_children;
      VALA_CODE_NODE_CLASS (klass)->to_string = vala_member_access_real_to_string;
      VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_member_access_real_replace_expression;
      VALA_EXPRESSION_CLASS (klass)->is_pure = vala_member_access_real_is_pure;
      VALA_CODE_NODE_CLASS (klass)->replace_type = vala_member_access_real_replace_type;
      VALA_EXPRESSION_CLASS (klass)->is_constant = vala_member_access_real_is_constant;
      VALA_EXPRESSION_CLASS (klass)->is_non_null = vala_member_access_real_is_non_null;
      VALA_CODE_NODE_CLASS (klass)->check = vala_member_access_real_check;
      VALA_CODE_NODE_CLASS (klass)->emit = vala_member_access_real_emit;
      VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_member_access_real_get_defined_variables;
      VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_member_access_real_get_used_variables;
}


static void vala_member_access_instance_init (ValaMemberAccess * self) {
      ValaArrayList* _tmp0_ = NULL;
      self->priv = VALA_MEMBER_ACCESS_GET_PRIVATE (self);
      _tmp0_ = vala_array_list_new (VALA_TYPE_DATA_TYPE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
      self->priv->type_argument_list = (ValaList*) _tmp0_;
}


static void vala_member_access_finalize (ValaCodeNode* obj) {
      ValaMemberAccess * self;
      self = VALA_MEMBER_ACCESS (obj);
      _g_free0 (self->priv->_member_name);
      _vala_code_node_unref0 (self->priv->_inner);
      _vala_iterable_unref0 (self->priv->type_argument_list);
      VALA_CODE_NODE_CLASS (vala_member_access_parent_class)->finalize (obj);
}


/**
 * Represents an access to a type member in the source code.
 */
GType vala_member_access_get_type (void) {
      static volatile gsize vala_member_access_type_id__volatile = 0;
      if (g_once_init_enter (&vala_member_access_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaMemberAccessClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_member_access_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaMemberAccess), 0, (GInstanceInitFunc) vala_member_access_instance_init, NULL };
            GType vala_member_access_type_id;
            vala_member_access_type_id = g_type_register_static (VALA_TYPE_EXPRESSION, "ValaMemberAccess", &g_define_type_info, 0);
            g_once_init_leave (&vala_member_access_type_id__volatile, vala_member_access_type_id);
      }
      return vala_member_access_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index