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

valamethodcall.c

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

/* valamethodcall.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_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;
typedef struct _ValaMethodCallPrivate ValaMethodCallPrivate;
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

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

typedef struct _ValaSourceReference ValaSourceReference;
typedef struct _ValaSourceReferenceClass ValaSourceReferenceClass;

#define VALA_TYPE_METHOD_TYPE (vala_method_type_get_type ())
#define VALA_METHOD_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD_TYPE, ValaMethodType))
#define VALA_METHOD_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD_TYPE, ValaMethodTypeClass))
#define VALA_IS_METHOD_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD_TYPE))
#define VALA_IS_METHOD_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD_TYPE))
#define VALA_METHOD_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD_TYPE, ValaMethodTypeClass))

typedef struct _ValaMethodType ValaMethodType;
typedef struct _ValaMethodTypeClass ValaMethodTypeClass;

#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 _g_free0(var) (var = (g_free (var), NULL))

#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_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_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_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_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_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_PROFILE (vala_profile_get_type ())

#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_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_CONSTRUCTOR (vala_constructor_get_type ())
#define VALA_CONSTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTRUCTOR, ValaConstructor))
#define VALA_CONSTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTRUCTOR, ValaConstructorClass))
#define VALA_IS_CONSTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTRUCTOR))
#define VALA_IS_CONSTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTRUCTOR))
#define VALA_CONSTRUCTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTRUCTOR, ValaConstructorClass))

typedef struct _ValaConstructor ValaConstructor;
typedef struct _ValaConstructorClass ValaConstructorClass;

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

typedef struct _ValaDestructor ValaDestructor;
typedef struct _ValaDestructorClass ValaDestructorClass;

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

typedef struct _ValaTypeParameter ValaTypeParameter;
typedef struct _ValaTypeParameterClass ValaTypeParameterClass;

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

typedef struct _ValaUsingDirective ValaUsingDirective;
typedef struct _ValaUsingDirectiveClass ValaUsingDirectiveClass;

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

typedef struct _ValaBlock ValaBlock;
typedef struct _ValaBlockClass ValaBlockClass;

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

typedef struct _ValaEmptyStatement ValaEmptyStatement;
typedef struct _ValaEmptyStatementClass ValaEmptyStatementClass;

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

typedef struct _ValaDeclarationStatement ValaDeclarationStatement;
typedef struct _ValaDeclarationStatementClass ValaDeclarationStatementClass;

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

typedef struct _ValaInitializerList ValaInitializerList;
typedef struct _ValaInitializerListClass ValaInitializerListClass;

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

typedef struct _ValaExpressionStatement ValaExpressionStatement;
typedef struct _ValaExpressionStatementClass ValaExpressionStatementClass;

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

typedef struct _ValaIfStatement ValaIfStatement;
typedef struct _ValaIfStatementClass ValaIfStatementClass;

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

typedef struct _ValaSwitchStatement ValaSwitchStatement;
typedef struct _ValaSwitchStatementClass ValaSwitchStatementClass;

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

typedef struct _ValaSwitchSection ValaSwitchSection;
typedef struct _ValaSwitchSectionClass ValaSwitchSectionClass;

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

typedef struct _ValaSwitchLabel ValaSwitchLabel;
typedef struct _ValaSwitchLabelClass ValaSwitchLabelClass;

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

typedef struct _ValaLoop ValaLoop;
typedef struct _ValaLoopClass ValaLoopClass;

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

typedef struct _ValaWhileStatement ValaWhileStatement;
typedef struct _ValaWhileStatementClass ValaWhileStatementClass;

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

typedef struct _ValaDoStatement ValaDoStatement;
typedef struct _ValaDoStatementClass ValaDoStatementClass;

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

typedef struct _ValaForStatement ValaForStatement;
typedef struct _ValaForStatementClass ValaForStatementClass;

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

typedef struct _ValaForeachStatement ValaForeachStatement;
typedef struct _ValaForeachStatementClass ValaForeachStatementClass;

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

typedef struct _ValaBreakStatement ValaBreakStatement;
typedef struct _ValaBreakStatementClass ValaBreakStatementClass;

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

typedef struct _ValaContinueStatement ValaContinueStatement;
typedef struct _ValaContinueStatementClass ValaContinueStatementClass;

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

typedef struct _ValaReturnStatement ValaReturnStatement;
typedef struct _ValaReturnStatementClass ValaReturnStatementClass;

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

typedef struct _ValaYieldStatement ValaYieldStatement;
typedef struct _ValaYieldStatementClass ValaYieldStatementClass;

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

typedef struct _ValaThrowStatement ValaThrowStatement;
typedef struct _ValaThrowStatementClass ValaThrowStatementClass;

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

typedef struct _ValaTryStatement ValaTryStatement;
typedef struct _ValaTryStatementClass ValaTryStatementClass;

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

typedef struct _ValaCatchClause ValaCatchClause;
typedef struct _ValaCatchClauseClass ValaCatchClauseClass;

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

typedef struct _ValaLockStatement ValaLockStatement;
typedef struct _ValaLockStatementClass ValaLockStatementClass;

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

typedef struct _ValaUnlockStatement ValaUnlockStatement;
typedef struct _ValaUnlockStatementClass ValaUnlockStatementClass;

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

typedef struct _ValaDeleteStatement ValaDeleteStatement;
typedef struct _ValaDeleteStatementClass ValaDeleteStatementClass;

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

typedef struct _ValaArrayCreationExpression ValaArrayCreationExpression;
typedef struct _ValaArrayCreationExpressionClass ValaArrayCreationExpressionClass;

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

typedef struct _ValaLiteral ValaLiteral;
typedef struct _ValaLiteralClass ValaLiteralClass;

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

typedef struct _ValaBooleanLiteral ValaBooleanLiteral;
typedef struct _ValaBooleanLiteralClass ValaBooleanLiteralClass;

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

typedef struct _ValaCharacterLiteral ValaCharacterLiteral;
typedef struct _ValaCharacterLiteralClass ValaCharacterLiteralClass;

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

typedef struct _ValaIntegerLiteral ValaIntegerLiteral;
typedef struct _ValaIntegerLiteralClass ValaIntegerLiteralClass;

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

typedef struct _ValaRealLiteral ValaRealLiteral;
typedef struct _ValaRealLiteralClass ValaRealLiteralClass;

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

typedef struct _ValaRegexLiteral ValaRegexLiteral;
typedef struct _ValaRegexLiteralClass ValaRegexLiteralClass;

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

typedef struct _ValaStringLiteral ValaStringLiteral;
typedef struct _ValaStringLiteralClass ValaStringLiteralClass;

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

typedef struct _ValaTemplate ValaTemplate;
typedef struct _ValaTemplateClass ValaTemplateClass;

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

typedef struct _ValaListLiteral ValaListLiteral;
typedef struct _ValaListLiteralClass ValaListLiteralClass;

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

typedef struct _ValaSetLiteral ValaSetLiteral;
typedef struct _ValaSetLiteralClass ValaSetLiteralClass;

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

typedef struct _ValaMapLiteral ValaMapLiteral;
typedef struct _ValaMapLiteralClass ValaMapLiteralClass;

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

typedef struct _ValaTuple ValaTuple;
typedef struct _ValaTupleClass ValaTupleClass;

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

typedef struct _ValaNullLiteral ValaNullLiteral;
typedef struct _ValaNullLiteralClass ValaNullLiteralClass;

#define VALA_TYPE_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_POSTFIX_EXPRESSION (vala_postfix_expression_get_type ())
#define VALA_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpression))
#define VALA_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))
#define VALA_IS_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POSTFIX_EXPRESSION))
#define VALA_IS_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POSTFIX_EXPRESSION))
#define VALA_POSTFIX_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))

typedef struct _ValaPostfixExpression ValaPostfixExpression;
typedef struct _ValaPostfixExpressionClass ValaPostfixExpressionClass;

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

typedef struct _ValaObjectCreationExpression ValaObjectCreationExpression;
typedef struct _ValaObjectCreationExpressionClass ValaObjectCreationExpressionClass;

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

typedef struct _ValaSizeofExpression ValaSizeofExpression;
typedef struct _ValaSizeofExpressionClass ValaSizeofExpressionClass;

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

typedef struct _ValaTypeofExpression ValaTypeofExpression;
typedef struct _ValaTypeofExpressionClass ValaTypeofExpressionClass;

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

typedef struct _ValaUnaryExpression ValaUnaryExpression;
typedef struct _ValaUnaryExpressionClass ValaUnaryExpressionClass;

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

typedef struct _ValaCastExpression ValaCastExpression;
typedef struct _ValaCastExpressionClass ValaCastExpressionClass;

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

typedef struct _ValaNamedArgument ValaNamedArgument;
typedef struct _ValaNamedArgumentClass ValaNamedArgumentClass;

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

typedef struct _ValaPointerIndirection ValaPointerIndirection;
typedef struct _ValaPointerIndirectionClass ValaPointerIndirectionClass;

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

typedef struct _ValaAddressofExpression ValaAddressofExpression;
typedef struct _ValaAddressofExpressionClass ValaAddressofExpressionClass;

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

typedef struct _ValaReferenceTransferExpression ValaReferenceTransferExpression;
typedef struct _ValaReferenceTransferExpressionClass ValaReferenceTransferExpressionClass;

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

typedef struct _ValaBinaryExpression ValaBinaryExpression;
typedef struct _ValaBinaryExpressionClass ValaBinaryExpressionClass;

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

typedef struct _ValaTypeCheck ValaTypeCheck;
typedef struct _ValaTypeCheckClass ValaTypeCheckClass;

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

typedef struct _ValaConditionalExpression ValaConditionalExpression;
typedef struct _ValaConditionalExpressionClass ValaConditionalExpressionClass;

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

typedef struct _ValaLambdaExpression ValaLambdaExpression;
typedef struct _ValaLambdaExpressionClass ValaLambdaExpressionClass;

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

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

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

typedef struct _ValaValueType ValaValueType;
typedef struct _ValaValueTypeClass ValaValueTypeClass;

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

typedef struct _ValaStructValueType ValaStructValueType;
typedef struct _ValaStructValueTypeClass ValaStructValueTypeClass;

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

typedef struct _ValaVoidType ValaVoidType;
typedef struct _ValaVoidTypeClass ValaVoidTypeClass;

#define VALA_TYPE_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_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))

#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_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_GENERIC_TYPE (vala_generic_type_get_type ())
#define VALA_GENERIC_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GENERIC_TYPE, ValaGenericType))
#define VALA_GENERIC_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GENERIC_TYPE, ValaGenericTypeClass))
#define VALA_IS_GENERIC_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GENERIC_TYPE))
#define VALA_IS_GENERIC_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GENERIC_TYPE))
#define VALA_GENERIC_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GENERIC_TYPE, ValaGenericTypeClass))

typedef struct _ValaGenericType ValaGenericType;
typedef struct _ValaGenericTypeClass ValaGenericTypeClass;

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

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 _ValaMethodCall {
      ValaExpression parent_instance;
      ValaMethodCallPrivate * priv;
      ValaExpression* _call;
};

struct _ValaMethodCallClass {
      ValaExpressionClass parent_class;
};

01165 struct _ValaMethodCallPrivate {
      gboolean _is_yield_expression;
      gboolean _is_assert;
      ValaList* argument_list;
};

typedef enum  {
      VALA_PROFILE_POSIX,
      VALA_PROFILE_GOBJECT,
      VALA_PROFILE_DOVA
} ValaProfile;

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;
};

struct _ValaStatementIface {
      GTypeInterface parent_iface;
};


static gpointer vala_method_call_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_method_call_get_type (void) G_GNUC_CONST;
#define VALA_METHOD_CALL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_METHOD_CALL, ValaMethodCallPrivate))
enum  {
      VALA_METHOD_CALL_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;
ValaMethodCall* vala_method_call_new (ValaExpression* call, ValaSourceReference* source_reference);
ValaMethodCall* vala_method_call_construct (GType object_type, ValaExpression* call, ValaSourceReference* source_reference);
ValaExpression* vala_expression_construct (GType object_type);
void vala_code_node_set_source_reference (ValaCodeNode* self, ValaSourceReference* value);
void vala_method_call_set_call (ValaMethodCall* self, ValaExpression* value);
void vala_method_call_add_argument (ValaMethodCall* self, ValaExpression* arg);
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
ValaList* vala_method_call_get_argument_list (ValaMethodCall* self);
static void vala_method_call_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor);
void vala_code_visitor_visit_method_call (ValaCodeVisitor* self, ValaMethodCall* expr);
void vala_code_visitor_visit_expression (ValaCodeVisitor* self, ValaExpression* expr);
static void vala_method_call_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor);
ValaExpression* vala_method_call_get_call (ValaMethodCall* self);
void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
static void vala_method_call_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node);
ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
static gboolean vala_method_call_real_is_constant (ValaExpression* base);
ValaDataType* vala_expression_get_value_type (ValaExpression* self);
GType vala_method_type_get_type (void) G_GNUC_CONST;
GType vala_subroutine_get_type (void) G_GNUC_CONST;
GType vala_method_get_type (void) G_GNUC_CONST;
ValaMethod* vala_method_type_get_method_symbol (ValaMethodType* self);
gchar* vala_symbol_get_full_name (ValaSymbol* self);
gboolean vala_expression_is_constant (ValaExpression* self);
static gboolean vala_method_call_real_is_pure (ValaExpression* base);
static gboolean vala_method_call_is_chainup (ValaMethodCall* self);
ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
GType vala_creation_method_get_type (void) G_GNUC_CONST;
GType vala_member_access_get_type (void) G_GNUC_CONST;
ValaExpression* vala_member_access_get_inner (ValaMemberAccess* self);
const gchar* vala_member_access_get_member_name (ValaMemberAccess* self);
GType vala_base_access_get_type (void) G_GNUC_CONST;
static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext* context);
gboolean vala_code_node_get_checked (ValaCodeNode* self);
gboolean vala_code_node_get_error (ValaCodeNode* self);
void vala_code_node_set_checked (ValaCodeNode* self, gboolean value);
gboolean vala_code_node_check (ValaCodeNode* self, ValaCodeContext* context);
void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
GType vala_delegate_type_get_type (void) G_GNUC_CONST;
gboolean vala_member_access_get_prototype_access (ValaMemberAccess* self);
void vala_report_error (ValaSourceReference* source, const gchar* message);
ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
GType vala_signal_get_type (void) G_GNUC_CONST;
gboolean vala_method_get_coroutine (ValaMethod* self);
ValaAttribute* vala_code_node_get_attribute (ValaCodeNode* self, const gchar* name);
static void vala_method_call_set_is_assert (ValaMethodCall* self, gboolean value);
GType vala_reference_type_get_type (void) G_GNUC_CONST;
GType vala_object_type_get_type (void) G_GNUC_CONST;
GType vala_profile_get_type (void) G_GNUC_CONST;
ValaProfile vala_code_context_get_profile (ValaCodeContext* self);
GType vala_semantic_analyzer_get_type (void) G_GNUC_CONST;
ValaSemanticAnalyzer* vala_code_context_get_analyzer (ValaCodeContext* self);
gpointer vala_source_file_ref (gpointer instance);
void vala_source_file_unref (gpointer instance);
GParamSpec* vala_param_spec_source_file (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_source_file (GValue* value, gpointer v_object);
void vala_value_take_source_file (GValue* value, gpointer v_object);
gpointer vala_value_get_source_file (const GValue* value);
GType vala_source_file_get_type (void) G_GNUC_CONST;
GType vala_namespace_get_type (void) G_GNUC_CONST;
GType vala_typesymbol_get_type (void) G_GNUC_CONST;
GType vala_object_type_symbol_get_type (void) G_GNUC_CONST;
GType vala_class_get_type (void) G_GNUC_CONST;
GType vala_struct_get_type (void) G_GNUC_CONST;
GType vala_interface_get_type (void) G_GNUC_CONST;
GType vala_enum_get_type (void) G_GNUC_CONST;
GType vala_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_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_constructor_get_type (void) G_GNUC_CONST;
GType vala_destructor_get_type (void) G_GNUC_CONST;
GType vala_typeparameter_get_type (void) G_GNUC_CONST;
GType vala_using_directive_get_type (void) G_GNUC_CONST;
GType vala_block_get_type (void) G_GNUC_CONST;
GType vala_empty_statement_get_type (void) G_GNUC_CONST;
GType vala_declaration_statement_get_type (void) G_GNUC_CONST;
GType vala_initializer_list_get_type (void) G_GNUC_CONST;
GType vala_expression_statement_get_type (void) G_GNUC_CONST;
GType vala_if_statement_get_type (void) G_GNUC_CONST;
GType vala_switch_statement_get_type (void) G_GNUC_CONST;
GType vala_switch_section_get_type (void) G_GNUC_CONST;
GType vala_switch_label_get_type (void) G_GNUC_CONST;
GType vala_loop_get_type (void) G_GNUC_CONST;
GType vala_while_statement_get_type (void) G_GNUC_CONST;
GType vala_do_statement_get_type (void) G_GNUC_CONST;
GType vala_for_statement_get_type (void) G_GNUC_CONST;
GType vala_foreach_statement_get_type (void) G_GNUC_CONST;
GType vala_break_statement_get_type (void) G_GNUC_CONST;
GType vala_continue_statement_get_type (void) G_GNUC_CONST;
GType vala_return_statement_get_type (void) G_GNUC_CONST;
GType vala_yield_statement_get_type (void) G_GNUC_CONST;
GType vala_throw_statement_get_type (void) G_GNUC_CONST;
GType vala_try_statement_get_type (void) G_GNUC_CONST;
GType vala_catch_clause_get_type (void) G_GNUC_CONST;
GType vala_lock_statement_get_type (void) G_GNUC_CONST;
GType vala_unlock_statement_get_type (void) G_GNUC_CONST;
GType vala_delete_statement_get_type (void) G_GNUC_CONST;
GType vala_array_creation_expression_get_type (void) G_GNUC_CONST;
GType vala_literal_get_type (void) G_GNUC_CONST;
GType vala_boolean_literal_get_type (void) G_GNUC_CONST;
GType vala_character_literal_get_type (void) G_GNUC_CONST;
GType vala_integer_literal_get_type (void) G_GNUC_CONST;
GType vala_real_literal_get_type (void) G_GNUC_CONST;
GType vala_regex_literal_get_type (void) G_GNUC_CONST;
GType vala_string_literal_get_type (void) G_GNUC_CONST;
GType vala_template_get_type (void) G_GNUC_CONST;
GType vala_list_literal_get_type (void) G_GNUC_CONST;
GType vala_set_literal_get_type (void) G_GNUC_CONST;
GType vala_map_literal_get_type (void) G_GNUC_CONST;
GType vala_tuple_get_type (void) G_GNUC_CONST;
GType vala_null_literal_get_type (void) G_GNUC_CONST;
GType vala_element_access_get_type (void) G_GNUC_CONST;
GType vala_slice_expression_get_type (void) G_GNUC_CONST;
GType vala_postfix_expression_get_type (void) G_GNUC_CONST;
GType vala_object_creation_expression_get_type (void) G_GNUC_CONST;
GType vala_sizeof_expression_get_type (void) G_GNUC_CONST;
GType vala_typeof_expression_get_type (void) G_GNUC_CONST;
GType vala_unary_expression_get_type (void) G_GNUC_CONST;
GType vala_cast_expression_get_type (void) G_GNUC_CONST;
GType vala_named_argument_get_type (void) G_GNUC_CONST;
GType vala_pointer_indirection_get_type (void) G_GNUC_CONST;
GType vala_addressof_expression_get_type (void) G_GNUC_CONST;
GType vala_reference_transfer_expression_get_type (void) G_GNUC_CONST;
GType vala_binary_expression_get_type (void) G_GNUC_CONST;
GType vala_typecheck_get_type (void) G_GNUC_CONST;
GType vala_conditional_expression_get_type (void) G_GNUC_CONST;
GType vala_lambda_expression_get_type (void) G_GNUC_CONST;
GType vala_assignment_get_type (void) G_GNUC_CONST;
GType vala_value_type_get_type (void) G_GNUC_CONST;
GType vala_struct_value_type_get_type (void) G_GNUC_CONST;
ValaMethod* vala_semantic_analyzer_find_current_method (ValaSemanticAnalyzer* self);
gboolean vala_creation_method_get_chain_up (ValaCreationMethod* self);
void vala_creation_method_set_chain_up (ValaCreationMethod* self, gboolean value);
ValaObjectTypeSymbol* vala_object_type_get_type_symbol (ValaObjectType* self);
ValaMethod* vala_class_get_default_construction_method (ValaClass* self);
gboolean vala_method_get_has_construct_function (ValaMethod* self);
ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
gboolean vala_typesymbol_is_subtype_of (ValaTypeSymbol* self, ValaTypeSymbol* t);
ValaObjectType* vala_object_type_new (ValaObjectTypeSymbol* type_symbol);
ValaObjectType* vala_object_type_construct (GType object_type, ValaObjectTypeSymbol* type_symbol);
void vala_expression_set_value_type (ValaExpression* self, ValaDataType* value);
ValaMethod* vala_struct_get_default_construction_method (ValaStruct* self);
gboolean vala_struct_is_boolean_type (ValaStruct* self);
gboolean vala_struct_is_integer_type (ValaStruct* self);
gboolean vala_struct_is_floating_type (ValaStruct* self);
ValaObjectCreationExpression* vala_object_creation_expression_new (ValaMemberAccess* member_name, ValaSourceReference* source_reference);
ValaObjectCreationExpression* vala_object_creation_expression_construct (GType object_type, ValaMemberAccess* member_name, ValaSourceReference* source_reference);
void vala_object_creation_expression_set_struct_creation (ValaObjectCreationExpression* self, gboolean value);
void vala_object_creation_expression_add_argument (ValaObjectCreationExpression* self, ValaExpression* arg);
ValaDataType* vala_expression_get_target_type (ValaExpression* self);
void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
void vala_code_node_replace_expression (ValaCodeNode* self, ValaExpression* old_node, ValaExpression* new_node);
gboolean vala_data_type_is_invokable (ValaDataType* self);
ValaDataType* vala_data_type_get_return_type (ValaDataType* self);
ValaList* vala_data_type_get_parameters (ValaDataType* self);
gboolean vala_method_call_get_is_yield_expression (ValaMethodCall* self);
ValaList* vala_method_get_async_begin_parameters (ValaMethod* self);
ValaVoidType* vala_void_type_new (ValaSourceReference* source_reference);
ValaVoidType* vala_void_type_construct (GType object_type, ValaSourceReference* source_reference);
GType vala_void_type_get_type (void) G_GNUC_CONST;
ValaList* vala_method_get_async_end_parameters (ValaMethod* self);
ValaList* vala_method_get_type_parameters (ValaMethod* self);
ValaList* vala_member_access_get_type_arguments (ValaMemberAccess* self);
gboolean vala_parameter_get_ellipsis (ValaParameter* self);
gboolean vala_parameter_get_params_array (ValaParameter* self);
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
GType vala_array_type_get_type (void) G_GNUC_CONST;
ValaDataType* vala_array_type_get_element_type (ValaArrayType* self);
gboolean vala_data_type_get_value_owned (ValaDataType* self);
void vala_data_type_set_value_owned (ValaDataType* self, gboolean value);
void vala_expression_set_formal_target_type (ValaExpression* self, ValaDataType* value);
ValaDataType* vala_expression_get_formal_target_type (ValaExpression* self);
ValaDataType* vala_data_type_get_actual_type (ValaDataType* self, ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaCodeNode* node_reference);
ValaTemplate* vala_template_new (ValaSourceReference* source_reference);
ValaTemplate* vala_template_construct (GType object_type, ValaSourceReference* source_reference);
void vala_template_add_expression (ValaTemplate* self, ValaExpression* expr);
gboolean vala_method_get_printf_format (ValaMethod* self);
ValaStringLiteral* vala_string_literal_new (const gchar* value, ValaSourceReference* source_reference);
ValaStringLiteral* vala_string_literal_construct (GType object_type, const gchar* value, ValaSourceReference* source_reference);
ValaDataType* vala_data_type_copy (ValaDataType* self);
gchar* vala_string_literal_eval (ValaStringLiteral* self);
ValaPointerType* vala_pointer_type_new (ValaDataType* base_type, ValaSourceReference* source_reference);
ValaPointerType* vala_pointer_type_construct (GType object_type, ValaDataType* base_type, ValaSourceReference* source_reference);
GType vala_pointer_type_get_type (void) G_GNUC_CONST;
void vala_expression_set_formal_value_type (ValaExpression* self, ValaDataType* value);
ValaDataType* vala_expression_get_formal_value_type (ValaExpression* self);
ValaMethod* vala_semantic_analyzer_get_current_method (ValaSemanticAnalyzer* self);
gint vala_method_get_yield_count (ValaMethod* self);
void vala_method_set_yield_count (ValaMethod* self, gint value);
ValaList* vala_code_node_get_error_types (ValaCodeNode* self);
void vala_code_node_add_error_type (ValaCodeNode* self, ValaDataType* error_type);
gboolean vala_method_get_returns_floating_reference (ValaMethod* self);
void vala_data_type_set_floating_reference (ValaDataType* self, gboolean value);
GType vala_dynamic_signal_get_type (void) G_GNUC_CONST;
ValaExpression* vala_dynamic_signal_get_handler (ValaDynamicSignal* self);
void vala_signal_set_return_type (ValaSignal* self, ValaDataType* value);
void vala_signal_add_parameter (ValaSignal* self, ValaParameter* param);
ValaParameter* vala_parameter_copy (ValaParameter* self);
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_generic_type_get_type (void) G_GNUC_CONST;
ValaTypeParameter* vala_data_type_get_type_parameter (ValaDataType* self);
ValaDataType* vala_method_get_return_type (ValaMethod* self);
void vala_member_access_add_type_argument (ValaMemberAccess* self, ValaDataType* arg);
ValaDelegate* vala_delegate_type_get_delegate_symbol (ValaDelegateType* self);
gboolean vala_semantic_analyzer_check_arguments (ValaSemanticAnalyzer* self, ValaExpression* expr, ValaDataType* mtype, ValaList* params, ValaList* args);
ValaSymbol* vala_semantic_analyzer_get_current_symbol (ValaSemanticAnalyzer* self);
gchar* vala_code_node_get_temp_name (void);
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);
void vala_local_variable_set_floating (ValaLocalVariable* self, gboolean value);
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_statement_get_type (void) G_GNUC_CONST;
void vala_expression_insert_statement (ValaExpression* self, ValaBlock* block, ValaStatement* stmt);
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);
void vala_variable_set_initializer (ValaVariable* self, ValaExpression* value);
void vala_block_remove_local_variable (ValaBlock* self, ValaLocalVariable* local);
void vala_block_add_local_variable (ValaBlock* self, ValaLocalVariable* local);
static void vala_method_call_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
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_expression_set_target_value (ValaExpression* self, ValaTargetValue* value);
static void vala_method_call_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection);
void vala_code_node_get_defined_variables (ValaCodeNode* self, ValaCollection* collection);
static void vala_method_call_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection);
void vala_code_node_get_used_variables (ValaCodeNode* self, ValaCollection* collection);
void vala_method_call_set_is_yield_expression (ValaMethodCall* self, gboolean value);
gboolean vala_method_call_get_is_assert (ValaMethodCall* self);
static void vala_method_call_finalize (ValaCodeNode* obj);


/**
 * Creates a new invocation expression.
 *
 * @param call             method to call
 * @param source_reference reference to source code
 * @return                 newly created invocation expression
 */
