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

valaassignment.c

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

/* valaassignment.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_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 _ValaAssignmentPrivate ValaAssignmentPrivate;

#define VALA_TYPE_ASSIGNMENT_OPERATOR (vala_assignment_operator_get_type ())
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_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_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_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 _g_free0(var) (var = (g_free (var), NULL))

#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_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_STATEMENT (vala_statement_get_type ())
#define VALA_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STATEMENT, ValaStatement))
#define VALA_IS_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STATEMENT))
#define VALA_STATEMENT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), VALA_TYPE_STATEMENT, ValaStatementIface))

typedef struct _ValaStatement ValaStatement;
typedef struct _ValaStatementIface ValaStatementIface;

#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_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_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_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_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_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_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_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_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_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_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_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_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;

#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;
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_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

#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_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_DELEGATE_TYPE (vala_delegate_type_get_type ())
#define VALA_DELEGATE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELEGATE_TYPE, ValaDelegateType))
#define VALA_DELEGATE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELEGATE_TYPE, ValaDelegateTypeClass))
#define VALA_IS_DELEGATE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DELEGATE_TYPE))
#define VALA_IS_DELEGATE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DELEGATE_TYPE))
#define VALA_DELEGATE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DELEGATE_TYPE, ValaDelegateTypeClass))

typedef struct _ValaDelegateType ValaDelegateType;
typedef struct _ValaDelegateTypeClass ValaDelegateTypeClass;

#define VALA_TYPE_BINARY_OPERATOR (vala_binary_operator_get_type ())

#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_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_MEMBER_BINDING (vala_member_binding_get_type ())

#define VALA_TYPE_ARRAY_TYPE (vala_array_type_get_type ())
#define VALA_ARRAY_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ARRAY_TYPE, ValaArrayType))
#define VALA_ARRAY_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ARRAY_TYPE, ValaArrayTypeClass))
#define VALA_IS_ARRAY_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ARRAY_TYPE))
#define VALA_IS_ARRAY_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ARRAY_TYPE))
#define VALA_ARRAY_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ARRAY_TYPE, ValaArrayTypeClass))

typedef struct _ValaArrayType ValaArrayType;
typedef struct _ValaArrayTypeClass ValaArrayTypeClass;

#define VALA_TYPE_ARRAY_LENGTH_FIELD (vala_array_length_field_get_type ())
#define VALA_ARRAY_LENGTH_FIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ARRAY_LENGTH_FIELD, ValaArrayLengthField))
#define VALA_ARRAY_LENGTH_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ARRAY_LENGTH_FIELD, ValaArrayLengthFieldClass))
#define VALA_IS_ARRAY_LENGTH_FIELD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ARRAY_LENGTH_FIELD))
#define VALA_IS_ARRAY_LENGTH_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ARRAY_LENGTH_FIELD))
#define VALA_ARRAY_LENGTH_FIELD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ARRAY_LENGTH_FIELD, ValaArrayLengthFieldClass))

typedef struct _ValaArrayLengthField ValaArrayLengthField;
typedef struct _ValaArrayLengthFieldClass ValaArrayLengthFieldClass;

#define VALA_TYPE_TARGET_VALUE (vala_target_value_get_type ())
#define VALA_TARGET_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TARGET_VALUE, ValaTargetValue))
#define VALA_TARGET_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TARGET_VALUE, ValaTargetValueClass))
#define VALA_IS_TARGET_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TARGET_VALUE))
#define VALA_IS_TARGET_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TARGET_VALUE))
#define VALA_TARGET_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TARGET_VALUE, ValaTargetValueClass))

typedef struct _ValaTargetValue ValaTargetValue;
typedef struct _ValaTargetValueClass ValaTargetValueClass;
#define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))

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 _ValaAssignment {
      ValaExpression parent_instance;
      ValaAssignmentPrivate * priv;
};

struct _ValaAssignmentClass {
      ValaExpressionClass parent_class;
};

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;

01173 struct _ValaAssignmentPrivate {
      ValaAssignmentOperator _operator;
      ValaExpression* _left;
      ValaExpression* _right;
};

struct _ValaStatementIface {
      GTypeInterface parent_iface;
};

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_BINARY_OPERATOR_NONE,
      VALA_BINARY_OPERATOR_PLUS,
      VALA_BINARY_OPERATOR_MINUS,
      VALA_BINARY_OPERATOR_MUL,
      VALA_BINARY_OPERATOR_DIV,
      VALA_BINARY_OPERATOR_MOD,
      VALA_BINARY_OPERATOR_SHIFT_LEFT,
      VALA_BINARY_OPERATOR_SHIFT_RIGHT,
      VALA_BINARY_OPERATOR_LESS_THAN,
      VALA_BINARY_OPERATOR_GREATER_THAN,
      VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL,
      VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL,
      VALA_BINARY_OPERATOR_EQUALITY,
      VALA_BINARY_OPERATOR_INEQUALITY,
      VALA_BINARY_OPERATOR_BITWISE_AND,
      VALA_BINARY_OPERATOR_BITWISE_OR,
      VALA_BINARY_OPERATOR_BITWISE_XOR,
      VALA_BINARY_OPERATOR_AND,
      VALA_BINARY_OPERATOR_OR,
      VALA_BINARY_OPERATOR_IN,
      VALA_BINARY_OPERATOR_COALESCE
} ValaBinaryOperator;

typedef enum  {
      VALA_MEMBER_BINDING_INSTANCE,
      VALA_MEMBER_BINDING_CLASS,
      VALA_MEMBER_BINDING_STATIC
} ValaMemberBinding;


static gpointer vala_assignment_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_assignment_get_type (void) G_GNUC_CONST;
GType vala_assignment_operator_get_type (void) G_GNUC_CONST;
#define VALA_ASSIGNMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_ASSIGNMENT, ValaAssignmentPrivate))
enum  {
      VALA_ASSIGNMENT_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;
ValaAssignment* vala_assignment_new (ValaExpression* left, ValaExpression* right, ValaAssignmentOperator operator, ValaSourceReference* source_reference);
ValaAssignment* vala_assignment_construct (GType object_type, ValaExpression* left, ValaExpression* right, ValaAssignmentOperator operator, ValaSourceReference* source_reference);
ValaExpression* vala_expression_construct (GType object_type);
void vala_assignment_set_right (ValaAssignment* self, ValaExpression* value);
void vala_assignment_set_operator (ValaAssignment* self, ValaAssignmentOperator value);
void vala_code_node_set_source_reference (ValaCodeNode* self, ValaSourceReference* value);
void vala_assignment_set_left (ValaAssignment* self, ValaExpression* value);
static void vala_assignment_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor);
void vala_code_visitor_visit_assignment (ValaCodeVisitor* self, ValaAssignment* a);
void vala_code_visitor_visit_expression (ValaCodeVisitor* self, ValaExpression* expr);
static void vala_assignment_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor);
ValaExpression* vala_assignment_get_left (ValaAssignment* self);
void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
ValaExpression* vala_assignment_get_right (ValaAssignment* self);
static void vala_assignment_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node);
static gboolean vala_assignment_real_is_pure (ValaExpression* base);
static gboolean vala_assignment_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);
GType vala_tuple_get_type (void) G_GNUC_CONST;
ValaAssignmentOperator vala_assignment_get_operator (ValaAssignment* self);
ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
GType vala_expression_statement_get_type (void) G_GNUC_CONST;
gchar* vala_code_node_get_temp_name (void);
ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
ValaLocalVariable* vala_local_variable_new (ValaDataType* variable_type, const gchar* name, ValaExpression* initializer, ValaSourceReference* source_reference);
ValaLocalVariable* vala_local_variable_construct (GType object_type, ValaDataType* variable_type, const gchar* name, ValaExpression* initializer, ValaSourceReference* source_reference);
ValaDeclarationStatement* vala_declaration_statement_new (ValaSymbol* declaration, ValaSourceReference* source_reference);
ValaDeclarationStatement* vala_declaration_statement_construct (GType object_type, ValaSymbol* declaration, ValaSourceReference* source_reference);
GType vala_declaration_statement_get_type (void) G_GNUC_CONST;
gboolean vala_code_node_check (ValaCodeNode* self, ValaCodeContext* context);
GType vala_block_get_type (void) G_GNUC_CONST;
GType vala_statement_get_type (void) G_GNUC_CONST;
void vala_expression_insert_statement (ValaExpression* self, ValaBlock* block, ValaStatement* stmt);
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_constant_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_subroutine_get_type (void) G_GNUC_CONST;
GType vala_method_get_type (void) G_GNUC_CONST;
GType vala_creation_method_get_type (void) G_GNUC_CONST;
GType vala_parameter_get_type (void) G_GNUC_CONST;
GType vala_property_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_empty_statement_get_type (void) G_GNUC_CONST;
GType vala_initializer_list_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_null_literal_get_type (void) G_GNUC_CONST;
GType vala_member_access_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_value_type_get_type (void) G_GNUC_CONST;
GType vala_struct_value_type_get_type (void) G_GNUC_CONST;
ValaList* vala_tuple_get_expressions (ValaTuple* self);
const gchar* vala_symbol_get_name (ValaSymbol* self);
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);
ValaElementAccess* vala_element_access_new (ValaExpression* container, ValaSourceReference* source_reference);
ValaElementAccess* vala_element_access_construct (GType object_type, ValaExpression* container, ValaSourceReference* source_reference);
void vala_element_access_append_index (ValaElementAccess* self, ValaExpression* index);
ValaIntegerLiteral* vala_integer_literal_new (const gchar* i, ValaSourceReference* source);
ValaIntegerLiteral* vala_integer_literal_construct (GType object_type, const gchar* i, ValaSourceReference* source);
ValaExpressionStatement* vala_expression_statement_new (ValaExpression* expression, ValaSourceReference* source_reference);
ValaExpressionStatement* vala_expression_statement_construct (GType object_type, ValaExpression* expression, ValaSourceReference* source_reference);
void vala_code_node_replace_expression (ValaCodeNode* self, ValaExpression* old_node, ValaExpression* new_node);
ValaExpression* vala_expression_statement_get_expression (ValaExpressionStatement* self);
void vala_expression_set_lvalue (ValaExpression* self, gboolean value);
void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
GType vala_dynamic_property_get_type (void) G_GNUC_CONST;
ValaDataType* vala_expression_get_value_type (ValaExpression* self);
ValaExpression* vala_member_access_get_inner (ValaMemberAccess* self);
const gchar* vala_member_access_get_member_name (ValaMemberAccess* self);
gboolean vala_semantic_analyzer_is_in_instance_method (ValaSemanticAnalyzer* self);
void vala_report_error (ValaSourceReference* source, const gchar* message);
gboolean vala_member_access_get_prototype_access (ValaMemberAccess* self);
gchar* vala_symbol_get_full_name (ValaSymbol* self);
GType vala_dynamic_signal_get_type (void) G_GNUC_CONST;
gboolean vala_code_context_get_deprecated (ValaCodeContext* self);
void vala_report_warning (ValaSourceReference* source, const gchar* message);
ValaDelegate* vala_signal_get_delegate (ValaSignal* self, ValaDataType* sender_type, ValaCodeNode* node_reference);
ValaDelegateType* vala_delegate_type_new (ValaDelegate* delegate_symbol);
ValaDelegateType* vala_delegate_type_construct (GType object_type, ValaDelegate* delegate_symbol);
GType vala_delegate_type_get_type (void) G_GNUC_CONST;
void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
ValaDataType* vala_expression_get_formal_value_type (ValaExpression* self);
void vala_expression_set_formal_target_type (ValaExpression* self, ValaDataType* value);
ValaExpression* vala_element_access_get_container (ValaElementAccess* self);
ValaTypeSymbol* vala_data_type_get_data_type (ValaDataType* self);
ValaSymbol* vala_data_type_get_member (ValaDataType* self, const gchar* member_name);
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);
ValaMethodCall* vala_method_call_new (ValaExpression* call, ValaSourceReference* source_reference);
ValaMethodCall* vala_method_call_construct (GType object_type, ValaExpression* call, ValaSourceReference* source_reference);
ValaList* vala_element_access_get_indices (ValaElementAccess* self);
void vala_method_call_add_argument (ValaMethodCall* self, ValaExpression* arg);
GType vala_binary_operator_get_type (void) G_GNUC_CONST;
ValaBinaryExpression* vala_binary_expression_new (ValaBinaryOperator op, ValaExpression* _left, ValaExpression* _right, ValaSourceReference* source);
ValaBinaryExpression* vala_binary_expression_construct (GType object_type, ValaBinaryOperator op, ValaExpression* _left, ValaExpression* _right, ValaSourceReference* source);
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);
void vala_binary_expression_set_operator (ValaBinaryExpression* self, ValaBinaryOperator value);
ValaExpression* vala_dynamic_signal_get_handler (ValaDynamicSignal* self);
ValaList* vala_data_type_get_parameters (ValaDataType* self);
void vala_signal_add_parameter (ValaSignal* self, ValaParameter* param);
ValaParameter* vala_parameter_copy (ValaParameter* self);
ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
ValaObjectType* vala_object_type_new (ValaObjectTypeSymbol* type_symbol);
ValaObjectType* vala_object_type_construct (GType object_type, ValaObjectTypeSymbol* type_symbol);
GType vala_reference_type_get_type (void) G_GNUC_CONST;
GType vala_object_type_get_type (void) G_GNUC_CONST;
gboolean vala_data_type_compatible (ValaDataType* self, ValaDataType* target_type);
gchar* vala_code_node_to_string (ValaCodeNode* self);
ValaDelegate* vala_delegate_type_get_delegate_symbol (ValaDelegateType* self);
gchar* vala_delegate_get_prototype_string (ValaDelegate* self, const gchar* name);
void vala_property_set_property_type (ValaProperty* self, ValaDataType* value);
ValaDataType* vala_property_get_property_type (ValaProperty* self);
void vala_expression_set_value_type (ValaExpression* self, ValaDataType* value);
ValaPropertyAccessor* vala_property_get_set_accessor (ValaProperty* self);
gboolean vala_property_accessor_get_writable (ValaPropertyAccessor* self);
ValaMethod* vala_semantic_analyzer_find_current_method (ValaSemanticAnalyzer* self);
gboolean vala_semantic_analyzer_is_in_constructor (ValaSemanticAnalyzer* self);
ValaParameter* vala_method_get_this_parameter (ValaMethod* self);
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
gboolean vala_delegate_matches_method (ValaDelegate* self, ValaMethod* m, ValaDataType* dt);
gboolean vala_data_type_is_disposable (ValaDataType* self);
GType vala_pointer_type_get_type (void) G_GNUC_CONST;
gboolean vala_data_type_get_value_owned (ValaDataType* self);
GType vala_member_binding_get_type (void) G_GNUC_CONST;
ValaMemberBinding vala_field_get_binding (ValaField* self);
GType vala_array_type_get_type (void) G_GNUC_CONST;
ValaDataType* vala_array_type_get_element_type (ValaArrayType* self);
ValaList* vala_data_type_get_type_arguments (ValaDataType* self);
void vala_code_node_add_error_types (ValaCodeNode* self, ValaList* error_types);
ValaList* vala_code_node_get_error_types (ValaCodeNode* self);
static gboolean vala_assignment_is_array_add (ValaAssignment* self);
ValaExpression* vala_binary_expression_get_left (ValaBinaryExpression* self);
ValaBinaryOperator vala_binary_expression_get_operator (ValaBinaryExpression* self);
static void vala_assignment_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
ValaMemberBinding vala_property_get_binding (ValaProperty* self);
GType vala_array_length_field_get_type (void) G_GNUC_CONST;
void vala_code_node_emit (ValaCodeNode* self, ValaCodeGenerator* codegen);
gpointer vala_target_value_ref (gpointer instance);
void vala_target_value_unref (gpointer instance);
GParamSpec* vala_param_spec_target_value (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_target_value (GValue* value, gpointer v_object);
void vala_value_take_target_value (GValue* value, gpointer v_object);
gpointer vala_value_get_target_value (const GValue* value);
GType vala_target_value_get_type (void) G_GNUC_CONST;
ValaTargetValue* vala_expression_get_target_value (ValaExpression* self);
void vala_code_generator_store_local (ValaCodeGenerator* self, ValaLocalVariable* local, ValaTargetValue* value, gboolean initializer);
void vala_code_generator_store_parameter (ValaCodeGenerator* self, ValaParameter* param, ValaTargetValue* value);
void vala_code_generator_store_field (ValaCodeGenerator* self, ValaField* field, ValaTargetValue* instance, ValaTargetValue* value);
ValaTargetValue* vala_code_generator_load_local (ValaCodeGenerator* self, ValaLocalVariable* local);
void vala_expression_set_target_value (ValaExpression* self, ValaTargetValue* value);
ValaTargetValue* vala_code_generator_load_parameter (ValaCodeGenerator* self, ValaParameter* param);
ValaTargetValue* vala_code_generator_load_field (ValaCodeGenerator* self, ValaField* field, ValaTargetValue* instance);
static void vala_assignment_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection);
void vala_code_node_get_defined_variables (ValaCodeNode* self, ValaCollection* collection);
static void vala_assignment_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection);
void vala_code_node_get_used_variables (ValaCodeNode* self, ValaCollection* collection);
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
static void vala_assignment_finalize (ValaCodeNode* obj);


/**
 * Creates a new assignment.
 *
 * @param left             left hand side
 * @param operator         assignment operator
 * @param right            right hand side
 * @param source_reference reference to source code
 * @return                 newly created assignment
 */
ValaAssignment* vala_assignment_construct (GType object_type, ValaExpression* left, ValaExpression* right, ValaAssignmentOperator operator, ValaSourceReference* source_reference) {
      ValaAssignment* self = NULL;
      g_return_val_if_fail (left != NULL, NULL);
      g_return_val_if_fail (right != NULL, NULL);
      self = (ValaAssignment*) vala_expression_construct (object_type);
      vala_assignment_set_right (self, right);
      vala_assignment_set_operator (self, operator);
      vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
      vala_assignment_set_left (self, left);
      return self;
}


ValaAssignment* vala_assignment_new (ValaExpression* left, ValaExpression* right, ValaAssignmentOperator operator, ValaSourceReference* source_reference) {
      return vala_assignment_construct (VALA_TYPE_ASSIGNMENT, left, right, operator, source_reference);
}


static void vala_assignment_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaAssignment * self;
      self = (ValaAssignment*) base;
      g_return_if_fail (visitor != NULL);
      vala_code_visitor_visit_assignment (visitor, self);
      vala_code_visitor_visit_expression (visitor, (ValaExpression*) self);
}


static void vala_assignment_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaAssignment * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_ = NULL;
      self = (ValaAssignment*) base;
      g_return_if_fail (visitor != NULL);
      _tmp0_ = vala_assignment_get_left (self);
      vala_code_node_accept ((ValaCodeNode*) _tmp0_, visitor);
      _tmp1_ = vala_assignment_get_right (self);
      vala_code_node_accept ((ValaCodeNode*) _tmp1_, visitor);
}


static void vala_assignment_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node) {
      ValaAssignment * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_ = NULL;
      self = (ValaAssignment*) base;
      g_return_if_fail (old_node != NULL);
      g_return_if_fail (new_node != NULL);
      _tmp0_ = vala_assignment_get_left (self);
      if (_tmp0_ == old_node) {
            vala_assignment_set_left (self, new_node);
      }
      _tmp1_ = vala_assignment_get_right (self);
      if (_tmp1_ == old_node) {
            vala_assignment_set_right (self, new_node);
      }
}


static gboolean vala_assignment_real_is_pure (ValaExpression* base) {
      ValaAssignment * self;
      gboolean result = FALSE;
      self = (ValaAssignment*) base;
      result = FALSE;
      return result;
}


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