ValaMethodCall* vala_method_call_construct (GType object_type, ValaExpression* call, ValaSourceReference* source_reference) {
      ValaMethodCall* self = NULL;
      g_return_val_if_fail (call != NULL, NULL);
      self = (ValaMethodCall*) vala_expression_construct (object_type);
      vala_code_node_set_source_reference ((ValaCodeNode*) self, source_reference);
      vala_method_call_set_call (self, call);
      return self;
}


ValaMethodCall* vala_method_call_new (ValaExpression* call, ValaSourceReference* source_reference) {
      return vala_method_call_construct (VALA_TYPE_METHOD_CALL, call, source_reference);
}


/**
 * Appends the specified expression to the list of arguments.
 *
 * @param arg an argument
 */
void vala_method_call_add_argument (ValaMethodCall* self, ValaExpression* arg) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (arg != NULL);
      vala_collection_add ((ValaCollection*) self->priv->argument_list, arg);
      vala_code_node_set_parent_node ((ValaCodeNode*) arg, (ValaCodeNode*) self);
}


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


ValaList* vala_method_call_get_argument_list (ValaMethodCall* self) {
      ValaList* result = NULL;
      ValaList* _tmp0_;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp0_ = _vala_iterable_ref0 (self->priv->argument_list);
      result = _tmp0_;
      return result;
}


static void vala_method_call_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaMethodCall * self;
      self = (ValaMethodCall*) base;
      g_return_if_fail (visitor != NULL);
      vala_code_visitor_visit_method_call (visitor, self);
      vala_code_visitor_visit_expression (visitor, (ValaExpression*) self);
}


static void vala_method_call_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaMethodCall * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMethodCall*) base;
      g_return_if_fail (visitor != NULL);
      _tmp0_ = vala_method_call_get_call (self);
      vala_code_node_accept ((ValaCodeNode*) _tmp0_, visitor);
      {
            ValaList* _tmp1_;
            ValaList* _expr_list;
            gint _tmp2_;
            gint _expr_size;
            gint _expr_index;
            _tmp1_ = _vala_iterable_ref0 (self->priv->argument_list);
            _expr_list = _tmp1_;
            _tmp2_ = vala_collection_get_size ((ValaCollection*) _expr_list);
            _expr_size = _tmp2_;
            _expr_index = -1;
            while (TRUE) {
                  gpointer _tmp3_ = NULL;
                  ValaExpression* expr;
                  _expr_index = _expr_index + 1;
                  if (!(_expr_index < _expr_size)) {
                        break;
                  }
                  _tmp3_ = vala_list_get (_expr_list, _expr_index);
                  expr = (ValaExpression*) _tmp3_;
                  vala_code_node_accept ((ValaCodeNode*) expr, visitor);
                  _vala_code_node_unref0 (expr);
            }
            _vala_iterable_unref0 (_expr_list);
      }
}


static void vala_method_call_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node) {
      ValaMethodCall * self;
      ValaExpression* _tmp0_ = NULL;
      gint _tmp1_;
      gint index;
      gboolean _tmp2_ = FALSE;
      self = (ValaMethodCall*) base;
      g_return_if_fail (old_node != NULL);
      g_return_if_fail (new_node != NULL);
      _tmp0_ = vala_method_call_get_call (self);
      if (_tmp0_ == old_node) {
            vala_method_call_set_call (self, new_node);
      }
      _tmp1_ = vala_list_index_of (self->priv->argument_list, old_node);
      index = _tmp1_;
      if (index >= 0) {
            ValaCodeNode* _tmp3_ = NULL;
            _tmp3_ = vala_code_node_get_parent_node ((ValaCodeNode*) new_node);
            _tmp2_ = _tmp3_ == NULL;
      } else {
            _tmp2_ = FALSE;
      }
      if (_tmp2_) {
            vala_list_set (self->priv->argument_list, index, new_node);
            vala_code_node_set_parent_node ((ValaCodeNode*) new_node, (ValaCodeNode*) self);
      }
}


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


static gboolean vala_method_call_real_is_constant (ValaExpression* base) {
      ValaMethodCall * self;
      gboolean result = FALSE;
      ValaExpression* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaMethodType* _tmp3_;
      ValaMethodType* method_type;
      self = (ValaMethodCall*) base;
      _tmp0_ = vala_method_call_get_call (self);
      _tmp1_ = vala_expression_get_value_type (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = _vala_code_node_ref0 (VALA_IS_METHOD_TYPE (_tmp2_) ? ((ValaMethodType*) _tmp2_) : NULL);
      method_type = _tmp3_;
      if (method_type != NULL) {
            ValaMethod* _tmp4_ = NULL;
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            gboolean _tmp7_;
            _tmp4_ = vala_method_type_get_method_symbol (method_type);
            _tmp5_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp4_);
            _tmp6_ = _tmp5_;
            _tmp7_ = g_strcmp0 (_tmp6_, "GLib.N_") == 0;
            _g_free0 (_tmp6_);
            if (_tmp7_) {
                  gpointer _tmp8_ = NULL;
                  ValaExpression* _tmp9_;
                  gboolean _tmp10_;
                  gboolean _tmp11_;
                  _tmp8_ = vala_list_get (self->priv->argument_list, 0);
                  _tmp9_ = (ValaExpression*) _tmp8_;
                  _tmp10_ = vala_expression_is_constant (_tmp9_);
                  _tmp11_ = _tmp10_;
                  _vala_code_node_unref0 (_tmp9_);
                  result = _tmp11_;
                  _vala_code_node_unref0 (method_type);
                  return result;
            } else {
                  ValaMethod* _tmp12_ = NULL;
                  gchar* _tmp13_ = NULL;
                  gchar* _tmp14_;
                  gboolean _tmp15_;
                  _tmp12_ = vala_method_type_get_method_symbol (method_type);
                  _tmp13_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp12_);
                  _tmp14_ = _tmp13_;
                  _tmp15_ = g_strcmp0 (_tmp14_, "GLib.NC_") == 0;
                  _g_free0 (_tmp14_);
                  if (_tmp15_) {
                        gpointer _tmp16_ = NULL;
                        ValaExpression* _tmp17_;
                        gboolean _tmp18_;
                        gboolean _tmp19_;
                        _tmp16_ = vala_list_get (self->priv->argument_list, 1);
                        _tmp17_ = (ValaExpression*) _tmp16_;
                        _tmp18_ = vala_expression_is_constant (_tmp17_);
                        _tmp19_ = _tmp18_;
                        _vala_code_node_unref0 (_tmp17_);
                        result = _tmp19_;
                        _vala_code_node_unref0 (method_type);
                        return result;
                  }
            }
      }
      result = FALSE;
      _vala_code_node_unref0 (method_type);
      return result;
}


static gboolean vala_method_call_real_is_pure (ValaExpression* base) {
      ValaMethodCall * self;
      gboolean result = FALSE;
      self = (ValaMethodCall*) base;
      result = FALSE;
      return result;
}


static gboolean vala_method_call_is_chainup (ValaMethodCall* self) {
      gboolean result = FALSE;
      ValaExpression* _tmp0_ = NULL;
      ValaSymbol* _tmp1_ = NULL;
      ValaExpression* _tmp2_ = NULL;
      ValaExpression* _tmp3_;
      ValaExpression* expr;
      ValaExpression* _tmp4_ = NULL;
      ValaMemberAccess* _tmp5_;
      ValaMemberAccess* ma;
      ValaExpression* _tmp6_ = NULL;
      ValaExpression* _tmp9_;
      ValaMemberAccess* _tmp10_;
      gboolean _tmp11_ = FALSE;
      g_return_val_if_fail (self != NULL, FALSE);
      _tmp0_ = vala_method_call_get_call (self);
      _tmp1_ = vala_expression_get_symbol_reference (_tmp0_);
      if (!VALA_IS_CREATION_METHOD (_tmp1_)) {
            result = FALSE;
            return result;
      }
      _tmp2_ = vala_method_call_get_call (self);
      _tmp3_ = _vala_code_node_ref0 (_tmp2_);
      expr = _tmp3_;
      _tmp4_ = vala_method_call_get_call (self);
      _tmp5_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp4_));
      ma = _tmp5_;
      _tmp6_ = vala_member_access_get_inner (ma);
      if (_tmp6_ != NULL) {
            ValaExpression* _tmp7_ = NULL;
            ValaExpression* _tmp8_;
            _tmp7_ = vala_member_access_get_inner (ma);
            _tmp8_ = _vala_code_node_ref0 (_tmp7_);
            _vala_code_node_unref0 (expr);
            expr = _tmp8_;
      }
      _tmp9_ = expr;
      _tmp10_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp9_) ? ((ValaMemberAccess*) _tmp9_) : NULL);
      _vala_code_node_unref0 (ma);
      ma = _tmp10_;
      if (ma != NULL) {
            const gchar* _tmp12_ = NULL;
            _tmp12_ = vala_member_access_get_member_name (ma);
            _tmp11_ = g_strcmp0 (_tmp12_, "this") == 0;
      } else {
            _tmp11_ = FALSE;
      }
      if (_tmp11_) {
            result = TRUE;
            _vala_code_node_unref0 (ma);
            _vala_code_node_unref0 (expr);
            return result;
      } else {
            if (VALA_IS_BASE_ACCESS (expr)) {
                  result = TRUE;
                  _vala_code_node_unref0 (ma);
                  _vala_code_node_unref0 (expr);
                  return result;
            } else {
                  result = FALSE;
                  _vala_code_node_unref0 (ma);
                  _vala_code_node_unref0 (expr);
                  return result;
            }
      }
      _vala_code_node_unref0 (ma);
      _vala_code_node_unref0 (expr);
}


static gunichar string_get_char (const gchar* self, glong index) {
      gunichar result = 0U;
      gunichar _tmp0_;
      g_return_val_if_fail (self != NULL, 0U);
      _tmp0_ = g_utf8_get_char (((gchar*) self) + index);
      result = _tmp0_;
      return result;
}