static gboolean vala_assignment_real_check (ValaCodeNode* base, ValaCodeContext* context) {
      ValaAssignment * self;
      gboolean result = FALSE;
      gboolean _tmp0_;
      gboolean _tmp2_ = FALSE;
      gboolean _tmp3_ = FALSE;
      ValaExpression* _tmp4_ = NULL;
      ValaExpression* _tmp42_ = NULL;
      ValaExpression* _tmp43_ = NULL;
      gboolean _tmp44_;
      ValaExpression* _tmp45_ = NULL;
      ValaExpression* _tmp141_ = NULL;
      gboolean _tmp142_;
      gboolean _tmp143_ = FALSE;
      ValaExpression* _tmp164_ = NULL;
      ValaSymbol* _tmp165_ = NULL;
      ValaExpression* _tmp415_ = NULL;
      ValaDataType* _tmp416_ = NULL;
      ValaExpression* _tmp422_ = NULL;
      ValaList* _tmp423_ = NULL;
      ValaList* _tmp424_;
      ValaExpression* _tmp425_ = NULL;
      ValaList* _tmp426_ = NULL;
      ValaList* _tmp427_;
      gboolean _tmp428_;
      self = (ValaAssignment*) 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);
      _tmp4_ = vala_assignment_get_left (self);
      if (VALA_IS_TUPLE (_tmp4_)) {
            _tmp3_ = self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_SIMPLE;
      } else {
            _tmp3_ = FALSE;
      }
      if (_tmp3_) {
            ValaCodeNode* _tmp5_ = NULL;
            _tmp5_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
            _tmp2_ = VALA_IS_EXPRESSION_STATEMENT (_tmp5_);
      } else {
            _tmp2_ = FALSE;
      }
      if (_tmp2_) {
            ValaExpression* _tmp6_ = NULL;
            ValaTuple* _tmp7_;
            ValaTuple* tuple;
            gchar* _tmp8_ = NULL;
            gchar* _tmp9_;
            ValaExpression* _tmp10_ = NULL;
            ValaExpression* _tmp11_ = NULL;
            ValaSourceReference* _tmp12_ = NULL;
            ValaLocalVariable* _tmp13_ = NULL;
            ValaLocalVariable* _tmp14_;
            ValaLocalVariable* local;
            ValaSourceReference* _tmp15_ = NULL;
            ValaDeclarationStatement* _tmp16_ = NULL;
            ValaDeclarationStatement* decl;
            ValaSemanticAnalyzer* _tmp17_ = NULL;
            gint i;
            ValaExpressionStatement* stmt;
            ValaSemanticAnalyzer* _tmp37_ = NULL;
            ValaCodeNode* _tmp38_ = NULL;
            ValaExpression* _tmp39_ = NULL;
            ValaExpression* _tmp40_ = NULL;
            gboolean _tmp41_;
            _tmp6_ = vala_assignment_get_left (self);
            _tmp7_ = _vala_code_node_ref0 (VALA_TUPLE (_tmp6_));
            tuple = _tmp7_;
            _tmp8_ = vala_code_node_get_temp_name ();
            _tmp9_ = _tmp8_;
            _tmp10_ = vala_assignment_get_right (self);
            _tmp11_ = vala_assignment_get_right (self);
            _tmp12_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp11_);
            _tmp13_ = vala_local_variable_new (NULL, _tmp9_, _tmp10_, _tmp12_);
            _tmp14_ = _tmp13_;
            _g_free0 (_tmp9_);
            local = _tmp14_;
            _tmp15_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp16_ = vala_declaration_statement_new ((ValaSymbol*) local, _tmp15_);
            decl = _tmp16_;
            vala_code_node_check ((ValaCodeNode*) decl, context);
            _tmp17_ = vala_code_context_get_analyzer (context);
            vala_expression_insert_statement ((ValaExpression*) self, _tmp17_->insert_block, (ValaStatement*) decl);
            i = 0;
            stmt = NULL;
            {
                  ValaList* _tmp18_ = NULL;
                  ValaList* _expr_list;
                  gint _tmp19_;
                  gint _expr_size;
                  gint _expr_index;
                  _tmp18_ = vala_tuple_get_expressions (tuple);
                  _expr_list = _tmp18_;
                  _tmp19_ = vala_collection_get_size ((ValaCollection*) _expr_list);
                  _expr_size = _tmp19_;
                  _expr_index = -1;
                  while (TRUE) {
                        gpointer _tmp20_ = NULL;
                        ValaExpression* expr;
                        const gchar* _tmp22_ = NULL;
                        ValaExpression* _tmp23_ = NULL;
                        ValaSourceReference* _tmp24_ = NULL;
                        ValaMemberAccess* _tmp25_ = NULL;
                        ValaMemberAccess* temp_access;
                        ValaSourceReference* _tmp26_ = NULL;
                        ValaElementAccess* _tmp27_ = NULL;
                        ValaElementAccess* ea;
                        gchar* _tmp28_ = NULL;
                        gchar* _tmp29_;
                        ValaSourceReference* _tmp30_ = NULL;
                        ValaIntegerLiteral* _tmp31_ = NULL;
                        ValaIntegerLiteral* _tmp32_;
                        ValaSourceReference* _tmp33_ = NULL;
                        ValaAssignment* _tmp34_ = NULL;
                        ValaAssignment* assign;
                        ValaSourceReference* _tmp35_ = NULL;
                        ValaExpressionStatement* _tmp36_ = NULL;
                        _expr_index = _expr_index + 1;
                        if (!(_expr_index < _expr_size)) {
                              break;
                        }
                        _tmp20_ = vala_list_get (_expr_list, _expr_index);
                        expr = (ValaExpression*) _tmp20_;
                        if (stmt != NULL) {
                              ValaSemanticAnalyzer* _tmp21_ = NULL;
                              vala_code_node_check ((ValaCodeNode*) stmt, context);
                              _tmp21_ = vala_code_context_get_analyzer (context);
                              vala_expression_insert_statement ((ValaExpression*) self, _tmp21_->insert_block, (ValaStatement*) stmt);
                        }
                        _tmp22_ = vala_symbol_get_name ((ValaSymbol*) local);
                        _tmp23_ = vala_assignment_get_right (self);
                        _tmp24_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp23_);
                        _tmp25_ = vala_member_access_new_simple (_tmp22_, _tmp24_);
                        temp_access = _tmp25_;
                        _tmp26_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                        _tmp27_ = vala_element_access_new ((ValaExpression*) temp_access, _tmp26_);
                        ea = _tmp27_;
                        _tmp28_ = g_strdup_printf ("%i", i);
                        _tmp29_ = _tmp28_;
                        _tmp30_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                        _tmp31_ = vala_integer_literal_new (_tmp29_, _tmp30_);
                        _tmp32_ = _tmp31_;
                        vala_element_access_append_index (ea, (ValaExpression*) _tmp32_);
                        _vala_code_node_unref0 (_tmp32_);
                        _g_free0 (_tmp29_);
                        _tmp33_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                        _tmp34_ = vala_assignment_new (expr, (ValaExpression*) ea, self->priv->_operator, _tmp33_);
                        assign = _tmp34_;
                        _tmp35_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
                        _tmp36_ = vala_expression_statement_new ((ValaExpression*) assign, _tmp35_);
                        _vala_code_node_unref0 (stmt);
                        stmt = _tmp36_;
                        i++;
                        _vala_code_node_unref0 (assign);
                        _vala_code_node_unref0 (ea);
                        _vala_code_node_unref0 (temp_access);
                        _vala_code_node_unref0 (expr);
                  }
                  _vala_iterable_unref0 (_expr_list);
            }
            _tmp37_ = vala_code_context_get_analyzer (context);
            vala_collection_add ((ValaCollection*) _tmp37_->replaced_nodes, (ValaCodeNode*) self);
            _tmp38_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
            _tmp39_ = vala_expression_statement_get_expression (stmt);
            vala_code_node_replace_expression (_tmp38_, (ValaExpression*) self, _tmp39_);
            _tmp40_ = vala_expression_statement_get_expression (stmt);
            _tmp41_ = vala_code_node_check ((ValaCodeNode*) _tmp40_, context);
            result = _tmp41_;
            _vala_code_node_unref0 (stmt);
            _vala_code_node_unref0 (decl);
            _vala_code_node_unref0 (local);
            _vala_code_node_unref0 (tuple);
            return result;
      }
      _tmp42_ = vala_assignment_get_left (self);
      vala_expression_set_lvalue (_tmp42_, TRUE);
      _tmp43_ = vala_assignment_get_left (self);
      _tmp44_ = vala_code_node_check ((ValaCodeNode*) _tmp43_, context);
      if (!_tmp44_) {
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            result = FALSE;
            return result;
      }
      _tmp45_ = vala_assignment_get_left (self);
      if (VALA_IS_MEMBER_ACCESS (_tmp45_)) {
            ValaExpression* _tmp46_ = NULL;
            ValaMemberAccess* _tmp47_;
            ValaMemberAccess* ma;
            gboolean _tmp48_ = FALSE;
            gboolean _tmp49_ = FALSE;
            gboolean _tmp50_ = FALSE;
            ValaSymbol* _tmp51_ = NULL;
            gboolean _tmp61_;
            gboolean _tmp68_ = FALSE;
            gboolean _tmp69_;
            ValaSymbol* _tmp71_ = NULL;
            _tmp46_ = vala_assignment_get_left (self);
            _tmp47_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp46_));
            ma = _tmp47_;
            _tmp51_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            if (VALA_IS_SIGNAL (_tmp51_)) {
                  _tmp50_ = TRUE;
            } else {
                  ValaSymbol* _tmp52_ = NULL;
                  _tmp52_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  _tmp50_ = VALA_IS_DYNAMIC_PROPERTY (_tmp52_);
            }
            if (!_tmp50_) {
                  ValaDataType* _tmp53_ = NULL;
                  _tmp53_ = vala_expression_get_value_type ((ValaExpression*) ma);
                  _tmp49_ = _tmp53_ == NULL;
            } else {
                  _tmp49_ = FALSE;
            }
            if (_tmp49_) {
                  _tmp48_ = TRUE;
            } else {
                  gboolean _tmp54_ = FALSE;
                  gboolean _tmp55_ = FALSE;
                  ValaExpression* _tmp56_ = NULL;
                  _tmp56_ = vala_member_access_get_inner (ma);
                  if (_tmp56_ == NULL) {
                        const gchar* _tmp57_ = NULL;
                        _tmp57_ = vala_member_access_get_member_name (ma);
                        _tmp55_ = g_strcmp0 (_tmp57_, "this") == 0;
                  } else {
                        _tmp55_ = FALSE;
                  }
                  if (_tmp55_) {
                        ValaSemanticAnalyzer* _tmp58_ = NULL;
                        gboolean _tmp59_;
                        _tmp58_ = vala_code_context_get_analyzer (context);
                        _tmp59_ = vala_semantic_analyzer_is_in_instance_method (_tmp58_);
                        _tmp54_ = _tmp59_;
                  } else {
                        _tmp54_ = FALSE;
                  }
                  _tmp48_ = _tmp54_;
            }
            if (_tmp48_) {
                  ValaSourceReference* _tmp60_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp60_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp60_, "unsupported lvalue in assignment");
                  result = FALSE;
                  _vala_code_node_unref0 (ma);
                  return result;
            }
            _tmp61_ = vala_member_access_get_prototype_access (ma);
            if (_tmp61_) {
                  ValaSourceReference* _tmp62_ = NULL;
                  ValaSymbol* _tmp63_ = NULL;
                  gchar* _tmp64_ = NULL;
                  gchar* _tmp65_;
                  gchar* _tmp66_ = NULL;
                  gchar* _tmp67_;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp62_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp63_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  _tmp64_ = vala_symbol_get_full_name (_tmp63_);
                  _tmp65_ = _tmp64_;
                  _tmp66_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp65_);
                  _tmp67_ = _tmp66_;
                  vala_report_error (_tmp62_, _tmp67_);
                  _g_free0 (_tmp67_);
                  _g_free0 (_tmp65_);
                  result = FALSE;
                  _vala_code_node_unref0 (ma);
                  return result;
            }
            _tmp69_ = vala_code_node_get_error ((ValaCodeNode*) ma);
            if (_tmp69_) {
                  _tmp68_ = TRUE;
            } else {
                  ValaSymbol* _tmp70_ = NULL;
                  _tmp70_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  _tmp68_ = _tmp70_ == NULL;
            }
            if (_tmp68_) {
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  result = FALSE;
                  _vala_code_node_unref0 (ma);
                  return result;
            }
            _tmp71_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            if (VALA_IS_DYNAMIC_SIGNAL (_tmp71_)) {
                  gboolean _tmp72_;
                  _tmp72_ = vala_code_context_get_deprecated (context);
                  if (!_tmp72_) {
                        ValaSourceReference* _tmp73_ = NULL;
                        _tmp73_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_warning (_tmp73_, "deprecated syntax, use `connect' method instead");
                  }
            } else {
                  ValaSymbol* _tmp74_ = NULL;
                  _tmp74_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  if (VALA_IS_SIGNAL (_tmp74_)) {
                        gboolean _tmp75_;
                        ValaSymbol* _tmp77_ = NULL;
                        ValaSignal* _tmp78_;
                        ValaSignal* sig;
                        ValaExpression* _tmp79_ = NULL;
                        ValaExpression* _tmp80_ = NULL;
                        ValaDataType* _tmp81_ = NULL;
                        ValaDelegate* _tmp82_ = NULL;
                        ValaDelegate* _tmp83_;
                        ValaDelegateType* _tmp84_ = NULL;
                        ValaDelegateType* _tmp85_;
                        _tmp75_ = vala_code_context_get_deprecated (context);
                        if (!_tmp75_) {
                              ValaSourceReference* _tmp76_ = NULL;
                              _tmp76_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_warning (_tmp76_, "deprecated syntax, use `connect' method instead");
                        }
                        _tmp77_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        _tmp78_ = _vala_code_node_ref0 (VALA_SIGNAL (_tmp77_));
                        sig = _tmp78_;
                        _tmp79_ = vala_assignment_get_right (self);
                        _tmp80_ = vala_member_access_get_inner (ma);
                        _tmp81_ = vala_expression_get_value_type (_tmp80_);
                        _tmp82_ = vala_signal_get_delegate (sig, _tmp81_, (ValaCodeNode*) self);
                        _tmp83_ = _tmp82_;
                        _tmp84_ = vala_delegate_type_new (_tmp83_);
                        _tmp85_ = _tmp84_;
                        vala_expression_set_target_type (_tmp79_, (ValaDataType*) _tmp85_);
                        _vala_code_node_unref0 (_tmp85_);
                        _vala_code_node_unref0 (_tmp83_);
                        _vala_code_node_unref0 (sig);
                  } else {
                        ValaExpression* _tmp86_ = NULL;
                        ValaDataType* _tmp87_ = NULL;
                        ValaExpression* _tmp88_ = NULL;
                        ValaDataType* _tmp89_ = NULL;
                        _tmp86_ = vala_assignment_get_right (self);
                        _tmp87_ = vala_expression_get_formal_value_type ((ValaExpression*) ma);
                        vala_expression_set_formal_target_type (_tmp86_, _tmp87_);
                        _tmp88_ = vala_assignment_get_right (self);
                        _tmp89_ = vala_expression_get_value_type ((ValaExpression*) ma);
                        vala_expression_set_target_type (_tmp88_, _tmp89_);
                  }
            }
            _vala_code_node_unref0 (ma);
      } else {
            ValaExpression* _tmp90_ = NULL;
            _tmp90_ = vala_assignment_get_left (self);
            if (VALA_IS_ELEMENT_ACCESS (_tmp90_)) {
                  ValaExpression* _tmp91_ = NULL;
                  ValaElementAccess* _tmp92_;
                  ValaElementAccess* ea;
                  ValaExpression* _tmp93_ = NULL;
                  ValaDataType* _tmp94_ = NULL;
                  ValaTypeSymbol* _tmp95_ = NULL;
                  ValaSemanticAnalyzer* _tmp96_ = NULL;
                  ValaTypeSymbol* _tmp97_ = NULL;
                  _tmp91_ = vala_assignment_get_left (self);
                  _tmp92_ = _vala_code_node_ref0 (VALA_ELEMENT_ACCESS (_tmp91_));
                  ea = _tmp92_;
                  _tmp93_ = vala_element_access_get_container (ea);
                  _tmp94_ = vala_expression_get_value_type (_tmp93_);
                  _tmp95_ = vala_data_type_get_data_type (_tmp94_);
                  _tmp96_ = vala_code_context_get_analyzer (context);
                  _tmp97_ = vala_data_type_get_data_type (_tmp96_->string_type);
                  if (_tmp95_ == _tmp97_) {
                        ValaSourceReference* _tmp98_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp98_ = vala_code_node_get_source_reference ((ValaCodeNode*) ea);
                        vala_report_error (_tmp98_, "strings are immutable");
                        result = FALSE;
                        _vala_code_node_unref0 (ea);
                        return result;
                  } else {
                        gboolean _tmp99_ = FALSE;
                        ValaExpression* _tmp100_ = NULL;
                        _tmp100_ = vala_element_access_get_container (ea);
                        if (VALA_IS_MEMBER_ACCESS (_tmp100_)) {
                              ValaExpression* _tmp101_ = NULL;
                              ValaSymbol* _tmp102_ = NULL;
                              _tmp101_ = vala_element_access_get_container (ea);
                              _tmp102_ = vala_expression_get_symbol_reference (_tmp101_);
                              _tmp99_ = VALA_IS_SIGNAL (_tmp102_);
                        } else {
                              _tmp99_ = FALSE;
                        }
                        if (_tmp99_) {
                              ValaExpression* _tmp103_ = NULL;
                              ValaMemberAccess* _tmp104_;
                              ValaMemberAccess* ma;
                              ValaExpression* _tmp105_ = NULL;
                              ValaSymbol* _tmp106_ = NULL;
                              ValaSignal* _tmp107_;
                              ValaSignal* sig;
                              ValaExpression* _tmp108_ = NULL;
                              ValaExpression* _tmp109_ = NULL;
                              ValaDataType* _tmp110_ = NULL;
                              ValaDelegate* _tmp111_ = NULL;
                              ValaDelegate* _tmp112_;
                              ValaDelegateType* _tmp113_ = NULL;
                              ValaDelegateType* _tmp114_;
                              _tmp103_ = vala_element_access_get_container (ea);
                              _tmp104_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp103_));
                              ma = _tmp104_;
                              _tmp105_ = vala_element_access_get_container (ea);
                              _tmp106_ = vala_expression_get_symbol_reference (_tmp105_);
                              _tmp107_ = _vala_code_node_ref0 (VALA_SIGNAL (_tmp106_));
                              sig = _tmp107_;
                              _tmp108_ = vala_assignment_get_right (self);
                              _tmp109_ = vala_member_access_get_inner (ma);
                              _tmp110_ = vala_expression_get_value_type (_tmp109_);
                              _tmp111_ = vala_signal_get_delegate (sig, _tmp110_, (ValaCodeNode*) self);
                              _tmp112_ = _tmp111_;
                              _tmp113_ = vala_delegate_type_new (_tmp112_);
                              _tmp114_ = _tmp113_;
                              vala_expression_set_target_type (_tmp108_, (ValaDataType*) _tmp114_);
                              _vala_code_node_unref0 (_tmp114_);
                              _vala_code_node_unref0 (_tmp112_);
                              _vala_code_node_unref0 (sig);
                              _vala_code_node_unref0 (ma);
                        } else {
                              ValaExpression* _tmp115_ = NULL;
                              ValaDataType* _tmp116_ = NULL;
                              ValaSymbol* _tmp117_ = NULL;
                              ValaSymbol* _tmp118_;
                              gboolean _tmp119_;
                              _tmp115_ = vala_element_access_get_container (ea);
                              _tmp116_ = vala_expression_get_value_type (_tmp115_);
                              _tmp117_ = vala_data_type_get_member (_tmp116_, "set");
                              _tmp118_ = _tmp117_;
                              _tmp119_ = VALA_IS_METHOD (_tmp118_);
                              _vala_code_node_unref0 (_tmp118_);
                              if (_tmp119_) {
                                    ValaExpression* _tmp120_ = NULL;
                                    ValaSourceReference* _tmp121_ = NULL;
                                    ValaMemberAccess* _tmp122_ = NULL;
                                    ValaMemberAccess* _tmp123_;
                                    ValaSourceReference* _tmp124_ = NULL;
                                    ValaMethodCall* _tmp125_ = NULL;
                                    ValaMethodCall* _tmp126_;
                                    ValaMethodCall* set_call;
                                    ValaExpression* _tmp130_ = NULL;
                                    ValaCodeNode* _tmp131_ = NULL;
                                    gboolean _tmp132_;
                                    _tmp120_ = vala_element_access_get_container (ea);
                                    _tmp121_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    _tmp122_ = vala_member_access_new (_tmp120_, "set", _tmp121_);
                                    _tmp123_ = _tmp122_;
                                    _tmp124_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    _tmp125_ = vala_method_call_new ((ValaExpression*) _tmp123_, _tmp124_);
                                    _tmp126_ = _tmp125_;
                                    _vala_code_node_unref0 (_tmp123_);
                                    set_call = _tmp126_;
                                    {
                                          ValaList* _tmp127_ = NULL;
                                          ValaList* _e_list;
                                          gint _tmp128_;
                                          gint _e_size;
                                          gint _e_index;
                                          _tmp127_ = vala_element_access_get_indices (ea);
                                          _e_list = _tmp127_;
                                          _tmp128_ = vala_collection_get_size ((ValaCollection*) _e_list);
                                          _e_size = _tmp128_;
                                          _e_index = -1;
                                          while (TRUE) {
                                                gpointer _tmp129_ = NULL;
                                                ValaExpression* e;
                                                _e_index = _e_index + 1;
                                                if (!(_e_index < _e_size)) {
                                                      break;
                                                }
                                                _tmp129_ = vala_list_get (_e_list, _e_index);
                                                e = (ValaExpression*) _tmp129_;
                                                vala_method_call_add_argument (set_call, e);
                                                _vala_code_node_unref0 (e);
                                          }
                                          _vala_iterable_unref0 (_e_list);
                                    }
                                    _tmp130_ = vala_assignment_get_right (self);
                                    vala_method_call_add_argument (set_call, _tmp130_);
                                    _tmp131_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                    vala_code_node_replace_expression (_tmp131_, (ValaExpression*) self, (ValaExpression*) set_call);
                                    _tmp132_ = vala_code_node_check ((ValaCodeNode*) set_call, context);
                                    result = _tmp132_;
                                    _vala_code_node_unref0 (set_call);
                                    _vala_code_node_unref0 (ea);
                                    return result;
                              } else {
                                    ValaExpression* _tmp133_ = NULL;
                                    ValaExpression* _tmp134_ = NULL;
                                    ValaDataType* _tmp135_ = NULL;
                                    _tmp133_ = vala_assignment_get_right (self);
                                    _tmp134_ = vala_assignment_get_left (self);
                                    _tmp135_ = vala_expression_get_value_type (_tmp134_);
                                    vala_expression_set_target_type (_tmp133_, _tmp135_);
                              }
                        }
                  }
                  _vala_code_node_unref0 (ea);
            } else {
                  ValaExpression* _tmp136_ = NULL;
                  _tmp136_ = vala_assignment_get_left (self);
                  if (VALA_IS_POINTER_INDIRECTION (_tmp136_)) {
                        ValaExpression* _tmp137_ = NULL;
                        ValaExpression* _tmp138_ = NULL;
                        ValaDataType* _tmp139_ = NULL;
                        _tmp137_ = vala_assignment_get_right (self);
                        _tmp138_ = vala_assignment_get_left (self);
                        _tmp139_ = vala_expression_get_value_type (_tmp138_);
                        vala_expression_set_target_type (_tmp137_, _tmp139_);
                  } else {
                        ValaSourceReference* _tmp140_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp140_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp140_, "unsupported lvalue in assignment");
                        result = FALSE;
                        return result;
                  }
            }
      }
      _tmp141_ = vala_assignment_get_right (self);
      _tmp142_ = vala_code_node_check ((ValaCodeNode*) _tmp141_, context);
      if (!_tmp142_) {
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            result = FALSE;
            return result;
      }
      if (self->priv->_operator != VALA_ASSIGNMENT_OPERATOR_SIMPLE) {
            ValaExpression* _tmp144_ = NULL;
            _tmp144_ = vala_assignment_get_left (self);
            _tmp143_ = VALA_IS_MEMBER_ACCESS (_tmp144_);
      } else {
            _tmp143_ = FALSE;
      }
      if (_tmp143_) {
            ValaExpression* _tmp145_ = NULL;
            ValaMemberAccess* _tmp146_;
            ValaMemberAccess* ma;
            ValaSymbol* _tmp147_ = NULL;
            _tmp145_ = vala_assignment_get_left (self);
            _tmp146_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp145_));
            ma = _tmp146_;
            _tmp147_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            if (!VALA_IS_SIGNAL (_tmp147_)) {
                  ValaExpression* _tmp148_ = NULL;
                  const gchar* _tmp149_ = NULL;
                  ValaMemberAccess* _tmp150_ = NULL;
                  ValaMemberAccess* old_value;
                  ValaExpression* _tmp151_ = NULL;
                  ValaSourceReference* _tmp152_ = NULL;
                  ValaBinaryExpression* _tmp153_ = NULL;
                  ValaBinaryExpression* bin;
                  ValaExpression* _tmp154_ = NULL;
                  ValaDataType* _tmp155_ = NULL;
                  ValaExpression* _tmp156_ = NULL;
                  ValaExpression* _tmp157_ = NULL;
                  ValaDataType* _tmp158_ = NULL;
                  ValaDataType* _tmp159_ = NULL;
                  ValaDataType* _tmp160_;
                  ValaExpression* _tmp161_ = NULL;
                  ValaDataType* _tmp162_ = NULL;
                  ValaExpression* _tmp163_ = NULL;
                  _tmp148_ = vala_member_access_get_inner (ma);
                  _tmp149_ = vala_member_access_get_member_name (ma);
                  _tmp150_ = vala_member_access_new (_tmp148_, _tmp149_, NULL);
                  old_value = _tmp150_;
                  _tmp151_ = vala_assignment_get_right (self);
                  _tmp152_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp153_ = vala_binary_expression_new (VALA_BINARY_OPERATOR_PLUS, (ValaExpression*) old_value, _tmp151_, _tmp152_);
                  bin = _tmp153_;
                  _tmp154_ = vala_assignment_get_right (self);
                  _tmp155_ = vala_expression_get_target_type (_tmp154_);
                  vala_expression_set_target_type ((ValaExpression*) bin, _tmp155_);
                  _tmp156_ = vala_assignment_get_right (self);
                  _tmp157_ = vala_assignment_get_right (self);
                  _tmp158_ = vala_expression_get_target_type (_tmp157_);
                  _tmp159_ = vala_data_type_copy (_tmp158_);
                  _tmp160_ = _tmp159_;
                  vala_expression_set_target_type (_tmp156_, _tmp160_);
                  _vala_code_node_unref0 (_tmp160_);
                  _tmp161_ = vala_assignment_get_right (self);
                  _tmp162_ = vala_expression_get_target_type (_tmp161_);
                  vala_data_type_set_value_owned (_tmp162_, FALSE);
                  if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_BITWISE_OR) {
                        vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_BITWISE_OR);
                  } else {
                        if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_BITWISE_AND) {
                              vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_BITWISE_AND);
                        } else {
                              if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_BITWISE_XOR) {
                                    vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_BITWISE_XOR);
                              } else {
                                    if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_ADD) {
                                          vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_PLUS);
                                    } else {
                                          if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_SUB) {
                                                vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_MINUS);
                                          } else {
                                                if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_MUL) {
                                                      vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_MUL);
                                                } else {
                                                      if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_DIV) {
                                                            vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_DIV);
                                                      } else {
                                                            if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_PERCENT) {
                                                                  vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_MOD);
                                                            } else {
                                                                  if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_SHIFT_LEFT) {
                                                                        vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_SHIFT_LEFT);
                                                                  } else {
                                                                        if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_SHIFT_RIGHT) {
                                                                              vala_binary_expression_set_operator (bin, VALA_BINARY_OPERATOR_SHIFT_RIGHT);
                                                                        }
                                                                  }
                                                            }
                                                      }
                                                }
                                          }
                                    }
                              }
                        }
                  }
                  vala_assignment_set_right (self, (ValaExpression*) bin);
                  _tmp163_ = vala_assignment_get_right (self);
                  vala_code_node_check ((ValaCodeNode*) _tmp163_, context);
                  vala_assignment_set_operator (self, VALA_ASSIGNMENT_OPERATOR_SIMPLE);
                  _vala_code_node_unref0 (bin);
                  _vala_code_node_unref0 (old_value);
            }
            _vala_code_node_unref0 (ma);
      }
      _tmp164_ = vala_assignment_get_left (self);
      _tmp165_ = vala_expression_get_symbol_reference (_tmp164_);
      if (VALA_IS_SIGNAL (_tmp165_)) {
            ValaExpression* _tmp166_ = NULL;
            ValaSymbol* _tmp167_ = NULL;
            ValaSignal* _tmp168_;
            ValaSignal* sig;
            ValaExpression* _tmp169_ = NULL;
            ValaSymbol* _tmp170_ = NULL;
            ValaSymbol* _tmp171_;
            ValaMethod* _tmp172_;
            ValaMethod* m;
            ValaSignal* _tmp175_;
            ValaDynamicSignal* _tmp176_;
            ValaDynamicSignal* dynamic_sig;
            ValaExpression* _tmp177_ = NULL;
            ValaExpression* _tmp178_;
            ValaMemberAccess* _tmp179_;
            ValaMemberAccess* right_ma;
            _tmp166_ = vala_assignment_get_left (self);
            _tmp167_ = vala_expression_get_symbol_reference (_tmp166_);
            _tmp168_ = _vala_code_node_ref0 (VALA_SIGNAL (_tmp167_));
            sig = _tmp168_;
            _tmp169_ = vala_assignment_get_right (self);
            _tmp170_ = vala_expression_get_symbol_reference (_tmp169_);
            _tmp171_ = _tmp170_;
            _tmp172_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp171_) ? ((ValaMethod*) _tmp171_) : NULL);
            m = _tmp172_;
            if (m == NULL) {
                  ValaExpression* _tmp173_ = NULL;
                  ValaSourceReference* _tmp174_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp173_ = vala_assignment_get_right (self);
                  _tmp174_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp173_);
                  vala_report_error (_tmp174_, "unsupported expression for signal handler");
                  result = FALSE;
                  _vala_code_node_unref0 (m);
                  _vala_code_node_unref0 (sig);
                  return result;
            }
            _tmp175_ = sig;
            _tmp176_ = _vala_code_node_ref0 (VALA_IS_DYNAMIC_SIGNAL (_tmp175_) ? ((ValaDynamicSignal*) _tmp175_) : NULL);
            dynamic_sig = _tmp176_;
            _tmp177_ = vala_assignment_get_right (self);
            _tmp178_ = _tmp177_;
            _tmp179_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp178_) ? ((ValaMemberAccess*) _tmp178_) : NULL);
            right_ma = _tmp179_;
            if (dynamic_sig != NULL) {
                  gboolean first;
                  ValaExpression* _tmp187_ = NULL;
                  ValaSymbol* _tmp188_ = NULL;
                  ValaObjectType* _tmp189_ = NULL;
                  ValaObjectType* _tmp190_;
                  ValaDelegate* _tmp191_ = NULL;
                  ValaDelegate* _tmp192_;
                  ValaDelegateType* _tmp193_ = NULL;
                  ValaDelegateType* _tmp194_;
                  first = TRUE;
                  {
                        ValaExpression* _tmp180_ = NULL;
                        ValaDataType* _tmp181_ = NULL;
                        ValaList* _tmp182_ = NULL;
                        ValaList* _param_list;
                        gint _tmp183_;
                        gint _param_size;
                        gint _param_index;
                        _tmp180_ = vala_dynamic_signal_get_handler (dynamic_sig);
                        _tmp181_ = vala_expression_get_value_type (_tmp180_);
                        _tmp182_ = vala_data_type_get_parameters (_tmp181_);
                        _param_list = _tmp182_;
                        _tmp183_ = vala_collection_get_size ((ValaCollection*) _param_list);
                        _param_size = _tmp183_;
                        _param_index = -1;
                        while (TRUE) {
                              gpointer _tmp184_ = NULL;
                              ValaParameter* param;
                              _param_index = _param_index + 1;
                              if (!(_param_index < _param_size)) {
                                    break;
                              }
                              _tmp184_ = vala_list_get (_param_list, _param_index);
                              param = (ValaParameter*) _tmp184_;
                              if (first) {
                                    first = FALSE;
                              } else {
                                    ValaParameter* _tmp185_ = NULL;
                                    ValaParameter* _tmp186_;
                                    _tmp185_ = vala_parameter_copy (param);
                                    _tmp186_ = _tmp185_;
                                    vala_signal_add_parameter ((ValaSignal*) dynamic_sig, _tmp186_);
                                    _vala_code_node_unref0 (_tmp186_);
                              }
                              _vala_code_node_unref0 (param);
                        }
                        _vala_iterable_unref0 (_param_list);
                  }
                  _tmp187_ = vala_assignment_get_right (self);
                  _tmp188_ = vala_symbol_get_parent_symbol ((ValaSymbol*) sig);
                  _tmp189_ = vala_object_type_new (VALA_OBJECT_TYPE_SYMBOL (_tmp188_));
                  _tmp190_ = _tmp189_;
                  _tmp191_ = vala_signal_get_delegate (sig, (ValaDataType*) _tmp190_, (ValaCodeNode*) self);
                  _tmp192_ = _tmp191_;
                  _tmp193_ = vala_delegate_type_new (_tmp192_);
                  _tmp194_ = _tmp193_;
                  vala_expression_set_target_type (_tmp187_, (ValaDataType*) _tmp194_);
                  _vala_code_node_unref0 (_tmp194_);
                  _vala_code_node_unref0 (_tmp192_);
                  _vala_code_node_unref0 (_tmp190_);
            } else {
                  ValaExpression* _tmp195_ = NULL;
                  ValaDataType* _tmp196_ = NULL;
                  ValaExpression* _tmp197_ = NULL;
                  ValaDataType* _tmp198_ = NULL;
                  gboolean _tmp199_;
                  _tmp195_ = vala_assignment_get_right (self);
                  _tmp196_ = vala_expression_get_value_type (_tmp195_);
                  _tmp197_ = vala_assignment_get_right (self);
                  _tmp198_ = vala_expression_get_target_type (_tmp197_);
                  _tmp199_ = vala_data_type_compatible (_tmp196_, _tmp198_);
                  if (!_tmp199_) {
                        ValaExpression* _tmp200_ = NULL;
                        ValaDataType* _tmp201_ = NULL;
                        ValaDelegateType* _tmp202_;
                        ValaDelegateType* delegate_type;
                        ValaExpression* _tmp203_ = NULL;
                        ValaSourceReference* _tmp204_ = NULL;
                        ValaExpression* _tmp205_ = NULL;
                        ValaDataType* _tmp206_ = NULL;
                        gchar* _tmp207_ = NULL;
                        gchar* _tmp208_;
                        ValaExpression* _tmp209_ = NULL;
                        ValaDataType* _tmp210_ = NULL;
                        gchar* _tmp211_ = NULL;
                        gchar* _tmp212_;
                        ValaDelegate* _tmp213_ = NULL;
                        const gchar* _tmp214_ = NULL;
                        gchar* _tmp215_ = NULL;
                        gchar* _tmp216_;
                        gchar* _tmp217_ = NULL;
                        gchar* _tmp218_;
                        _tmp200_ = vala_assignment_get_right (self);
                        _tmp201_ = vala_expression_get_target_type (_tmp200_);
                        _tmp202_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp201_));
                        delegate_type = _tmp202_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp203_ = vala_assignment_get_right (self);
                        _tmp204_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp203_);
                        _tmp205_ = vala_assignment_get_right (self);
                        _tmp206_ = vala_expression_get_value_type (_tmp205_);
                        _tmp207_ = vala_code_node_to_string ((ValaCodeNode*) _tmp206_);
                        _tmp208_ = _tmp207_;
                        _tmp209_ = vala_assignment_get_right (self);
                        _tmp210_ = vala_expression_get_target_type (_tmp209_);
                        _tmp211_ = vala_code_node_to_string ((ValaCodeNode*) _tmp210_);
                        _tmp212_ = _tmp211_;
                        _tmp213_ = vala_delegate_type_get_delegate_symbol (delegate_type);
                        _tmp214_ = vala_symbol_get_name ((ValaSymbol*) m);
                        _tmp215_ = vala_delegate_get_prototype_string (_tmp213_, _tmp214_);
                        _tmp216_ = _tmp215_;
                        _tmp217_ = g_strdup_printf ("method `%s' is incompatible with signal `%s', expected `%s'", _tmp208_, _tmp212_, _tmp216_);
                        _tmp218_ = _tmp217_;
                        vala_report_error (_tmp204_, _tmp218_);
                        _g_free0 (_tmp218_);
                        _g_free0 (_tmp216_);
                        _g_free0 (_tmp212_);
                        _g_free0 (_tmp208_);
                        result = FALSE;
                        _vala_code_node_unref0 (delegate_type);
                        _vala_code_node_unref0 (right_ma);
                        _vala_code_node_unref0 (dynamic_sig);
                        _vala_code_node_unref0 (m);
                        _vala_code_node_unref0 (sig);
                        return result;
                  } else {
                        gboolean _tmp219_ = FALSE;
                        if (right_ma != NULL) {
                              gboolean _tmp220_;
                              _tmp220_ = vala_member_access_get_prototype_access (right_ma);
                              _tmp219_ = _tmp220_;
                        } else {
                              _tmp219_ = FALSE;
                        }
                        if (_tmp219_) {
                              ValaExpression* _tmp221_ = NULL;
                              ValaSourceReference* _tmp222_ = NULL;
                              gchar* _tmp223_ = NULL;
                              gchar* _tmp224_;
                              gchar* _tmp225_ = NULL;
                              gchar* _tmp226_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp221_ = vala_assignment_get_right (self);
                              _tmp222_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp221_);
                              _tmp223_ = vala_symbol_get_full_name ((ValaSymbol*) m);
                              _tmp224_ = _tmp223_;
                              _tmp225_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp224_);
                              _tmp226_ = _tmp225_;
                              vala_report_error (_tmp222_, _tmp226_);
                              _g_free0 (_tmp226_);
                              _g_free0 (_tmp224_);
                              result = FALSE;
                              _vala_code_node_unref0 (right_ma);
                              _vala_code_node_unref0 (dynamic_sig);
                              _vala_code_node_unref0 (m);
                              _vala_code_node_unref0 (sig);
                              return result;
                        }
                  }
            }
            _vala_code_node_unref0 (right_ma);
            _vala_code_node_unref0 (dynamic_sig);
            _vala_code_node_unref0 (m);
            _vala_code_node_unref0 (sig);
      } else {
            ValaExpression* _tmp227_ = NULL;
            _tmp227_ = vala_assignment_get_left (self);
            if (VALA_IS_MEMBER_ACCESS (_tmp227_)) {
                  ValaExpression* _tmp228_ = NULL;
                  ValaMemberAccess* _tmp229_;
                  ValaMemberAccess* ma;
                  ValaSymbol* _tmp230_ = NULL;
                  gboolean _tmp309_ = FALSE;
                  ValaExpression* _tmp310_ = NULL;
                  ValaDataType* _tmp311_ = NULL;
                  ValaExpression* _tmp344_ = NULL;
                  ValaExpression* _tmp345_;
                  ValaMemberAccess* _tmp346_;
                  ValaMemberAccess* right_ma;
                  gboolean _tmp347_ = FALSE;
                  _tmp228_ = vala_assignment_get_left (self);
                  _tmp229_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp228_));
                  ma = _tmp229_;
                  _tmp230_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  if (VALA_IS_PROPERTY (_tmp230_)) {
                        ValaSymbol* _tmp231_ = NULL;
                        ValaProperty* _tmp232_;
                        ValaProperty* prop;
                        ValaProperty* _tmp233_;
                        ValaDynamicProperty* _tmp234_;
                        ValaDynamicProperty* dynamic_prop;
                        gboolean _tmp243_ = FALSE;
                        ValaPropertyAccessor* _tmp244_ = NULL;
                        _tmp231_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        _tmp232_ = _vala_code_node_ref0 (VALA_PROPERTY (_tmp231_));
                        prop = _tmp232_;
                        _tmp233_ = prop;
                        _tmp234_ = _vala_code_node_ref0 (VALA_IS_DYNAMIC_PROPERTY (_tmp233_) ? ((ValaDynamicProperty*) _tmp233_) : NULL);
                        dynamic_prop = _tmp234_;
                        if (dynamic_prop != NULL) {
                              ValaExpression* _tmp235_ = NULL;
                              ValaDataType* _tmp236_ = NULL;
                              ValaDataType* _tmp237_ = NULL;
                              ValaDataType* _tmp238_;
                              ValaExpression* _tmp239_ = NULL;
                              ValaDataType* _tmp240_ = NULL;
                              ValaDataType* _tmp241_ = NULL;
                              ValaDataType* _tmp242_;
                              _tmp235_ = vala_assignment_get_right (self);
                              _tmp236_ = vala_expression_get_value_type (_tmp235_);
                              _tmp237_ = vala_data_type_copy (_tmp236_);
                              _tmp238_ = _tmp237_;
                              vala_property_set_property_type ((ValaProperty*) dynamic_prop, _tmp238_);
                              _vala_code_node_unref0 (_tmp238_);
                              _tmp239_ = vala_assignment_get_left (self);
                              _tmp240_ = vala_property_get_property_type ((ValaProperty*) dynamic_prop);
                              _tmp241_ = vala_data_type_copy (_tmp240_);
                              _tmp242_ = _tmp241_;
                              vala_expression_set_value_type (_tmp239_, _tmp242_);
                              _vala_code_node_unref0 (_tmp242_);
                        }
                        _tmp244_ = vala_property_get_set_accessor (prop);
                        if (_tmp244_ == NULL) {
                              _tmp243_ = TRUE;
                        } else {
                              gboolean _tmp245_ = FALSE;
                              ValaPropertyAccessor* _tmp246_ = NULL;
                              gboolean _tmp247_;
                              _tmp246_ = vala_property_get_set_accessor (prop);
                              _tmp247_ = vala_property_accessor_get_writable (_tmp246_);
                              if (!_tmp247_) {
                                    gboolean _tmp248_ = FALSE;
                                    ValaSemanticAnalyzer* _tmp249_ = NULL;
                                    ValaMethod* _tmp250_ = NULL;
                                    ValaMethod* _tmp251_;
                                    gboolean _tmp252_;
                                    _tmp249_ = vala_code_context_get_analyzer (context);
                                    _tmp250_ = vala_semantic_analyzer_find_current_method (_tmp249_);
                                    _tmp251_ = _tmp250_;
                                    _tmp252_ = VALA_IS_CREATION_METHOD (_tmp251_);
                                    _vala_code_node_unref0 (_tmp251_);
                                    if (_tmp252_) {
                                          _tmp248_ = TRUE;
                                    } else {
                                          ValaSemanticAnalyzer* _tmp253_ = NULL;
                                          gboolean _tmp254_;
                                          _tmp253_ = vala_code_context_get_analyzer (context);
                                          _tmp254_ = vala_semantic_analyzer_is_in_constructor (_tmp253_);
                                          _tmp248_ = _tmp254_;
                                    }
                                    _tmp245_ = !_tmp248_;
                              } else {
                                    _tmp245_ = FALSE;
                              }
                              _tmp243_ = _tmp245_;
                        }
                        if (_tmp243_) {
                              ValaSourceReference* _tmp255_ = NULL;
                              gchar* _tmp256_ = NULL;
                              gchar* _tmp257_;
                              gchar* _tmp258_ = NULL;
                              gchar* _tmp259_;
                              vala_code_node_set_error ((ValaCodeNode*) ma, TRUE);
                              _tmp255_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                              _tmp256_ = vala_symbol_get_full_name ((ValaSymbol*) prop);
                              _tmp257_ = _tmp256_;
                              _tmp258_ = g_strdup_printf ("Property `%s' is read-only", _tmp257_);
                              _tmp259_ = _tmp258_;
                              vala_report_error (_tmp255_, _tmp259_);
                              _g_free0 (_tmp259_);
                              _g_free0 (_tmp257_);
                              result = FALSE;
                              _vala_code_node_unref0 (dynamic_prop);
                              _vala_code_node_unref0 (prop);
                              _vala_code_node_unref0 (ma);
                              return result;
                        } else {
                              gboolean _tmp260_ = FALSE;
                              gboolean _tmp261_ = FALSE;
                              gboolean _tmp262_;
                              _tmp262_ = vala_code_context_get_deprecated (context);
                              if (!_tmp262_) {
                                    ValaPropertyAccessor* _tmp263_ = NULL;
                                    gboolean _tmp264_;
                                    _tmp263_ = vala_property_get_set_accessor (prop);
                                    _tmp264_ = vala_property_accessor_get_writable (_tmp263_);
                                    _tmp261_ = !_tmp264_;
                              } else {
                                    _tmp261_ = FALSE;
                              }
                              if (_tmp261_) {
                                    ValaSemanticAnalyzer* _tmp265_ = NULL;
                                    ValaMethod* _tmp266_ = NULL;
                                    ValaMethod* _tmp267_;
                                    _tmp265_ = vala_code_context_get_analyzer (context);
                                    _tmp266_ = vala_semantic_analyzer_find_current_method (_tmp265_);
                                    _tmp267_ = _tmp266_;
                                    _tmp260_ = VALA_IS_CREATION_METHOD (_tmp267_);
                                    _vala_code_node_unref0 (_tmp267_);
                              } else {
                                    _tmp260_ = FALSE;
                              }
                              if (_tmp260_) {
                                    ValaExpression* _tmp268_ = NULL;
                                    ValaSymbol* _tmp269_ = NULL;
                                    ValaSemanticAnalyzer* _tmp270_ = NULL;
                                    ValaMethod* _tmp271_ = NULL;
                                    ValaMethod* _tmp272_;
                                    ValaParameter* _tmp273_ = NULL;
                                    gboolean _tmp274_;
                                    _tmp268_ = vala_member_access_get_inner (ma);
                                    _tmp269_ = vala_expression_get_symbol_reference (_tmp268_);
                                    _tmp270_ = vala_code_context_get_analyzer (context);
                                    _tmp271_ = vala_semantic_analyzer_find_current_method (_tmp270_);
                                    _tmp272_ = _tmp271_;
                                    _tmp273_ = vala_method_get_this_parameter (_tmp272_);
                                    _tmp274_ = _tmp269_ != VALA_SYMBOL (_tmp273_);
                                    _vala_code_node_unref0 (_tmp272_);
                                    if (_tmp274_) {
                                          ValaSourceReference* _tmp275_ = NULL;
                                          gchar* _tmp276_ = NULL;
                                          gchar* _tmp277_;
                                          gchar* _tmp278_ = NULL;
                                          gchar* _tmp279_;
                                          _tmp275_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                                          _tmp276_ = vala_symbol_get_full_name ((ValaSymbol*) prop);
                                          _tmp277_ = _tmp276_;
                                          _tmp278_ = g_strdup_printf ("Property `%s' is read-only", _tmp277_);
                                          _tmp279_ = _tmp278_;
                                          vala_report_error (_tmp275_, _tmp279_);
                                          _g_free0 (_tmp279_);
                                          _g_free0 (_tmp277_);
                                          result = FALSE;
                                          _vala_code_node_unref0 (dynamic_prop);
                                          _vala_code_node_unref0 (prop);
                                          _vala_code_node_unref0 (ma);
                                          return result;
                                    } else {
                                          ValaSourceReference* _tmp280_ = NULL;
                                          _tmp280_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                                          vala_report_error (_tmp280_, "Cannot assign to construct-only properties, use Object (property: valu" \
"e) constructor chain up");
                                          result = FALSE;
                                          _vala_code_node_unref0 (dynamic_prop);
                                          _vala_code_node_unref0 (prop);
                                          _vala_code_node_unref0 (ma);
                                          return result;
                                    }
                              }
                        }
                        _vala_code_node_unref0 (dynamic_prop);
                        _vala_code_node_unref0 (prop);
                  } else {
                        gboolean _tmp281_ = FALSE;
                        ValaSymbol* _tmp282_ = NULL;
                        _tmp282_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        if (VALA_IS_VARIABLE (_tmp282_)) {
                              ValaExpression* _tmp283_ = NULL;
                              ValaDataType* _tmp284_ = NULL;
                              _tmp283_ = vala_assignment_get_right (self);
                              _tmp284_ = vala_expression_get_value_type (_tmp283_);
                              _tmp281_ = _tmp284_ == NULL;
                        } else {
                              _tmp281_ = FALSE;
                        }
                        if (_tmp281_) {
                              ValaSymbol* _tmp285_ = NULL;
                              ValaVariable* _tmp286_;
                              ValaVariable* variable;
                              gboolean _tmp287_ = FALSE;
                              ValaExpression* _tmp288_ = NULL;
                              ValaSymbol* _tmp289_ = NULL;
                              _tmp285_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                              _tmp286_ = _vala_code_node_ref0 (VALA_VARIABLE (_tmp285_));
                              variable = _tmp286_;
                              _tmp288_ = vala_assignment_get_right (self);
                              _tmp289_ = vala_expression_get_symbol_reference (_tmp288_);
                              if (VALA_IS_METHOD (_tmp289_)) {
                                    ValaDataType* _tmp290_ = NULL;
                                    _tmp290_ = vala_variable_get_variable_type (variable);
                                    _tmp287_ = VALA_IS_DELEGATE_TYPE (_tmp290_);
                              } else {
                                    _tmp287_ = FALSE;
                              }
                              if (_tmp287_) {
                                    ValaExpression* _tmp291_ = NULL;
                                    ValaSymbol* _tmp292_ = NULL;
                                    ValaMethod* _tmp293_;
                                    ValaMethod* m;
                                    ValaDataType* _tmp294_ = NULL;
                                    ValaDelegateType* _tmp295_;
                                    ValaDelegateType* dt;
                                    ValaDelegate* _tmp296_ = NULL;
                                    ValaDelegate* _tmp297_;
                                    ValaDelegate* cb;
                                    gboolean _tmp298_;
                                    ValaExpression* _tmp306_ = NULL;
                                    ValaDataType* _tmp307_ = NULL;
                                    _tmp291_ = vala_assignment_get_right (self);
                                    _tmp292_ = vala_expression_get_symbol_reference (_tmp291_);
                                    _tmp293_ = _vala_code_node_ref0 (VALA_METHOD (_tmp292_));
                                    m = _tmp293_;
                                    _tmp294_ = vala_variable_get_variable_type (variable);
                                    _tmp295_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp294_));
                                    dt = _tmp295_;
                                    _tmp296_ = vala_delegate_type_get_delegate_symbol (dt);
                                    _tmp297_ = _vala_code_node_ref0 (_tmp296_);
                                    cb = _tmp297_;
                                    _tmp298_ = vala_delegate_matches_method (cb, m, (ValaDataType*) dt);
                                    if (!_tmp298_) {
                                          ValaSourceReference* _tmp299_ = NULL;
                                          gchar* _tmp300_ = NULL;
                                          gchar* _tmp301_;
                                          gchar* _tmp302_ = NULL;
                                          gchar* _tmp303_;
                                          gchar* _tmp304_ = NULL;
                                          gchar* _tmp305_;
                                          vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                          _tmp299_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                          _tmp300_ = vala_symbol_get_full_name ((ValaSymbol*) m);
                                          _tmp301_ = _tmp300_;
                                          _tmp302_ = vala_symbol_get_full_name ((ValaSymbol*) cb);
                                          _tmp303_ = _tmp302_;
                                          _tmp304_ = g_strdup_printf ("declaration of method `%s' doesn't match declaration of callback `%s'", _tmp301_, _tmp303_);
                                          _tmp305_ = _tmp304_;
                                          vala_report_error (_tmp299_, _tmp305_);
                                          _g_free0 (_tmp305_);
                                          _g_free0 (_tmp303_);
                                          _g_free0 (_tmp301_);
                                          result = FALSE;
                                          _vala_code_node_unref0 (cb);
                                          _vala_code_node_unref0 (dt);
                                          _vala_code_node_unref0 (m);
                                          _vala_code_node_unref0 (variable);
                                          _vala_code_node_unref0 (ma);
                                          return result;
                                    }
                                    _tmp306_ = vala_assignment_get_right (self);
                                    _tmp307_ = vala_variable_get_variable_type (variable);
                                    vala_expression_set_value_type (_tmp306_, _tmp307_);
                                    _vala_code_node_unref0 (cb);
                                    _vala_code_node_unref0 (dt);
                                    _vala_code_node_unref0 (m);
                              } else {
                                    ValaSourceReference* _tmp308_ = NULL;
                                    vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                    _tmp308_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    vala_report_error (_tmp308_, "Assignment: Invalid assignment attempt");
                                    result = FALSE;
                                    _vala_code_node_unref0 (variable);
                                    _vala_code_node_unref0 (ma);
                                    return result;
                              }
                              _vala_code_node_unref0 (variable);
                        }
                  }
                  _tmp310_ = vala_assignment_get_left (self);
                  _tmp311_ = vala_expression_get_value_type (_tmp310_);
                  if (_tmp311_ != NULL) {
                        ValaExpression* _tmp312_ = NULL;
                        ValaDataType* _tmp313_ = NULL;
                        _tmp312_ = vala_assignment_get_right (self);
                        _tmp313_ = vala_expression_get_value_type (_tmp312_);
                        _tmp309_ = _tmp313_ != NULL;
                  } else {
                        _tmp309_ = FALSE;
                  }
                  if (_tmp309_) {
                        ValaExpression* _tmp314_ = NULL;
                        ValaDataType* _tmp315_ = NULL;
                        ValaExpression* _tmp316_ = NULL;
                        ValaDataType* _tmp317_ = NULL;
                        gboolean _tmp318_;
                        ValaSymbol* _tmp330_ = NULL;
                        _tmp314_ = vala_assignment_get_right (self);
                        _tmp315_ = vala_expression_get_value_type (_tmp314_);
                        _tmp316_ = vala_assignment_get_left (self);
                        _tmp317_ = vala_expression_get_value_type (_tmp316_);
                        _tmp318_ = vala_data_type_compatible (_tmp315_, _tmp317_);
                        if (!_tmp318_) {
                              ValaSourceReference* _tmp319_ = NULL;
                              ValaExpression* _tmp320_ = NULL;
                              ValaDataType* _tmp321_ = NULL;
                              gchar* _tmp322_ = NULL;
                              gchar* _tmp323_;
                              ValaExpression* _tmp324_ = NULL;
                              ValaDataType* _tmp325_ = NULL;
                              gchar* _tmp326_ = NULL;
                              gchar* _tmp327_;
                              gchar* _tmp328_ = NULL;
                              gchar* _tmp329_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp319_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp320_ = vala_assignment_get_right (self);
                              _tmp321_ = vala_expression_get_value_type (_tmp320_);
                              _tmp322_ = vala_code_node_to_string ((ValaCodeNode*) _tmp321_);
                              _tmp323_ = _tmp322_;
                              _tmp324_ = vala_assignment_get_left (self);
                              _tmp325_ = vala_expression_get_value_type (_tmp324_);
                              _tmp326_ = vala_code_node_to_string ((ValaCodeNode*) _tmp325_);
                              _tmp327_ = _tmp326_;
                              _tmp328_ = g_strdup_printf ("Assignment: Cannot convert from `%s' to `%s'", _tmp323_, _tmp327_);
                              _tmp329_ = _tmp328_;
                              vala_report_error (_tmp319_, _tmp329_);
                              _g_free0 (_tmp329_);
                              _g_free0 (_tmp327_);
                              _g_free0 (_tmp323_);
                              result = FALSE;
                              _vala_code_node_unref0 (ma);
                              return result;
                        }
                        _tmp330_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        if (!VALA_IS_PROPERTY (_tmp330_)) {
                              ValaExpression* _tmp331_ = NULL;
                              ValaDataType* _tmp332_ = NULL;
                              gboolean _tmp333_;
                              _tmp331_ = vala_assignment_get_right (self);
                              _tmp332_ = vala_expression_get_value_type (_tmp331_);
                              _tmp333_ = vala_data_type_is_disposable (_tmp332_);
                              if (_tmp333_) {
                                    gboolean _tmp334_ = FALSE;
                                    ValaExpression* _tmp335_ = NULL;
                                    ValaDataType* _tmp336_ = NULL;
                                    _tmp335_ = vala_assignment_get_left (self);
                                    _tmp336_ = vala_expression_get_value_type (_tmp335_);
                                    if (!VALA_IS_POINTER_TYPE (_tmp336_)) {
                                          ValaExpression* _tmp337_ = NULL;
                                          ValaDataType* _tmp338_ = NULL;
                                          gboolean _tmp339_;
                                          _tmp337_ = vala_assignment_get_left (self);
                                          _tmp338_ = vala_expression_get_value_type (_tmp337_);
                                          _tmp339_ = vala_data_type_get_value_owned (_tmp338_);
                                          _tmp334_ = !_tmp339_;
                                    } else {
                                          _tmp334_ = FALSE;
                                    }
                                    if (_tmp334_) {
                                          ValaSourceReference* _tmp340_ = NULL;
                                          vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                          _tmp340_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                          vala_report_error (_tmp340_, "Invalid assignment from owned expression to unowned variable");
                                    }
                              } else {
                                    ValaExpression* _tmp341_ = NULL;
                                    ValaDataType* _tmp342_ = NULL;
                                    gboolean _tmp343_;
                                    _tmp341_ = vala_assignment_get_left (self);
                                    _tmp342_ = vala_expression_get_value_type (_tmp341_);
                                    _tmp343_ = vala_data_type_get_value_owned (_tmp342_);
                                    if (_tmp343_) {
                                    }
                              }
                        }
                  }
                  _tmp344_ = vala_assignment_get_right (self);
                  _tmp345_ = _tmp344_;
                  _tmp346_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp345_) ? ((ValaMemberAccess*) _tmp345_) : NULL);
                  right_ma = _tmp346_;
                  if (right_ma != NULL) {
                        ValaSymbol* _tmp348_ = NULL;
                        ValaSymbol* _tmp349_ = NULL;
                        _tmp348_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        _tmp349_ = vala_expression_get_symbol_reference ((ValaExpression*) right_ma);
                        _tmp347_ = _tmp348_ == _tmp349_;
                  } else {
                        _tmp347_ = FALSE;
                  }
                  if (_tmp347_) {
                        gboolean _tmp350_ = FALSE;
                        ValaSymbol* _tmp351_ = NULL;
                        _tmp351_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        if (VALA_IS_LOCAL_VARIABLE (_tmp351_)) {
                              _tmp350_ = TRUE;
                        } else {
                              ValaSymbol* _tmp352_ = NULL;
                              _tmp352_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                              _tmp350_ = VALA_IS_PARAMETER (_tmp352_);
                        }
                        if (_tmp350_) {
                              ValaSourceReference* _tmp353_ = NULL;
                              _tmp353_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_warning (_tmp353_, "Assignment to same variable");
                        } else {
                              ValaSymbol* _tmp354_ = NULL;
                              _tmp354_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                              if (VALA_IS_FIELD (_tmp354_)) {
                                    ValaSymbol* _tmp355_ = NULL;
                                    ValaField* _tmp356_;
                                    ValaField* f;
                                    ValaMemberBinding _tmp357_;
                                    _tmp355_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                                    _tmp356_ = _vala_code_node_ref0 (VALA_FIELD (_tmp355_));
                                    f = _tmp356_;
                                    _tmp357_ = vala_field_get_binding (f);
                                    if (_tmp357_ == VALA_MEMBER_BINDING_STATIC) {
                                          ValaSourceReference* _tmp358_ = NULL;
                                          _tmp358_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                          vala_report_warning (_tmp358_, "Assignment to same variable");
                                    } else {
                                          ValaExpression* _tmp359_ = NULL;
                                          ValaExpression* _tmp360_;
                                          ValaMemberAccess* _tmp361_;
                                          ValaMemberAccess* ma_inner;
                                          ValaExpression* _tmp362_ = NULL;
                                          ValaExpression* _tmp363_;
                                          ValaMemberAccess* _tmp364_;
                                          ValaMemberAccess* right_ma_inner;
                                          gboolean _tmp365_ = FALSE;
                                          gboolean _tmp366_ = FALSE;
                                          gboolean _tmp367_ = FALSE;
                                          gboolean _tmp368_ = FALSE;
                                          gboolean _tmp369_ = FALSE;
                                          _tmp359_ = vala_member_access_get_inner (ma);
                                          _tmp360_ = _tmp359_;
                                          _tmp361_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp360_) ? ((ValaMemberAccess*) _tmp360_) : NULL);
                                          ma_inner = _tmp361_;
                                          _tmp362_ = vala_member_access_get_inner (right_ma);
                                          _tmp363_ = _tmp362_;
                                          _tmp364_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp363_) ? ((ValaMemberAccess*) _tmp363_) : NULL);
                                          right_ma_inner = _tmp364_;
                                          if (ma_inner != NULL) {
                                                const gchar* _tmp370_ = NULL;
                                                _tmp370_ = vala_member_access_get_member_name (ma_inner);
                                                _tmp369_ = g_strcmp0 (_tmp370_, "this") == 0;
                                          } else {
                                                _tmp369_ = FALSE;
                                          }
                                          if (_tmp369_) {
                                                ValaExpression* _tmp371_ = NULL;
                                                _tmp371_ = vala_member_access_get_inner (ma_inner);
                                                _tmp368_ = _tmp371_ == NULL;
                                          } else {
                                                _tmp368_ = FALSE;
                                          }
                                          if (_tmp368_) {
                                                _tmp367_ = right_ma_inner != NULL;
                                          } else {
                                                _tmp367_ = FALSE;
                                          }
                                          if (_tmp367_) {
                                                const gchar* _tmp372_ = NULL;
                                                _tmp372_ = vala_member_access_get_member_name (right_ma_inner);
                                                _tmp366_ = g_strcmp0 (_tmp372_, "this") == 0;
                                          } else {
                                                _tmp366_ = FALSE;
                                          }
                                          if (_tmp366_) {
                                                ValaExpression* _tmp373_ = NULL;
                                                _tmp373_ = vala_member_access_get_inner (right_ma_inner);
                                                _tmp365_ = _tmp373_ == NULL;
                                          } else {
                                                _tmp365_ = FALSE;
                                          }
                                          if (_tmp365_) {
                                                ValaSourceReference* _tmp374_ = NULL;
                                                _tmp374_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                vala_report_warning (_tmp374_, "Assignment to same variable");
                                          }
                                          _vala_code_node_unref0 (right_ma_inner);
                                          _vala_code_node_unref0 (ma_inner);
                                    }
                                    _vala_code_node_unref0 (f);
                              }
                        }
                  }
                  _vala_code_node_unref0 (right_ma);
                  _vala_code_node_unref0 (ma);
            } else {
                  ValaExpression* _tmp375_ = NULL;
                  _tmp375_ = vala_assignment_get_left (self);
                  if (VALA_IS_ELEMENT_ACCESS (_tmp375_)) {
                        ValaExpression* _tmp376_ = NULL;
                        ValaElementAccess* _tmp377_;
                        ValaElementAccess* ea;
                        ValaExpression* _tmp378_ = NULL;
                        ValaDataType* _tmp379_ = NULL;
                        ValaExpression* _tmp380_ = NULL;
                        ValaDataType* _tmp381_ = NULL;
                        gboolean _tmp382_;
                        ValaExpression* _tmp394_ = NULL;
                        ValaDataType* _tmp395_ = NULL;
                        gboolean _tmp396_;
                        _tmp376_ = vala_assignment_get_left (self);
                        _tmp377_ = _vala_code_node_ref0 (VALA_ELEMENT_ACCESS (_tmp376_));
                        ea = _tmp377_;
                        _tmp378_ = vala_assignment_get_right (self);
                        _tmp379_ = vala_expression_get_value_type (_tmp378_);
                        _tmp380_ = vala_assignment_get_left (self);
                        _tmp381_ = vala_expression_get_value_type (_tmp380_);
                        _tmp382_ = vala_data_type_compatible (_tmp379_, _tmp381_);
                        if (!_tmp382_) {
                              ValaSourceReference* _tmp383_ = NULL;
                              ValaExpression* _tmp384_ = NULL;
                              ValaDataType* _tmp385_ = NULL;
                              gchar* _tmp386_ = NULL;
                              gchar* _tmp387_;
                              ValaExpression* _tmp388_ = NULL;
                              ValaDataType* _tmp389_ = NULL;
                              gchar* _tmp390_ = NULL;
                              gchar* _tmp391_;
                              gchar* _tmp392_ = NULL;
                              gchar* _tmp393_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp383_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp384_ = vala_assignment_get_right (self);
                              _tmp385_ = vala_expression_get_value_type (_tmp384_);
                              _tmp386_ = vala_code_node_to_string ((ValaCodeNode*) _tmp385_);
                              _tmp387_ = _tmp386_;
                              _tmp388_ = vala_assignment_get_left (self);
                              _tmp389_ = vala_expression_get_value_type (_tmp388_);
                              _tmp390_ = vala_code_node_to_string ((ValaCodeNode*) _tmp389_);
                              _tmp391_ = _tmp390_;
                              _tmp392_ = g_strdup_printf ("Assignment: Cannot convert from `%s' to `%s'", _tmp387_, _tmp391_);
                              _tmp393_ = _tmp392_;
                              vala_report_error (_tmp383_, _tmp393_);
                              _g_free0 (_tmp393_);
                              _g_free0 (_tmp391_);
                              _g_free0 (_tmp387_);
                              result = FALSE;
                              _vala_code_node_unref0 (ea);
                              return result;
                        }
                        _tmp394_ = vala_assignment_get_right (self);
                        _tmp395_ = vala_expression_get_value_type (_tmp394_);
                        _tmp396_ = vala_data_type_is_disposable (_tmp395_);
                        if (_tmp396_) {
                              ValaDataType* element_type = NULL;
                              ValaExpression* _tmp397_ = NULL;
                              ValaDataType* _tmp398_ = NULL;
                              gboolean _tmp409_ = FALSE;
                              _tmp397_ = vala_element_access_get_container (ea);
                              _tmp398_ = vala_expression_get_value_type (_tmp397_);
                              if (VALA_IS_ARRAY_TYPE (_tmp398_)) {
                                    ValaExpression* _tmp399_ = NULL;
                                    ValaDataType* _tmp400_ = NULL;
                                    ValaArrayType* _tmp401_;
                                    ValaArrayType* array_type;
                                    ValaDataType* _tmp402_ = NULL;
                                    ValaDataType* _tmp403_;
                                    _tmp399_ = vala_element_access_get_container (ea);
                                    _tmp400_ = vala_expression_get_value_type (_tmp399_);
                                    _tmp401_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp400_));
                                    array_type = _tmp401_;
                                    _tmp402_ = vala_array_type_get_element_type (array_type);
                                    _tmp403_ = _vala_code_node_ref0 (_tmp402_);
                                    _vala_code_node_unref0 (element_type);
                                    element_type = _tmp403_;
                                    _vala_code_node_unref0 (array_type);
                              } else {
                                    ValaExpression* _tmp404_ = NULL;
                                    ValaDataType* _tmp405_ = NULL;
                                    ValaList* _tmp406_ = NULL;
                                    ValaList* args;
                                    gint _tmp407_;
                                    gpointer _tmp408_ = NULL;
                                    _tmp404_ = vala_element_access_get_container (ea);
                                    _tmp405_ = vala_expression_get_value_type (_tmp404_);
                                    _tmp406_ = vala_data_type_get_type_arguments (_tmp405_);
                                    args = _tmp406_;
                                    _tmp407_ = vala_collection_get_size ((ValaCollection*) args);
                                    g_assert (_tmp407_ == 1);
                                    _tmp408_ = vala_list_get (args, 0);
                                    _vala_code_node_unref0 (element_type);
                                    element_type = (ValaDataType*) _tmp408_;
                                    _vala_iterable_unref0 (args);
                              }
                              if (!VALA_IS_POINTER_TYPE (element_type)) {
                                    gboolean _tmp410_;
                                    _tmp410_ = vala_data_type_get_value_owned (element_type);
                                    _tmp409_ = !_tmp410_;
                              } else {
                                    _tmp409_ = FALSE;
                              }
                              if (_tmp409_) {
                                    ValaSourceReference* _tmp411_ = NULL;
                                    vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                    _tmp411_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    vala_report_error (_tmp411_, "Invalid assignment from owned expression to unowned variable");
                                    result = FALSE;
                                    _vala_code_node_unref0 (element_type);
                                    _vala_code_node_unref0 (ea);
                                    return result;
                              }
                              _vala_code_node_unref0 (element_type);
                        } else {
                              ValaExpression* _tmp412_ = NULL;
                              ValaDataType* _tmp413_ = NULL;
                              gboolean _tmp414_;
                              _tmp412_ = vala_assignment_get_left (self);
                              _tmp413_ = vala_expression_get_value_type (_tmp412_);
                              _tmp414_ = vala_data_type_get_value_owned (_tmp413_);
                              if (_tmp414_) {
                              }
                        }
                        _vala_code_node_unref0 (ea);
                  } else {
                        result = TRUE;
                        return result;
                  }
            }
      }
      _tmp415_ = vala_assignment_get_left (self);
      _tmp416_ = vala_expression_get_value_type (_tmp415_);
      if (_tmp416_ != NULL) {
            ValaExpression* _tmp417_ = NULL;
            ValaDataType* _tmp418_ = NULL;
            ValaDataType* _tmp419_ = NULL;
            ValaDataType* _tmp420_;
            ValaDataType* _tmp421_ = NULL;
            _tmp417_ = vala_assignment_get_left (self);
            _tmp418_ = vala_expression_get_value_type (_tmp417_);
            _tmp419_ = vala_data_type_copy (_tmp418_);
            _tmp420_ = _tmp419_;
            vala_expression_set_value_type ((ValaExpression*) self, _tmp420_);
            _vala_code_node_unref0 (_tmp420_);
            _tmp421_ = vala_expression_get_value_type ((ValaExpression*) self);
            vala_data_type_set_value_owned (_tmp421_, FALSE);
      } else {
            vala_expression_set_value_type ((ValaExpression*) self, NULL);
      }
      _tmp422_ = vala_assignment_get_left (self);
      _tmp423_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp422_);
      _tmp424_ = _tmp423_;
      vala_code_node_add_error_types ((ValaCodeNode*) self, _tmp424_);
      _vala_iterable_unref0 (_tmp424_);
      _tmp425_ = vala_assignment_get_right (self);
      _tmp426_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp425_);
      _tmp427_ = _tmp426_;
      vala_code_node_add_error_types ((ValaCodeNode*) self, _tmp427_);
      _vala_iterable_unref0 (_tmp427_);
      _tmp428_ = vala_code_node_get_error ((ValaCodeNode*) self);
      result = !_tmp428_;
      return result;
}


static gboolean vala_assignment_is_array_add (ValaAssignment* self) {
      gboolean result = FALSE;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_;
      ValaBinaryExpression* _tmp2_;
      ValaBinaryExpression* binary;
      gboolean _tmp3_ = FALSE;
      g_return_val_if_fail (self != NULL, FALSE);
      _tmp0_ = vala_assignment_get_right (self);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_BINARY_EXPRESSION (_tmp1_) ? ((ValaBinaryExpression*) _tmp1_) : NULL);
      binary = _tmp2_;
      if (binary != NULL) {
            ValaExpression* _tmp4_ = NULL;
            ValaDataType* _tmp5_ = NULL;
            _tmp4_ = vala_binary_expression_get_left (binary);
            _tmp5_ = vala_expression_get_value_type (_tmp4_);
            _tmp3_ = VALA_IS_ARRAY_TYPE (_tmp5_);
      } else {
            _tmp3_ = FALSE;
      }
      if (_tmp3_) {
            ValaBinaryOperator _tmp6_;
            _tmp6_ = vala_binary_expression_get_operator (binary);
            if (_tmp6_ == VALA_BINARY_OPERATOR_PLUS) {
                  ValaExpression* _tmp7_ = NULL;
                  ValaSymbol* _tmp8_ = NULL;
                  ValaExpression* _tmp9_ = NULL;
                  ValaSymbol* _tmp10_ = NULL;
                  _tmp7_ = vala_assignment_get_left (self);
                  _tmp8_ = vala_expression_get_symbol_reference (_tmp7_);
                  _tmp9_ = vala_binary_expression_get_left (binary);
                  _tmp10_ = vala_expression_get_symbol_reference (_tmp9_);
                  if (_tmp8_ == _tmp10_) {
                        result = TRUE;
                        _vala_code_node_unref0 (binary);
                        return result;
                  }
            }
      }
      result = FALSE;
      _vala_code_node_unref0 (binary);
      return result;
}


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