static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext* context) {
      ValaMethodCall * self;
      gboolean result = FALSE;
      gboolean _tmp0_;
      ValaExpression* _tmp2_ = NULL;
      gboolean _tmp3_;
      ValaDataType* target_object_type;
      ValaExpression* _tmp4_ = NULL;
      ValaDataType* _tmp5_ = NULL;
      ValaExpression* _tmp53_ = NULL;
      ValaDataType* _tmp54_ = NULL;
      ValaDataType* _tmp55_;
      ValaDataType* mtype;
      gboolean _tmp56_ = FALSE;
      gboolean _tmp98_ = FALSE;
      ValaExpression* _tmp99_ = NULL;
      gboolean _tmp156_ = FALSE;
      ValaDataType* _tmp162_ = NULL;
      ValaDataType* ret_type;
      ValaList* _tmp163_ = NULL;
      ValaList* params;
      ValaExpression* last_arg;
      ValaList* _tmp199_ = NULL;
      ValaList* args;
      ValaIterator* _tmp200_ = NULL;
      ValaIterator* arg_it;
      gboolean _tmp222_ = FALSE;
      gboolean _tmp231_ = FALSE;
      ValaDataType* _tmp339_ = NULL;
      ValaExpression* _tmp340_ = NULL;
      ValaExpression* _tmp341_;
      ValaDataType* _tmp342_ = NULL;
      ValaDataType* _tmp343_;
      gboolean may_throw;
      ValaSemanticAnalyzer* _tmp481_ = NULL;
      ValaList* _tmp482_ = NULL;
      ValaList* _tmp483_;
      gboolean _tmp484_;
      gboolean _tmp485_;
      gboolean _tmp512_;
      self = (ValaMethodCall*) base;
      g_return_val_if_fail (context != NULL, FALSE);
      _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
      if (_tmp0_) {
            gboolean _tmp1_;
            _tmp1_ = vala_code_node_get_error ((ValaCodeNode*) self);
            result = !_tmp1_;
            return result;
      }
      vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
      _tmp2_ = vala_method_call_get_call (self);
      _tmp3_ = vala_code_node_check ((ValaCodeNode*) _tmp2_, context);
      if (!_tmp3_) {
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            result = FALSE;
            return result;
      }
      target_object_type = NULL;
      _tmp4_ = vala_method_call_get_call (self);
      _tmp5_ = vala_expression_get_value_type (_tmp4_);
      if (VALA_IS_DELEGATE_TYPE (_tmp5_)) {
            ValaExpression* _tmp6_ = NULL;
            ValaDataType* _tmp7_ = NULL;
            ValaDataType* _tmp8_;
            _tmp6_ = vala_method_call_get_call (self);
            _tmp7_ = vala_expression_get_value_type (_tmp6_);
            _tmp8_ = _vala_code_node_ref0 (_tmp7_);
            _vala_code_node_unref0 (target_object_type);
            target_object_type = _tmp8_;
      } else {
            ValaExpression* _tmp9_ = NULL;
            _tmp9_ = vala_method_call_get_call (self);
            if (VALA_IS_MEMBER_ACCESS (_tmp9_)) {
                  ValaExpression* _tmp10_ = NULL;
                  ValaMemberAccess* _tmp11_;
                  ValaMemberAccess* ma;
                  gboolean _tmp12_;
                  ValaExpression* _tmp20_ = NULL;
                  gboolean _tmp48_ = FALSE;
                  ValaSymbol* _tmp49_ = NULL;
                  _tmp10_ = vala_method_call_get_call (self);
                  _tmp11_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp10_));
                  ma = _tmp11_;
                  _tmp12_ = vala_member_access_get_prototype_access (ma);
                  if (_tmp12_) {
                        ValaSourceReference* _tmp13_ = NULL;
                        ValaExpression* _tmp14_ = NULL;
                        ValaSymbol* _tmp15_ = NULL;
                        gchar* _tmp16_ = NULL;
                        gchar* _tmp17_;
                        gchar* _tmp18_ = NULL;
                        gchar* _tmp19_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp13_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp14_ = vala_method_call_get_call (self);
                        _tmp15_ = vala_expression_get_symbol_reference (_tmp14_);
                        _tmp16_ = vala_symbol_get_full_name (_tmp15_);
                        _tmp17_ = _tmp16_;
                        _tmp18_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp17_);
                        _tmp19_ = _tmp18_;
                        vala_report_error (_tmp13_, _tmp19_);
                        _g_free0 (_tmp19_);
                        _g_free0 (_tmp17_);
                        result = FALSE;
                        _vala_code_node_unref0 (ma);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  }
                  _tmp20_ = vala_member_access_get_inner (ma);
                  if (_tmp20_ != NULL) {
                        ValaExpression* _tmp21_ = NULL;
                        ValaDataType* _tmp22_ = NULL;
                        ValaDataType* _tmp23_;
                        ValaExpression* _tmp24_ = NULL;
                        ValaSymbol* _tmp25_ = NULL;
                        ValaSymbol* _tmp32_ = NULL;
                        ValaSymbol* _tmp33_;
                        ValaMethod* _tmp34_;
                        ValaMethod* m;
                        gboolean _tmp35_ = FALSE;
                        _tmp21_ = vala_member_access_get_inner (ma);
                        _tmp22_ = vala_expression_get_value_type (_tmp21_);
                        _tmp23_ = _vala_code_node_ref0 (_tmp22_);
                        _vala_code_node_unref0 (target_object_type);
                        target_object_type = _tmp23_;
                        _tmp24_ = vala_member_access_get_inner (ma);
                        _tmp25_ = vala_expression_get_symbol_reference (_tmp24_);
                        if (VALA_IS_SIGNAL (_tmp25_)) {
                              ValaExpression* _tmp26_ = NULL;
                              ValaExpression* _tmp27_;
                              ValaMemberAccess* _tmp28_;
                              ValaMemberAccess* sig;
                              _tmp26_ = vala_member_access_get_inner (ma);
                              _tmp27_ = _tmp26_;
                              _tmp28_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp27_) ? ((ValaMemberAccess*) _tmp27_) : NULL);
                              sig = _tmp28_;
                              if (sig != NULL) {
                                    ValaExpression* _tmp29_ = NULL;
                                    ValaDataType* _tmp30_ = NULL;
                                    ValaDataType* _tmp31_;
                                    _tmp29_ = vala_member_access_get_inner (sig);
                                    _tmp30_ = vala_expression_get_value_type (_tmp29_);
                                    _tmp31_ = _vala_code_node_ref0 (_tmp30_);
                                    _vala_code_node_unref0 (target_object_type);
                                    target_object_type = _tmp31_;
                              }
                              _vala_code_node_unref0 (sig);
                        }
                        _tmp32_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        _tmp33_ = _tmp32_;
                        _tmp34_ = _vala_code_node_ref0 (VALA_IS_METHOD (_tmp33_) ? ((ValaMethod*) _tmp33_) : NULL);
                        m = _tmp34_;
                        if (m != NULL) {
                              gboolean _tmp36_;
                              _tmp36_ = vala_method_get_coroutine (m);
                              _tmp35_ = _tmp36_;
                        } else {
                              _tmp35_ = FALSE;
                        }
                        if (_tmp35_) {
                              gboolean _tmp37_ = FALSE;
                              const gchar* _tmp38_ = NULL;
                              _tmp38_ = vala_member_access_get_member_name (ma);
                              if (g_strcmp0 (_tmp38_, "begin") == 0) {
                                    _tmp37_ = TRUE;
                              } else {
                                    const gchar* _tmp39_ = NULL;
                                    _tmp39_ = vala_member_access_get_member_name (ma);
                                    _tmp37_ = g_strcmp0 (_tmp39_, "end") == 0;
                              }
                              if (_tmp37_) {
                                    ValaExpression* _tmp40_ = NULL;
                                    ValaExpression* _tmp41_;
                                    ValaMemberAccess* _tmp42_;
                                    ValaMemberAccess* method_access;
                                    gboolean _tmp43_ = FALSE;
                                    _tmp40_ = vala_member_access_get_inner (ma);
                                    _tmp41_ = _tmp40_;
                                    _tmp42_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp41_) ? ((ValaMemberAccess*) _tmp41_) : NULL);
                                    method_access = _tmp42_;
                                    if (method_access != NULL) {
                                          ValaExpression* _tmp44_ = NULL;
                                          _tmp44_ = vala_member_access_get_inner (method_access);
                                          _tmp43_ = _tmp44_ != NULL;
                                    } else {
                                          _tmp43_ = FALSE;
                                    }
                                    if (_tmp43_) {
                                          ValaExpression* _tmp45_ = NULL;
                                          ValaDataType* _tmp46_ = NULL;
                                          ValaDataType* _tmp47_;
                                          _tmp45_ = vala_member_access_get_inner (method_access);
                                          _tmp46_ = vala_expression_get_value_type (_tmp45_);
                                          _tmp47_ = _vala_code_node_ref0 (_tmp46_);
                                          _vala_code_node_unref0 (target_object_type);
                                          target_object_type = _tmp47_;
                                    } else {
                                          _vala_code_node_unref0 (target_object_type);
                                          target_object_type = NULL;
                                    }
                                    _vala_code_node_unref0 (method_access);
                              }
                        }
                        _vala_code_node_unref0 (m);
                  }
                  _tmp49_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                  if (_tmp49_ != NULL) {
                        ValaSymbol* _tmp50_ = NULL;
                        ValaAttribute* _tmp51_ = NULL;
                        ValaAttribute* _tmp52_;
                        _tmp50_ = vala_expression_get_symbol_reference ((ValaExpression*) ma);
                        _tmp51_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp50_, "Assert");
                        _tmp52_ = _tmp51_;
                        _tmp48_ = _tmp52_ != NULL;
                        _vala_code_node_unref0 (_tmp52_);
                  } else {
                        _tmp48_ = FALSE;
                  }
                  if (_tmp48_) {
                        vala_method_call_set_is_assert (self, TRUE);
                  }
                  _vala_code_node_unref0 (ma);
            }
      }
      _tmp53_ = vala_method_call_get_call (self);
      _tmp54_ = vala_expression_get_value_type (_tmp53_);
      _tmp55_ = _vala_code_node_ref0 (_tmp54_);
      mtype = _tmp55_;
      if (VALA_IS_OBJECT_TYPE (mtype)) {
            _tmp56_ = TRUE;
      } else {
            gboolean _tmp57_ = FALSE;
            ValaProfile _tmp58_;
            _tmp58_ = vala_code_context_get_profile (context);
            if (_tmp58_ == VALA_PROFILE_GOBJECT) {
                  ValaExpression* _tmp59_ = NULL;
                  ValaSymbol* _tmp60_ = NULL;
                  ValaSemanticAnalyzer* _tmp61_ = NULL;
                  _tmp59_ = vala_method_call_get_call (self);
                  _tmp60_ = vala_expression_get_symbol_reference (_tmp59_);
                  _tmp61_ = vala_code_context_get_analyzer (context);
                  _tmp57_ = _tmp60_ == VALA_SYMBOL (_tmp61_->object_type);
            } else {
                  _tmp57_ = FALSE;
            }
            _tmp56_ = _tmp57_;
      }
      if (_tmp56_) {
            ValaSemanticAnalyzer* _tmp62_ = NULL;
            ValaMethod* _tmp63_ = NULL;
            ValaMethod* _tmp64_;
            ValaCreationMethod* cm;
            _tmp62_ = vala_code_context_get_analyzer (context);
            _tmp63_ = vala_semantic_analyzer_find_current_method (_tmp62_);
            _tmp64_ = _tmp63_;
            cm = VALA_IS_CREATION_METHOD (_tmp64_) ? ((ValaCreationMethod*) _tmp64_) : NULL;
            if (cm == NULL) {
                  ValaSourceReference* _tmp65_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp65_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp65_, "invocation not supported in this context");
                  result = FALSE;
                  _vala_code_node_unref0 (cm);
                  _vala_code_node_unref0 (mtype);
                  _vala_code_node_unref0 (target_object_type);
                  return result;
            } else {
                  gboolean _tmp66_;
                  _tmp66_ = vala_creation_method_get_chain_up (cm);
                  if (_tmp66_) {
                        ValaSourceReference* _tmp67_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp67_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp67_, "Multiple constructor calls in the same constructor are not permitted");
                        result = FALSE;
                        _vala_code_node_unref0 (cm);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  }
            }
            vala_creation_method_set_chain_up (cm, TRUE);
            if (VALA_IS_OBJECT_TYPE (mtype)) {
                  ValaObjectType* _tmp68_;
                  ValaObjectType* otype;
                  ValaObjectTypeSymbol* _tmp69_ = NULL;
                  ValaClass* _tmp70_;
                  ValaClass* cl;
                  ValaMethod* _tmp71_ = NULL;
                  ValaMethod* _tmp72_;
                  ValaMethod* base_cm;
                  _tmp68_ = _vala_code_node_ref0 (VALA_OBJECT_TYPE (mtype));
                  otype = _tmp68_;
                  _tmp69_ = vala_object_type_get_type_symbol (otype);
                  _tmp70_ = _vala_code_node_ref0 (VALA_CLASS (_tmp69_));
                  cl = _tmp70_;
                  _tmp71_ = vala_class_get_default_construction_method (cl);
                  _tmp72_ = _vala_code_node_ref0 (_tmp71_);
                  base_cm = _tmp72_;
                  if (base_cm == NULL) {
                        ValaSourceReference* _tmp73_ = NULL;
                        gchar* _tmp74_ = NULL;
                        gchar* _tmp75_;
                        gchar* _tmp76_ = NULL;
                        gchar* _tmp77_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp73_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp74_ = vala_symbol_get_full_name ((ValaSymbol*) cl);
                        _tmp75_ = _tmp74_;
                        _tmp76_ = g_strdup_printf ("chain up to `%s' not supported", _tmp75_);
                        _tmp77_ = _tmp76_;
                        vala_report_error (_tmp73_, _tmp77_);
                        _g_free0 (_tmp77_);
                        _g_free0 (_tmp75_);
                        result = FALSE;
                        _vala_code_node_unref0 (base_cm);
                        _vala_code_node_unref0 (cl);
                        _vala_code_node_unref0 (otype);
                        _vala_code_node_unref0 (cm);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  } else {
                        gboolean _tmp78_;
                        _tmp78_ = vala_method_get_has_construct_function (base_cm);
                        if (!_tmp78_) {
                              ValaSourceReference* _tmp79_ = NULL;
                              gchar* _tmp80_ = NULL;
                              gchar* _tmp81_;
                              gchar* _tmp82_ = NULL;
                              gchar* _tmp83_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp79_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp80_ = vala_symbol_get_full_name ((ValaSymbol*) base_cm);
                              _tmp81_ = _tmp80_;
                              _tmp82_ = g_strdup_printf ("chain up to `%s' not supported", _tmp81_);
                              _tmp83_ = _tmp82_;
                              vala_report_error (_tmp79_, _tmp83_);
                              _g_free0 (_tmp83_);
                              _g_free0 (_tmp81_);
                              result = FALSE;
                              _vala_code_node_unref0 (base_cm);
                              _vala_code_node_unref0 (cl);
                              _vala_code_node_unref0 (otype);
                              _vala_code_node_unref0 (cm);
                              _vala_code_node_unref0 (mtype);
                              _vala_code_node_unref0 (target_object_type);
                              return result;
                        }
                  }
                  _vala_code_node_unref0 (base_cm);
                  _vala_code_node_unref0 (cl);
                  _vala_code_node_unref0 (otype);
            } else {
                  ValaSymbol* _tmp84_ = NULL;
                  ValaSymbol* _tmp85_;
                  ValaClass* _tmp86_;
                  ValaClass* cl;
                  gboolean _tmp87_ = FALSE;
                  ValaExpression* _tmp91_ = NULL;
                  ValaSemanticAnalyzer* _tmp92_ = NULL;
                  ValaObjectType* _tmp93_ = NULL;
                  ValaObjectType* _tmp94_;
                  ValaExpression* _tmp95_ = NULL;
                  ValaDataType* _tmp96_ = NULL;
                  ValaDataType* _tmp97_;
                  _tmp84_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cm);
                  _tmp85_ = _tmp84_;
                  _tmp86_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp85_) ? ((ValaClass*) _tmp85_) : NULL);
                  cl = _tmp86_;
                  if (cl == NULL) {
                        _tmp87_ = TRUE;
                  } else {
                        ValaSemanticAnalyzer* _tmp88_ = NULL;
                        gboolean _tmp89_;
                        _tmp88_ = vala_code_context_get_analyzer (context);
                        _tmp89_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp88_->object_type);
                        _tmp87_ = !_tmp89_;
                  }
                  if (_tmp87_) {
                        ValaSourceReference* _tmp90_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp90_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp90_, "chain up to `GLib.Object' not supported");
                        result = FALSE;
                        _vala_code_node_unref0 (cl);
                        _vala_code_node_unref0 (cm);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  }
                  _tmp91_ = vala_method_call_get_call (self);
                  _tmp92_ = vala_code_context_get_analyzer (context);
                  _tmp93_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp92_->object_type);
                  _tmp94_ = _tmp93_;
                  vala_expression_set_value_type (_tmp91_, (ValaDataType*) _tmp94_);
                  _vala_code_node_unref0 (_tmp94_);
                  _tmp95_ = vala_method_call_get_call (self);
                  _tmp96_ = vala_expression_get_value_type (_tmp95_);
                  _tmp97_ = _vala_code_node_ref0 (_tmp96_);
                  _vala_code_node_unref0 (mtype);
                  mtype = _tmp97_;
                  _vala_code_node_unref0 (cl);
            }
            _vala_code_node_unref0 (cm);
      }
      _tmp99_ = vala_method_call_get_call (self);
      if (VALA_IS_MEMBER_ACCESS (_tmp99_)) {
            gboolean _tmp100_ = FALSE;
            gboolean _tmp101_ = FALSE;
            ValaExpression* _tmp102_ = NULL;
            ValaSymbol* _tmp103_ = NULL;
            _tmp102_ = vala_method_call_get_call (self);
            _tmp103_ = vala_expression_get_symbol_reference (_tmp102_);
            if (VALA_IS_CREATION_METHOD (_tmp103_)) {
                  ValaExpression* _tmp104_ = NULL;
                  ValaSymbol* _tmp105_ = NULL;
                  ValaSymbol* _tmp106_ = NULL;
                  _tmp104_ = vala_method_call_get_call (self);
                  _tmp105_ = vala_expression_get_symbol_reference (_tmp104_);
                  _tmp106_ = vala_symbol_get_parent_symbol (_tmp105_);
                  _tmp101_ = VALA_IS_STRUCT (_tmp106_);
            } else {
                  _tmp101_ = FALSE;
            }
            if (_tmp101_) {
                  _tmp100_ = TRUE;
            } else {
                  ValaExpression* _tmp107_ = NULL;
                  ValaSymbol* _tmp108_ = NULL;
                  _tmp107_ = vala_method_call_get_call (self);
                  _tmp108_ = vala_expression_get_symbol_reference (_tmp107_);
                  _tmp100_ = VALA_IS_STRUCT (_tmp108_);
            }
            _tmp98_ = _tmp100_;
      } else {
            _tmp98_ = FALSE;
      }
      if (_tmp98_) {
            ValaExpression* _tmp109_ = NULL;
            ValaSymbol* _tmp110_ = NULL;
            ValaSymbol* _tmp111_;
            ValaStruct* _tmp112_;
            ValaStruct* st;
            gboolean _tmp113_ = FALSE;
            gboolean _tmp114_ = FALSE;
            gboolean _tmp122_;
            ValaExpression* _tmp128_ = NULL;
            ValaSourceReference* _tmp129_ = NULL;
            ValaObjectCreationExpression* _tmp130_ = NULL;
            ValaObjectCreationExpression* struct_creation_expression;
            ValaDataType* _tmp134_ = NULL;
            ValaSemanticAnalyzer* _tmp135_ = NULL;
            ValaCodeNode* _tmp136_ = NULL;
            _tmp109_ = vala_method_call_get_call (self);
            _tmp110_ = vala_expression_get_symbol_reference (_tmp109_);
            _tmp111_ = _tmp110_;
            _tmp112_ = _vala_code_node_ref0 (VALA_IS_STRUCT (_tmp111_) ? ((ValaStruct*) _tmp111_) : NULL);
            st = _tmp112_;
            if (st != NULL) {
                  ValaMethod* _tmp115_ = NULL;
                  _tmp115_ = vala_struct_get_default_construction_method (st);
                  _tmp114_ = _tmp115_ == NULL;
            } else {
                  _tmp114_ = FALSE;
            }
            if (_tmp114_) {
                  gboolean _tmp116_ = FALSE;
                  gboolean _tmp117_ = FALSE;
                  gboolean _tmp118_;
                  _tmp118_ = vala_struct_is_boolean_type (st);
                  if (_tmp118_) {
                        _tmp117_ = TRUE;
                  } else {
                        gboolean _tmp119_;
                        _tmp119_ = vala_struct_is_integer_type (st);
                        _tmp117_ = _tmp119_;
                  }
                  if (_tmp117_) {
                        _tmp116_ = TRUE;
                  } else {
                        gboolean _tmp120_;
                        _tmp120_ = vala_struct_is_floating_type (st);
                        _tmp116_ = _tmp120_;
                  }
                  _tmp113_ = _tmp116_;
            } else {
                  _tmp113_ = FALSE;
            }
            if (_tmp113_) {
                  ValaSourceReference* _tmp121_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp121_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp121_, "invocation not supported in this context");
                  result = FALSE;
                  _vala_code_node_unref0 (st);
                  _vala_code_node_unref0 (mtype);
                  _vala_code_node_unref0 (target_object_type);
                  return result;
            }
            _tmp122_ = vala_method_call_is_chainup (self);
            if (_tmp122_) {
                  ValaSemanticAnalyzer* _tmp123_ = NULL;
                  ValaMethod* _tmp124_ = NULL;
                  ValaMethod* _tmp125_;
                  ValaCreationMethod* cm;
                  _tmp123_ = vala_code_context_get_analyzer (context);
                  _tmp124_ = vala_semantic_analyzer_find_current_method (_tmp123_);
                  _tmp125_ = _tmp124_;
                  cm = VALA_IS_CREATION_METHOD (_tmp125_) ? ((ValaCreationMethod*) _tmp125_) : NULL;
                  if (cm != NULL) {
                        gboolean _tmp126_;
                        _tmp126_ = vala_creation_method_get_chain_up (cm);
                        if (_tmp126_) {
                              ValaSourceReference* _tmp127_ = NULL;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp127_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp127_, "Multiple constructor calls in the same constructor are not permitted");
                              result = FALSE;
                              _vala_code_node_unref0 (cm);
                              _vala_code_node_unref0 (st);
                              _vala_code_node_unref0 (mtype);
                              _vala_code_node_unref0 (target_object_type);
                              return result;
                        }
                        vala_creation_method_set_chain_up (cm, TRUE);
                  }
                  _vala_code_node_unref0 (cm);
            }
            _tmp128_ = vala_method_call_get_call (self);
            _tmp129_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp130_ = vala_object_creation_expression_new (VALA_MEMBER_ACCESS (_tmp128_), _tmp129_);
            struct_creation_expression = _tmp130_;
            vala_object_creation_expression_set_struct_creation (struct_creation_expression, TRUE);
            {
                  ValaList* _tmp131_ = NULL;
                  ValaList* _arg_list;
                  gint _tmp132_;
                  gint _arg_size;
                  gint _arg_index;
                  _tmp131_ = vala_method_call_get_argument_list (self);
                  _arg_list = _tmp131_;
                  _tmp132_ = vala_collection_get_size ((ValaCollection*) _arg_list);
                  _arg_size = _tmp132_;
                  _arg_index = -1;
                  while (TRUE) {
                        gpointer _tmp133_ = NULL;
                        ValaExpression* arg;
                        _arg_index = _arg_index + 1;
                        if (!(_arg_index < _arg_size)) {
                              break;
                        }
                        _tmp133_ = vala_list_get (_arg_list, _arg_index);
                        arg = (ValaExpression*) _tmp133_;
                        vala_object_creation_expression_add_argument (struct_creation_expression, arg);
                        _vala_code_node_unref0 (arg);
                  }
                  _vala_iterable_unref0 (_arg_list);
            }
            _tmp134_ = vala_expression_get_target_type ((ValaExpression*) self);
            vala_expression_set_target_type ((ValaExpression*) struct_creation_expression, _tmp134_);
            _tmp135_ = vala_code_context_get_analyzer (context);
            vala_collection_add ((ValaCollection*) _tmp135_->replaced_nodes, (ValaCodeNode*) self);
            _tmp136_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
            vala_code_node_replace_expression (_tmp136_, (ValaExpression*) self, (ValaExpression*) struct_creation_expression);
            vala_code_node_check ((ValaCodeNode*) struct_creation_expression, context);
            result = TRUE;
            _vala_code_node_unref0 (struct_creation_expression);
            _vala_code_node_unref0 (st);
            _vala_code_node_unref0 (mtype);
            _vala_code_node_unref0 (target_object_type);
            return result;
      } else {
            gboolean _tmp137_ = FALSE;
            ValaExpression* _tmp138_ = NULL;
            _tmp138_ = vala_method_call_get_call (self);
            if (VALA_IS_MEMBER_ACCESS (_tmp138_)) {
                  ValaExpression* _tmp139_ = NULL;
                  ValaSymbol* _tmp140_ = NULL;
                  _tmp139_ = vala_method_call_get_call (self);
                  _tmp140_ = vala_expression_get_symbol_reference (_tmp139_);
                  _tmp137_ = VALA_IS_CREATION_METHOD (_tmp140_);
            } else {
                  _tmp137_ = FALSE;
            }
            if (_tmp137_) {
                  ValaSemanticAnalyzer* _tmp141_ = NULL;
                  ValaMethod* _tmp142_ = NULL;
                  ValaMethod* _tmp143_;
                  ValaCreationMethod* cm;
                  ValaExpression* _tmp147_ = NULL;
                  ValaSymbol* _tmp148_ = NULL;
                  ValaCreationMethod* _tmp149_;
                  ValaCreationMethod* base_cm;
                  gboolean _tmp150_;
                  _tmp141_ = vala_code_context_get_analyzer (context);
                  _tmp142_ = vala_semantic_analyzer_find_current_method (_tmp141_);
                  _tmp143_ = _tmp142_;
                  cm = VALA_IS_CREATION_METHOD (_tmp143_) ? ((ValaCreationMethod*) _tmp143_) : NULL;
                  if (cm == NULL) {
                        ValaSourceReference* _tmp144_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp144_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp144_, "use `new' operator to create new objects");
                        result = FALSE;
                        _vala_code_node_unref0 (cm);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  } else {
                        gboolean _tmp145_;
                        _tmp145_ = vala_creation_method_get_chain_up (cm);
                        if (_tmp145_) {
                              ValaSourceReference* _tmp146_ = NULL;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp146_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp146_, "Multiple constructor calls in the same constructor are not permitted");
                              result = FALSE;
                              _vala_code_node_unref0 (cm);
                              _vala_code_node_unref0 (mtype);
                              _vala_code_node_unref0 (target_object_type);
                              return result;
                        }
                  }
                  vala_creation_method_set_chain_up (cm, TRUE);
                  _tmp147_ = vala_method_call_get_call (self);
                  _tmp148_ = vala_expression_get_symbol_reference (_tmp147_);
                  _tmp149_ = _vala_code_node_ref0 (VALA_CREATION_METHOD (_tmp148_));
                  base_cm = _tmp149_;
                  _tmp150_ = vala_method_get_has_construct_function ((ValaMethod*) base_cm);
                  if (!_tmp150_) {
                        ValaSourceReference* _tmp151_ = NULL;
                        gchar* _tmp152_ = NULL;
                        gchar* _tmp153_;
                        gchar* _tmp154_ = NULL;
                        gchar* _tmp155_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp151_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp152_ = vala_symbol_get_full_name ((ValaSymbol*) base_cm);
                        _tmp153_ = _tmp152_;
                        _tmp154_ = g_strdup_printf ("chain up to `%s' not supported", _tmp153_);
                        _tmp155_ = _tmp154_;
                        vala_report_error (_tmp151_, _tmp155_);
                        _g_free0 (_tmp155_);
                        _g_free0 (_tmp153_);
                        result = FALSE;
                        _vala_code_node_unref0 (base_cm);
                        _vala_code_node_unref0 (cm);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  }
                  _vala_code_node_unref0 (base_cm);
                  _vala_code_node_unref0 (cm);
            }
      }
      if (mtype != NULL) {
            gboolean _tmp157_;
            _tmp157_ = vala_data_type_is_invokable (mtype);
            _tmp156_ = _tmp157_;
      } else {
            _tmp156_ = FALSE;
      }
      if (_tmp156_) {
      } else {
            ValaExpression* _tmp158_ = NULL;
            ValaSymbol* _tmp159_ = NULL;
            _tmp158_ = vala_method_call_get_call (self);
            _tmp159_ = vala_expression_get_symbol_reference (_tmp158_);
            if (VALA_IS_CLASS (_tmp159_)) {
                  ValaSourceReference* _tmp160_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp160_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp160_, "use `new' operator to create new objects");
                  result = FALSE;
                  _vala_code_node_unref0 (mtype);
                  _vala_code_node_unref0 (target_object_type);
                  return result;
            } else {
                  ValaSourceReference* _tmp161_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp161_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp161_, "invocation not supported in this context");
                  result = FALSE;
                  _vala_code_node_unref0 (mtype);
                  _vala_code_node_unref0 (target_object_type);
                  return result;
            }
      }
      _tmp162_ = vala_data_type_get_return_type (mtype);
      ret_type = _tmp162_;
      _tmp163_ = vala_data_type_get_parameters (mtype);
      params = _tmp163_;
      if (VALA_IS_METHOD_TYPE (mtype)) {
            ValaMethod* _tmp164_ = NULL;
            ValaMethod* _tmp165_;
            ValaMethod* m;
            gboolean _tmp166_ = FALSE;
            gboolean _tmp181_ = FALSE;
            _tmp164_ = vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype));
            _tmp165_ = _vala_code_node_ref0 (_tmp164_);
            m = _tmp165_;
            if (m != NULL) {
                  gboolean _tmp167_;
                  _tmp167_ = vala_method_get_coroutine (m);
                  _tmp166_ = _tmp167_;
            } else {
                  _tmp166_ = FALSE;
            }
            if (_tmp166_) {
                  ValaExpression* _tmp168_ = NULL;
                  ValaMemberAccess* _tmp169_;
                  ValaMemberAccess* ma;
                  _tmp168_ = vala_method_call_get_call (self);
                  _tmp169_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp168_));
                  ma = _tmp169_;
                  if (!self->priv->_is_yield_expression) {
                        const gchar* _tmp170_ = NULL;
                        _tmp170_ = vala_member_access_get_member_name (ma);
                        if (g_strcmp0 (_tmp170_, "end") != 0) {
                              ValaList* _tmp171_ = NULL;
                              ValaVoidType* _tmp172_ = NULL;
                              _tmp171_ = vala_method_get_async_begin_parameters (m);
                              _vala_iterable_unref0 (params);
                              params = _tmp171_;
                              _tmp172_ = vala_void_type_new (NULL);
                              _vala_code_node_unref0 (ret_type);
                              ret_type = (ValaDataType*) _tmp172_;
                        } else {
                              ValaList* _tmp173_ = NULL;
                              _tmp173_ = vala_method_get_async_end_parameters (m);
                              _vala_iterable_unref0 (params);
                              params = _tmp173_;
                        }
                  } else {
                        gboolean _tmp174_ = FALSE;
                        const gchar* _tmp175_ = NULL;
                        _tmp175_ = vala_member_access_get_member_name (ma);
                        if (g_strcmp0 (_tmp175_, "begin") == 0) {
                              _tmp174_ = TRUE;
                        } else {
                              const gchar* _tmp176_ = NULL;
                              _tmp176_ = vala_member_access_get_member_name (ma);
                              _tmp174_ = g_strcmp0 (_tmp176_, "end") == 0;
                        }
                        if (_tmp174_) {
                              ValaSourceReference* _tmp177_ = NULL;
                              const gchar* _tmp178_ = NULL;
                              gchar* _tmp179_ = NULL;
                              gchar* _tmp180_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp177_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                              _tmp178_ = vala_member_access_get_member_name (ma);
                              _tmp179_ = g_strdup_printf ("use of `%s' not allowed in yield statement", _tmp178_);
                              _tmp180_ = _tmp179_;
                              vala_report_error (_tmp177_, _tmp180_);
                              _g_free0 (_tmp180_);
                        }
                  }
                  _vala_code_node_unref0 (ma);
            }
            if (m != NULL) {
                  ValaList* _tmp182_ = NULL;
                  ValaList* _tmp183_;
                  gint _tmp184_;
                  _tmp182_ = vala_method_get_type_parameters (m);
                  _tmp183_ = _tmp182_;
                  _tmp184_ = vala_collection_get_size ((ValaCollection*) _tmp183_);
                  _tmp181_ = _tmp184_ > 0;
                  _vala_iterable_unref0 (_tmp183_);
            } else {
                  _tmp181_ = FALSE;
            }
            if (_tmp181_) {
                  ValaExpression* _tmp185_ = NULL;
                  ValaMemberAccess* _tmp186_;
                  ValaMemberAccess* ma;
                  ValaList* _tmp187_ = NULL;
                  ValaList* _tmp188_;
                  gint _tmp189_;
                  gint _tmp190_;
                  gint n_type_params;
                  ValaList* _tmp191_ = NULL;
                  ValaList* _tmp192_;
                  gint _tmp193_;
                  gint _tmp194_;
                  gint n_type_args;
                  gboolean _tmp195_ = FALSE;
                  _tmp185_ = vala_method_call_get_call (self);
                  _tmp186_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp185_));
                  ma = _tmp186_;
                  _tmp187_ = vala_method_get_type_parameters (m);
                  _tmp188_ = _tmp187_;
                  _tmp189_ = vala_collection_get_size ((ValaCollection*) _tmp188_);
                  _tmp190_ = _tmp189_;
                  _vala_iterable_unref0 (_tmp188_);
                  n_type_params = _tmp190_;
                  _tmp191_ = vala_member_access_get_type_arguments (ma);
                  _tmp192_ = _tmp191_;
                  _tmp193_ = vala_collection_get_size ((ValaCollection*) _tmp192_);
                  _tmp194_ = _tmp193_;
                  _vala_iterable_unref0 (_tmp192_);
                  n_type_args = _tmp194_;
                  if (n_type_args > 0) {
                        _tmp195_ = n_type_args < n_type_params;
                  } else {
                        _tmp195_ = FALSE;
                  }
                  if (_tmp195_) {
                        ValaSourceReference* _tmp196_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp196_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                        vala_report_error (_tmp196_, "too few type arguments");
                        result = FALSE;
                        _vala_code_node_unref0 (ma);
                        _vala_code_node_unref0 (m);
                        _vala_iterable_unref0 (params);
                        _vala_code_node_unref0 (ret_type);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  } else {
                        gboolean _tmp197_ = FALSE;
                        if (n_type_args > 0) {
                              _tmp197_ = n_type_args > n_type_params;
                        } else {
                              _tmp197_ = FALSE;
                        }
                        if (_tmp197_) {
                              ValaSourceReference* _tmp198_ = NULL;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp198_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                              vala_report_error (_tmp198_, "too many type arguments");
                              result = FALSE;
                              _vala_code_node_unref0 (ma);
                              _vala_code_node_unref0 (m);
                              _vala_iterable_unref0 (params);
                              _vala_code_node_unref0 (ret_type);
                              _vala_code_node_unref0 (mtype);
                              _vala_code_node_unref0 (target_object_type);
                              return result;
                        }
                  }
                  _vala_code_node_unref0 (ma);
            }
            _vala_code_node_unref0 (m);
      }
      last_arg = NULL;
      _tmp199_ = vala_method_call_get_argument_list (self);
      args = _tmp199_;
      _tmp200_ = vala_iterable_iterator ((ValaIterable*) args);
      arg_it = _tmp200_;
      {
            ValaList* _tmp201_;
            ValaList* _param_list;
            gint _tmp202_;
            gint _param_size;
            gint _param_index;
            _tmp201_ = _vala_iterable_ref0 (params);
            _param_list = _tmp201_;
            _tmp202_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp202_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp203_ = NULL;
                  ValaParameter* param;
                  gboolean _tmp204_;
                  gboolean _tmp205_;
                  gboolean _tmp213_;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp203_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp203_;
                  _tmp204_ = vala_parameter_get_ellipsis (param);
                  if (_tmp204_) {
                        _vala_code_node_unref0 (param);
                        break;
                  }
                  _tmp205_ = vala_parameter_get_params_array (param);
                  if (_tmp205_) {
                        ValaDataType* _tmp206_ = NULL;
                        ValaArrayType* _tmp207_;
                        ValaArrayType* array_type;
                        _tmp206_ = vala_variable_get_variable_type ((ValaVariable*) param);
                        _tmp207_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp206_));
                        array_type = _tmp207_;
                        while (TRUE) {
                              gboolean _tmp208_;
                              gpointer _tmp209_ = NULL;
                              ValaExpression* arg;
                              ValaDataType* _tmp210_ = NULL;
                              ValaDataType* _tmp211_ = NULL;
                              gboolean _tmp212_;
                              _tmp208_ = vala_iterator_next (arg_it);
                              if (!_tmp208_) {
                                    break;
                              }
                              _tmp209_ = vala_iterator_get (arg_it);
                              arg = (ValaExpression*) _tmp209_;
                              _tmp210_ = vala_array_type_get_element_type (array_type);
                              vala_expression_set_target_type (arg, _tmp210_);
                              _tmp211_ = vala_expression_get_target_type (arg);
                              _tmp212_ = vala_data_type_get_value_owned ((ValaDataType*) array_type);
                              vala_data_type_set_value_owned (_tmp211_, _tmp212_);
                              _vala_code_node_unref0 (arg);
                        }
                        _vala_code_node_unref0 (array_type);
                        _vala_code_node_unref0 (param);
                        break;
                  }
                  _tmp213_ = vala_iterator_next (arg_it);
                  if (_tmp213_) {
                        gpointer _tmp214_ = NULL;
                        ValaExpression* arg;
                        ValaDataType* _tmp215_ = NULL;
                        ValaDataType* _tmp216_ = NULL;
                        ValaExpression* _tmp217_ = NULL;
                        ValaExpression* _tmp218_;
                        ValaDataType* _tmp219_ = NULL;
                        ValaDataType* _tmp220_;
                        ValaExpression* _tmp221_;
                        _tmp214_ = vala_iterator_get (arg_it);
                        arg = (ValaExpression*) _tmp214_;
                        _tmp215_ = vala_variable_get_variable_type ((ValaVariable*) param);
                        vala_expression_set_formal_target_type (arg, _tmp215_);
                        _tmp216_ = vala_expression_get_formal_target_type (arg);
                        _tmp217_ = vala_method_call_get_call (self);
                        _tmp218_ = _tmp217_;
                        _tmp219_ = vala_data_type_get_actual_type (_tmp216_, target_object_type, VALA_IS_MEMBER_ACCESS (_tmp218_) ? ((ValaMemberAccess*) _tmp218_) : NULL, (ValaCodeNode*) self);
                        _tmp220_ = _tmp219_;
                        vala_expression_set_target_type (arg, _tmp220_);
                        _vala_code_node_unref0 (_tmp220_);
                        _tmp221_ = _vala_code_node_ref0 (arg);
                        _vala_code_node_unref0 (last_arg);
                        last_arg = _tmp221_;
                        _vala_code_node_unref0 (arg);
                  }
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      if (VALA_IS_METHOD_TYPE (mtype)) {
            ValaMethod* _tmp223_ = NULL;
            ValaAttribute* _tmp224_ = NULL;
            ValaAttribute* _tmp225_;
            _tmp223_ = vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype));
            _tmp224_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp223_, "Print");
            _tmp225_ = _tmp224_;
            _tmp222_ = _tmp225_ != NULL;
            _vala_code_node_unref0 (_tmp225_);
      } else {
            _tmp222_ = FALSE;
      }
      if (_tmp222_) {
            ValaSourceReference* _tmp226_ = NULL;
            ValaTemplate* _tmp227_ = NULL;
            ValaTemplate* template;
            _tmp226_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp227_ = vala_template_new (_tmp226_);
            template = _tmp227_;
            {
                  ValaList* _tmp228_;
                  ValaList* _arg_list;
                  gint _tmp229_;
                  gint _arg_size;
                  gint _arg_index;
                  _tmp228_ = _vala_iterable_ref0 (self->priv->argument_list);
                  _arg_list = _tmp228_;
                  _tmp229_ = vala_collection_get_size ((ValaCollection*) _arg_list);
                  _arg_size = _tmp229_;
                  _arg_index = -1;
                  while (TRUE) {
                        gpointer _tmp230_ = NULL;
                        ValaExpression* arg;
                        _arg_index = _arg_index + 1;
                        if (!(_arg_index < _arg_size)) {
                              break;
                        }
                        _tmp230_ = vala_list_get (_arg_list, _arg_index);
                        arg = (ValaExpression*) _tmp230_;
                        vala_code_node_set_parent_node ((ValaCodeNode*) arg, NULL);
                        vala_template_add_expression (template, arg);
                        _vala_code_node_unref0 (arg);
                  }
                  _vala_iterable_unref0 (_arg_list);
            }
            vala_collection_clear ((ValaCollection*) self->priv->argument_list);
            vala_method_call_add_argument (self, (ValaExpression*) template);
            _vala_code_node_unref0 (template);
      }
      if (VALA_IS_METHOD_TYPE (mtype)) {
            ValaMethod* _tmp232_ = NULL;
            gboolean _tmp233_;
            _tmp232_ = vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype));
            _tmp233_ = vala_method_get_printf_format (_tmp232_);
            _tmp231_ = _tmp233_;
      } else {
            _tmp231_ = FALSE;
      }
      if (_tmp231_) {
            ValaStringLiteral* format_literal;
            format_literal = NULL;
            if (last_arg != NULL) {
                  ValaExpression* _tmp234_;
                  ValaStringLiteral* _tmp235_;
                  gboolean _tmp236_ = FALSE;
                  _tmp234_ = last_arg;
                  _tmp235_ = _vala_code_node_ref0 (VALA_IS_STRING_LITERAL (_tmp234_) ? ((ValaStringLiteral*) _tmp234_) : NULL);
                  _vala_code_node_unref0 (format_literal);
                  format_literal = _tmp235_;
                  if (format_literal == NULL) {
                        gint _tmp237_;
                        gint _tmp238_;
                        _tmp237_ = vala_collection_get_size ((ValaCollection*) args);
                        _tmp238_ = vala_collection_get_size ((ValaCollection*) params);
                        _tmp236_ = _tmp237_ == (_tmp238_ - 1);
                  } else {
                        _tmp236_ = FALSE;
                  }
                  if (_tmp236_) {
                        ValaStringLiteral* _tmp239_ = NULL;
                        ValaSemanticAnalyzer* _tmp240_ = NULL;
                        ValaDataType* _tmp241_ = NULL;
                        ValaDataType* _tmp242_;
                        gint _tmp243_;
                        ValaIterator* _tmp244_ = NULL;
                        _tmp239_ = vala_string_literal_new ("\"%s\"", NULL);
                        _vala_code_node_unref0 (format_literal);
                        format_literal = _tmp239_;
                        _tmp240_ = vala_code_context_get_analyzer (context);
                        _tmp241_ = vala_data_type_copy (_tmp240_->string_type);
                        _tmp242_ = _tmp241_;
                        vala_expression_set_target_type ((ValaExpression*) format_literal, _tmp242_);
                        _vala_code_node_unref0 (_tmp242_);
                        _tmp243_ = vala_collection_get_size ((ValaCollection*) args);
                        vala_list_insert (self->priv->argument_list, _tmp243_ - 1, (ValaExpression*) format_literal);
                        _tmp244_ = vala_iterable_iterator ((ValaIterable*) self->priv->argument_list);
                        _vala_iterator_unref0 (arg_it);
                        arg_it = _tmp244_;
                        {
                              ValaList* _tmp245_;
                              ValaList* _param_list;
                              gint _tmp246_;
                              gint _param_size;
                              gint _param_index;
                              _tmp245_ = _vala_iterable_ref0 (params);
                              _param_list = _tmp245_;
                              _tmp246_ = vala_collection_get_size ((ValaCollection*) _param_list);
                              _param_size = _tmp246_;
                              _param_index = -1;
                              while (TRUE) {
                                    gpointer _tmp247_ = NULL;
                                    ValaParameter* param;
                                    gboolean _tmp248_;
                                    _param_index = _param_index + 1;
                                    if (!(_param_index < _param_size)) {
                                          break;
                                    }
                                    _tmp247_ = vala_list_get (_param_list, _param_index);
                                    param = (ValaParameter*) _tmp247_;
                                    _tmp248_ = vala_parameter_get_ellipsis (param);
                                    if (_tmp248_) {
                                          _vala_code_node_unref0 (param);
                                          break;
                                    }
                                    vala_iterator_next (arg_it);
                                    _vala_code_node_unref0 (param);
                              }
                              _vala_iterable_unref0 (_param_list);
                        }
                  }
            } else {
                  ValaExpression* _tmp249_ = NULL;
                  ValaExpression* _tmp250_;
                  ValaMemberAccess* _tmp251_;
                  ValaMemberAccess* ma;
                  _tmp249_ = vala_method_call_get_call (self);
                  _tmp250_ = _tmp249_;
                  _tmp251_ = _vala_code_node_ref0 (VALA_IS_MEMBER_ACCESS (_tmp250_) ? ((ValaMemberAccess*) _tmp250_) : NULL);
                  ma = _tmp251_;
                  if (ma != NULL) {
                        ValaExpression* _tmp252_ = NULL;
                        ValaExpression* _tmp253_;
                        ValaStringLiteral* _tmp254_;
                        _tmp252_ = vala_member_access_get_inner (ma);
                        _tmp253_ = _tmp252_;
                        _tmp254_ = _vala_code_node_ref0 (VALA_IS_STRING_LITERAL (_tmp253_) ? ((ValaStringLiteral*) _tmp253_) : NULL);
                        _vala_code_node_unref0 (format_literal);
                        format_literal = _tmp254_;
                  }
                  _vala_code_node_unref0 (ma);
            }
            if (format_literal != NULL) {
                  gchar* _tmp255_ = NULL;
                  gchar* format;
                  gboolean unsupported_format;
                  const gchar* format_it;
                  gunichar _tmp256_;
                  gunichar c;
                  gboolean _tmp327_ = FALSE;
                  _tmp255_ = vala_string_literal_eval (format_literal);
                  format = _tmp255_;
                  unsupported_format = FALSE;
                  format_it = format;
                  _tmp256_ = string_get_char (format_it, (glong) 0);
                  c = _tmp256_;
                  while (TRUE) {
                        const gchar* _tmp259_ = NULL;
                        gunichar _tmp260_;
                        gint length;
                        ValaDataType* param_type;
                        gboolean _tmp283_ = FALSE;
                        gboolean _tmp284_ = FALSE;
                        if (!(c != ((gunichar) '\0'))) {
                              break;
                        }
                        if (c != ((gunichar) '%')) {
                              const gchar* _tmp257_ = NULL;
                              gunichar _tmp258_;
                              _tmp257_ = g_utf8_next_char (format_it);
                              format_it = _tmp257_;
                              _tmp258_ = string_get_char (format_it, (glong) 0);
                              c = _tmp258_;
                              continue;
                        }
                        _tmp259_ = g_utf8_next_char (format_it);
                        format_it = _tmp259_;
                        _tmp260_ = string_get_char (format_it, (glong) 0);
                        c = _tmp260_;
                        while (TRUE) {
                              gboolean _tmp261_ = FALSE;
                              gboolean _tmp262_ = FALSE;
                              gboolean _tmp263_ = FALSE;
                              gboolean _tmp264_ = FALSE;
                              const gchar* _tmp265_ = NULL;
                              gunichar _tmp266_;
                              if (c == ((gunichar) '#')) {
                                    _tmp264_ = TRUE;
                              } else {
                                    _tmp264_ = c == ((gunichar) '0');
                              }
                              if (_tmp264_) {
                                    _tmp263_ = TRUE;
                              } else {
                                    _tmp263_ = c == ((gunichar) '-');
                              }
                              if (_tmp263_) {
                                    _tmp262_ = TRUE;
                              } else {
                                    _tmp262_ = c == ((gunichar) ' ');
                              }
                              if (_tmp262_) {
                                    _tmp261_ = TRUE;
                              } else {
                                    _tmp261_ = c == ((gunichar) '+');
                              }
                              if (!_tmp261_) {
                                    break;
                              }
                              _tmp265_ = g_utf8_next_char (format_it);
                              format_it = _tmp265_;
                              _tmp266_ = string_get_char (format_it, (glong) 0);
                              c = _tmp266_;
                        }
                        while (TRUE) {
                              gboolean _tmp267_ = FALSE;
                              const gchar* _tmp268_ = NULL;
                              gunichar _tmp269_;
                              if (c >= ((gunichar) '0')) {
                                    _tmp267_ = c <= ((gunichar) '9');
                              } else {
                                    _tmp267_ = FALSE;
                              }
                              if (!_tmp267_) {
                                    break;
                              }
                              _tmp268_ = g_utf8_next_char (format_it);
                              format_it = _tmp268_;
                              _tmp269_ = string_get_char (format_it, (glong) 0);
                              c = _tmp269_;
                        }
                        if (c == ((gunichar) '.')) {
                              const gchar* _tmp270_ = NULL;
                              gunichar _tmp271_;
                              _tmp270_ = g_utf8_next_char (format_it);
                              format_it = _tmp270_;
                              _tmp271_ = string_get_char (format_it, (glong) 0);
                              c = _tmp271_;
                              while (TRUE) {
                                    gboolean _tmp272_ = FALSE;
                                    const gchar* _tmp273_ = NULL;
                                    gunichar _tmp274_;
                                    if (c >= ((gunichar) '0')) {
                                          _tmp272_ = c <= ((gunichar) '9');
                                    } else {
                                          _tmp272_ = FALSE;
                                    }
                                    if (!_tmp272_) {
                                          break;
                                    }
                                    _tmp273_ = g_utf8_next_char (format_it);
                                    format_it = _tmp273_;
                                    _tmp274_ = string_get_char (format_it, (glong) 0);
                                    c = _tmp274_;
                              }
                        }
                        length = 0;
                        if (c == ((gunichar) 'h')) {
                              const gchar* _tmp275_ = NULL;
                              gunichar _tmp276_;
                              length = -1;
                              _tmp275_ = g_utf8_next_char (format_it);
                              format_it = _tmp275_;
                              _tmp276_ = string_get_char (format_it, (glong) 0);
                              c = _tmp276_;
                              if (c == ((gunichar) 'h')) {
                                    const gchar* _tmp277_ = NULL;
                                    gunichar _tmp278_;
                                    length = -2;
                                    _tmp277_ = g_utf8_next_char (format_it);
                                    format_it = _tmp277_;
                                    _tmp278_ = string_get_char (format_it, (glong) 0);
                                    c = _tmp278_;
                              }
                        } else {
                              if (c == ((gunichar) 'l')) {
                                    const gchar* _tmp279_ = NULL;
                                    gunichar _tmp280_;
                                    length = 1;
                                    _tmp279_ = g_utf8_next_char (format_it);
                                    format_it = _tmp279_;
                                    _tmp280_ = string_get_char (format_it, (glong) 0);
                                    c = _tmp280_;
                              } else {
                                    if (c == ((gunichar) 'z')) {
                                          const gchar* _tmp281_ = NULL;
                                          gunichar _tmp282_;
                                          length = 2;
                                          _tmp281_ = g_utf8_next_char (format_it);
                                          format_it = _tmp281_;
                                          _tmp282_ = string_get_char (format_it, (glong) 0);
                                          c = _tmp282_;
                                    }
                              }
                        }
                        param_type = NULL;
                        if (c == ((gunichar) 'd')) {
                              _tmp284_ = TRUE;
                        } else {
                              _tmp284_ = c == ((gunichar) 'i');
                        }
                        if (_tmp284_) {
                              _tmp283_ = TRUE;
                        } else {
                              _tmp283_ = c == ((gunichar) 'c');
                        }
                        if (_tmp283_) {
                              if (length == (-2)) {
                                    ValaSemanticAnalyzer* _tmp285_ = NULL;
                                    ValaDataType* _tmp286_;
                                    _tmp285_ = vala_code_context_get_analyzer (context);
                                    _tmp286_ = _vala_code_node_ref0 (_tmp285_->int8_type);
                                    _vala_code_node_unref0 (param_type);
                                    param_type = _tmp286_;
                              } else {
                                    if (length == (-1)) {
                                          ValaSemanticAnalyzer* _tmp287_ = NULL;
                                          ValaDataType* _tmp288_;
                                          _tmp287_ = vala_code_context_get_analyzer (context);
                                          _tmp288_ = _vala_code_node_ref0 (_tmp287_->short_type);
                                          _vala_code_node_unref0 (param_type);
                                          param_type = _tmp288_;
                                    } else {
                                          if (length == 0) {
                                                ValaSemanticAnalyzer* _tmp289_ = NULL;
                                                ValaDataType* _tmp290_;
                                                _tmp289_ = vala_code_context_get_analyzer (context);
                                                _tmp290_ = _vala_code_node_ref0 (_tmp289_->int_type);
                                                _vala_code_node_unref0 (param_type);
                                                param_type = _tmp290_;
                                          } else {
                                                if (length == 1) {
                                                      ValaSemanticAnalyzer* _tmp291_ = NULL;
                                                      ValaDataType* _tmp292_;
                                                      _tmp291_ = vala_code_context_get_analyzer (context);
                                                      _tmp292_ = _vala_code_node_ref0 (_tmp291_->long_type);
                                                      _vala_code_node_unref0 (param_type);
                                                      param_type = _tmp292_;
                                                } else {
                                                      if (length == 2) {
                                                            ValaSemanticAnalyzer* _tmp293_ = NULL;
                                                            ValaDataType* _tmp294_;
                                                            _tmp293_ = vala_code_context_get_analyzer (context);
                                                            _tmp294_ = _vala_code_node_ref0 (_tmp293_->ssize_t_type);
                                                            _vala_code_node_unref0 (param_type);
                                                            param_type = _tmp294_;
                                                      }
                                                }
                                          }
                                    }
                              }
                        } else {
                              gboolean _tmp295_ = FALSE;
                              gboolean _tmp296_ = FALSE;
                              gboolean _tmp297_ = FALSE;
                              if (c == ((gunichar) 'o')) {
                                    _tmp297_ = TRUE;
                              } else {
                                    _tmp297_ = c == ((gunichar) 'u');
                              }
                              if (_tmp297_) {
                                    _tmp296_ = TRUE;
                              } else {
                                    _tmp296_ = c == ((gunichar) 'x');
                              }
                              if (_tmp296_) {
                                    _tmp295_ = TRUE;
                              } else {
                                    _tmp295_ = c == ((gunichar) 'X');
                              }
                              if (_tmp295_) {
                                    if (length == (-2)) {
                                          ValaSemanticAnalyzer* _tmp298_ = NULL;
                                          ValaDataType* _tmp299_;
                                          _tmp298_ = vala_code_context_get_analyzer (context);
                                          _tmp299_ = _vala_code_node_ref0 (_tmp298_->uchar_type);
                                          _vala_code_node_unref0 (param_type);
                                          param_type = _tmp299_;
                                    } else {
                                          if (length == (-1)) {
                                                ValaSemanticAnalyzer* _tmp300_ = NULL;
                                                ValaDataType* _tmp301_;
                                                _tmp300_ = vala_code_context_get_analyzer (context);
                                                _tmp301_ = _vala_code_node_ref0 (_tmp300_->ushort_type);
                                                _vala_code_node_unref0 (param_type);
                                                param_type = _tmp301_;
                                          } else {
                                                if (length == 0) {
                                                      ValaSemanticAnalyzer* _tmp302_ = NULL;
                                                      ValaDataType* _tmp303_;
                                                      _tmp302_ = vala_code_context_get_analyzer (context);
                                                      _tmp303_ = _vala_code_node_ref0 (_tmp302_->uint_type);
                                                      _vala_code_node_unref0 (param_type);
                                                      param_type = _tmp303_;
                                                } else {
                                                      if (length == 1) {
                                                            ValaSemanticAnalyzer* _tmp304_ = NULL;
                                                            ValaDataType* _tmp305_;
                                                            _tmp304_ = vala_code_context_get_analyzer (context);
                                                            _tmp305_ = _vala_code_node_ref0 (_tmp304_->ulong_type);
                                                            _vala_code_node_unref0 (param_type);
                                                            param_type = _tmp305_;
                                                      } else {
                                                            if (length == 2) {
                                                                  ValaSemanticAnalyzer* _tmp306_ = NULL;
                                                                  ValaDataType* _tmp307_;
                                                                  _tmp306_ = vala_code_context_get_analyzer (context);
                                                                  _tmp307_ = _vala_code_node_ref0 (_tmp306_->size_t_type);
                                                                  _vala_code_node_unref0 (param_type);
                                                                  param_type = _tmp307_;
                                                            }
                                                      }
                                                }
                                          }
                                    }
                              } else {
                                    gboolean _tmp308_ = FALSE;
                                    gboolean _tmp309_ = FALSE;
                                    gboolean _tmp310_ = FALSE;
                                    gboolean _tmp311_ = FALSE;
                                    gboolean _tmp312_ = FALSE;
                                    gboolean _tmp313_ = FALSE;
                                    gboolean _tmp314_ = FALSE;
                                    if (c == ((gunichar) 'e')) {
                                          _tmp314_ = TRUE;
                                    } else {
                                          _tmp314_ = c == ((gunichar) 'E');
                                    }
                                    if (_tmp314_) {
                                          _tmp313_ = TRUE;
                                    } else {
                                          _tmp313_ = c == ((gunichar) 'f');
                                    }
                                    if (_tmp313_) {
                                          _tmp312_ = TRUE;
                                    } else {
                                          _tmp312_ = c == ((gunichar) 'F');
                                    }
                                    if (_tmp312_) {
                                          _tmp311_ = TRUE;
                                    } else {
                                          _tmp311_ = c == ((gunichar) 'g');
                                    }
                                    if (_tmp311_) {
                                          _tmp310_ = TRUE;
                                    } else {
                                          _tmp310_ = c == ((gunichar) 'G');
                                    }
                                    if (_tmp310_) {
                                          _tmp309_ = TRUE;
                                    } else {
                                          _tmp309_ = c == ((gunichar) 'a');
                                    }
                                    if (_tmp309_) {
                                          _tmp308_ = TRUE;
                                    } else {
                                          _tmp308_ = c == ((gunichar) 'A');
                                    }
                                    if (_tmp308_) {
                                          ValaSemanticAnalyzer* _tmp315_ = NULL;
                                          ValaDataType* _tmp316_;
                                          _tmp315_ = vala_code_context_get_analyzer (context);
                                          _tmp316_ = _vala_code_node_ref0 (_tmp315_->double_type);
                                          _vala_code_node_unref0 (param_type);
                                          param_type = _tmp316_;
                                    } else {
                                          if (c == ((gunichar) 's')) {
                                                ValaSemanticAnalyzer* _tmp317_ = NULL;
                                                ValaDataType* _tmp318_;
                                                _tmp317_ = vala_code_context_get_analyzer (context);
                                                _tmp318_ = _vala_code_node_ref0 (_tmp317_->string_type);
                                                _vala_code_node_unref0 (param_type);
                                                param_type = _tmp318_;
                                          } else {
                                                if (c == ((gunichar) 'p')) {
                                                      ValaVoidType* _tmp319_ = NULL;
                                                      ValaVoidType* _tmp320_;
                                                      ValaPointerType* _tmp321_ = NULL;
                                                      _tmp319_ = vala_void_type_new (NULL);
                                                      _tmp320_ = _tmp319_;
                                                      _tmp321_ = vala_pointer_type_new ((ValaDataType*) _tmp320_, NULL);
                                                      _vala_code_node_unref0 (param_type);
                                                      param_type = (ValaDataType*) _tmp321_;
                                                      _vala_code_node_unref0 (_tmp320_);
                                                } else {
                                                      if (c == ((gunichar) '%')) {
                                                      } else {
                                                            unsupported_format = TRUE;
                                                            _vala_code_node_unref0 (param_type);
                                                            break;
                                                      }
                                                }
                                          }
                                    }
                              }
                        }
                        if (c != ((gunichar) '\0')) {
                              const gchar* _tmp322_ = NULL;
                              gunichar _tmp323_;
                              _tmp322_ = g_utf8_next_char (format_it);
                              format_it = _tmp322_;
                              _tmp323_ = string_get_char (format_it, (glong) 0);
                              c = _tmp323_;
                        }
                        if (param_type != NULL) {
                              gboolean _tmp324_;
                              _tmp324_ = vala_iterator_next (arg_it);
                              if (_tmp324_) {
                                    gpointer _tmp325_ = NULL;
                                    ValaExpression* arg;
                                    _tmp325_ = vala_iterator_get (arg_it);
                                    arg = (ValaExpression*) _tmp325_;
                                    vala_expression_set_target_type (arg, param_type);
                                    _vala_code_node_unref0 (arg);
                              } else {
                                    ValaSourceReference* _tmp326_ = NULL;
                                    _tmp326_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    vala_report_error (_tmp326_, "Too few arguments for specified format");
                                    result = FALSE;
                                    _vala_code_node_unref0 (param_type);
                                    _g_free0 (format);
                                    _vala_code_node_unref0 (format_literal);
                                    _vala_iterator_unref0 (arg_it);
                                    _vala_iterable_unref0 (args);
                                    _vala_code_node_unref0 (last_arg);
                                    _vala_iterable_unref0 (params);
                                    _vala_code_node_unref0 (ret_type);
                                    _vala_code_node_unref0 (mtype);
                                    _vala_code_node_unref0 (target_object_type);
                                    return result;
                              }
                        }
                        _vala_code_node_unref0 (param_type);
                  }
                  if (!unsupported_format) {
                        gboolean _tmp328_;
                        _tmp328_ = vala_iterator_next (arg_it);
                        _tmp327_ = _tmp328_;
                  } else {
                        _tmp327_ = FALSE;
                  }
                  if (_tmp327_) {
                        ValaSourceReference* _tmp329_ = NULL;
                        _tmp329_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp329_, "Too many arguments for specified format");
                        result = FALSE;
                        _g_free0 (format);
                        _vala_code_node_unref0 (format_literal);
                        _vala_iterator_unref0 (arg_it);
                        _vala_iterable_unref0 (args);
                        _vala_code_node_unref0 (last_arg);
                        _vala_iterable_unref0 (params);
                        _vala_code_node_unref0 (ret_type);
                        _vala_code_node_unref0 (mtype);
                        _vala_code_node_unref0 (target_object_type);
                        return result;
                  }
                  _g_free0 (format);
            }
            _vala_code_node_unref0 (format_literal);
      }
      {
            ValaList* _tmp330_ = NULL;
            ValaList* _arg_list;
            gint _tmp331_;
            gint _arg_size;
            gint _arg_index;
            _tmp330_ = vala_method_call_get_argument_list (self);
            _arg_list = _tmp330_;
            _tmp331_ = vala_collection_get_size ((ValaCollection*) _arg_list);
            _arg_size = _tmp331_;
            _arg_index = -1;
            while (TRUE) {
                  gpointer _tmp332_ = NULL;
                  ValaExpression* arg;
                  _arg_index = _arg_index + 1;
                  if (!(_arg_index < _arg_size)) {
                        break;
                  }
                  _tmp332_ = vala_list_get (_arg_list, _arg_index);
                  arg = (ValaExpression*) _tmp332_;
                  vala_code_node_check ((ValaCodeNode*) arg, context);
                  _vala_code_node_unref0 (arg);
            }
            _vala_iterable_unref0 (_arg_list);
      }
      if (VALA_IS_VOID_TYPE (ret_type)) {
            gboolean _tmp333_ = FALSE;
            gboolean _tmp334_ = FALSE;
            ValaCodeNode* _tmp335_ = NULL;
            _tmp335_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
            if (!VALA_IS_EXPRESSION_STATEMENT (_tmp335_)) {
                  ValaCodeNode* _tmp336_ = NULL;
                  _tmp336_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                  _tmp334_ = !VALA_IS_FOR_STATEMENT (_tmp336_);
            } else {
                  _tmp334_ = FALSE;
            }
            if (_tmp334_) {
                  ValaCodeNode* _tmp337_ = NULL;
                  _tmp337_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                  _tmp333_ = !VALA_IS_YIELD_STATEMENT (_tmp337_);
            } else {
                  _tmp333_ = FALSE;
            }
            if (_tmp333_) {
                  ValaSourceReference* _tmp338_ = NULL;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp338_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp338_, "invocation of void method not allowed as expression");
                  result = FALSE;
                  _vala_iterator_unref0 (arg_it);
                  _vala_iterable_unref0 (args);
                  _vala_code_node_unref0 (last_arg);
                  _vala_iterable_unref0 (params);
                  _vala_code_node_unref0 (ret_type);
                  _vala_code_node_unref0 (mtype);
                  _vala_code_node_unref0 (target_object_type);
                  return result;
            }
      }
      vala_expression_set_formal_value_type ((ValaExpression*) self, ret_type);
      _tmp339_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
      _tmp340_ = vala_method_call_get_call (self);
      _tmp341_ = _tmp340_;
      _tmp342_ = vala_data_type_get_actual_type (_tmp339_, target_object_type, VALA_IS_MEMBER_ACCESS (_tmp341_) ? ((ValaMemberAccess*) _tmp341_) : NULL, (ValaCodeNode*) self);
      _tmp343_ = _tmp342_;
      vala_expression_set_value_type ((ValaExpression*) self, _tmp343_);
      _vala_code_node_unref0 (_tmp343_);
      may_throw = FALSE;
      if (VALA_IS_METHOD_TYPE (mtype)) {
            ValaMethod* _tmp344_ = NULL;
            ValaMethod* _tmp345_;
            ValaMethod* m;
            gboolean _tmp359_ = FALSE;
            gboolean _tmp360_ = FALSE;
            gboolean _tmp361_ = FALSE;
            gboolean _tmp370_;
            ValaSymbol* _tmp372_ = NULL;
            ValaSymbol* _tmp373_;
            ValaDynamicSignal* _tmp374_;
            ValaDynamicSignal* dynamic_sig;
            gboolean _tmp375_ = FALSE;
            gboolean _tmp398_ = FALSE;
            _tmp344_ = vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype));
            _tmp345_ = _vala_code_node_ref0 (_tmp344_);
            m = _tmp345_;
            if (self->priv->_is_yield_expression) {
                  gboolean _tmp346_;
                  gboolean _tmp348_ = FALSE;
                  ValaSemanticAnalyzer* _tmp349_ = NULL;
                  ValaMethod* _tmp350_ = NULL;
                  ValaSemanticAnalyzer* _tmp355_ = NULL;
                  ValaMethod* _tmp356_ = NULL;
                  gint _tmp357_;
                  gint _tmp358_;
                  _tmp346_ = vala_method_get_coroutine (m);
                  if (!_tmp346_) {
                        ValaSourceReference* _tmp347_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp347_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp347_, "yield expression requires async method");
                  }
                  _tmp349_ = vala_code_context_get_analyzer (context);
                  _tmp350_ = vala_semantic_analyzer_get_current_method (_tmp349_);
                  if (_tmp350_ == NULL) {
                        _tmp348_ = TRUE;
                  } else {
                        ValaSemanticAnalyzer* _tmp351_ = NULL;
                        ValaMethod* _tmp352_ = NULL;
                        gboolean _tmp353_;
                        _tmp351_ = vala_code_context_get_analyzer (context);
                        _tmp352_ = vala_semantic_analyzer_get_current_method (_tmp351_);
                        _tmp353_ = vala_method_get_coroutine (_tmp352_);
                        _tmp348_ = !_tmp353_;
                  }
                  if (_tmp348_) {
                        ValaSourceReference* _tmp354_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp354_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp354_, "yield expression not available outside async method");
                  }
                  _tmp355_ = vala_code_context_get_analyzer (context);
                  _tmp356_ = vala_semantic_analyzer_get_current_method (_tmp355_);
                  _tmp357_ = vala_method_get_yield_count (_tmp356_);
                  _tmp358_ = _tmp357_;
                  vala_method_set_yield_count (_tmp356_, _tmp358_ + 1);
            }
            if (m != NULL) {
                  gboolean _tmp362_;
                  _tmp362_ = vala_method_get_coroutine (m);
                  _tmp361_ = _tmp362_;
            } else {
                  _tmp361_ = FALSE;
            }
            if (_tmp361_) {
                  _tmp360_ = !self->priv->_is_yield_expression;
            } else {
                  _tmp360_ = FALSE;
            }
            if (_tmp360_) {
                  ValaExpression* _tmp363_ = NULL;
                  const gchar* _tmp364_ = NULL;
                  _tmp363_ = vala_method_call_get_call (self);
                  _tmp364_ = vala_member_access_get_member_name (VALA_MEMBER_ACCESS (_tmp363_));
                  _tmp359_ = g_strcmp0 (_tmp364_, "end") != 0;
            } else {
                  _tmp359_ = FALSE;
            }
            if (_tmp359_) {
            } else {
                  {
                        ValaList* _tmp365_ = NULL;
                        ValaList* _error_type_list;
                        gint _tmp366_;
                        gint _error_type_size;
                        gint _error_type_index;
                        _tmp365_ = vala_code_node_get_error_types ((ValaCodeNode*) m);
                        _error_type_list = _tmp365_;
                        _tmp366_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
                        _error_type_size = _tmp366_;
                        _error_type_index = -1;
                        while (TRUE) {
                              gpointer _tmp367_ = NULL;
                              ValaDataType* error_type;
                              ValaDataType* _tmp368_ = NULL;
                              ValaDataType* call_error_type;
                              ValaSourceReference* _tmp369_ = NULL;
                              _error_type_index = _error_type_index + 1;
                              if (!(_error_type_index < _error_type_size)) {
                                    break;
                              }
                              _tmp367_ = vala_list_get (_error_type_list, _error_type_index);
                              error_type = (ValaDataType*) _tmp367_;
                              may_throw = TRUE;
                              _tmp368_ = vala_data_type_copy (error_type);
                              call_error_type = _tmp368_;
                              _tmp369_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_code_node_set_source_reference ((ValaCodeNode*) call_error_type, _tmp369_);
                              vala_code_node_add_error_type ((ValaCodeNode*) self, call_error_type);
                              _vala_code_node_unref0 (call_error_type);
                              _vala_code_node_unref0 (error_type);
                        }
                        _vala_iterable_unref0 (_error_type_list);
                  }
            }
            _tmp370_ = vala_method_get_returns_floating_reference (m);
            if (_tmp370_) {
                  ValaDataType* _tmp371_ = NULL;
                  _tmp371_ = vala_expression_get_value_type ((ValaExpression*) self);
                  vala_data_type_set_floating_reference (_tmp371_, TRUE);
            }
            _tmp372_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
            _tmp373_ = _tmp372_;
            _tmp374_ = _vala_code_node_ref0 (VALA_IS_DYNAMIC_SIGNAL (_tmp373_) ? ((ValaDynamicSignal*) _tmp373_) : NULL);
            dynamic_sig = _tmp374_;
            if (dynamic_sig != NULL) {
                  ValaExpression* _tmp376_ = NULL;
                  _tmp376_ = vala_dynamic_signal_get_handler (dynamic_sig);
                  _tmp375_ = _tmp376_ != NULL;
            } else {
                  _tmp375_ = FALSE;
            }
            if (_tmp375_) {
                  ValaExpression* _tmp377_ = NULL;
                  ValaDataType* _tmp378_ = NULL;
                  ValaDataType* _tmp379_ = NULL;
                  ValaDataType* _tmp380_;
                  ValaDataType* _tmp381_ = NULL;
                  ValaDataType* _tmp382_;
                  gboolean first;
                  ValaExpression* _tmp390_ = NULL;
                  ValaSymbol* _tmp391_ = NULL;
                  ValaObjectType* _tmp392_ = NULL;
                  ValaObjectType* _tmp393_;
                  ValaDelegate* _tmp394_ = NULL;
                  ValaDelegate* _tmp395_;
                  ValaDelegateType* _tmp396_ = NULL;
                  ValaDelegateType* _tmp397_;
                  _tmp377_ = vala_dynamic_signal_get_handler (dynamic_sig);
                  _tmp378_ = vala_expression_get_value_type (_tmp377_);
                  _tmp379_ = vala_data_type_get_return_type (_tmp378_);
                  _tmp380_ = _tmp379_;
                  _tmp381_ = vala_data_type_copy (_tmp380_);
                  _tmp382_ = _tmp381_;
                  vala_signal_set_return_type ((ValaSignal*) dynamic_sig, _tmp382_);
                  _vala_code_node_unref0 (_tmp382_);
                  _vala_code_node_unref0 (_tmp380_);
                  first = TRUE;
                  {
                        ValaExpression* _tmp383_ = NULL;
                        ValaDataType* _tmp384_ = NULL;
                        ValaList* _tmp385_ = NULL;
                        ValaList* _param_list;
                        gint _tmp386_;
                        gint _param_size;
                        gint _param_index;
                        _tmp383_ = vala_dynamic_signal_get_handler (dynamic_sig);
                        _tmp384_ = vala_expression_get_value_type (_tmp383_);
                        _tmp385_ = vala_data_type_get_parameters (_tmp384_);
                        _param_list = _tmp385_;
                        _tmp386_ = vala_collection_get_size ((ValaCollection*) _param_list);
                        _param_size = _tmp386_;
                        _param_index = -1;
                        while (TRUE) {
                              gpointer _tmp387_ = NULL;
                              ValaParameter* param;
                              _param_index = _param_index + 1;
                              if (!(_param_index < _param_size)) {
                                    break;
                              }
                              _tmp387_ = vala_list_get (_param_list, _param_index);
                              param = (ValaParameter*) _tmp387_;
                              if (first) {
                                    first = FALSE;
                              } else {
                                    ValaParameter* _tmp388_ = NULL;
                                    ValaParameter* _tmp389_;
                                    _tmp388_ = vala_parameter_copy (param);
                                    _tmp389_ = _tmp388_;
                                    vala_signal_add_parameter ((ValaSignal*) dynamic_sig, _tmp389_);
                                    _vala_code_node_unref0 (_tmp389_);
                              }
                              _vala_code_node_unref0 (param);
                        }
                        _vala_iterable_unref0 (_param_list);
                  }
                  _tmp390_ = vala_dynamic_signal_get_handler (dynamic_sig);
                  _tmp391_ = vala_symbol_get_parent_symbol ((ValaSymbol*) dynamic_sig);
                  _tmp392_ = vala_object_type_new (VALA_OBJECT_TYPE_SYMBOL (_tmp391_));
                  _tmp393_ = _tmp392_;
                  _tmp394_ = vala_signal_get_delegate ((ValaSignal*) dynamic_sig, (ValaDataType*) _tmp393_, (ValaCodeNode*) self);
                  _tmp395_ = _tmp394_;
                  _tmp396_ = vala_delegate_type_new (_tmp395_);
                  _tmp397_ = _tmp396_;
                  vala_expression_set_target_type (_tmp390_, (ValaDataType*) _tmp397_);
                  _vala_code_node_unref0 (_tmp397_);
                  _vala_code_node_unref0 (_tmp395_);
                  _vala_code_node_unref0 (_tmp393_);
            }
            if (m != NULL) {
                  ValaList* _tmp399_ = NULL;
                  ValaList* _tmp400_;
                  gint _tmp401_;
                  _tmp399_ = vala_method_get_type_parameters (m);
                  _tmp400_ = _tmp399_;
                  _tmp401_ = vala_collection_get_size ((ValaCollection*) _tmp400_);
                  _tmp398_ = _tmp401_ > 0;
                  _vala_iterable_unref0 (_tmp400_);
            } else {
                  _tmp398_ = FALSE;
            }
            if (_tmp398_) {
                  ValaExpression* _tmp402_ = NULL;
                  ValaMemberAccess* _tmp403_;
                  ValaMemberAccess* ma;
                  ValaList* _tmp404_ = NULL;
                  ValaList* _tmp405_;
                  gint _tmp406_;
                  gboolean _tmp407_;
                  _tmp402_ = vala_method_call_get_call (self);
                  _tmp403_ = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (_tmp402_));
                  ma = _tmp403_;
                  _tmp404_ = vala_member_access_get_type_arguments (ma);
                  _tmp405_ = _tmp404_;
                  _tmp406_ = vala_collection_get_size ((ValaCollection*) _tmp405_);
                  _tmp407_ = _tmp406_ == 0;
                  _vala_iterable_unref0 (_tmp405_);
                  if (_tmp407_) {
                        ValaIterator* _tmp446_ = NULL;
                        ValaDataType* _tmp460_ = NULL;
                        ValaExpression* _tmp461_ = NULL;
                        ValaExpression* _tmp462_;
                        ValaDataType* _tmp463_ = NULL;
                        ValaDataType* _tmp464_;
                        {
                              ValaList* _tmp408_ = NULL;
                              ValaList* _type_param_list;
                              gint _tmp409_;
                              gint _type_param_size;
                              gint _type_param_index;
                              _tmp408_ = vala_method_get_type_parameters (m);
                              _type_param_list = _tmp408_;
                              _tmp409_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
                              _type_param_size = _tmp409_;
                              _type_param_index = -1;
                              while (TRUE) {
                                    gpointer _tmp410_ = NULL;
                                    ValaTypeParameter* type_param;
                                    ValaDataType* type_arg;
                                    ValaIterator* _tmp411_ = NULL;
                                    gboolean _tmp432_ = FALSE;
                                    _type_param_index = _type_param_index + 1;
                                    if (!(_type_param_index < _type_param_size)) {
                                          break;
                                    }
                                    _tmp410_ = vala_list_get (_type_param_list, _type_param_index);
                                    type_param = (ValaTypeParameter*) _tmp410_;
                                    type_arg = NULL;
                                    _tmp411_ = vala_iterable_iterator ((ValaIterable*) args);
                                    _vala_iterator_unref0 (arg_it);
                                    arg_it = _tmp411_;
                                    {
                                          ValaList* _tmp412_;
                                          ValaList* _param_list;
                                          gint _tmp413_;
                                          gint _param_size;
                                          gint _param_index;
                                          _tmp412_ = _vala_iterable_ref0 (params);
                                          _param_list = _tmp412_;
                                          _tmp413_ = vala_collection_get_size ((ValaCollection*) _param_list);
                                          _param_size = _tmp413_;
                                          _param_index = -1;
                                          while (TRUE) {
                                                gpointer _tmp414_ = NULL;
                                                ValaParameter* param;
                                                gboolean _tmp415_ = FALSE;
                                                gboolean _tmp416_;
                                                gboolean _tmp418_;
                                                _param_index = _param_index + 1;
                                                if (!(_param_index < _param_size)) {
                                                      break;
                                                }
                                                _tmp414_ = vala_list_get (_param_list, _param_index);
                                                param = (ValaParameter*) _tmp414_;
                                                _tmp416_ = vala_parameter_get_ellipsis (param);
                                                if (_tmp416_) {
                                                      _tmp415_ = TRUE;
                                                } else {
                                                      gboolean _tmp417_;
                                                      _tmp417_ = vala_parameter_get_params_array (param);
                                                      _tmp415_ = _tmp417_;
                                                }
                                                if (_tmp415_) {
                                                      _vala_code_node_unref0 (param);
                                                      break;
                                                }
                                                _tmp418_ = vala_iterator_next (arg_it);
                                                if (_tmp418_) {
                                                      gpointer _tmp419_ = NULL;
                                                      ValaExpression* arg;
                                                      ValaDataType* _tmp420_ = NULL;
                                                      ValaDataType* _tmp421_;
                                                      ValaGenericType* _tmp422_;
                                                      ValaGenericType* generic_type;
                                                      gboolean _tmp423_ = FALSE;
                                                      ValaDataType* _tmp427_ = NULL;
                                                      ValaExpression* _tmp428_ = NULL;
                                                      ValaExpression* _tmp429_;
                                                      ValaDataType* _tmp430_ = NULL;
                                                      ValaDataType* _tmp431_;
                                                      _tmp419_ = vala_iterator_get (arg_it);
                                                      arg = (ValaExpression*) _tmp419_;
                                                      _tmp420_ = vala_variable_get_variable_type ((ValaVariable*) param);
                                                      _tmp421_ = _tmp420_;
                                                      _tmp422_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp421_) ? ((ValaGenericType*) _tmp421_) : NULL);
                                                      generic_type = _tmp422_;
                                                      if (generic_type != NULL) {
                                                            ValaTypeParameter* _tmp424_ = NULL;
                                                            _tmp424_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
                                                            _tmp423_ = _tmp424_ == type_param;
                                                      } else {
                                                            _tmp423_ = FALSE;
                                                      }
                                                      if (_tmp423_) {
                                                            ValaDataType* _tmp425_ = NULL;
                                                            ValaDataType* _tmp426_ = NULL;
                                                            _tmp425_ = vala_expression_get_value_type (arg);
                                                            _tmp426_ = vala_data_type_copy (_tmp425_);
                                                            _vala_code_node_unref0 (type_arg);
                                                            type_arg = _tmp426_;
                                                            vala_data_type_set_value_owned (type_arg, TRUE);
                                                            _vala_code_node_unref0 (generic_type);
                                                            _vala_code_node_unref0 (arg);
                                                            _vala_code_node_unref0 (param);
                                                            break;
                                                      }
                                                      _tmp427_ = vala_expression_get_formal_target_type (arg);
                                                      _tmp428_ = vala_method_call_get_call (self);
                                                      _tmp429_ = _tmp428_;
                                                      _tmp430_ = vala_data_type_get_actual_type (_tmp427_, target_object_type, VALA_IS_MEMBER_ACCESS (_tmp429_) ? ((ValaMemberAccess*) _tmp429_) : NULL, (ValaCodeNode*) self);
                                                      _tmp431_ = _tmp430_;
                                                      vala_expression_set_target_type (arg, _tmp431_);
                                                      _vala_code_node_unref0 (_tmp431_);
                                                      _vala_code_node_unref0 (generic_type);
                                                      _vala_code_node_unref0 (arg);
                                                }
                                                _vala_code_node_unref0 (param);
                                          }
                                          _vala_iterable_unref0 (_param_list);
                                    }
                                    if (type_arg == NULL) {
                                          ValaDataType* _tmp433_ = NULL;
                                          _tmp433_ = vala_expression_get_target_type ((ValaExpression*) self);
                                          _tmp432_ = _tmp433_ != NULL;
                                    } else {
                                          _tmp432_ = FALSE;
                                    }
                                    if (_tmp432_) {
                                          ValaDataType* _tmp434_ = NULL;
                                          ValaDataType* _tmp435_;
                                          ValaGenericType* _tmp436_;
                                          ValaGenericType* generic_type;
                                          gboolean _tmp437_ = FALSE;
                                          _tmp434_ = vala_method_get_return_type (m);
                                          _tmp435_ = _tmp434_;
                                          _tmp436_ = _vala_code_node_ref0 (VALA_IS_GENERIC_TYPE (_tmp435_) ? ((ValaGenericType*) _tmp435_) : NULL);
                                          generic_type = _tmp436_;
                                          if (generic_type != NULL) {
                                                ValaTypeParameter* _tmp438_ = NULL;
                                                _tmp438_ = vala_data_type_get_type_parameter ((ValaDataType*) generic_type);
                                                _tmp437_ = _tmp438_ == type_param;
                                          } else {
                                                _tmp437_ = FALSE;
                                          }
                                          if (_tmp437_) {
                                                ValaDataType* _tmp439_ = NULL;
                                                ValaDataType* _tmp440_ = NULL;
                                                _tmp439_ = vala_expression_get_target_type ((ValaExpression*) self);
                                                _tmp440_ = vala_data_type_copy (_tmp439_);
                                                _vala_code_node_unref0 (type_arg);
                                                type_arg = _tmp440_;
                                                vala_data_type_set_value_owned (type_arg, TRUE);
                                          }
                                          _vala_code_node_unref0 (generic_type);
                                    }
                                    if (type_arg == NULL) {
                                          ValaSourceReference* _tmp441_ = NULL;
                                          gchar* _tmp442_ = NULL;
                                          gchar* _tmp443_;
                                          gchar* _tmp444_ = NULL;
                                          gchar* _tmp445_;
                                          vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                          _tmp441_ = vala_code_node_get_source_reference ((ValaCodeNode*) ma);
                                          _tmp442_ = vala_symbol_get_full_name ((ValaSymbol*) type_param);
                                          _tmp443_ = _tmp442_;
                                          _tmp444_ = g_strdup_printf ("cannot infer generic type argument for type parameter `%s'", _tmp443_);
                                          _tmp445_ = _tmp444_;
                                          vala_report_error (_tmp441_, _tmp445_);
                                          _g_free0 (_tmp445_);
                                          _g_free0 (_tmp443_);
                                          result = FALSE;
                                          _vala_code_node_unref0 (type_arg);
                                          _vala_code_node_unref0 (type_param);
                                          _vala_iterable_unref0 (_type_param_list);
                                          _vala_code_node_unref0 (ma);
                                          _vala_code_node_unref0 (dynamic_sig);
                                          _vala_code_node_unref0 (m);
                                          _vala_iterator_unref0 (arg_it);
                                          _vala_iterable_unref0 (args);
                                          _vala_code_node_unref0 (last_arg);
                                          _vala_iterable_unref0 (params);
                                          _vala_code_node_unref0 (ret_type);
                                          _vala_code_node_unref0 (mtype);
                                          _vala_code_node_unref0 (target_object_type);
                                          return result;
                                    }
                                    vala_member_access_add_type_argument (ma, type_arg);
                                    _vala_code_node_unref0 (type_arg);
                                    _vala_code_node_unref0 (type_param);
                              }
                              _vala_iterable_unref0 (_type_param_list);
                        }
                        _tmp446_ = vala_iterable_iterator ((ValaIterable*) args);
                        _vala_iterator_unref0 (arg_it);
                        arg_it = _tmp446_;
                        {
                              ValaList* _tmp447_;
                              ValaList* _param_list;
                              gint _tmp448_;
                              gint _param_size;
                              gint _param_index;
                              _tmp447_ = _vala_iterable_ref0 (params);
                              _param_list = _tmp447_;
                              _tmp448_ = vala_collection_get_size ((ValaCollection*) _param_list);
                              _param_size = _tmp448_;
                              _param_index = -1;
                              while (TRUE) {
                                    gpointer _tmp449_ = NULL;
                                    ValaParameter* param;
                                    gboolean _tmp450_ = FALSE;
                                    gboolean _tmp451_;
                                    gboolean _tmp453_;
                                    _param_index = _param_index + 1;
                                    if (!(_param_index < _param_size)) {
                                          break;
                                    }
                                    _tmp449_ = vala_list_get (_param_list, _param_index);
                                    param = (ValaParameter*) _tmp449_;
                                    _tmp451_ = vala_parameter_get_ellipsis (param);
                                    if (_tmp451_) {
                                          _tmp450_ = TRUE;
                                    } else {
                                          gboolean _tmp452_;
                                          _tmp452_ = vala_parameter_get_params_array (param);
                                          _tmp450_ = _tmp452_;
                                    }
                                    if (_tmp450_) {
                                          _vala_code_node_unref0 (param);
                                          break;
                                    }
                                    _tmp453_ = vala_iterator_next (arg_it);
                                    if (_tmp453_) {
                                          gpointer _tmp454_ = NULL;
                                          ValaExpression* arg;
                                          ValaDataType* _tmp455_ = NULL;
                                          ValaExpression* _tmp456_ = NULL;
                                          ValaExpression* _tmp457_;
                                          ValaDataType* _tmp458_ = NULL;
                                          ValaDataType* _tmp459_;
                                          _tmp454_ = vala_iterator_get (arg_it);
                                          arg = (ValaExpression*) _tmp454_;
                                          _tmp455_ = vala_expression_get_formal_target_type (arg);
                                          _tmp456_ = vala_method_call_get_call (self);
                                          _tmp457_ = _tmp456_;
                                          _tmp458_ = vala_data_type_get_actual_type (_tmp455_, target_object_type, VALA_IS_MEMBER_ACCESS (_tmp457_) ? ((ValaMemberAccess*) _tmp457_) : NULL, (ValaCodeNode*) self);
                                          _tmp459_ = _tmp458_;
                                          vala_expression_set_target_type (arg, _tmp459_);
                                          _vala_code_node_unref0 (_tmp459_);
                                          _vala_code_node_unref0 (arg);
                                    }
                                    _vala_code_node_unref0 (param);
                              }
                              _vala_iterable_unref0 (_param_list);
                        }
                        _tmp460_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
                        _tmp461_ = vala_method_call_get_call (self);
                        _tmp462_ = _tmp461_;
                        _tmp463_ = vala_data_type_get_actual_type (_tmp460_, target_object_type, VALA_IS_MEMBER_ACCESS (_tmp462_) ? ((ValaMemberAccess*) _tmp462_) : NULL, (ValaCodeNode*) self);
                        _tmp464_ = _tmp463_;
                        vala_expression_set_value_type ((ValaExpression*) self, _tmp464_);
                        _vala_code_node_unref0 (_tmp464_);
                  }
                  _vala_code_node_unref0 (ma);
            }
            _vala_code_node_unref0 (dynamic_sig);
            _vala_code_node_unref0 (m);
      } else {
            if (VALA_IS_OBJECT_TYPE (mtype)) {
                  ValaObjectTypeSymbol* _tmp465_ = NULL;
                  ValaClass* _tmp466_;
                  ValaClass* cl;
                  ValaMethod* _tmp467_ = NULL;
                  ValaMethod* _tmp468_;
                  ValaMethod* m;
                  _tmp465_ = vala_object_type_get_type_symbol (VALA_OBJECT_TYPE (mtype));
                  _tmp466_ = _vala_code_node_ref0 (VALA_CLASS (_tmp465_));
                  cl = _tmp466_;
                  _tmp467_ = vala_class_get_default_construction_method (cl);
                  _tmp468_ = _vala_code_node_ref0 (_tmp467_);
                  m = _tmp468_;
                  {
                        ValaList* _tmp469_ = NULL;
                        ValaList* _error_type_list;
                        gint _tmp470_;
                        gint _error_type_size;
                        gint _error_type_index;
                        _tmp469_ = vala_code_node_get_error_types ((ValaCodeNode*) m);
                        _error_type_list = _tmp469_;
                        _tmp470_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
                        _error_type_size = _tmp470_;
                        _error_type_index = -1;
                        while (TRUE) {
                              gpointer _tmp471_ = NULL;
                              ValaDataType* error_type;
                              ValaDataType* _tmp472_ = NULL;
                              ValaDataType* call_error_type;
                              ValaSourceReference* _tmp473_ = NULL;
                              _error_type_index = _error_type_index + 1;
                              if (!(_error_type_index < _error_type_size)) {
                                    break;
                              }
                              _tmp471_ = vala_list_get (_error_type_list, _error_type_index);
                              error_type = (ValaDataType*) _tmp471_;
                              may_throw = TRUE;
                              _tmp472_ = vala_data_type_copy (error_type);
                              call_error_type = _tmp472_;
                              _tmp473_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_code_node_set_source_reference ((ValaCodeNode*) call_error_type, _tmp473_);
                              vala_code_node_add_error_type ((ValaCodeNode*) self, call_error_type);
                              _vala_code_node_unref0 (call_error_type);
                              _vala_code_node_unref0 (error_type);
                        }
                        _vala_iterable_unref0 (_error_type_list);
                  }
                  _vala_code_node_unref0 (m);
                  _vala_code_node_unref0 (cl);
            } else {
                  if (VALA_IS_DELEGATE_TYPE (mtype)) {
                        ValaDelegate* _tmp474_ = NULL;
                        ValaDelegate* _tmp475_;
                        ValaDelegate* d;
                        _tmp474_ = vala_delegate_type_get_delegate_symbol (VALA_DELEGATE_TYPE (mtype));
                        _tmp475_ = _vala_code_node_ref0 (_tmp474_);
                        d = _tmp475_;
                        {
                              ValaList* _tmp476_ = NULL;
                              ValaList* _error_type_list;
                              gint _tmp477_;
                              gint _error_type_size;
                              gint _error_type_index;
                              _tmp476_ = vala_code_node_get_error_types ((ValaCodeNode*) d);
                              _error_type_list = _tmp476_;
                              _tmp477_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
                              _error_type_size = _tmp477_;
                              _error_type_index = -1;
                              while (TRUE) {
                                    gpointer _tmp478_ = NULL;
                                    ValaDataType* error_type;
                                    ValaDataType* _tmp479_ = NULL;
                                    ValaDataType* call_error_type;
                                    ValaSourceReference* _tmp480_ = NULL;
                                    _error_type_index = _error_type_index + 1;
                                    if (!(_error_type_index < _error_type_size)) {
                                          break;
                                    }
                                    _tmp478_ = vala_list_get (_error_type_list, _error_type_index);
                                    error_type = (ValaDataType*) _tmp478_;
                                    may_throw = TRUE;
                                    _tmp479_ = vala_data_type_copy (error_type);
                                    call_error_type = _tmp479_;
                                    _tmp480_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    vala_code_node_set_source_reference ((ValaCodeNode*) call_error_type, _tmp480_);
                                    vala_code_node_add_error_type ((ValaCodeNode*) self, call_error_type);
                                    _vala_code_node_unref0 (call_error_type);
                                    _vala_code_node_unref0 (error_type);
                              }
                              _vala_iterable_unref0 (_error_type_list);
                        }
                        _vala_code_node_unref0 (d);
                  }
            }
      }
      _tmp481_ = vala_code_context_get_analyzer (context);
      _tmp482_ = vala_method_call_get_argument_list (self);
      _tmp483_ = _tmp482_;
      _tmp484_ = vala_semantic_analyzer_check_arguments (_tmp481_, (ValaExpression*) self, mtype, params, _tmp483_);
      _tmp485_ = !_tmp484_;
      _vala_iterable_unref0 (_tmp483_);
      if (_tmp485_) {
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            result = FALSE;
            _vala_iterator_unref0 (arg_it);
            _vala_iterable_unref0 (args);
            _vala_code_node_unref0 (last_arg);
            _vala_iterable_unref0 (params);
            _vala_code_node_unref0 (ret_type);
            _vala_code_node_unref0 (mtype);
            _vala_code_node_unref0 (target_object_type);
            return result;
      }
      if (may_throw) {
            gboolean _tmp486_ = FALSE;
            ValaCodeNode* _tmp487_ = NULL;
            _tmp487_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
            if (VALA_IS_LOCAL_VARIABLE (_tmp487_)) {
                  _tmp486_ = TRUE;
            } else {
                  ValaCodeNode* _tmp488_ = NULL;
                  _tmp488_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                  _tmp486_ = VALA_IS_EXPRESSION_STATEMENT (_tmp488_);
            }
            if (_tmp486_) {
            } else {
                  ValaSemanticAnalyzer* _tmp489_ = NULL;
                  ValaSymbol* _tmp490_ = NULL;
                  _tmp489_ = vala_code_context_get_analyzer (context);
                  _tmp490_ = vala_semantic_analyzer_get_current_symbol (_tmp489_);
                  if (!VALA_IS_BLOCK (_tmp490_)) {
                        ValaProfile _tmp491_;
                        _tmp491_ = vala_code_context_get_profile (context);
                        if (_tmp491_ != VALA_PROFILE_DOVA) {
                              ValaSourceReference* _tmp492_ = NULL;
                              _tmp492_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp492_, "Field initializers must not throw errors");
                        }
                  } else {
                        ValaCodeNode* _tmp493_ = NULL;
                        ValaCodeNode* _tmp494_;
                        ValaCodeNode* old_parent_node;
                        ValaDataType* _tmp495_ = NULL;
                        gchar* _tmp496_ = NULL;
                        gchar* _tmp497_;
                        ValaSourceReference* _tmp498_ = NULL;
                        ValaLocalVariable* _tmp499_ = NULL;
                        ValaLocalVariable* _tmp500_;
                        ValaLocalVariable* local;
                        ValaSourceReference* _tmp501_ = NULL;
                        ValaDeclarationStatement* _tmp502_ = NULL;
                        ValaDeclarationStatement* decl;
                        ValaSemanticAnalyzer* _tmp503_ = NULL;
                        const gchar* _tmp504_ = NULL;
                        ValaSourceReference* _tmp505_ = NULL;
                        ValaMemberAccess* _tmp506_ = NULL;
                        ValaExpression* temp_access;
                        ValaDataType* _tmp507_ = NULL;
                        ValaSemanticAnalyzer* _tmp508_ = NULL;
                        ValaSymbol* _tmp509_ = NULL;
                        ValaBlock* _tmp510_;
                        ValaBlock* block;
                        ValaSemanticAnalyzer* _tmp511_ = NULL;
                        _tmp493_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                        _tmp494_ = _vala_code_node_ref0 (_tmp493_);
                        old_parent_node = _tmp494_;
                        _tmp495_ = vala_expression_get_value_type ((ValaExpression*) self);
                        _tmp496_ = vala_code_node_get_temp_name ();
                        _tmp497_ = _tmp496_;
                        _tmp498_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp499_ = vala_local_variable_new (_tmp495_, _tmp497_, NULL, _tmp498_);
                        _tmp500_ = _tmp499_;
                        _g_free0 (_tmp497_);
                        local = _tmp500_;
                        vala_local_variable_set_floating (local, TRUE);
                        _tmp501_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp502_ = vala_declaration_statement_new ((ValaSymbol*) local, _tmp501_);
                        decl = _tmp502_;
                        _tmp503_ = vala_code_context_get_analyzer (context);
                        vala_expression_insert_statement ((ValaExpression*) self, _tmp503_->insert_block, (ValaStatement*) decl);
                        _tmp504_ = vala_symbol_get_name ((ValaSymbol*) local);
                        _tmp505_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp506_ = vala_member_access_new_simple (_tmp504_, _tmp505_);
                        temp_access = (ValaExpression*) _tmp506_;
                        _tmp507_ = vala_expression_get_target_type ((ValaExpression*) self);
                        vala_expression_set_target_type (temp_access, _tmp507_);
                        vala_variable_set_initializer ((ValaVariable*) local, (ValaExpression*) self);
                        vala_code_node_check ((ValaCodeNode*) decl, context);
                        vala_code_node_check ((ValaCodeNode*) temp_access, context);
                        _tmp508_ = vala_code_context_get_analyzer (context);
                        _tmp509_ = vala_semantic_analyzer_get_current_symbol (_tmp508_);
                        _tmp510_ = _vala_code_node_ref0 (VALA_BLOCK (_tmp509_));
                        block = _tmp510_;
                        vala_block_remove_local_variable (block, local);
                        _tmp511_ = vala_code_context_get_analyzer (context);
                        vala_block_add_local_variable (_tmp511_->insert_block, local);
                        vala_code_node_replace_expression (old_parent_node, (ValaExpression*) self, temp_access);
                        _vala_code_node_unref0 (block);
                        _vala_code_node_unref0 (temp_access);
                        _vala_code_node_unref0 (decl);
                        _vala_code_node_unref0 (local);
                        _vala_code_node_unref0 (old_parent_node);
                  }
            }
      }
      _tmp512_ = vala_code_node_get_error ((ValaCodeNode*) self);
      result = !_tmp512_;
      _vala_iterator_unref0 (arg_it);
      _vala_iterable_unref0 (args);
      _vala_code_node_unref0 (last_arg);
      _vala_iterable_unref0 (params);
      _vala_code_node_unref0 (ret_type);
      _vala_code_node_unref0 (mtype);
      _vala_code_node_unref0 (target_object_type);
      return result;
}