static void vala_assignment_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen) {
      ValaAssignment * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_;
      ValaMemberAccess* _tmp2_;
      ValaMemberAccess* ma;
      ValaExpression* _tmp3_ = NULL;
      ValaExpression* _tmp4_;
      ValaElementAccess* _tmp5_;
      ValaElementAccess* ea;
      ValaExpression* _tmp6_ = NULL;
      ValaExpression* _tmp7_;
      ValaPointerIndirection* _tmp8_;
      ValaPointerIndirection* pi;
      ValaExpression* _tmp58_ = NULL;
      self = (ValaAssignment*) base;
      g_return_if_fail (codegen != NULL);
      _tmp0_ = vala_assignment_get_left (self);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp1_) ? ((ValaMemberAccess*) _tmp1_) : NULL);
      ma = _tmp2_;
      _tmp3_ = vala_assignment_get_left (self);
      _tmp4_ = _tmp3_;
      _tmp5_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp4_) ? ((ValaElementAccess*) _tmp4_) : NULL);
      ea = _tmp5_;
      _tmp6_ = vala_assignment_get_left (self);
      _tmp7_ = _tmp6_;
      _tmp8_ = _vala_code_node_ref0 (VALA_IS_POINTER_INDIRECTION (_tmp7_) ? ((ValaPointerIndirection*) _tmp7_) : NULL);
      pi = _tmp8_;
      if (ma != NULL) {
            ValaSymbol* _tmp9_ = NULL;
            ValaSymbol* _tmp10_;
            ValaLocalVariable* _tmp11_;
            ValaLocalVariable* local;
            ValaSymbol* _tmp12_ = NULL;
            ValaSymbol* _tmp13_;
            ValaParameter* _tmp14_;
            ValaParameter* param;
            ValaSymbol* _tmp15_ = NULL;
            ValaSymbol* _tmp16_;
            ValaField* _tmp17_;
            ValaField* field;
            ValaSymbol* _tmp18_ = NULL;
            ValaSymbol* _tmp19_;
            ValaProperty* _tmp20_;
            ValaProperty* property;
            gboolean _tmp21_ = FALSE;
            gboolean _tmp22_ = FALSE;
            gboolean instance;
            gboolean _tmp26_ = FALSE;
            gboolean _tmp27_ = FALSE;
            gboolean _tmp28_ = FALSE;
            _tmp9_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            _tmp10_ = _tmp9_;
            _tmp11_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp10_) ? ((ValaLocalVariable*) _tmp10_) : NULL);
            local = _tmp11_;
            _tmp12_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            _tmp13_ = _tmp12_;
            _tmp14_ = _vala_code_node_ref0 (VALA_IS_PARAMETER (_tmp13_) ? ((ValaParameter*) _tmp13_) : NULL);
            param = _tmp14_;
            _tmp15_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            _tmp16_ = _tmp15_;
            _tmp17_ = _vala_code_node_ref0 (VALA_IS_FIELD (_tmp16_) ? ((ValaField*) _tmp16_) : NULL);
            field = _tmp17_;
            _tmp18_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
            _tmp19_ = _tmp18_;
            _tmp20_ = _vala_code_node_ref0 (VALA_IS_PROPERTY (_tmp19_) ? ((ValaProperty*) _tmp19_) : NULL);
            property = _tmp20_;
            if (field != NULL) {
                  ValaMemberBinding _tmp23_;
                  _tmp23_ = vala_field_get_binding (field);
                  _tmp22_ = _tmp23_ != VALA_MEMBER_BINDING_STATIC;
            } else {
                  _tmp22_ = FALSE;
            }
            if (_tmp22_) {
                  _tmp21_ = TRUE;
            } else {
                  gboolean _tmp24_ = FALSE;
                  if (property != NULL) {
                        ValaMemberBinding _tmp25_;
                        _tmp25_ = vala_property_get_binding (property);
                        _tmp24_ = _tmp25_ != VALA_MEMBER_BINDING_STATIC;
                  } else {
                        _tmp24_ = FALSE;
                  }
                  _tmp21_ = _tmp24_;
            }
            instance = _tmp21_;
            if (self->priv->_operator == VALA_ASSIGNMENT_OPERATOR_SIMPLE) {
                  gboolean _tmp29_ = FALSE;
                  gboolean _tmp30_ = FALSE;
                  if (local != NULL) {
                        _tmp30_ = TRUE;
                  } else {
                        _tmp30_ = param != NULL;
                  }
                  if (_tmp30_) {
                        _tmp29_ = TRUE;
                  } else {
                        _tmp29_ = field != NULL;
                  }
                  _tmp28_ = _tmp29_;
            } else {
                  _tmp28_ = FALSE;
            }
            if (_tmp28_) {
                  gboolean _tmp31_;
                  _tmp31_ = vala_assignment_is_array_add (self);
                  _tmp27_ = !_tmp31_;
            } else {
                  _tmp27_ = FALSE;
            }
            if (_tmp27_) {
                  _tmp26_ = !VALA_IS_ARRAY_LENGTH_FIELD (field);
            } else {
                  _tmp26_ = FALSE;
            }
            if (_tmp26_) {
                  gboolean _tmp32_ = FALSE;
                  ValaExpression* _tmp35_ = NULL;
                  ValaExpression* _tmp36_ = NULL;
                  ValaTargetValue* _tmp37_ = NULL;
                  ValaTargetValue* _tmp38_;
                  ValaTargetValue* new_value;
                  if (instance) {
                        ValaExpression* _tmp33_ = NULL;
                        _tmp33_ = vala_member_access_get_inner (ma);
                        _tmp32_ = _tmp33_ != NULL;
                  } else {
                        _tmp32_ = FALSE;
                  }
                  if (_tmp32_) {
                        ValaExpression* _tmp34_ = NULL;
                        _tmp34_ = vala_member_access_get_inner (ma);
                        vala_code_node_emit ((ValaCodeNode*) _tmp34_, codegen);
                  }
                  _tmp35_ = vala_assignment_get_right (self);
                  vala_code_node_emit ((ValaCodeNode*) _tmp35_, codegen);
                  _tmp36_ = vala_assignment_get_right (self);
                  _tmp37_ = vala_expression_get_target_value (_tmp36_);
                  _tmp38_ = _vala_target_value_ref0 (_tmp37_);
                  new_value = _tmp38_;
                  if (local != NULL) {
                        vala_code_generator_store_local (codegen, local, new_value, FALSE);
                  } else {
                        if (param != NULL) {
                              vala_code_generator_store_parameter (codegen, param, new_value);
                        } else {
                              if (field != NULL) {
                                    ValaTargetValue* _tmp39_ = NULL;
                                    gboolean _tmp40_ = FALSE;
                                    if (instance) {
                                          ValaExpression* _tmp41_ = NULL;
                                          _tmp41_ = vala_member_access_get_inner (ma);
                                          _tmp40_ = _tmp41_ != NULL;
                                    } else {
                                          _tmp40_ = FALSE;
                                    }
                                    if (_tmp40_) {
                                          ValaExpression* _tmp42_ = NULL;
                                          ValaTargetValue* _tmp43_ = NULL;
                                          _tmp42_ = vala_member_access_get_inner (ma);
                                          _tmp43_ = vala_expression_get_target_value (_tmp42_);
                                          _tmp39_ = _tmp43_;
                                    } else {
                                          _tmp39_ = NULL;
                                    }
                                    vala_code_generator_store_field (codegen, field, _tmp39_, new_value);
                              }
                        }
                  }
                  if (local != NULL) {
                        ValaTargetValue* _tmp44_ = NULL;
                        ValaTargetValue* _tmp45_;
                        _tmp44_ = vala_code_generator_load_local (codegen, local);
                        _tmp45_ = _tmp44_;
                        vala_expression_set_target_value ((ValaExpression*) self, _tmp45_);
                        _vala_target_value_unref0 (_tmp45_);
                  } else {
                        if (param != NULL) {
                              ValaTargetValue* _tmp46_ = NULL;
                              ValaTargetValue* _tmp47_;
                              _tmp46_ = vala_code_generator_load_parameter (codegen, param);
                              _tmp47_ = _tmp46_;
                              vala_expression_set_target_value ((ValaExpression*) self, _tmp47_);
                              _vala_target_value_unref0 (_tmp47_);
                        } else {
                              if (field != NULL) {
                                    ValaTargetValue* _tmp48_ = NULL;
                                    gboolean _tmp49_ = FALSE;
                                    ValaTargetValue* _tmp53_ = NULL;
                                    ValaTargetValue* _tmp54_;
                                    if (instance) {
                                          ValaExpression* _tmp50_ = NULL;
                                          _tmp50_ = vala_member_access_get_inner (ma);
                                          _tmp49_ = _tmp50_ != NULL;
                                    } else {
                                          _tmp49_ = FALSE;
                                    }
                                    if (_tmp49_) {
                                          ValaExpression* _tmp51_ = NULL;
                                          ValaTargetValue* _tmp52_ = NULL;
                                          _tmp51_ = vala_member_access_get_inner (ma);
                                          _tmp52_ = vala_expression_get_target_value (_tmp51_);
                                          _tmp48_ = _tmp52_;
                                    } else {
                                          _tmp48_ = NULL;
                                    }
                                    _tmp53_ = vala_code_generator_load_field (codegen, field, _tmp48_);
                                    _tmp54_ = _tmp53_;
                                    vala_expression_set_target_value ((ValaExpression*) self, _tmp54_);
                                    _vala_target_value_unref0 (_tmp54_);
                              }
                        }
                  }
                  vala_code_visitor_visit_expression ((ValaCodeVisitor*) codegen, (ValaExpression*) self);
                  _vala_target_value_unref0 (new_value);
                  _vala_code_node_unref0 (property);
                  _vala_code_node_unref0 (field);
                  _vala_code_node_unref0 (param);
                  _vala_code_node_unref0 (local);
                  _vala_code_node_unref0 (pi);
                  _vala_code_node_unref0 (ea);
                  _vala_code_node_unref0 (ma);
                  return;
            }
            if (field != NULL) {
                  vala_code_node_emit ((ValaCodeNode*) ma, codegen);
            } else {
                  gboolean _tmp55_ = FALSE;
                  if (instance) {
                        ValaExpression* _tmp56_ = NULL;
                        _tmp56_ = vala_member_access_get_inner (ma);
                        _tmp55_ = _tmp56_ != NULL;
                  } else {
                        _tmp55_ = FALSE;
                  }
                  if (_tmp55_) {
                        ValaExpression* _tmp57_ = NULL;
                        _tmp57_ = vala_member_access_get_inner (ma);
                        vala_code_node_emit ((ValaCodeNode*) _tmp57_, codegen);
                  }
            }
            _vala_code_node_unref0 (property);
            _vala_code_node_unref0 (field);
            _vala_code_node_unref0 (param);
            _vala_code_node_unref0 (local);
      } else {
            if (ea != NULL) {
                  vala_code_node_emit ((ValaCodeNode*) ea, codegen);
            } else {
                  if (pi != NULL) {
                        vala_code_node_emit ((ValaCodeNode*) pi, codegen);
                  }
            }
      }
      _tmp58_ = vala_assignment_get_right (self);
      vala_code_node_emit ((ValaCodeNode*) _tmp58_, codegen);
      vala_code_visitor_visit_assignment ((ValaCodeVisitor*) codegen, self);
      vala_code_visitor_visit_expression ((ValaCodeVisitor*) codegen, (ValaExpression*) self);
      _vala_code_node_unref0 (pi);
      _vala_code_node_unref0 (ea);
      _vala_code_node_unref0 (ma);
}


static void vala_assignment_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaAssignment * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_ = NULL;
      ValaExpression* _tmp2_ = NULL;
      ValaSymbol* _tmp3_ = NULL;
      ValaSymbol* _tmp4_;
      ValaLocalVariable* _tmp5_;
      ValaLocalVariable* local;
      self = (ValaAssignment*) base;
      g_return_if_fail (collection != NULL);
      _tmp0_ = vala_assignment_get_right (self);
      vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp0_, collection);
      _tmp1_ = vala_assignment_get_left (self);
      vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp1_, collection);
      _tmp2_ = vala_assignment_get_left (self);
      _tmp3_ = vala_expression_get_symbol_reference (_tmp2_);
      _tmp4_ = _tmp3_;
      _tmp5_ = _vala_code_node_ref0 (VALA_IS_LOCAL_VARIABLE (_tmp4_) ? ((ValaLocalVariable*) _tmp4_) : NULL);
      local = _tmp5_;
      if (local != NULL) {
            vala_collection_add (collection, local);
      }
      _vala_code_node_unref0 (local);
}


static void vala_assignment_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaAssignment * self;
      ValaExpression* _tmp0_ = NULL;
      ValaExpression* _tmp1_;
      ValaMemberAccess* _tmp2_;
      ValaMemberAccess* ma;
      ValaExpression* _tmp3_ = NULL;
      ValaExpression* _tmp4_;
      ValaElementAccess* _tmp5_;
      ValaElementAccess* ea;
      gboolean _tmp6_ = FALSE;
      ValaExpression* _tmp9_ = NULL;
      self = (ValaAssignment*) base;
      g_return_if_fail (collection != NULL);
      _tmp0_ = vala_assignment_get_left (self);
      _tmp1_ = _tmp0_;
      _tmp2_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp1_) ? ((ValaMemberAccess*) _tmp1_) : NULL);
      ma = _tmp2_;
      _tmp3_ = vala_assignment_get_left (self);
      _tmp4_ = _tmp3_;
      _tmp5_ = _vala_code_node_ref0 (VALA_IS_ELEMENT_ACCESS (_tmp4_) ? ((ValaElementAccess*) _tmp4_) : NULL);
      ea = _tmp5_;
      if (ma != NULL) {
            ValaExpression* _tmp7_ = NULL;
            _tmp7_ = vala_member_access_get_inner (ma);
            _tmp6_ = _tmp7_ != NULL;
      } else {
            _tmp6_ = FALSE;
      }
      if (_tmp6_) {
            ValaExpression* _tmp8_ = NULL;
            _tmp8_ = vala_member_access_get_inner (ma);
            vala_code_node_get_used_variables ((ValaCodeNode*) _tmp8_, collection);
      } else {
            if (ea != NULL) {
                  vala_code_node_get_used_variables ((ValaCodeNode*) ea, collection);
            }
      }
      _tmp9_ = vala_assignment_get_right (self);
      vala_code_node_get_used_variables ((ValaCodeNode*) _tmp9_, collection);
      _vala_code_node_unref0 (ea);
      _vala_code_node_unref0 (ma);
}