static void vala_method_call_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen) {
      ValaMethodCall * self;
      ValaExpression* _tmp0_ = NULL;
      ValaDataType* _tmp1_ = NULL;
      ValaDataType* _tmp2_;
      ValaMethodType* _tmp3_;
      ValaMethodType* method_type;
      gboolean _tmp22_ = FALSE;
      self = (ValaMethodCall*) base;
      g_return_if_fail (codegen != NULL);
      _tmp0_ = vala_method_call_get_call (self);
      _tmp1_ = vala_expression_get_value_type (_tmp0_);
      _tmp2_ = _tmp1_;
      _tmp3_ = _vala_code_node_ref0 (VALA_IS_METHOD_TYPE (_tmp2_) ? ((ValaMethodType*) _tmp2_) : NULL);
      method_type = _tmp3_;
      if (method_type != NULL) {
            ValaMethod* _tmp4_ = NULL;
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            gboolean _tmp7_;
            _tmp4_ = vala_method_type_get_method_symbol (method_type);
            _tmp5_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp4_);
            _tmp6_ = _tmp5_;
            _tmp7_ = g_strcmp0 (_tmp6_, "GLib.N_") == 0;
            _g_free0 (_tmp6_);
            if (_tmp7_) {
                  gpointer _tmp8_ = NULL;
                  ValaExpression* _tmp9_;
                  gpointer _tmp10_ = NULL;
                  ValaExpression* _tmp11_;
                  ValaTargetValue* _tmp12_ = NULL;
                  _tmp8_ = vala_list_get (self->priv->argument_list, 0);
                  _tmp9_ = (ValaExpression*) _tmp8_;
                  vala_code_node_emit ((ValaCodeNode*) _tmp9_, codegen);
                  _vala_code_node_unref0 (_tmp9_);
                  _tmp10_ = vala_list_get (self->priv->argument_list, 0);
                  _tmp11_ = (ValaExpression*) _tmp10_;
                  _tmp12_ = vala_expression_get_target_value (_tmp11_);
                  vala_expression_set_target_value ((ValaExpression*) self, _tmp12_);
                  _vala_code_node_unref0 (_tmp11_);
                  _vala_code_node_unref0 (method_type);
                  return;
            } else {
                  ValaMethod* _tmp13_ = NULL;
                  gchar* _tmp14_ = NULL;
                  gchar* _tmp15_;
                  gboolean _tmp16_;
                  _tmp13_ = vala_method_type_get_method_symbol (method_type);
                  _tmp14_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp13_);
                  _tmp15_ = _tmp14_;
                  _tmp16_ = g_strcmp0 (_tmp15_, "GLib.NC_") == 0;
                  _g_free0 (_tmp15_);
                  if (_tmp16_) {
                        gpointer _tmp17_ = NULL;
                        ValaExpression* _tmp18_;
                        gpointer _tmp19_ = NULL;
                        ValaExpression* _tmp20_;
                        ValaTargetValue* _tmp21_ = NULL;
                        _tmp17_ = vala_list_get (self->priv->argument_list, 1);
                        _tmp18_ = (ValaExpression*) _tmp17_;
                        vala_code_node_emit ((ValaCodeNode*) _tmp18_, codegen);
                        _vala_code_node_unref0 (_tmp18_);
                        _tmp19_ = vala_list_get (self->priv->argument_list, 1);
                        _tmp20_ = (ValaExpression*) _tmp19_;
                        _tmp21_ = vala_expression_get_target_value (_tmp20_);
                        vala_expression_set_target_value ((ValaExpression*) self, _tmp21_);
                        _vala_code_node_unref0 (_tmp20_);
                        _vala_code_node_unref0 (method_type);
                        return;
                  }
            }
      }
      if (method_type != NULL) {
            ValaMethod* _tmp23_ = NULL;
            ValaSymbol* _tmp24_ = NULL;
            _tmp23_ = vala_method_type_get_method_symbol (method_type);
            _tmp24_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp23_);
            _tmp22_ = VALA_IS_SIGNAL (_tmp24_);
      } else {
            _tmp22_ = FALSE;
      }
      if (_tmp22_) {
            ValaExpression* _tmp25_ = NULL;
            ValaExpression* _tmp26_ = NULL;
            ValaExpression* _tmp27_;
            ValaExpression* signal_access;
            _tmp25_ = vala_method_call_get_call (self);
            _tmp26_ = vala_member_access_get_inner (VALA_MEMBER_ACCESS (_tmp25_));
            _tmp27_ = _vala_code_node_ref0 (_tmp26_);
            signal_access = _tmp27_;
            vala_code_node_emit ((ValaCodeNode*) signal_access, codegen);
            _vala_code_node_unref0 (signal_access);
      } else {
            ValaExpression* _tmp28_ = NULL;
            _tmp28_ = vala_method_call_get_call (self);
            vala_code_node_emit ((ValaCodeNode*) _tmp28_, codegen);
      }
      {
            ValaList* _tmp29_;
            ValaList* _expr_list;
            gint _tmp30_;
            gint _expr_size;
            gint _expr_index;
            _tmp29_ = _vala_iterable_ref0 (self->priv->argument_list);
            _expr_list = _tmp29_;
            _tmp30_ = vala_collection_get_size ((ValaCollection*) _expr_list);
            _expr_size = _tmp30_;
            _expr_index = -1;
            while (TRUE) {
                  gpointer _tmp31_ = NULL;
                  ValaExpression* expr;
                  _expr_index = _expr_index + 1;
                  if (!(_expr_index < _expr_size)) {
                        break;
                  }
                  _tmp31_ = vala_list_get (_expr_list, _expr_index);
                  expr = (ValaExpression*) _tmp31_;
                  vala_code_node_emit ((ValaCodeNode*) expr, codegen);
                  _vala_code_node_unref0 (expr);
            }
            _vala_iterable_unref0 (_expr_list);
      }
      vala_code_visitor_visit_method_call ((ValaCodeVisitor*) codegen, self);
      vala_code_visitor_visit_expression ((ValaCodeVisitor*) codegen, (ValaExpression*) self);
      _vala_code_node_unref0 (method_type);
}


static void vala_method_call_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaMethodCall * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMethodCall*) base;
      g_return_if_fail (collection != NULL);
      _tmp0_ = vala_method_call_get_call (self);
      vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp0_, collection);
      {
            ValaList* _tmp1_;
            ValaList* _arg_list;
            gint _tmp2_;
            gint _arg_size;
            gint _arg_index;
            _tmp1_ = _vala_iterable_ref0 (self->priv->argument_list);
            _arg_list = _tmp1_;
            _tmp2_ = vala_collection_get_size ((ValaCollection*) _arg_list);
            _arg_size = _tmp2_;
            _arg_index = -1;
            while (TRUE) {
                  gpointer _tmp3_ = NULL;
                  ValaExpression* arg;
                  _arg_index = _arg_index + 1;
                  if (!(_arg_index < _arg_size)) {
                        break;
                  }
                  _tmp3_ = vala_list_get (_arg_list, _arg_index);
                  arg = (ValaExpression*) _tmp3_;
                  vala_code_node_get_defined_variables ((ValaCodeNode*) arg, collection);
                  _vala_code_node_unref0 (arg);
            }
            _vala_iterable_unref0 (_arg_list);
      }
}


static void vala_method_call_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaMethodCall * self;
      ValaExpression* _tmp0_ = NULL;
      self = (ValaMethodCall*) base;
      g_return_if_fail (collection != NULL);
      _tmp0_ = vala_method_call_get_call (self);
      vala_code_node_get_used_variables ((ValaCodeNode*) _tmp0_, collection);
      {
            ValaList* _tmp1_;
            ValaList* _arg_list;
            gint _tmp2_;
            gint _arg_size;
            gint _arg_index;
            _tmp1_ = _vala_iterable_ref0 (self->priv->argument_list);
            _arg_list = _tmp1_;
            _tmp2_ = vala_collection_get_size ((ValaCollection*) _arg_list);
            _arg_size = _tmp2_;
            _arg_index = -1;
            while (TRUE) {
                  gpointer _tmp3_ = NULL;
                  ValaExpression* arg;
                  _arg_index = _arg_index + 1;
                  if (!(_arg_index < _arg_size)) {
                        break;
                  }
                  _tmp3_ = vala_list_get (_arg_list, _arg_index);
                  arg = (ValaExpression*) _tmp3_;
                  vala_code_node_get_used_variables ((ValaCodeNode*) arg, collection);
                  _vala_code_node_unref0 (arg);
            }
            _vala_iterable_unref0 (_arg_list);
      }
}