ValaExpression* vala_assignment_get_left (ValaAssignment* self) {
      ValaExpression* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_left;
      return result;
}


void vala_assignment_set_left (ValaAssignment* self, ValaExpression* value) {
      ValaExpression* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = _vala_code_node_ref0 (value);
      _vala_code_node_unref0 (self->priv->_left);
      self->priv->_left = _tmp0_;
      vala_code_node_set_parent_node ((ValaCodeNode*) self->priv->_left, (ValaCodeNode*) self);
}


ValaAssignmentOperator vala_assignment_get_operator (ValaAssignment* self) {
      ValaAssignmentOperator result;
      g_return_val_if_fail (self != NULL, 0);
      result = self->priv->_operator;
      return result;
}


void vala_assignment_set_operator (ValaAssignment* self, ValaAssignmentOperator value) {
      g_return_if_fail (self != NULL);
      self->priv->_operator = value;
}


ValaExpression* vala_assignment_get_right (ValaAssignment* self) {
      ValaExpression* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_right;
      return result;
}


void vala_assignment_set_right (ValaAssignment* self, ValaExpression* value) {
      ValaExpression* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = _vala_code_node_ref0 (value);
      _vala_code_node_unref0 (self->priv->_right);
      self->priv->_right = _tmp0_;
      vala_code_node_set_parent_node ((ValaCodeNode*) self->priv->_right, (ValaCodeNode*) self);
}