ValaExpression* vala_method_call_get_call (ValaMethodCall* self) {
      ValaExpression* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->_call;
      return result;
}


void vala_method_call_set_call (ValaMethodCall* self, ValaExpression* value) {
      ValaExpression* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = _vala_code_node_ref0 (value);
      _vala_code_node_unref0 (self->_call);
      self->_call = _tmp0_;
      vala_code_node_set_parent_node ((ValaCodeNode*) self->_call, (ValaCodeNode*) self);
}


gboolean vala_method_call_get_is_yield_expression (ValaMethodCall* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_is_yield_expression;
      return result;
}


void vala_method_call_set_is_yield_expression (ValaMethodCall* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_is_yield_expression = value;
}


gboolean vala_method_call_get_is_assert (ValaMethodCall* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_is_assert;
      return result;
}


static void vala_method_call_set_is_assert (ValaMethodCall* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_is_assert = value;
}


static void vala_method_call_class_init (ValaMethodCallClass * klass) {
      vala_method_call_parent_class = g_type_class_peek_parent (klass);
      VALA_CODE_NODE_CLASS (klass)->finalize = vala_method_call_finalize;
      g_type_class_add_private (klass, sizeof (ValaMethodCallPrivate));
      VALA_CODE_NODE_CLASS (klass)->accept = vala_method_call_real_accept;
      VALA_CODE_NODE_CLASS (klass)->accept_children = vala_method_call_real_accept_children;
      VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_method_call_real_replace_expression;
      VALA_EXPRESSION_CLASS (klass)->is_constant = vala_method_call_real_is_constant;
      VALA_EXPRESSION_CLASS (klass)->is_pure = vala_method_call_real_is_pure;
      VALA_CODE_NODE_CLASS (klass)->check = vala_method_call_real_check;
      VALA_CODE_NODE_CLASS (klass)->emit = vala_method_call_real_emit;
      VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_method_call_real_get_defined_variables;
      VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_method_call_real_get_used_variables;
}