static void vala_assignment_class_init (ValaAssignmentClass * klass) {
      vala_assignment_parent_class = g_type_class_peek_parent (klass);
      VALA_CODE_NODE_CLASS (klass)->finalize = vala_assignment_finalize;
      g_type_class_add_private (klass, sizeof (ValaAssignmentPrivate));
      VALA_CODE_NODE_CLASS (klass)->accept = vala_assignment_real_accept;
      VALA_CODE_NODE_CLASS (klass)->accept_children = vala_assignment_real_accept_children;
      VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_assignment_real_replace_expression;
      VALA_EXPRESSION_CLASS (klass)->is_pure = vala_assignment_real_is_pure;
      VALA_CODE_NODE_CLASS (klass)->check = vala_assignment_real_check;
      VALA_CODE_NODE_CLASS (klass)->emit = vala_assignment_real_emit;
      VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_assignment_real_get_defined_variables;
      VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_assignment_real_get_used_variables;
}


static void vala_assignment_instance_init (ValaAssignment * self) {
      self->priv = VALA_ASSIGNMENT_GET_PRIVATE (self);
}


static void vala_assignment_finalize (ValaCodeNode* obj) {
      ValaAssignment * self;
      self = VALA_ASSIGNMENT (obj);
      _vala_code_node_unref0 (self->priv->_left);
      _vala_code_node_unref0 (self->priv->_right);
      VALA_CODE_NODE_CLASS (vala_assignment_parent_class)->finalize (obj);
}


/**
 * Represents an assignment expression in the source code.
 *
 * Supports =, |=, &=, ^=, +=, -=, *=, /=, %=, <<=, >>=.
 */
GType vala_assignment_get_type (void) {
      static volatile gsize vala_assignment_type_id__volatile = 0;
      if (g_once_init_enter (&vala_assignment_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaAssignmentClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_assignment_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaAssignment), 0, (GInstanceInitFunc) vala_assignment_instance_init, NULL };
            GType vala_assignment_type_id;
            vala_assignment_type_id = g_type_register_static (VALA_TYPE_EXPRESSION, "ValaAssignment", &g_define_type_info, 0);
            g_once_init_leave (&vala_assignment_type_id__volatile, vala_assignment_type_id);
      }
      return vala_assignment_type_id__volatile;
}


GType vala_assignment_operator_get_type (void) {
      static volatile gsize vala_assignment_operator_type_id__volatile = 0;
      if (g_once_init_enter (&vala_assignment_operator_type_id__volatile)) {
            static const GEnumValue values[] = {{VALA_ASSIGNMENT_OPERATOR_NONE, "VALA_ASSIGNMENT_OPERATOR_NONE", "none"}, {VALA_ASSIGNMENT_OPERATOR_SIMPLE, "VALA_ASSIGNMENT_OPERATOR_SIMPLE", "simple"}, {VALA_ASSIGNMENT_OPERATOR_BITWISE_OR, "VALA_ASSIGNMENT_OPERATOR_BITWISE_OR", "bitwise-or"}, {VALA_ASSIGNMENT_OPERATOR_BITWISE_AND, "VALA_ASSIGNMENT_OPERATOR_BITWISE_AND", "bitwise-and"}, {VALA_ASSIGNMENT_OPERATOR_BITWISE_XOR, "VALA_ASSIGNMENT_OPERATOR_BITWISE_XOR", "bitwise-xor"}, {VALA_ASSIGNMENT_OPERATOR_ADD, "VALA_ASSIGNMENT_OPERATOR_ADD", "add"}, {VALA_ASSIGNMENT_OPERATOR_SUB, "VALA_ASSIGNMENT_OPERATOR_SUB", "sub"}, {VALA_ASSIGNMENT_OPERATOR_MUL, "VALA_ASSIGNMENT_OPERATOR_MUL", "mul"}, {VALA_ASSIGNMENT_OPERATOR_DIV, "VALA_ASSIGNMENT_OPERATOR_DIV", "div"}, {VALA_ASSIGNMENT_OPERATOR_PERCENT, "VALA_ASSIGNMENT_OPERATOR_PERCENT", "percent"}, {VALA_ASSIGNMENT_OPERATOR_SHIFT_LEFT, "VALA_ASSIGNMENT_OPERATOR_SHIFT_LEFT", "shift-left"}, {VALA_ASSIGNMENT_OPERATOR_SHIFT_RIGHT, "VALA_ASSIGNMENT_OPERATOR_SHIFT_RIGHT", "shift-right"}, {0, NULL, NULL}};
            GType vala_assignment_operator_type_id;
            vala_assignment_operator_type_id = g_enum_register_static ("ValaAssignmentOperator", values);
            g_once_init_leave (&vala_assignment_operator_type_id__volatile, vala_assignment_operator_type_id);
      }
      return vala_assignment_operator_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index