static void vala_method_call_instance_init (ValaMethodCall * self) {
      ValaArrayList* _tmp0_ = NULL;
      self->priv = VALA_METHOD_CALL_GET_PRIVATE (self);
      _tmp0_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
      self->priv->argument_list = (ValaList*) _tmp0_;
}


static void vala_method_call_finalize (ValaCodeNode* obj) {
      ValaMethodCall * self;
      self = VALA_METHOD_CALL (obj);
      _vala_code_node_unref0 (self->_call);
      _vala_iterable_unref0 (self->priv->argument_list);
      VALA_CODE_NODE_CLASS (vala_method_call_parent_class)->finalize (obj);
}


/**
 * Represents an invocation expression in the source code.
 */
GType vala_method_call_get_type (void) {
      static volatile gsize vala_method_call_type_id__volatile = 0;
      if (g_once_init_enter (&vala_method_call_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaMethodCallClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_method_call_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaMethodCall), 0, (GInstanceInitFunc) vala_method_call_instance_init, NULL };
            GType vala_method_call_type_id;
            vala_method_call_type_id = g_type_register_static (VALA_TYPE_EXPRESSION, "ValaMethodCall", &g_define_type_info, 0);
            g_once_init_leave (&vala_method_call_type_id__volatile, vala_method_call_type_id);
      }
      return vala_method_call_type_id__volatile;
}




Generated by  Doxygen 1.6.0   Back to index