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

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

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER (php_to_vala_file_func_vars_optimizer_get_type ())
#define PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER, PhpToValaFileFuncVarsOptimizer))
#define PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER, PhpToValaFileFuncVarsOptimizerClass))
#define IS_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER))
#define IS_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER))
#define PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER, PhpToValaFileFuncVarsOptimizerClass))

typedef struct _PhpToValaFileFuncVarsOptimizer PhpToValaFileFuncVarsOptimizer;
typedef struct _PhpToValaFileFuncVarsOptimizerClass PhpToValaFileFuncVarsOptimizerClass;
typedef struct _PhpToValaFileFuncVarsOptimizerPrivate PhpToValaFileFuncVarsOptimizerPrivate;

#define TYPE_PHP_TO_VALA_TRANSPILER (php_to_vala_transpiler_get_type ())
#define PHP_TO_VALA_TRANSPILER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHP_TO_VALA_TRANSPILER, PhpToValaTranspiler))
#define PHP_TO_VALA_TRANSPILER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHP_TO_VALA_TRANSPILER, PhpToValaTranspilerClass))
#define IS_PHP_TO_VALA_TRANSPILER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHP_TO_VALA_TRANSPILER))
#define IS_PHP_TO_VALA_TRANSPILER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHP_TO_VALA_TRANSPILER))
#define PHP_TO_VALA_TRANSPILER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHP_TO_VALA_TRANSPILER, PhpToValaTranspilerClass))

typedef struct _PhpToValaTranspiler PhpToValaTranspiler;
typedef struct _PhpToValaTranspilerClass PhpToValaTranspilerClass;
enum  {
	PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER_0_PROPERTY,
	PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER_NUM_PROPERTIES
};
static GParamSpec* php_to_vala_file_func_vars_optimizer_properties[PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define TYPE_LOCAL_FUNCTION (local_function_get_type ())
#define LOCAL_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_FUNCTION, LocalFunction))
#define LOCAL_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_FUNCTION, LocalFunctionClass))
#define IS_LOCAL_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_FUNCTION))
#define IS_LOCAL_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_FUNCTION))
#define LOCAL_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_FUNCTION, LocalFunctionClass))

typedef struct _LocalFunction LocalFunction;
typedef struct _LocalFunctionClass LocalFunctionClass;
#define _g_free0(var) (var = (g_free (var), NULL))

#define TYPE_LOCAL_PARAMETER (local_parameter_get_type ())
#define LOCAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_PARAMETER, LocalParameter))
#define LOCAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_PARAMETER, LocalParameterClass))
#define IS_LOCAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_PARAMETER))
#define IS_LOCAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_PARAMETER))
#define LOCAL_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_PARAMETER, LocalParameterClass))

typedef struct _LocalParameter LocalParameter;
typedef struct _LocalParameterClass LocalParameterClass;
typedef struct _LocalFunctionPrivate LocalFunctionPrivate;
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
typedef struct _PhpToValaTranspilerPrivate PhpToValaTranspilerPrivate;
typedef struct _LocalParameterPrivate LocalParameterPrivate;

#define TYPE_STATEMENTS (statements_get_type ())
#define STATEMENTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_STATEMENTS, Statements))
#define STATEMENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_STATEMENTS, StatementsClass))
#define IS_STATEMENTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_STATEMENTS))
#define IS_STATEMENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_STATEMENTS))
#define STATEMENTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_STATEMENTS, StatementsClass))

typedef struct _Statements Statements;
typedef struct _StatementsClass StatementsClass;
typedef struct _StatementsPrivate StatementsPrivate;

struct _PhpToValaFileFuncVarsOptimizer {
	GObject parent_instance;
	PhpToValaFileFuncVarsOptimizerPrivate * priv;
};

struct _PhpToValaFileFuncVarsOptimizerClass {
	GObjectClass parent_class;
};

struct _PhpToValaFileFuncVarsOptimizerPrivate {
	PhpToValaTranspiler* transpiler;
	gboolean emitted_callable_delegate;
};

struct _LocalFunction {
	GObject parent_instance;
	LocalFunctionPrivate * priv;
	gchar* name;
	GeeArrayList* parameters;
	gchar* return_type;
	gchar* body;
	gint line;
	gboolean is_static;
	gchar* doc_comment;
};

struct _LocalFunctionClass {
	GObjectClass parent_class;
};

struct _PhpToValaTranspiler {
	GObject parent_instance;
	PhpToValaTranspilerPrivate * priv;
	gboolean transpiling_local_function;
	gchar* current_local_function_name;
	GeeHashMap* variable_types;
	GeeHashMap* variable_aliases;
	GeeHashMap* local_functions;
};

struct _PhpToValaTranspilerClass {
	GObjectClass parent_class;
};

struct _LocalParameter {
	GObject parent_instance;
	LocalParameterPrivate * priv;
	gchar* name;
	gchar* type_name;
	gchar* default_value;
};

struct _LocalParameterClass {
	GObjectClass parent_class;
};

struct _Statements {
	GObject parent_instance;
	StatementsPrivate * priv;
	GeeArrayList* texts;
	GeeArrayList* lines;
	GeeArrayList* columns;
};

struct _StatementsClass {
	GObjectClass parent_class;
};

static gint PhpToValaFileFuncVarsOptimizer_private_offset;
static gpointer php_to_vala_file_func_vars_optimizer_parent_class = NULL;

VALA_EXTERN GType php_to_vala_file_func_vars_optimizer_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PhpToValaFileFuncVarsOptimizer, g_object_unref)
VALA_EXTERN GType php_to_vala_transpiler_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PhpToValaTranspiler, g_object_unref)
VALA_EXTERN PhpToValaFileFuncVarsOptimizer* php_to_vala_file_func_vars_optimizer_new (PhpToValaTranspiler* transpiler);
VALA_EXTERN PhpToValaFileFuncVarsOptimizer* php_to_vala_file_func_vars_optimizer_construct (GType object_type,
                                                                                PhpToValaTranspiler* transpiler);
VALA_EXTERN GType local_function_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LocalFunction, g_object_unref)
VALA_EXTERN gboolean php_to_vala_file_func_vars_optimizer_can_emit (PhpToValaFileFuncVarsOptimizer* self,
                                                        LocalFunction* local_function);
static gchar* php_to_vala_file_func_vars_optimizer_infer_return_type (PhpToValaFileFuncVarsOptimizer* self,
                                                               LocalFunction* local_function);
VALA_EXTERN GType local_parameter_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LocalParameter, g_object_unref)
static gchar* php_to_vala_file_func_vars_optimizer_infer_parameter_type (PhpToValaFileFuncVarsOptimizer* self,
                                                                  LocalFunction* local_function,
                                                                  LocalParameter* parameter);
VALA_EXTERN void php_to_vala_file_func_vars_optimizer_append_native_function_with_zval_wrapper (PhpToValaFileFuncVarsOptimizer* self,
                                                                                    GString* output,
                                                                                    LocalFunction* local_function,
                                                                                    GError** error);
static void php_to_vala_file_func_vars_optimizer_append_native_function (PhpToValaFileFuncVarsOptimizer* self,
                                                                  GString* output,
                                                                  LocalFunction* local_function,
                                                                  GError** error);
static void php_to_vala_file_func_vars_optimizer_append_zval_wrapper (PhpToValaFileFuncVarsOptimizer* self,
                                                               GString* output,
                                                               LocalFunction* local_function);
VALA_EXTERN gchar* php_to_vala_file_func_vars_optimizer_local_function_call_as_native_value (PhpToValaFileFuncVarsOptimizer* self,
                                                                                 LocalFunction* local_function,
                                                                                 const gchar* args,
                                                                                 gint php_line_number,
                                                                                 GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_convert_native_argument_list (PhpToValaFileFuncVarsOptimizer* self,
                                                                          const gchar* args,
                                                                          gint php_line_number,
                                                                          GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_native_function_name (PhpToValaFileFuncVarsOptimizer* self,
                                                                  LocalFunction* local_function);
VALA_EXTERN gchar* php_to_vala_file_func_vars_optimizer_replace_inline_local_function_call (PhpToValaFileFuncVarsOptimizer* self,
                                                                                const gchar* expression,
                                                                                LocalFunction* local_function,
                                                                                gint php_line_number);
VALA_EXTERN gboolean php_to_vala_transpiler_is_identifier_char (gchar c);
VALA_EXTERN gint php_to_vala_transpiler_find_matching_paren (const gchar* value,
                                                 gint start_index);
static gboolean php_to_vala_file_func_vars_optimizer_needs_callable_delegate (PhpToValaFileFuncVarsOptimizer* self,
                                                                       LocalFunction* local_function);
static void php_to_vala_file_func_vars_optimizer_append_callable_delegate_initializers (PhpToValaFileFuncVarsOptimizer* self,
                                                                                 GString* output,
                                                                                 LocalFunction* local_function);
VALA_EXTERN GType statements_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Statements, g_object_unref)
VALA_EXTERN Statements* php_to_vala_source_parser_collect_statements (const gchar* body,
                                                          gint first_line_number);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_line (PhpToValaFileFuncVarsOptimizer* self,
                                                                   LocalFunction* local_function,
                                                                   const gchar* line,
                                                                   gint php_line_number,
                                                                   GError** error);
VALA_EXTERN void php_to_vala_transpiler_validate_no_untranslated_php (PhpToValaTranspiler* self,
                                                          const gchar* php_statement,
                                                          gint php_line,
                                                          gint php_column,
                                                          const gchar* vala_line,
                                                          GError** error);
VALA_EXTERN gint php_to_vala_transpiler_append_generated_block (PhpToValaTranspiler* self,
                                                    GString* output,
                                                    gint base_level,
                                                    const gchar* generated_block,
                                                    gint initial_relative_level);
VALA_EXTERN gboolean php_to_vala_transpiler_zval_statement_terminates_function (const gchar* vala_line);
static gboolean php_to_vala_file_func_vars_optimizer_native_body_has_unconditional_loop_return (PhpToValaFileFuncVarsOptimizer* self,
                                                                                         LocalFunction* local_function);
VALA_EXTERN void php_to_vala_transpiler_append_indented_line (PhpToValaTranspiler* self,
                                                  GString* output,
                                                  gint level,
                                                  const gchar* line);
static gchar* php_to_vala_file_func_vars_optimizer_default_native_return (PhpToValaFileFuncVarsOptimizer* self,
                                                                   const gchar* return_type);
VALA_EXTERN gchar* php_to_vala_transpiler_build_zval_local_function_parameter_list (PhpToValaTranspiler* self,
                                                                        LocalFunction* local_function);
static gchar* php_to_vala_file_func_vars_optimizer_zval_to_native_argument (PhpToValaFileFuncVarsOptimizer* self,
                                                                     const gchar* parameter_name,
                                                                     const gchar* native_type);
static gchar* php_to_vala_file_func_vars_optimizer_native_to_zval_return (PhpToValaFileFuncVarsOptimizer* self,
                                                                   const gchar* expression,
                                                                   const gchar* native_type);
VALA_EXTERN GeeArrayList* php_to_vala_transpiler_split_top_level (PhpToValaTranspiler* self,
                                                      const gchar* expression,
                                                      gchar separator);
static gchar* php_to_vala_file_func_vars_optimizer_convert_native_expression (PhpToValaFileFuncVarsOptimizer* self,
                                                                       const gchar* expression,
                                                                       gint php_line_number,
                                                                       const gchar* expected_type,
                                                                       GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_native_scalar_type (PhpToValaFileFuncVarsOptimizer* self,
                                                                const gchar* php_type);
static gboolean php_to_vala_file_func_vars_optimizer_function_body_has_return (PhpToValaFileFuncVarsOptimizer* self,
                                                                        const gchar* body);
static gboolean php_to_vala_file_func_vars_optimizer_is_simple_no_return_wrapper (PhpToValaFileFuncVarsOptimizer* self,
                                                                           LocalFunction* local_function);
static gboolean php_to_vala_file_func_vars_optimizer_uses_parameter_as_callable (PhpToValaFileFuncVarsOptimizer* self,
                                                                          LocalFunction* local_function,
                                                                          LocalParameter* parameter);
static gboolean php_to_vala_file_func_vars_optimizer_assigns_parameter (PhpToValaFileFuncVarsOptimizer* self,
                                                                 LocalFunction* local_function,
                                                                 LocalParameter* parameter);
static gchar* php_to_vala_file_func_vars_optimizer_callable_delegate_name (PhpToValaFileFuncVarsOptimizer* self,
                                                                    const gchar* parameter_name);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_callable_string_call (PhpToValaFileFuncVarsOptimizer* self,
                                                                            LocalFunction* local_function,
                                                                            const gchar* line,
                                                                            gint php_line_number,
                                                                            GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_if (PhpToValaFileFuncVarsOptimizer* self,
                                                                 const gchar* line,
                                                                 gint php_line_number,
                                                                 GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_local_function_statement (PhpToValaFileFuncVarsOptimizer* self,
                                                                                       const gchar* line,
                                                                                       gint php_line_number,
                                                                                       GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_chained_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                                 const gchar* line,
                                                                                 gint php_line_number,
                                                                                 GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_increment (PhpToValaFileFuncVarsOptimizer* self,
                                                                        const gchar* line);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_compound_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                                  const gchar* line);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                         const gchar* line,
                                                                         gint php_line_number,
                                                                         GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_transpile_native_list_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                              const gchar* line,
                                                                              gint php_line_number,
                                                                              GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_trim_trailing_semicolon (const gchar* value);
VALA_EXTERN gchar* php_to_vala_transpiler_transpile_line (PhpToValaTranspiler* self,
                                              const gchar* line,
                                              gint php_line_number,
                                              GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_infer_native_expression_type (PhpToValaFileFuncVarsOptimizer* self,
                                                                          const gchar* expression);
static gboolean php_to_vala_file_func_vars_optimizer_is_plain_identifier (PhpToValaFileFuncVarsOptimizer* self,
                                                                   const gchar* name);
VALA_EXTERN gchar* php_to_vala_transpiler_map_php_runtime_function_name (PhpToValaTranspiler* self,
                                                             const gchar* php_function_name,
                                                             const gchar* runtime_function_name,
                                                             gint php_line_number,
                                                             GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_source_location_args (PhpToValaTranspiler* self,
                                                    gint php_line_number);
VALA_EXTERN gchar* php_to_vala_transpiler_map_php_function_name (PhpToValaTranspiler* self,
                                                     const gchar* function_name,
                                                     gint php_line_number,
                                                     GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_enum_prefix_for_function (PhpToValaTranspiler* self,
                                                        const gchar* function_name);
static gchar* php_to_vala_file_func_vars_optimizer_convert_native_division_expression (PhpToValaFileFuncVarsOptimizer* self,
                                                                                const gchar* expression,
                                                                                gint php_line_number,
                                                                                GError** error);
static gchar* php_to_vala_file_func_vars_optimizer_convert_native_comparison_expression (PhpToValaFileFuncVarsOptimizer* self,
                                                                                  const gchar* expression,
                                                                                  gint php_line_number,
                                                                                  GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_convert_expression (PhpToValaTranspiler* self,
                                                  const gchar* expression,
                                                  gint php_line_number,
                                                  GError** error);
static gint php_to_vala_file_func_vars_optimizer_find_top_level_operator (PhpToValaFileFuncVarsOptimizer* self,
                                                                   const gchar* expression,
                                                                   const gchar* op);
static void php_to_vala_file_func_vars_optimizer_finalize (GObject * obj);
static GType php_to_vala_file_func_vars_optimizer_get_type_once (void);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);
static gssize _vala_array_length (gpointer array);

static inline gpointer
php_to_vala_file_func_vars_optimizer_get_instance_private (PhpToValaFileFuncVarsOptimizer* self)
{
	return G_STRUCT_MEMBER_P (self, PhpToValaFileFuncVarsOptimizer_private_offset);
}

static gpointer
_g_object_ref0 (gpointer self)
{
#line 17 "../src/file_func_vars_optimizer.vala"
	return self ? g_object_ref (self) : NULL;
#line 361 "file_func_vars_optimizer.c"
}

PhpToValaFileFuncVarsOptimizer*
php_to_vala_file_func_vars_optimizer_construct (GType object_type,
                                                PhpToValaTranspiler* transpiler)
{
	PhpToValaFileFuncVarsOptimizer * self = NULL;
	PhpToValaTranspiler* _tmp0_;
#line 16 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (transpiler != NULL, NULL);
#line 16 "../src/file_func_vars_optimizer.vala"
	self = (PhpToValaFileFuncVarsOptimizer*) g_object_new (object_type, NULL);
#line 17 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = _g_object_ref0 (transpiler);
#line 17 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (self->priv->transpiler);
#line 17 "../src/file_func_vars_optimizer.vala"
	self->priv->transpiler = _tmp0_;
#line 16 "../src/file_func_vars_optimizer.vala"
	return self;
#line 382 "file_func_vars_optimizer.c"
}

PhpToValaFileFuncVarsOptimizer*
php_to_vala_file_func_vars_optimizer_new (PhpToValaTranspiler* transpiler)
{
#line 16 "../src/file_func_vars_optimizer.vala"
	return php_to_vala_file_func_vars_optimizer_construct (TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER, transpiler);
#line 390 "file_func_vars_optimizer.c"
}

gboolean
php_to_vala_file_func_vars_optimizer_can_emit (PhpToValaFileFuncVarsOptimizer* self,
                                               LocalFunction* local_function)
{
	gchar* return_type = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	gboolean _tmp14_ = FALSE;
	gboolean _tmp15_ = FALSE;
	GeeArrayList* _tmp16_;
	gint _tmp17_;
	gint _tmp18_;
	gboolean result;
#line 20 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 20 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 21 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = php_to_vala_file_func_vars_optimizer_infer_return_type (self, local_function);
#line 21 "../src/file_func_vars_optimizer.vala"
	return_type = _tmp0_;
#line 22 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = return_type;
#line 22 "../src/file_func_vars_optimizer.vala"
	if (_tmp1_ == NULL) {
#line 23 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 23 "../src/file_func_vars_optimizer.vala"
		_g_free0 (return_type);
#line 23 "../src/file_func_vars_optimizer.vala"
		return result;
#line 424 "file_func_vars_optimizer.c"
	}
	{
		GeeArrayList* _parameter_list = NULL;
		GeeArrayList* _tmp2_;
		gint _parameter_size = 0;
		GeeArrayList* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _parameter_index = 0;
#line 26 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = local_function->parameters;
#line 26 "../src/file_func_vars_optimizer.vala"
		_parameter_list = _tmp2_;
#line 26 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = _parameter_list;
#line 26 "../src/file_func_vars_optimizer.vala"
		_tmp4_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp3_);
#line 26 "../src/file_func_vars_optimizer.vala"
		_tmp5_ = _tmp4_;
#line 26 "../src/file_func_vars_optimizer.vala"
		_parameter_size = _tmp5_;
#line 26 "../src/file_func_vars_optimizer.vala"
		_parameter_index = -1;
#line 26 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 450 "file_func_vars_optimizer.c"
			gint _tmp6_;
			gint _tmp7_;
			LocalParameter* parameter = NULL;
			GeeArrayList* _tmp8_;
			gpointer _tmp9_;
			LocalParameter* _tmp10_;
			gchar* _tmp11_;
			gchar* _tmp12_;
			gboolean _tmp13_;
#line 26 "../src/file_func_vars_optimizer.vala"
			_parameter_index = _parameter_index + 1;
#line 26 "../src/file_func_vars_optimizer.vala"
			_tmp6_ = _parameter_index;
#line 26 "../src/file_func_vars_optimizer.vala"
			_tmp7_ = _parameter_size;
#line 26 "../src/file_func_vars_optimizer.vala"
			if (!(_tmp6_ < _tmp7_)) {
#line 26 "../src/file_func_vars_optimizer.vala"
				break;
#line 470 "file_func_vars_optimizer.c"
			}
#line 26 "../src/file_func_vars_optimizer.vala"
			_tmp8_ = _parameter_list;
#line 26 "../src/file_func_vars_optimizer.vala"
			_tmp9_ = gee_abstract_list_get ((GeeAbstractList*) _tmp8_, _parameter_index);
#line 26 "../src/file_func_vars_optimizer.vala"
			parameter = (LocalParameter*) _tmp9_;
#line 27 "../src/file_func_vars_optimizer.vala"
			_tmp10_ = parameter;
#line 27 "../src/file_func_vars_optimizer.vala"
			_tmp11_ = php_to_vala_file_func_vars_optimizer_infer_parameter_type (self, local_function, _tmp10_);
#line 27 "../src/file_func_vars_optimizer.vala"
			_tmp12_ = _tmp11_;
#line 27 "../src/file_func_vars_optimizer.vala"
			_tmp13_ = _tmp12_ == NULL;
#line 27 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp12_);
#line 27 "../src/file_func_vars_optimizer.vala"
			if (_tmp13_) {
#line 28 "../src/file_func_vars_optimizer.vala"
				result = FALSE;
#line 28 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (parameter);
#line 28 "../src/file_func_vars_optimizer.vala"
				_g_free0 (return_type);
#line 28 "../src/file_func_vars_optimizer.vala"
				return result;
#line 498 "file_func_vars_optimizer.c"
			}
#line 26 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (parameter);
#line 502 "file_func_vars_optimizer.c"
		}
	}
#line 32 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = local_function->parameters;
#line 32 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp16_);
#line 32 "../src/file_func_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 32 "../src/file_func_vars_optimizer.vala"
	if (_tmp18_ == 0) {
#line 513 "file_func_vars_optimizer.c"
		const gchar* _tmp19_;
#line 32 "../src/file_func_vars_optimizer.vala"
		_tmp19_ = return_type;
#line 32 "../src/file_func_vars_optimizer.vala"
		_tmp15_ = g_strcmp0 (_tmp19_, "void") != 0;
#line 519 "file_func_vars_optimizer.c"
	} else {
#line 32 "../src/file_func_vars_optimizer.vala"
		_tmp15_ = FALSE;
#line 523 "file_func_vars_optimizer.c"
	}
#line 32 "../src/file_func_vars_optimizer.vala"
	if (_tmp15_) {
#line 527 "file_func_vars_optimizer.c"
		const gchar* _tmp20_;
#line 32 "../src/file_func_vars_optimizer.vala"
		_tmp20_ = local_function->return_type;
#line 32 "../src/file_func_vars_optimizer.vala"
		_tmp14_ = _tmp20_ != NULL;
#line 533 "file_func_vars_optimizer.c"
	} else {
#line 32 "../src/file_func_vars_optimizer.vala"
		_tmp14_ = FALSE;
#line 537 "file_func_vars_optimizer.c"
	}
#line 32 "../src/file_func_vars_optimizer.vala"
	if (_tmp14_) {
#line 33 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 33 "../src/file_func_vars_optimizer.vala"
		_g_free0 (return_type);
#line 33 "../src/file_func_vars_optimizer.vala"
		return result;
#line 547 "file_func_vars_optimizer.c"
	}
#line 36 "../src/file_func_vars_optimizer.vala"
	result = TRUE;
#line 36 "../src/file_func_vars_optimizer.vala"
	_g_free0 (return_type);
#line 36 "../src/file_func_vars_optimizer.vala"
	return result;
#line 555 "file_func_vars_optimizer.c"
}

void
php_to_vala_file_func_vars_optimizer_append_native_function_with_zval_wrapper (PhpToValaFileFuncVarsOptimizer* self,
                                                                               GString* output,
                                                                               LocalFunction* local_function,
                                                                               GError** error)
{
	GError* _inner_error0_ = NULL;
#line 39 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (self != NULL);
#line 39 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (output != NULL);
#line 39 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (local_function != NULL);
#line 40 "../src/file_func_vars_optimizer.vala"
	php_to_vala_file_func_vars_optimizer_append_native_function (self, output, local_function, &_inner_error0_);
#line 40 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 40 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 40 "../src/file_func_vars_optimizer.vala"
		return;
#line 579 "file_func_vars_optimizer.c"
	}
#line 41 "../src/file_func_vars_optimizer.vala"
	php_to_vala_file_func_vars_optimizer_append_zval_wrapper (self, output, local_function);
#line 583 "file_func_vars_optimizer.c"
}

gchar*
php_to_vala_file_func_vars_optimizer_local_function_call_as_native_value (PhpToValaFileFuncVarsOptimizer* self,
                                                                          LocalFunction* local_function,
                                                                          const gchar* args,
                                                                          gint php_line_number,
                                                                          GError** error)
{
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 44 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 44 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 44 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (args != NULL, NULL);
#line 45 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = php_to_vala_file_func_vars_optimizer_convert_native_argument_list (self, args, php_line_number, &_inner_error0_);
#line 45 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = _tmp1_;
#line 45 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 45 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 45 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 617 "file_func_vars_optimizer.c"
	}
#line 45 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = php_to_vala_file_func_vars_optimizer_native_function_name (self, local_function);
#line 45 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 45 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = g_strdup_printf ("%s (%s)", _tmp3_, _tmp0_);
#line 45 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = _tmp4_;
#line 45 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp3_);
#line 45 "../src/file_func_vars_optimizer.vala"
	result = _tmp5_;
#line 45 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp0_);
#line 45 "../src/file_func_vars_optimizer.vala"
	return result;
#line 635 "file_func_vars_optimizer.c"
}

static glong
string_strnlen (gchar* str,
                glong maxlen)
{
	gchar* end = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	glong result;
#line 1501 "glib-2.0.vapi"
	_tmp0_ = memchr (str, 0, (gsize) maxlen);
#line 1501 "glib-2.0.vapi"
	end = _tmp0_;
#line 1502 "glib-2.0.vapi"
	_tmp1_ = end;
#line 1502 "glib-2.0.vapi"
	if (_tmp1_ == NULL) {
#line 1503 "glib-2.0.vapi"
		result = maxlen;
#line 1503 "glib-2.0.vapi"
		return result;
#line 658 "file_func_vars_optimizer.c"
	} else {
		gchar* _tmp2_;
#line 1505 "glib-2.0.vapi"
		_tmp2_ = end;
#line 1505 "glib-2.0.vapi"
		result = (glong) (_tmp2_ - str);
#line 1505 "glib-2.0.vapi"
		return result;
#line 667 "file_func_vars_optimizer.c"
	}
}

static gchar*
string_substring (const gchar* self,
                  glong offset,
                  glong len)
{
	glong string_length = 0L;
	gboolean _tmp0_ = FALSE;
	gchar* _tmp3_;
	gchar* result;
#line 1512 "glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1514 "glib-2.0.vapi"
	if (offset >= ((glong) 0)) {
#line 1514 "glib-2.0.vapi"
		_tmp0_ = len >= ((glong) 0);
#line 686 "file_func_vars_optimizer.c"
	} else {
#line 1514 "glib-2.0.vapi"
		_tmp0_ = FALSE;
#line 690 "file_func_vars_optimizer.c"
	}
#line 1514 "glib-2.0.vapi"
	if (_tmp0_) {
#line 1516 "glib-2.0.vapi"
		string_length = string_strnlen ((gchar*) self, offset + len);
#line 696 "file_func_vars_optimizer.c"
	} else {
		gint _tmp1_;
		gint _tmp2_;
#line 1518 "glib-2.0.vapi"
		_tmp1_ = strlen (self);
#line 1518 "glib-2.0.vapi"
		_tmp2_ = _tmp1_;
#line 1518 "glib-2.0.vapi"
		string_length = (glong) _tmp2_;
#line 706 "file_func_vars_optimizer.c"
	}
#line 1521 "glib-2.0.vapi"
	if (offset < ((glong) 0)) {
#line 1522 "glib-2.0.vapi"
		offset = string_length + offset;
#line 1523 "glib-2.0.vapi"
		g_return_val_if_fail (offset >= ((glong) 0), NULL);
#line 714 "file_func_vars_optimizer.c"
	} else {
#line 1525 "glib-2.0.vapi"
		g_return_val_if_fail (offset <= string_length, NULL);
#line 718 "file_func_vars_optimizer.c"
	}
#line 1527 "glib-2.0.vapi"
	if (len < ((glong) 0)) {
#line 1528 "glib-2.0.vapi"
		len = string_length - offset;
#line 724 "file_func_vars_optimizer.c"
	}
#line 1530 "glib-2.0.vapi"
	g_return_val_if_fail ((offset + len) <= string_length, NULL);
#line 1531 "glib-2.0.vapi"
	_tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len);
#line 1531 "glib-2.0.vapi"
	result = _tmp3_;
#line 1531 "glib-2.0.vapi"
	return result;
#line 734 "file_func_vars_optimizer.c"
}

static gchar
string_get (const gchar* self,
            glong index)
{
	gchar _tmp0_;
	gchar result;
#line 1283 "glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, '\0');
#line 1284 "glib-2.0.vapi"
	_tmp0_ = ((gchar*) self)[index];
#line 1284 "glib-2.0.vapi"
	result = _tmp0_;
#line 1284 "glib-2.0.vapi"
	return result;
#line 751 "file_func_vars_optimizer.c"
}

gchar*
php_to_vala_file_func_vars_optimizer_replace_inline_local_function_call (PhpToValaFileFuncVarsOptimizer* self,
                                                                         const gchar* expression,
                                                                         LocalFunction* local_function,
                                                                         gint php_line_number)
{
	gchar* function_name = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	GString* output = NULL;
	GString* _tmp2_;
	gint i = 0;
	GString* _tmp24_;
	const gchar* _tmp25_;
	gchar* _tmp26_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 48 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 48 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 48 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 49 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = local_function->name;
#line 49 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 49 "../src/file_func_vars_optimizer.vala"
	function_name = _tmp1_;
#line 50 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = g_string_new ("");
#line 50 "../src/file_func_vars_optimizer.vala"
	output = _tmp2_;
#line 51 "../src/file_func_vars_optimizer.vala"
	i = 0;
#line 52 "../src/file_func_vars_optimizer.vala"
	while (TRUE) {
#line 791 "file_func_vars_optimizer.c"
		gint _tmp3_;
		gint _tmp4_;
		gboolean _tmp5_ = FALSE;
		gchar* _tmp6_;
		gchar* _tmp7_;
		const gchar* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		gboolean _tmp11_;
		GString* _tmp22_;
		gint _tmp23_;
#line 52 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = strlen (expression);
#line 52 "../src/file_func_vars_optimizer.vala"
		_tmp4_ = _tmp3_;
#line 52 "../src/file_func_vars_optimizer.vala"
		if (!(i < _tmp4_)) {
#line 52 "../src/file_func_vars_optimizer.vala"
			break;
#line 811 "file_func_vars_optimizer.c"
		}
#line 53 "../src/file_func_vars_optimizer.vala"
		_tmp6_ = string_substring (expression, (glong) i, (glong) -1);
#line 53 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = _tmp6_;
#line 53 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = function_name;
#line 53 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = g_strconcat (_tmp8_, "(", NULL);
#line 53 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = _tmp9_;
#line 53 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = g_str_has_prefix (_tmp7_, _tmp10_);
#line 53 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp10_);
#line 53 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp7_);
#line 53 "../src/file_func_vars_optimizer.vala"
		if (_tmp11_) {
#line 831 "file_func_vars_optimizer.c"
			gboolean _tmp12_ = FALSE;
#line 54 "../src/file_func_vars_optimizer.vala"
			if (i == 0) {
#line 54 "../src/file_func_vars_optimizer.vala"
				_tmp12_ = TRUE;
#line 837 "file_func_vars_optimizer.c"
			} else {
				gboolean _tmp13_ = FALSE;
#line 54 "../src/file_func_vars_optimizer.vala"
				if (!php_to_vala_transpiler_is_identifier_char (string_get (expression, (glong) (i - 1)))) {
#line 54 "../src/file_func_vars_optimizer.vala"
					_tmp13_ = string_get (expression, (glong) (i - 1)) != '.';
#line 844 "file_func_vars_optimizer.c"
				} else {
#line 54 "../src/file_func_vars_optimizer.vala"
					_tmp13_ = FALSE;
#line 848 "file_func_vars_optimizer.c"
				}
#line 54 "../src/file_func_vars_optimizer.vala"
				_tmp12_ = _tmp13_;
#line 852 "file_func_vars_optimizer.c"
			}
#line 54 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = _tmp12_;
#line 856 "file_func_vars_optimizer.c"
		} else {
#line 53 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = FALSE;
#line 860 "file_func_vars_optimizer.c"
		}
#line 53 "../src/file_func_vars_optimizer.vala"
		if (_tmp5_) {
#line 864 "file_func_vars_optimizer.c"
			gint open_index = 0;
			const gchar* _tmp14_;
			gint _tmp15_;
			gint _tmp16_;
			gint close_index = 0;
#line 55 "../src/file_func_vars_optimizer.vala"
			_tmp14_ = function_name;
#line 55 "../src/file_func_vars_optimizer.vala"
			_tmp15_ = strlen (_tmp14_);
#line 55 "../src/file_func_vars_optimizer.vala"
			_tmp16_ = _tmp15_;
#line 55 "../src/file_func_vars_optimizer.vala"
			open_index = i + _tmp16_;
#line 56 "../src/file_func_vars_optimizer.vala"
			close_index = php_to_vala_transpiler_find_matching_paren (expression, open_index);
#line 57 "../src/file_func_vars_optimizer.vala"
			if (close_index > open_index) {
#line 882 "file_func_vars_optimizer.c"
				gchar* inner_args = NULL;
				gchar* _tmp17_;
#line 58 "../src/file_func_vars_optimizer.vala"
				_tmp17_ = string_substring (expression, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 58 "../src/file_func_vars_optimizer.vala"
				inner_args = _tmp17_;
#line 889 "file_func_vars_optimizer.c"
				{
					gchar* _tmp18_ = NULL;
					const gchar* _tmp19_;
					gchar* _tmp20_;
					GString* _tmp21_;
#line 60 "../src/file_func_vars_optimizer.vala"
					_tmp19_ = inner_args;
#line 60 "../src/file_func_vars_optimizer.vala"
					_tmp20_ = php_to_vala_file_func_vars_optimizer_local_function_call_as_native_value (self, local_function, _tmp19_, php_line_number, &_inner_error0_);
#line 60 "../src/file_func_vars_optimizer.vala"
					_tmp18_ = _tmp20_;
#line 60 "../src/file_func_vars_optimizer.vala"
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 903 "file_func_vars_optimizer.c"
						goto __catch0_g_error;
					}
#line 60 "../src/file_func_vars_optimizer.vala"
					_tmp21_ = output;
#line 60 "../src/file_func_vars_optimizer.vala"
					g_string_append (_tmp21_, _tmp18_);
#line 61 "../src/file_func_vars_optimizer.vala"
					i = close_index + 1;
#line 62 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp18_);
#line 62 "../src/file_func_vars_optimizer.vala"
					_g_free0 (inner_args);
#line 62 "../src/file_func_vars_optimizer.vala"
					continue;
#line 918 "file_func_vars_optimizer.c"
				}
				goto __finally0;
				__catch0_g_error:
				{
#line 59 "../src/file_func_vars_optimizer.vala"
					g_clear_error (&_inner_error0_);
#line 925 "file_func_vars_optimizer.c"
				}
				__finally0:
#line 59 "../src/file_func_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 59 "../src/file_func_vars_optimizer.vala"
					_g_free0 (inner_args);
#line 59 "../src/file_func_vars_optimizer.vala"
					_g_string_free0 (output);
#line 59 "../src/file_func_vars_optimizer.vala"
					_g_free0 (function_name);
#line 59 "../src/file_func_vars_optimizer.vala"
					g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 59 "../src/file_func_vars_optimizer.vala"
					g_clear_error (&_inner_error0_);
#line 59 "../src/file_func_vars_optimizer.vala"
					return NULL;
#line 942 "file_func_vars_optimizer.c"
				}
#line 57 "../src/file_func_vars_optimizer.vala"
				_g_free0 (inner_args);
#line 946 "file_func_vars_optimizer.c"
			}
		}
#line 67 "../src/file_func_vars_optimizer.vala"
		_tmp22_ = output;
#line 67 "../src/file_func_vars_optimizer.vala"
		g_string_append_c (_tmp22_, string_get (expression, (glong) i));
#line 68 "../src/file_func_vars_optimizer.vala"
		_tmp23_ = i;
#line 68 "../src/file_func_vars_optimizer.vala"
		i = _tmp23_ + 1;
#line 957 "file_func_vars_optimizer.c"
	}
#line 70 "../src/file_func_vars_optimizer.vala"
	_tmp24_ = output;
#line 70 "../src/file_func_vars_optimizer.vala"
	_tmp25_ = _tmp24_->str;
#line 70 "../src/file_func_vars_optimizer.vala"
	_tmp26_ = g_strdup (_tmp25_);
#line 70 "../src/file_func_vars_optimizer.vala"
	result = _tmp26_;
#line 70 "../src/file_func_vars_optimizer.vala"
	_g_string_free0 (output);
#line 70 "../src/file_func_vars_optimizer.vala"
	_g_free0 (function_name);
#line 70 "../src/file_func_vars_optimizer.vala"
	return result;
#line 973 "file_func_vars_optimizer.c"
}

static void
php_to_vala_file_func_vars_optimizer_append_native_function (PhpToValaFileFuncVarsOptimizer* self,
                                                             GString* output,
                                                             LocalFunction* local_function,
                                                             GError** error)
{
	GeeHashMap* previous_variable_types = NULL;
	PhpToValaTranspiler* _tmp0_;
	GeeHashMap* _tmp1_;
	GeeHashMap* _tmp2_;
	GeeHashMap* previous_variable_aliases = NULL;
	PhpToValaTranspiler* _tmp3_;
	GeeHashMap* _tmp4_;
	GeeHashMap* _tmp5_;
	gboolean previous_transpiling_local_function = FALSE;
	PhpToValaTranspiler* _tmp6_;
	gchar* previous_local_function_name = NULL;
	PhpToValaTranspiler* _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	PhpToValaTranspiler* _tmp10_;
	GeeHashMap* _tmp11_;
	PhpToValaTranspiler* _tmp12_;
	GeeHashMap* _tmp13_;
	PhpToValaTranspiler* _tmp14_;
	PhpToValaTranspiler* _tmp15_;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gboolean _tmp18_ = FALSE;
	gchar* _tmp19_ = NULL;
	gchar* _tmp20_;
	gchar* return_type = NULL;
	gchar* _tmp22_;
	const gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	Statements* statements = NULL;
	const gchar* _tmp46_;
	Statements* _tmp47_;
	gint function_block_level = 0;
	gboolean last_statement_terminates = FALSE;
	gboolean _tmp79_ = FALSE;
	PhpToValaTranspiler* _tmp84_;
	GeeHashMap* _tmp85_;
	GeeHashMap* _tmp86_;
	PhpToValaTranspiler* _tmp87_;
	GeeHashMap* _tmp88_;
	GeeHashMap* _tmp89_;
	PhpToValaTranspiler* _tmp90_;
	PhpToValaTranspiler* _tmp91_;
	const gchar* _tmp92_;
	gchar* _tmp93_;
	GError* _inner_error0_ = NULL;
#line 73 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (self != NULL);
#line 73 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (output != NULL);
#line 73 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (local_function != NULL);
#line 74 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = self->priv->transpiler;
#line 74 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = _tmp0_->variable_types;
#line 74 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = _g_object_ref0 (_tmp1_);
#line 74 "../src/file_func_vars_optimizer.vala"
	previous_variable_types = _tmp2_;
#line 75 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = self->priv->transpiler;
#line 75 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = _tmp3_->variable_aliases;
#line 75 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = _g_object_ref0 (_tmp4_);
#line 75 "../src/file_func_vars_optimizer.vala"
	previous_variable_aliases = _tmp5_;
#line 76 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = self->priv->transpiler;
#line 76 "../src/file_func_vars_optimizer.vala"
	previous_transpiling_local_function = _tmp6_->transpiling_local_function;
#line 77 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = self->priv->transpiler;
#line 77 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = _tmp7_->current_local_function_name;
#line 77 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = g_strdup (_tmp8_);
#line 77 "../src/file_func_vars_optimizer.vala"
	previous_local_function_name = _tmp9_;
#line 79 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = self->priv->transpiler;
#line 79 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
#line 79 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (_tmp10_->variable_types);
#line 79 "../src/file_func_vars_optimizer.vala"
	_tmp10_->variable_types = _tmp11_;
#line 80 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = self->priv->transpiler;
#line 80 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
#line 80 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (_tmp12_->variable_aliases);
#line 80 "../src/file_func_vars_optimizer.vala"
	_tmp12_->variable_aliases = _tmp13_;
#line 81 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = self->priv->transpiler;
#line 81 "../src/file_func_vars_optimizer.vala"
	_tmp14_->transpiling_local_function = TRUE;
#line 82 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = self->priv->transpiler;
#line 82 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = local_function->name;
#line 82 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = g_strdup (_tmp16_);
#line 82 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp15_->current_local_function_name);
#line 82 "../src/file_func_vars_optimizer.vala"
	_tmp15_->current_local_function_name = _tmp17_;
#line 84 "../src/file_func_vars_optimizer.vala"
	if (php_to_vala_file_func_vars_optimizer_needs_callable_delegate (self, local_function)) {
#line 84 "../src/file_func_vars_optimizer.vala"
		_tmp18_ = !self->priv->emitted_callable_delegate;
#line 1097 "file_func_vars_optimizer.c"
	} else {
#line 84 "../src/file_func_vars_optimizer.vala"
		_tmp18_ = FALSE;
#line 1101 "file_func_vars_optimizer.c"
	}
#line 84 "../src/file_func_vars_optimizer.vala"
	if (_tmp18_) {
#line 85 "../src/file_func_vars_optimizer.vala"
		g_string_append (output, "private delegate void __php2vala_file_func_callable () throws Error;\n" \
"\n");
#line 86 "../src/file_func_vars_optimizer.vala"
		self->priv->emitted_callable_delegate = TRUE;
#line 1109 "file_func_vars_optimizer.c"
	}
#line 89 "../src/file_func_vars_optimizer.vala"
	_tmp20_ = php_to_vala_file_func_vars_optimizer_infer_return_type (self, local_function);
#line 89 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = _tmp20_;
#line 89 "../src/file_func_vars_optimizer.vala"
	if (_tmp19_ == NULL) {
#line 1117 "file_func_vars_optimizer.c"
		gchar* _tmp21_;
#line 89 "../src/file_func_vars_optimizer.vala"
		_tmp21_ = g_strdup ("void");
#line 89 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp19_);
#line 89 "../src/file_func_vars_optimizer.vala"
		_tmp19_ = _tmp21_;
#line 1125 "file_func_vars_optimizer.c"
	}
#line 89 "../src/file_func_vars_optimizer.vala"
	_tmp22_ = _tmp19_;
#line 89 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = NULL;
#line 89 "../src/file_func_vars_optimizer.vala"
	return_type = _tmp22_;
#line 90 "../src/file_func_vars_optimizer.vala"
	_tmp23_ = return_type;
#line 90 "../src/file_func_vars_optimizer.vala"
	_tmp24_ = php_to_vala_file_func_vars_optimizer_native_function_name (self, local_function);
#line 90 "../src/file_func_vars_optimizer.vala"
	_tmp25_ = _tmp24_;
#line 90 "../src/file_func_vars_optimizer.vala"
	g_string_append_printf (output, "private static %s %s (", _tmp23_, _tmp25_);
#line 90 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp25_);
#line 1143 "file_func_vars_optimizer.c"
	{
		gint i = 0;
#line 91 "../src/file_func_vars_optimizer.vala"
		i = 0;
#line 1148 "file_func_vars_optimizer.c"
		{
			gboolean _tmp26_ = FALSE;
#line 91 "../src/file_func_vars_optimizer.vala"
			_tmp26_ = TRUE;
#line 91 "../src/file_func_vars_optimizer.vala"
			while (TRUE) {
#line 1155 "file_func_vars_optimizer.c"
				GeeArrayList* _tmp28_;
				gint _tmp29_;
				gint _tmp30_;
				LocalParameter* parameter = NULL;
				GeeArrayList* _tmp31_;
				gpointer _tmp32_;
				gchar* _tmp33_ = NULL;
				LocalParameter* _tmp34_;
				gchar* _tmp35_;
				gchar* parameter_type = NULL;
				gchar* _tmp37_;
				const gchar* _tmp38_;
				LocalParameter* _tmp39_;
				const gchar* _tmp40_;
				PhpToValaTranspiler* _tmp41_;
				GeeHashMap* _tmp42_;
				LocalParameter* _tmp43_;
				const gchar* _tmp44_;
				const gchar* _tmp45_;
#line 91 "../src/file_func_vars_optimizer.vala"
				if (!_tmp26_) {
#line 1177 "file_func_vars_optimizer.c"
					gint _tmp27_;
#line 91 "../src/file_func_vars_optimizer.vala"
					_tmp27_ = i;
#line 91 "../src/file_func_vars_optimizer.vala"
					i = _tmp27_ + 1;
#line 1183 "file_func_vars_optimizer.c"
				}
#line 91 "../src/file_func_vars_optimizer.vala"
				_tmp26_ = FALSE;
#line 91 "../src/file_func_vars_optimizer.vala"
				_tmp28_ = local_function->parameters;
#line 91 "../src/file_func_vars_optimizer.vala"
				_tmp29_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp28_);
#line 91 "../src/file_func_vars_optimizer.vala"
				_tmp30_ = _tmp29_;
#line 91 "../src/file_func_vars_optimizer.vala"
				if (!(i < _tmp30_)) {
#line 91 "../src/file_func_vars_optimizer.vala"
					break;
#line 1197 "file_func_vars_optimizer.c"
				}
#line 92 "../src/file_func_vars_optimizer.vala"
				_tmp31_ = local_function->parameters;
#line 92 "../src/file_func_vars_optimizer.vala"
				_tmp32_ = gee_abstract_list_get ((GeeAbstractList*) _tmp31_, i);
#line 92 "../src/file_func_vars_optimizer.vala"
				parameter = (LocalParameter*) _tmp32_;
#line 93 "../src/file_func_vars_optimizer.vala"
				_tmp34_ = parameter;
#line 93 "../src/file_func_vars_optimizer.vala"
				_tmp35_ = php_to_vala_file_func_vars_optimizer_infer_parameter_type (self, local_function, _tmp34_);
#line 93 "../src/file_func_vars_optimizer.vala"
				_tmp33_ = _tmp35_;
#line 93 "../src/file_func_vars_optimizer.vala"
				if (_tmp33_ == NULL) {
#line 1213 "file_func_vars_optimizer.c"
					gchar* _tmp36_;
#line 93 "../src/file_func_vars_optimizer.vala"
					_tmp36_ = g_strdup ("var");
#line 93 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp33_);
#line 93 "../src/file_func_vars_optimizer.vala"
					_tmp33_ = _tmp36_;
#line 1221 "file_func_vars_optimizer.c"
				}
#line 93 "../src/file_func_vars_optimizer.vala"
				_tmp37_ = _tmp33_;
#line 93 "../src/file_func_vars_optimizer.vala"
				_tmp33_ = NULL;
#line 93 "../src/file_func_vars_optimizer.vala"
				parameter_type = _tmp37_;
#line 94 "../src/file_func_vars_optimizer.vala"
				if (i > 0) {
#line 95 "../src/file_func_vars_optimizer.vala"
					g_string_append (output, ", ");
#line 1233 "file_func_vars_optimizer.c"
				}
#line 97 "../src/file_func_vars_optimizer.vala"
				_tmp38_ = parameter_type;
#line 97 "../src/file_func_vars_optimizer.vala"
				_tmp39_ = parameter;
#line 97 "../src/file_func_vars_optimizer.vala"
				_tmp40_ = _tmp39_->name;
#line 97 "../src/file_func_vars_optimizer.vala"
				g_string_append_printf (output, "%s %s", _tmp38_, _tmp40_);
#line 98 "../src/file_func_vars_optimizer.vala"
				_tmp41_ = self->priv->transpiler;
#line 98 "../src/file_func_vars_optimizer.vala"
				_tmp42_ = _tmp41_->variable_types;
#line 98 "../src/file_func_vars_optimizer.vala"
				_tmp43_ = parameter;
#line 98 "../src/file_func_vars_optimizer.vala"
				_tmp44_ = _tmp43_->name;
#line 98 "../src/file_func_vars_optimizer.vala"
				_tmp45_ = parameter_type;
#line 98 "../src/file_func_vars_optimizer.vala"
				gee_abstract_map_set ((GeeAbstractMap*) _tmp42_, _tmp44_, _tmp45_);
#line 91 "../src/file_func_vars_optimizer.vala"
				_g_free0 (parameter_type);
#line 91 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp33_);
#line 91 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (parameter);
#line 1261 "file_func_vars_optimizer.c"
			}
		}
	}
#line 100 "../src/file_func_vars_optimizer.vala"
	g_string_append (output, ") throws Error {\n");
#line 102 "../src/file_func_vars_optimizer.vala"
	php_to_vala_file_func_vars_optimizer_append_callable_delegate_initializers (self, output, local_function);
#line 104 "../src/file_func_vars_optimizer.vala"
	_tmp46_ = local_function->body;
#line 104 "../src/file_func_vars_optimizer.vala"
	_tmp47_ = php_to_vala_source_parser_collect_statements (_tmp46_, local_function->line + 1);
#line 104 "../src/file_func_vars_optimizer.vala"
	statements = _tmp47_;
#line 105 "../src/file_func_vars_optimizer.vala"
	function_block_level = 0;
#line 106 "../src/file_func_vars_optimizer.vala"
	last_statement_terminates = FALSE;
#line 1279 "file_func_vars_optimizer.c"
	{
		gint i = 0;
#line 107 "../src/file_func_vars_optimizer.vala"
		i = 0;
#line 1284 "file_func_vars_optimizer.c"
		{
			gboolean _tmp48_ = FALSE;
#line 107 "../src/file_func_vars_optimizer.vala"
			_tmp48_ = TRUE;
#line 107 "../src/file_func_vars_optimizer.vala"
			while (TRUE) {
#line 1291 "file_func_vars_optimizer.c"
				Statements* _tmp50_;
				GeeArrayList* _tmp51_;
				gint _tmp52_;
				gint _tmp53_;
				gchar* vala_line = NULL;
				Statements* _tmp54_;
				GeeArrayList* _tmp55_;
				gpointer _tmp56_;
				gchar* _tmp57_;
				Statements* _tmp58_;
				GeeArrayList* _tmp59_;
				gpointer _tmp60_;
				gchar* _tmp61_;
				gchar* _tmp62_;
				const gchar* _tmp63_;
				PhpToValaTranspiler* _tmp64_;
				Statements* _tmp65_;
				GeeArrayList* _tmp66_;
				gpointer _tmp67_;
				gchar* _tmp68_;
				Statements* _tmp69_;
				GeeArrayList* _tmp70_;
				gpointer _tmp71_;
				Statements* _tmp72_;
				GeeArrayList* _tmp73_;
				gpointer _tmp74_;
				const gchar* _tmp75_;
				PhpToValaTranspiler* _tmp76_;
				const gchar* _tmp77_;
				const gchar* _tmp78_;
#line 107 "../src/file_func_vars_optimizer.vala"
				if (!_tmp48_) {
#line 1324 "file_func_vars_optimizer.c"
					gint _tmp49_;
#line 107 "../src/file_func_vars_optimizer.vala"
					_tmp49_ = i;
#line 107 "../src/file_func_vars_optimizer.vala"
					i = _tmp49_ + 1;
#line 1330 "file_func_vars_optimizer.c"
				}
#line 107 "../src/file_func_vars_optimizer.vala"
				_tmp48_ = FALSE;
#line 107 "../src/file_func_vars_optimizer.vala"
				_tmp50_ = statements;
#line 107 "../src/file_func_vars_optimizer.vala"
				_tmp51_ = _tmp50_->texts;
#line 107 "../src/file_func_vars_optimizer.vala"
				_tmp52_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp51_);
#line 107 "../src/file_func_vars_optimizer.vala"
				_tmp53_ = _tmp52_;
#line 107 "../src/file_func_vars_optimizer.vala"
				if (!(i < _tmp53_)) {
#line 107 "../src/file_func_vars_optimizer.vala"
					break;
#line 1346 "file_func_vars_optimizer.c"
				}
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp54_ = statements;
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp55_ = _tmp54_->texts;
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp56_ = gee_abstract_list_get ((GeeAbstractList*) _tmp55_, i);
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp57_ = (gchar*) _tmp56_;
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp58_ = statements;
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp59_ = _tmp58_->lines;
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp60_ = gee_abstract_list_get ((GeeAbstractList*) _tmp59_, i);
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp61_ = php_to_vala_file_func_vars_optimizer_transpile_native_line (self, local_function, _tmp57_, (gint) ((gintptr) _tmp60_), &_inner_error0_);
#line 108 "../src/file_func_vars_optimizer.vala"
				_tmp62_ = _tmp61_;
#line 108 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp57_);
#line 108 "../src/file_func_vars_optimizer.vala"
				vala_line = _tmp62_;
#line 108 "../src/file_func_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 108 "../src/file_func_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 108 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (statements);
#line 108 "../src/file_func_vars_optimizer.vala"
					_g_free0 (return_type);
#line 108 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp19_);
#line 108 "../src/file_func_vars_optimizer.vala"
					_g_free0 (previous_local_function_name);
#line 108 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_aliases);
#line 108 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_types);
#line 108 "../src/file_func_vars_optimizer.vala"
					return;
#line 1388 "file_func_vars_optimizer.c"
				}
#line 109 "../src/file_func_vars_optimizer.vala"
				_tmp63_ = vala_line;
#line 109 "../src/file_func_vars_optimizer.vala"
				if (_tmp63_ == NULL) {
#line 110 "../src/file_func_vars_optimizer.vala"
					_g_free0 (vala_line);
#line 110 "../src/file_func_vars_optimizer.vala"
					continue;
#line 1398 "file_func_vars_optimizer.c"
				}
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp64_ = self->priv->transpiler;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp65_ = statements;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp66_ = _tmp65_->texts;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp67_ = gee_abstract_list_get ((GeeAbstractList*) _tmp66_, i);
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp68_ = (gchar*) _tmp67_;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp69_ = statements;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp70_ = _tmp69_->lines;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp71_ = gee_abstract_list_get ((GeeAbstractList*) _tmp70_, i);
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp72_ = statements;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp73_ = _tmp72_->columns;
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp74_ = gee_abstract_list_get ((GeeAbstractList*) _tmp73_, i);
#line 112 "../src/file_func_vars_optimizer.vala"
				_tmp75_ = vala_line;
#line 112 "../src/file_func_vars_optimizer.vala"
				php_to_vala_transpiler_validate_no_untranslated_php (_tmp64_, _tmp68_, (gint) ((gintptr) _tmp71_), (gint) ((gintptr) _tmp74_), _tmp75_, &_inner_error0_);
#line 112 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp68_);
#line 112 "../src/file_func_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 112 "../src/file_func_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_free0 (vala_line);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (statements);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_free0 (return_type);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp19_);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_free0 (previous_local_function_name);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_aliases);
#line 112 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_types);
#line 112 "../src/file_func_vars_optimizer.vala"
					return;
#line 1448 "file_func_vars_optimizer.c"
				}
#line 113 "../src/file_func_vars_optimizer.vala"
				_tmp76_ = self->priv->transpiler;
#line 113 "../src/file_func_vars_optimizer.vala"
				_tmp77_ = vala_line;
#line 113 "../src/file_func_vars_optimizer.vala"
				function_block_level = php_to_vala_transpiler_append_generated_block (_tmp76_, output, 1, _tmp77_, function_block_level);
#line 114 "../src/file_func_vars_optimizer.vala"
				_tmp78_ = vala_line;
#line 114 "../src/file_func_vars_optimizer.vala"
				last_statement_terminates = php_to_vala_transpiler_zval_statement_terminates_function (_tmp78_);
#line 107 "../src/file_func_vars_optimizer.vala"
				_g_free0 (vala_line);
#line 1462 "file_func_vars_optimizer.c"
			}
		}
	}
#line 116 "../src/file_func_vars_optimizer.vala"
	if (!last_statement_terminates) {
#line 116 "../src/file_func_vars_optimizer.vala"
		_tmp79_ = !php_to_vala_file_func_vars_optimizer_native_body_has_unconditional_loop_return (self, local_function);
#line 1470 "file_func_vars_optimizer.c"
	} else {
#line 116 "../src/file_func_vars_optimizer.vala"
		_tmp79_ = FALSE;
#line 1474 "file_func_vars_optimizer.c"
	}
#line 116 "../src/file_func_vars_optimizer.vala"
	if (_tmp79_) {
#line 1478 "file_func_vars_optimizer.c"
		PhpToValaTranspiler* _tmp80_;
		const gchar* _tmp81_;
		gchar* _tmp82_;
		gchar* _tmp83_;
#line 117 "../src/file_func_vars_optimizer.vala"
		_tmp80_ = self->priv->transpiler;
#line 117 "../src/file_func_vars_optimizer.vala"
		_tmp81_ = return_type;
#line 117 "../src/file_func_vars_optimizer.vala"
		_tmp82_ = php_to_vala_file_func_vars_optimizer_default_native_return (self, _tmp81_);
#line 117 "../src/file_func_vars_optimizer.vala"
		_tmp83_ = _tmp82_;
#line 117 "../src/file_func_vars_optimizer.vala"
		php_to_vala_transpiler_append_indented_line (_tmp80_, output, 1, _tmp83_);
#line 117 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp83_);
#line 1495 "file_func_vars_optimizer.c"
	}
#line 119 "../src/file_func_vars_optimizer.vala"
	g_string_append (output, "}\n\n");
#line 121 "../src/file_func_vars_optimizer.vala"
	_tmp84_ = self->priv->transpiler;
#line 121 "../src/file_func_vars_optimizer.vala"
	_tmp85_ = previous_variable_types;
#line 121 "../src/file_func_vars_optimizer.vala"
	_tmp86_ = _g_object_ref0 (_tmp85_);
#line 121 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (_tmp84_->variable_types);
#line 121 "../src/file_func_vars_optimizer.vala"
	_tmp84_->variable_types = _tmp86_;
#line 122 "../src/file_func_vars_optimizer.vala"
	_tmp87_ = self->priv->transpiler;
#line 122 "../src/file_func_vars_optimizer.vala"
	_tmp88_ = previous_variable_aliases;
#line 122 "../src/file_func_vars_optimizer.vala"
	_tmp89_ = _g_object_ref0 (_tmp88_);
#line 122 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (_tmp87_->variable_aliases);
#line 122 "../src/file_func_vars_optimizer.vala"
	_tmp87_->variable_aliases = _tmp89_;
#line 123 "../src/file_func_vars_optimizer.vala"
	_tmp90_ = self->priv->transpiler;
#line 123 "../src/file_func_vars_optimizer.vala"
	_tmp90_->transpiling_local_function = previous_transpiling_local_function;
#line 124 "../src/file_func_vars_optimizer.vala"
	_tmp91_ = self->priv->transpiler;
#line 124 "../src/file_func_vars_optimizer.vala"
	_tmp92_ = previous_local_function_name;
#line 124 "../src/file_func_vars_optimizer.vala"
	_tmp93_ = g_strdup (_tmp92_);
#line 124 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp91_->current_local_function_name);
#line 124 "../src/file_func_vars_optimizer.vala"
	_tmp91_->current_local_function_name = _tmp93_;
#line 73 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (statements);
#line 73 "../src/file_func_vars_optimizer.vala"
	_g_free0 (return_type);
#line 73 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp19_);
#line 73 "../src/file_func_vars_optimizer.vala"
	_g_free0 (previous_local_function_name);
#line 73 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (previous_variable_aliases);
#line 73 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (previous_variable_types);
#line 1545 "file_func_vars_optimizer.c"
}

static void
php_to_vala_file_func_vars_optimizer_append_zval_wrapper (PhpToValaFileFuncVarsOptimizer* self,
                                                          GString* output,
                                                          LocalFunction* local_function)
{
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_;
	gchar* return_type = NULL;
	gchar* _tmp3_;
	const gchar* _tmp4_;
	PhpToValaTranspiler* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	GString* args = NULL;
	GString* _tmp8_;
	gchar* native_call = NULL;
	gchar* _tmp30_;
	gchar* _tmp31_;
	GString* _tmp32_;
	const gchar* _tmp33_;
	gchar* _tmp34_;
	gchar* _tmp35_;
	const gchar* _tmp36_;
#line 127 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (self != NULL);
#line 127 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (output != NULL);
#line 127 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (local_function != NULL);
#line 128 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = php_to_vala_file_func_vars_optimizer_infer_return_type (self, local_function);
#line 128 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = _tmp1_;
#line 128 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_ == NULL) {
#line 1583 "file_func_vars_optimizer.c"
		gchar* _tmp2_;
#line 128 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = g_strdup ("void");
#line 128 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp0_);
#line 128 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = _tmp2_;
#line 1591 "file_func_vars_optimizer.c"
	}
#line 128 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = _tmp0_;
#line 128 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = NULL;
#line 128 "../src/file_func_vars_optimizer.vala"
	return_type = _tmp3_;
#line 129 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = local_function->name;
#line 129 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = self->priv->transpiler;
#line 129 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = php_to_vala_transpiler_build_zval_local_function_parameter_list (_tmp5_, local_function);
#line 129 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 129 "../src/file_func_vars_optimizer.vala"
	g_string_append_printf (output, "public static Php.zval %s (%s) throws Error {\n", _tmp4_, _tmp7_);
#line 129 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp7_);
#line 130 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = g_string_new ("");
#line 130 "../src/file_func_vars_optimizer.vala"
	args = _tmp8_;
#line 1615 "file_func_vars_optimizer.c"
	{
		GeeArrayList* _parameter_list = NULL;
		GeeArrayList* _tmp9_;
		gint _parameter_size = 0;
		GeeArrayList* _tmp10_;
		gint _tmp11_;
		gint _tmp12_;
		gint _parameter_index = 0;
#line 131 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = local_function->parameters;
#line 131 "../src/file_func_vars_optimizer.vala"
		_parameter_list = _tmp9_;
#line 131 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = _parameter_list;
#line 131 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp10_);
#line 131 "../src/file_func_vars_optimizer.vala"
		_tmp12_ = _tmp11_;
#line 131 "../src/file_func_vars_optimizer.vala"
		_parameter_size = _tmp12_;
#line 131 "../src/file_func_vars_optimizer.vala"
		_parameter_index = -1;
#line 131 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 1640 "file_func_vars_optimizer.c"
			gint _tmp13_;
			gint _tmp14_;
			LocalParameter* parameter = NULL;
			GeeArrayList* _tmp15_;
			gpointer _tmp16_;
			GString* _tmp17_;
			gchar* _tmp19_ = NULL;
			LocalParameter* _tmp20_;
			gchar* _tmp21_;
			gchar* parameter_type = NULL;
			gchar* _tmp23_;
			GString* _tmp24_;
			LocalParameter* _tmp25_;
			const gchar* _tmp26_;
			const gchar* _tmp27_;
			gchar* _tmp28_;
			gchar* _tmp29_;
#line 131 "../src/file_func_vars_optimizer.vala"
			_parameter_index = _parameter_index + 1;
#line 131 "../src/file_func_vars_optimizer.vala"
			_tmp13_ = _parameter_index;
#line 131 "../src/file_func_vars_optimizer.vala"
			_tmp14_ = _parameter_size;
#line 131 "../src/file_func_vars_optimizer.vala"
			if (!(_tmp13_ < _tmp14_)) {
#line 131 "../src/file_func_vars_optimizer.vala"
				break;
#line 1668 "file_func_vars_optimizer.c"
			}
#line 131 "../src/file_func_vars_optimizer.vala"
			_tmp15_ = _parameter_list;
#line 131 "../src/file_func_vars_optimizer.vala"
			_tmp16_ = gee_abstract_list_get ((GeeAbstractList*) _tmp15_, _parameter_index);
#line 131 "../src/file_func_vars_optimizer.vala"
			parameter = (LocalParameter*) _tmp16_;
#line 132 "../src/file_func_vars_optimizer.vala"
			_tmp17_ = args;
#line 132 "../src/file_func_vars_optimizer.vala"
			if (_tmp17_->len > ((gssize) 0)) {
#line 1680 "file_func_vars_optimizer.c"
				GString* _tmp18_;
#line 133 "../src/file_func_vars_optimizer.vala"
				_tmp18_ = args;
#line 133 "../src/file_func_vars_optimizer.vala"
				g_string_append (_tmp18_, ", ");
#line 1686 "file_func_vars_optimizer.c"
			}
#line 135 "../src/file_func_vars_optimizer.vala"
			_tmp20_ = parameter;
#line 135 "../src/file_func_vars_optimizer.vala"
			_tmp21_ = php_to_vala_file_func_vars_optimizer_infer_parameter_type (self, local_function, _tmp20_);
#line 135 "../src/file_func_vars_optimizer.vala"
			_tmp19_ = _tmp21_;
#line 135 "../src/file_func_vars_optimizer.vala"
			if (_tmp19_ == NULL) {
#line 1696 "file_func_vars_optimizer.c"
				gchar* _tmp22_;
#line 135 "../src/file_func_vars_optimizer.vala"
				_tmp22_ = g_strdup ("var");
#line 135 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp19_);
#line 135 "../src/file_func_vars_optimizer.vala"
				_tmp19_ = _tmp22_;
#line 1704 "file_func_vars_optimizer.c"
			}
#line 135 "../src/file_func_vars_optimizer.vala"
			_tmp23_ = _tmp19_;
#line 135 "../src/file_func_vars_optimizer.vala"
			_tmp19_ = NULL;
#line 135 "../src/file_func_vars_optimizer.vala"
			parameter_type = _tmp23_;
#line 136 "../src/file_func_vars_optimizer.vala"
			_tmp24_ = args;
#line 136 "../src/file_func_vars_optimizer.vala"
			_tmp25_ = parameter;
#line 136 "../src/file_func_vars_optimizer.vala"
			_tmp26_ = _tmp25_->name;
#line 136 "../src/file_func_vars_optimizer.vala"
			_tmp27_ = parameter_type;
#line 136 "../src/file_func_vars_optimizer.vala"
			_tmp28_ = php_to_vala_file_func_vars_optimizer_zval_to_native_argument (self, _tmp26_, _tmp27_);
#line 136 "../src/file_func_vars_optimizer.vala"
			_tmp29_ = _tmp28_;
#line 136 "../src/file_func_vars_optimizer.vala"
			g_string_append (_tmp24_, _tmp29_);
#line 136 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp29_);
#line 131 "../src/file_func_vars_optimizer.vala"
			_g_free0 (parameter_type);
#line 131 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp19_);
#line 131 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (parameter);
#line 1734 "file_func_vars_optimizer.c"
		}
	}
#line 138 "../src/file_func_vars_optimizer.vala"
	_tmp30_ = php_to_vala_file_func_vars_optimizer_native_function_name (self, local_function);
#line 138 "../src/file_func_vars_optimizer.vala"
	_tmp31_ = _tmp30_;
#line 138 "../src/file_func_vars_optimizer.vala"
	_tmp32_ = args;
#line 138 "../src/file_func_vars_optimizer.vala"
	_tmp33_ = _tmp32_->str;
#line 138 "../src/file_func_vars_optimizer.vala"
	_tmp34_ = g_strdup_printf ("%s (%s)", _tmp31_, _tmp33_);
#line 138 "../src/file_func_vars_optimizer.vala"
	_tmp35_ = _tmp34_;
#line 138 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp31_);
#line 138 "../src/file_func_vars_optimizer.vala"
	native_call = _tmp35_;
#line 139 "../src/file_func_vars_optimizer.vala"
	_tmp36_ = return_type;
#line 139 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (_tmp36_, "void") == 0) {
#line 1757 "file_func_vars_optimizer.c"
		PhpToValaTranspiler* _tmp37_;
		const gchar* _tmp38_;
		gchar* _tmp39_;
		gchar* _tmp40_;
		PhpToValaTranspiler* _tmp41_;
#line 140 "../src/file_func_vars_optimizer.vala"
		_tmp37_ = self->priv->transpiler;
#line 140 "../src/file_func_vars_optimizer.vala"
		_tmp38_ = native_call;
#line 140 "../src/file_func_vars_optimizer.vala"
		_tmp39_ = g_strdup_printf ("%s;", _tmp38_);
#line 140 "../src/file_func_vars_optimizer.vala"
		_tmp40_ = _tmp39_;
#line 140 "../src/file_func_vars_optimizer.vala"
		php_to_vala_transpiler_append_indented_line (_tmp37_, output, 1, _tmp40_);
#line 140 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp40_);
#line 141 "../src/file_func_vars_optimizer.vala"
		_tmp41_ = self->priv->transpiler;
#line 141 "../src/file_func_vars_optimizer.vala"
		php_to_vala_transpiler_append_indented_line (_tmp41_, output, 1, "return Php.zval.null_value ();");
#line 1779 "file_func_vars_optimizer.c"
	} else {
		PhpToValaTranspiler* _tmp42_;
		const gchar* _tmp43_;
		const gchar* _tmp44_;
		gchar* _tmp45_;
		gchar* _tmp46_;
		gchar* _tmp47_;
		gchar* _tmp48_;
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp42_ = self->priv->transpiler;
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp43_ = native_call;
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp44_ = return_type;
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp45_ = php_to_vala_file_func_vars_optimizer_native_to_zval_return (self, _tmp43_, _tmp44_);
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp46_ = _tmp45_;
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp47_ = g_strdup_printf ("return %s;", _tmp46_);
#line 143 "../src/file_func_vars_optimizer.vala"
		_tmp48_ = _tmp47_;
#line 143 "../src/file_func_vars_optimizer.vala"
		php_to_vala_transpiler_append_indented_line (_tmp42_, output, 1, _tmp48_);
#line 143 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp48_);
#line 143 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp46_);
#line 1808 "file_func_vars_optimizer.c"
	}
#line 145 "../src/file_func_vars_optimizer.vala"
	g_string_append (output, "}\n\n");
#line 127 "../src/file_func_vars_optimizer.vala"
	_g_free0 (native_call);
#line 127 "../src/file_func_vars_optimizer.vala"
	_g_string_free0 (args);
#line 127 "../src/file_func_vars_optimizer.vala"
	_g_free0 (return_type);
#line 127 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp0_);
#line 1820 "file_func_vars_optimizer.c"
}

static gchar*
string_strip (const gchar* self)
{
	gchar* _result_ = NULL;
	gchar* _tmp0_;
	gchar* result;
#line 1413 "glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1414 "glib-2.0.vapi"
	_tmp0_ = g_strdup (self);
#line 1414 "glib-2.0.vapi"
	_result_ = _tmp0_;
#line 1415 "glib-2.0.vapi"
	g_strstrip (_result_);
#line 1416 "glib-2.0.vapi"
	result = _result_;
#line 1416 "glib-2.0.vapi"
	return result;
#line 1841 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_convert_native_argument_list (PhpToValaFileFuncVarsOptimizer* self,
                                                                   const gchar* args,
                                                                   gint php_line_number,
                                                                   GError** error)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gboolean _tmp2_;
	GString* converted = NULL;
	GString* _tmp4_;
	GString* _tmp23_;
	const gchar* _tmp24_;
	gchar* _tmp25_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 148 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 148 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (args != NULL, NULL);
#line 149 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = string_strip (args);
#line 149 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = _tmp0_;
#line 149 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = g_strcmp0 (_tmp1_, "") == 0;
#line 149 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp1_);
#line 149 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_) {
#line 1874 "file_func_vars_optimizer.c"
		gchar* _tmp3_;
#line 150 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = g_strdup ("");
#line 150 "../src/file_func_vars_optimizer.vala"
		result = _tmp3_;
#line 150 "../src/file_func_vars_optimizer.vala"
		return result;
#line 1882 "file_func_vars_optimizer.c"
	}
#line 153 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = g_string_new ("");
#line 153 "../src/file_func_vars_optimizer.vala"
	converted = _tmp4_;
#line 1888 "file_func_vars_optimizer.c"
	{
		GeeArrayList* _arg_list = NULL;
		PhpToValaTranspiler* _tmp5_;
		GeeArrayList* _tmp6_;
		gint _arg_size = 0;
		GeeArrayList* _tmp7_;
		gint _tmp8_;
		gint _tmp9_;
		gint _arg_index = 0;
#line 154 "../src/file_func_vars_optimizer.vala"
		_tmp5_ = self->priv->transpiler;
#line 154 "../src/file_func_vars_optimizer.vala"
		_tmp6_ = php_to_vala_transpiler_split_top_level (_tmp5_, args, ',');
#line 154 "../src/file_func_vars_optimizer.vala"
		_arg_list = _tmp6_;
#line 154 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = _arg_list;
#line 154 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp7_);
#line 154 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = _tmp8_;
#line 154 "../src/file_func_vars_optimizer.vala"
		_arg_size = _tmp9_;
#line 154 "../src/file_func_vars_optimizer.vala"
		_arg_index = -1;
#line 154 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 1916 "file_func_vars_optimizer.c"
			gint _tmp10_;
			gint _tmp11_;
			gchar* arg = NULL;
			GeeArrayList* _tmp12_;
			gpointer _tmp13_;
			GString* _tmp14_;
			gchar* _tmp16_ = NULL;
			const gchar* _tmp17_;
			gchar* _tmp18_;
			gchar* _tmp19_;
			gchar* _tmp20_;
			gchar* _tmp21_;
			GString* _tmp22_;
#line 154 "../src/file_func_vars_optimizer.vala"
			_arg_index = _arg_index + 1;
#line 154 "../src/file_func_vars_optimizer.vala"
			_tmp10_ = _arg_index;
#line 154 "../src/file_func_vars_optimizer.vala"
			_tmp11_ = _arg_size;
#line 154 "../src/file_func_vars_optimizer.vala"
			if (!(_tmp10_ < _tmp11_)) {
#line 154 "../src/file_func_vars_optimizer.vala"
				break;
#line 1940 "file_func_vars_optimizer.c"
			}
#line 154 "../src/file_func_vars_optimizer.vala"
			_tmp12_ = _arg_list;
#line 154 "../src/file_func_vars_optimizer.vala"
			_tmp13_ = gee_abstract_list_get ((GeeAbstractList*) _tmp12_, _arg_index);
#line 154 "../src/file_func_vars_optimizer.vala"
			arg = (gchar*) _tmp13_;
#line 155 "../src/file_func_vars_optimizer.vala"
			_tmp14_ = converted;
#line 155 "../src/file_func_vars_optimizer.vala"
			if (_tmp14_->len > ((gssize) 0)) {
#line 1952 "file_func_vars_optimizer.c"
				GString* _tmp15_;
#line 156 "../src/file_func_vars_optimizer.vala"
				_tmp15_ = converted;
#line 156 "../src/file_func_vars_optimizer.vala"
				g_string_append (_tmp15_, ", ");
#line 1958 "file_func_vars_optimizer.c"
			}
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp17_ = arg;
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp18_ = string_strip (_tmp17_);
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp19_ = _tmp18_;
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp20_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp19_, php_line_number, "", &_inner_error0_);
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp21_ = _tmp20_;
#line 158 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp19_);
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp16_ = _tmp21_;
#line 158 "../src/file_func_vars_optimizer.vala"
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 158 "../src/file_func_vars_optimizer.vala"
				g_propagate_error (error, _inner_error0_);
#line 158 "../src/file_func_vars_optimizer.vala"
				_g_free0 (arg);
#line 158 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (_arg_list);
#line 158 "../src/file_func_vars_optimizer.vala"
				_g_string_free0 (converted);
#line 158 "../src/file_func_vars_optimizer.vala"
				return NULL;
#line 1986 "file_func_vars_optimizer.c"
			}
#line 158 "../src/file_func_vars_optimizer.vala"
			_tmp22_ = converted;
#line 158 "../src/file_func_vars_optimizer.vala"
			g_string_append (_tmp22_, _tmp16_);
#line 154 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp16_);
#line 154 "../src/file_func_vars_optimizer.vala"
			_g_free0 (arg);
#line 1996 "file_func_vars_optimizer.c"
		}
#line 154 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (_arg_list);
#line 2000 "file_func_vars_optimizer.c"
	}
#line 160 "../src/file_func_vars_optimizer.vala"
	_tmp23_ = converted;
#line 160 "../src/file_func_vars_optimizer.vala"
	_tmp24_ = _tmp23_->str;
#line 160 "../src/file_func_vars_optimizer.vala"
	_tmp25_ = g_strdup (_tmp24_);
#line 160 "../src/file_func_vars_optimizer.vala"
	result = _tmp25_;
#line 160 "../src/file_func_vars_optimizer.vala"
	_g_string_free0 (converted);
#line 160 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2014 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_native_function_name (PhpToValaFileFuncVarsOptimizer* self,
                                                           LocalFunction* local_function)
{
	const gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* result;
#line 163 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 163 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 164 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = local_function->name;
#line 164 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = g_strconcat ("__php2vala_file_func_", _tmp0_, NULL);
#line 164 "../src/file_func_vars_optimizer.vala"
	result = _tmp1_;
#line 164 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2036 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_default_native_return (PhpToValaFileFuncVarsOptimizer* self,
                                                            const gchar* return_type)
{
	gchar* _tmp4_;
	gchar* result;
#line 167 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 167 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (return_type != NULL, NULL);
#line 168 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (return_type, "void") == 0) {
#line 2051 "file_func_vars_optimizer.c"
		gchar* _tmp0_;
#line 169 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = g_strdup ("return;");
#line 169 "../src/file_func_vars_optimizer.vala"
		result = _tmp0_;
#line 169 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2059 "file_func_vars_optimizer.c"
	}
#line 171 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (return_type, "double") == 0) {
#line 2063 "file_func_vars_optimizer.c"
		gchar* _tmp1_;
#line 172 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = g_strdup ("return 0.0;");
#line 172 "../src/file_func_vars_optimizer.vala"
		result = _tmp1_;
#line 172 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2071 "file_func_vars_optimizer.c"
	}
#line 174 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (return_type, "bool") == 0) {
#line 2075 "file_func_vars_optimizer.c"
		gchar* _tmp2_;
#line 175 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = g_strdup ("return false;");
#line 175 "../src/file_func_vars_optimizer.vala"
		result = _tmp2_;
#line 175 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2083 "file_func_vars_optimizer.c"
	}
#line 177 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (return_type, "string") == 0) {
#line 2087 "file_func_vars_optimizer.c"
		gchar* _tmp3_;
#line 178 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = g_strdup ("return \"\";");
#line 178 "../src/file_func_vars_optimizer.vala"
		result = _tmp3_;
#line 178 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2095 "file_func_vars_optimizer.c"
	}
#line 180 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = g_strdup ("return 0;");
#line 180 "../src/file_func_vars_optimizer.vala"
	result = _tmp4_;
#line 180 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2103 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_native_scalar_type (PhpToValaFileFuncVarsOptimizer* self,
                                                         const gchar* php_type)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	GQuark _tmp3_ = 0U;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label0 = 0;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label1 = 0;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label2 = 0;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label3 = 0;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label4 = 0;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label5 = 0;
#line 187 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp2_label6 = 0;
#line 2127 "file_func_vars_optimizer.c"
	gchar* result;
#line 183 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 184 "../src/file_func_vars_optimizer.vala"
	if (php_type == NULL) {
#line 185 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 185 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2137 "file_func_vars_optimizer.c"
	}
#line 187 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = g_utf8_strdown (php_type, (gssize) -1);
#line 187 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = _tmp0_;
#line 187 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = (NULL == _tmp1_) ? 0 : g_quark_from_string (_tmp1_);
#line 187 "../src/file_func_vars_optimizer.vala"
	g_free (_tmp1_);
#line 187 "../src/file_func_vars_optimizer.vala"
	if ((_tmp3_ == ((0 != _tmp2_label0) ? _tmp2_label0 : (_tmp2_label0 = g_quark_from_static_string ("int")))) || (_tmp3_ == ((0 != _tmp2_label1) ? _tmp2_label1 : (_tmp2_label1 = g_quark_from_static_string ("integer"))))) {
#line 187 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 2151 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp4_;
#line 190 "../src/file_func_vars_optimizer.vala"
				_tmp4_ = g_strdup ("int");
#line 190 "../src/file_func_vars_optimizer.vala"
				result = _tmp4_;
#line 190 "../src/file_func_vars_optimizer.vala"
				return result;
#line 2161 "file_func_vars_optimizer.c"
			}
		}
	} else if ((_tmp3_ == ((0 != _tmp2_label2) ? _tmp2_label2 : (_tmp2_label2 = g_quark_from_static_string ("float")))) || (_tmp3_ == ((0 != _tmp2_label3) ? _tmp2_label3 : (_tmp2_label3 = g_quark_from_static_string ("double"))))) {
#line 187 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 2167 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp5_;
#line 193 "../src/file_func_vars_optimizer.vala"
				_tmp5_ = g_strdup ("double");
#line 193 "../src/file_func_vars_optimizer.vala"
				result = _tmp5_;
#line 193 "../src/file_func_vars_optimizer.vala"
				return result;
#line 2177 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp3_ == ((0 != _tmp2_label4) ? _tmp2_label4 : (_tmp2_label4 = g_quark_from_static_string ("string")))) {
#line 187 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 2183 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp6_;
#line 195 "../src/file_func_vars_optimizer.vala"
				_tmp6_ = g_strdup ("string");
#line 195 "../src/file_func_vars_optimizer.vala"
				result = _tmp6_;
#line 195 "../src/file_func_vars_optimizer.vala"
				return result;
#line 2193 "file_func_vars_optimizer.c"
			}
		}
	} else if ((_tmp3_ == ((0 != _tmp2_label5) ? _tmp2_label5 : (_tmp2_label5 = g_quark_from_static_string ("bool")))) || (_tmp3_ == ((0 != _tmp2_label6) ? _tmp2_label6 : (_tmp2_label6 = g_quark_from_static_string ("boolean"))))) {
#line 187 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 2199 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp7_;
#line 198 "../src/file_func_vars_optimizer.vala"
				_tmp7_ = g_strdup ("bool");
#line 198 "../src/file_func_vars_optimizer.vala"
				result = _tmp7_;
#line 198 "../src/file_func_vars_optimizer.vala"
				return result;
#line 2209 "file_func_vars_optimizer.c"
			}
		}
	} else {
#line 187 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 2215 "file_func_vars_optimizer.c"
			default:
			{
#line 200 "../src/file_func_vars_optimizer.vala"
				result = NULL;
#line 200 "../src/file_func_vars_optimizer.vala"
				return result;
#line 2222 "file_func_vars_optimizer.c"
			}
		}
	}
}

static gint
string_index_of (const gchar* self,
                 const gchar* needle,
                 gint start_index)
{
	gchar* _result_ = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gint result;
#line 1184 "glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, -1);
#line 1184 "glib-2.0.vapi"
	g_return_val_if_fail (needle != NULL, -1);
#line 1185 "glib-2.0.vapi"
	_tmp0_ = strstr (((gchar*) self) + start_index, (gchar*) needle);
#line 1185 "glib-2.0.vapi"
	_result_ = _tmp0_;
#line 1187 "glib-2.0.vapi"
	_tmp1_ = _result_;
#line 1187 "glib-2.0.vapi"
	if (_tmp1_ != NULL) {
#line 2249 "file_func_vars_optimizer.c"
		gchar* _tmp2_;
#line 1188 "glib-2.0.vapi"
		_tmp2_ = _result_;
#line 1188 "glib-2.0.vapi"
		result = (gint) (_tmp2_ - ((gchar*) self));
#line 1188 "glib-2.0.vapi"
		return result;
#line 2257 "file_func_vars_optimizer.c"
	} else {
#line 1190 "glib-2.0.vapi"
		result = -1;
#line 1190 "glib-2.0.vapi"
		return result;
#line 2263 "file_func_vars_optimizer.c"
	}
}

static gchar*
php_to_vala_file_func_vars_optimizer_infer_return_type (PhpToValaFileFuncVarsOptimizer* self,
                                                        LocalFunction* local_function)
{
	gchar* declared = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* result;
#line 204 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 204 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 205 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = local_function->return_type;
#line 205 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = php_to_vala_file_func_vars_optimizer_native_scalar_type (self, _tmp0_);
#line 205 "../src/file_func_vars_optimizer.vala"
	declared = _tmp1_;
#line 206 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = declared;
#line 206 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_ != NULL) {
#line 207 "../src/file_func_vars_optimizer.vala"
		result = declared;
#line 207 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2295 "file_func_vars_optimizer.c"
	}
#line 209 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = local_function->body;
#line 209 "../src/file_func_vars_optimizer.vala"
	if (php_to_vala_file_func_vars_optimizer_function_body_has_return (self, _tmp3_)) {
#line 2301 "file_func_vars_optimizer.c"
		gboolean _tmp4_ = FALSE;
		gboolean _tmp5_ = FALSE;
		const gchar* _tmp6_;
#line 210 "../src/file_func_vars_optimizer.vala"
		_tmp6_ = local_function->body;
#line 210 "../src/file_func_vars_optimizer.vala"
		if (string_index_of (_tmp6_, "return round(", 0) >= 0) {
#line 210 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = TRUE;
#line 2311 "file_func_vars_optimizer.c"
		} else {
			const gchar* _tmp7_;
#line 211 "../src/file_func_vars_optimizer.vala"
			_tmp7_ = local_function->body;
#line 211 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = string_index_of (_tmp7_, "return round (", 0) >= 0;
#line 2318 "file_func_vars_optimizer.c"
		}
#line 210 "../src/file_func_vars_optimizer.vala"
		if (_tmp5_) {
#line 210 "../src/file_func_vars_optimizer.vala"
			_tmp4_ = TRUE;
#line 2324 "file_func_vars_optimizer.c"
		} else {
			const gchar* _tmp8_;
#line 212 "../src/file_func_vars_optimizer.vala"
			_tmp8_ = local_function->body;
#line 212 "../src/file_func_vars_optimizer.vala"
			_tmp4_ = string_index_of (_tmp8_, "return $", 0) >= 0;
#line 2331 "file_func_vars_optimizer.c"
		}
#line 210 "../src/file_func_vars_optimizer.vala"
		if (_tmp4_) {
#line 2335 "file_func_vars_optimizer.c"
			gchar* _tmp9_;
#line 213 "../src/file_func_vars_optimizer.vala"
			_tmp9_ = g_strdup ("double");
#line 213 "../src/file_func_vars_optimizer.vala"
			result = _tmp9_;
#line 213 "../src/file_func_vars_optimizer.vala"
			_g_free0 (declared);
#line 213 "../src/file_func_vars_optimizer.vala"
			return result;
#line 2345 "file_func_vars_optimizer.c"
		}
#line 215 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 215 "../src/file_func_vars_optimizer.vala"
		_g_free0 (declared);
#line 215 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2353 "file_func_vars_optimizer.c"
	}
#line 217 "../src/file_func_vars_optimizer.vala"
	if (php_to_vala_file_func_vars_optimizer_is_simple_no_return_wrapper (self, local_function)) {
#line 2357 "file_func_vars_optimizer.c"
		gchar* _tmp10_;
#line 218 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = g_strdup ("void");
#line 218 "../src/file_func_vars_optimizer.vala"
		result = _tmp10_;
#line 218 "../src/file_func_vars_optimizer.vala"
		_g_free0 (declared);
#line 218 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2367 "file_func_vars_optimizer.c"
	}
#line 220 "../src/file_func_vars_optimizer.vala"
	result = NULL;
#line 220 "../src/file_func_vars_optimizer.vala"
	_g_free0 (declared);
#line 220 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2375 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_infer_parameter_type (PhpToValaFileFuncVarsOptimizer* self,
                                                           LocalFunction* local_function,
                                                           LocalParameter* parameter)
{
	gchar* declared = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	gboolean _tmp3_ = FALSE;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_;
	gboolean _tmp10_;
	gchar* result;
#line 223 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 223 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 223 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (parameter != NULL, NULL);
#line 224 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = parameter->type_name;
#line 224 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = php_to_vala_file_func_vars_optimizer_native_scalar_type (self, _tmp0_);
#line 224 "../src/file_func_vars_optimizer.vala"
	declared = _tmp1_;
#line 225 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = declared;
#line 225 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_ != NULL) {
#line 226 "../src/file_func_vars_optimizer.vala"
		result = declared;
#line 226 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2416 "file_func_vars_optimizer.c"
	}
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = local_function->body;
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = parameter->name;
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = g_strconcat ("$", _tmp5_, NULL);
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = g_strconcat (_tmp7_, "();", NULL);
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = _tmp8_;
#line 228 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = string_index_of (_tmp4_, _tmp9_, 0) >= 0;
#line 228 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp9_);
#line 228 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp7_);
#line 228 "../src/file_func_vars_optimizer.vala"
	if (_tmp10_) {
#line 228 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = TRUE;
#line 2440 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp11_;
		const gchar* _tmp12_;
		gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = local_function->body;
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp12_ = parameter->name;
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp13_ = g_strconcat ("$", _tmp12_, NULL);
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp14_ = _tmp13_;
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp15_ = g_strconcat (_tmp14_, " ();", NULL);
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp16_ = _tmp15_;
#line 229 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = string_index_of (_tmp11_, _tmp16_, 0) >= 0;
#line 229 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp16_);
#line 229 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp14_);
#line 2466 "file_func_vars_optimizer.c"
	}
#line 228 "../src/file_func_vars_optimizer.vala"
	if (_tmp3_) {
#line 2470 "file_func_vars_optimizer.c"
		gchar* _tmp17_;
#line 230 "../src/file_func_vars_optimizer.vala"
		_tmp17_ = g_strdup ("string");
#line 230 "../src/file_func_vars_optimizer.vala"
		result = _tmp17_;
#line 230 "../src/file_func_vars_optimizer.vala"
		_g_free0 (declared);
#line 230 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2480 "file_func_vars_optimizer.c"
	}
#line 232 "../src/file_func_vars_optimizer.vala"
	result = NULL;
#line 232 "../src/file_func_vars_optimizer.vala"
	_g_free0 (declared);
#line 232 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2488 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_function_body_has_return (PhpToValaFileFuncVarsOptimizer* self,
                                                               const gchar* body)
{
	gchar** _tmp0_;
	gchar** _tmp1_;
	gboolean result;
#line 235 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 235 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (body != NULL, FALSE);
#line 236 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = _tmp0_ = g_strsplit (body, "\n", 0);
#line 2504 "file_func_vars_optimizer.c"
	{
		gchar** raw_line_collection = NULL;
		gint raw_line_collection_length1 = 0;
		gint _raw_line_collection_size_ = 0;
		gint raw_line_it = 0;
#line 236 "../src/file_func_vars_optimizer.vala"
		raw_line_collection = _tmp1_;
#line 236 "../src/file_func_vars_optimizer.vala"
		raw_line_collection_length1 = _vala_array_length (_tmp0_);
#line 236 "../src/file_func_vars_optimizer.vala"
		for (raw_line_it = 0; raw_line_it < raw_line_collection_length1; raw_line_it = raw_line_it + 1) {
#line 2516 "file_func_vars_optimizer.c"
			gchar* _tmp2_;
			gchar* raw_line = NULL;
#line 236 "../src/file_func_vars_optimizer.vala"
			_tmp2_ = g_strdup (raw_line_collection[raw_line_it]);
#line 236 "../src/file_func_vars_optimizer.vala"
			raw_line = _tmp2_;
#line 2523 "file_func_vars_optimizer.c"
			{
				const gchar* _tmp3_;
				gchar* _tmp4_;
				gchar* _tmp5_;
				gboolean _tmp6_;
#line 237 "../src/file_func_vars_optimizer.vala"
				_tmp3_ = raw_line;
#line 237 "../src/file_func_vars_optimizer.vala"
				_tmp4_ = string_strip (_tmp3_);
#line 237 "../src/file_func_vars_optimizer.vala"
				_tmp5_ = _tmp4_;
#line 237 "../src/file_func_vars_optimizer.vala"
				_tmp6_ = g_str_has_prefix (_tmp5_, "return");
#line 237 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp5_);
#line 237 "../src/file_func_vars_optimizer.vala"
				if (_tmp6_) {
#line 238 "../src/file_func_vars_optimizer.vala"
					result = TRUE;
#line 238 "../src/file_func_vars_optimizer.vala"
					_g_free0 (raw_line);
#line 238 "../src/file_func_vars_optimizer.vala"
					raw_line_collection = (_vala_array_free (raw_line_collection, raw_line_collection_length1, (GDestroyNotify) g_free), NULL);
#line 238 "../src/file_func_vars_optimizer.vala"
					return result;
#line 2549 "file_func_vars_optimizer.c"
				}
#line 236 "../src/file_func_vars_optimizer.vala"
				_g_free0 (raw_line);
#line 2553 "file_func_vars_optimizer.c"
			}
		}
#line 236 "../src/file_func_vars_optimizer.vala"
		raw_line_collection = (_vala_array_free (raw_line_collection, raw_line_collection_length1, (GDestroyNotify) g_free), NULL);
#line 2558 "file_func_vars_optimizer.c"
	}
#line 241 "../src/file_func_vars_optimizer.vala"
	result = FALSE;
#line 241 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2564 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_native_body_has_unconditional_loop_return (PhpToValaFileFuncVarsOptimizer* self,
                                                                                LocalFunction* local_function)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	const gchar* _tmp2_;
	gboolean result;
#line 244 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 244 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 245 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = local_function->body;
#line 245 "../src/file_func_vars_optimizer.vala"
	if (string_index_of (_tmp2_, "while (true)", 0) >= 0) {
#line 245 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = TRUE;
#line 2585 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp3_;
#line 245 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = local_function->body;
#line 245 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = string_index_of (_tmp3_, "while(true)", 0) >= 0;
#line 2592 "file_func_vars_optimizer.c"
	}
#line 245 "../src/file_func_vars_optimizer.vala"
	if (_tmp1_) {
#line 2596 "file_func_vars_optimizer.c"
		const gchar* _tmp4_;
#line 246 "../src/file_func_vars_optimizer.vala"
		_tmp4_ = local_function->body;
#line 246 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = php_to_vala_file_func_vars_optimizer_function_body_has_return (self, _tmp4_);
#line 2602 "file_func_vars_optimizer.c"
	} else {
#line 245 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 2606 "file_func_vars_optimizer.c"
	}
#line 245 "../src/file_func_vars_optimizer.vala"
	result = _tmp0_;
#line 245 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2612 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_is_simple_no_return_wrapper (PhpToValaFileFuncVarsOptimizer* self,
                                                                  LocalFunction* local_function)
{
	GeeArrayList* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	Statements* statements = NULL;
	const gchar* _tmp3_;
	Statements* _tmp4_;
	Statements* _tmp5_;
	GeeArrayList* _tmp6_;
	gint _tmp7_;
	gint _tmp8_;
	gchar* line = NULL;
	Statements* _tmp9_;
	GeeArrayList* _tmp10_;
	gpointer _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	const gchar* _tmp15_;
	gint open_index = 0;
	const gchar* _tmp16_;
	gchar* function_name = NULL;
	const gchar* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	PhpToValaTranspiler* _tmp22_;
	GeeHashMap* _tmp23_;
	const gchar* _tmp24_;
	gboolean result;
#line 249 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 249 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 250 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = local_function->parameters;
#line 250 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp0_);
#line 250 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 250 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_ != 0) {
#line 251 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 251 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2665 "file_func_vars_optimizer.c"
	}
#line 253 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = local_function->body;
#line 253 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = php_to_vala_source_parser_collect_statements (_tmp3_, local_function->line + 1);
#line 253 "../src/file_func_vars_optimizer.vala"
	statements = _tmp4_;
#line 254 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = statements;
#line 254 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = _tmp5_->texts;
#line 254 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp6_);
#line 254 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 254 "../src/file_func_vars_optimizer.vala"
	if (_tmp8_ != 1) {
#line 255 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 255 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (statements);
#line 255 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2689 "file_func_vars_optimizer.c"
	}
#line 257 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = statements;
#line 257 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = _tmp9_->texts;
#line 257 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = gee_abstract_list_get ((GeeAbstractList*) _tmp10_, 0);
#line 257 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = (gchar*) _tmp11_;
#line 257 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = string_strip (_tmp12_);
#line 257 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = _tmp13_;
#line 257 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp12_);
#line 257 "../src/file_func_vars_optimizer.vala"
	line = _tmp14_;
#line 258 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = line;
#line 258 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_suffix (_tmp15_, ");")) {
#line 259 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 259 "../src/file_func_vars_optimizer.vala"
		_g_free0 (line);
#line 259 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (statements);
#line 259 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2719 "file_func_vars_optimizer.c"
	}
#line 261 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = line;
#line 261 "../src/file_func_vars_optimizer.vala"
	open_index = string_index_of (_tmp16_, "(", 0);
#line 262 "../src/file_func_vars_optimizer.vala"
	if (open_index <= 0) {
#line 263 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 263 "../src/file_func_vars_optimizer.vala"
		_g_free0 (line);
#line 263 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (statements);
#line 263 "../src/file_func_vars_optimizer.vala"
		return result;
#line 2735 "file_func_vars_optimizer.c"
	}
#line 265 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = line;
#line 265 "../src/file_func_vars_optimizer.vala"
	_tmp18_ = string_substring (_tmp17_, (glong) 0, (glong) open_index);
#line 265 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = _tmp18_;
#line 265 "../src/file_func_vars_optimizer.vala"
	_tmp20_ = string_strip (_tmp19_);
#line 265 "../src/file_func_vars_optimizer.vala"
	_tmp21_ = _tmp20_;
#line 265 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp19_);
#line 265 "../src/file_func_vars_optimizer.vala"
	function_name = _tmp21_;
#line 266 "../src/file_func_vars_optimizer.vala"
	_tmp22_ = self->priv->transpiler;
#line 266 "../src/file_func_vars_optimizer.vala"
	_tmp23_ = _tmp22_->local_functions;
#line 266 "../src/file_func_vars_optimizer.vala"
	_tmp24_ = function_name;
#line 266 "../src/file_func_vars_optimizer.vala"
	result = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp23_, _tmp24_);
#line 266 "../src/file_func_vars_optimizer.vala"
	_g_free0 (function_name);
#line 266 "../src/file_func_vars_optimizer.vala"
	_g_free0 (line);
#line 266 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (statements);
#line 266 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2767 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_needs_callable_delegate (PhpToValaFileFuncVarsOptimizer* self,
                                                              LocalFunction* local_function)
{
	gboolean result;
#line 269 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 269 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 2779 "file_func_vars_optimizer.c"
	{
		GeeArrayList* _parameter_list = NULL;
		GeeArrayList* _tmp0_;
		gint _parameter_size = 0;
		GeeArrayList* _tmp1_;
		gint _tmp2_;
		gint _tmp3_;
		gint _parameter_index = 0;
#line 270 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = local_function->parameters;
#line 270 "../src/file_func_vars_optimizer.vala"
		_parameter_list = _tmp0_;
#line 270 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = _parameter_list;
#line 270 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp1_);
#line 270 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = _tmp2_;
#line 270 "../src/file_func_vars_optimizer.vala"
		_parameter_size = _tmp3_;
#line 270 "../src/file_func_vars_optimizer.vala"
		_parameter_index = -1;
#line 270 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 2804 "file_func_vars_optimizer.c"
			gint _tmp4_;
			gint _tmp5_;
			LocalParameter* parameter = NULL;
			GeeArrayList* _tmp6_;
			gpointer _tmp7_;
			gboolean _tmp8_ = FALSE;
			LocalParameter* _tmp9_;
#line 270 "../src/file_func_vars_optimizer.vala"
			_parameter_index = _parameter_index + 1;
#line 270 "../src/file_func_vars_optimizer.vala"
			_tmp4_ = _parameter_index;
#line 270 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = _parameter_size;
#line 270 "../src/file_func_vars_optimizer.vala"
			if (!(_tmp4_ < _tmp5_)) {
#line 270 "../src/file_func_vars_optimizer.vala"
				break;
#line 2822 "file_func_vars_optimizer.c"
			}
#line 270 "../src/file_func_vars_optimizer.vala"
			_tmp6_ = _parameter_list;
#line 270 "../src/file_func_vars_optimizer.vala"
			_tmp7_ = gee_abstract_list_get ((GeeAbstractList*) _tmp6_, _parameter_index);
#line 270 "../src/file_func_vars_optimizer.vala"
			parameter = (LocalParameter*) _tmp7_;
#line 271 "../src/file_func_vars_optimizer.vala"
			_tmp9_ = parameter;
#line 271 "../src/file_func_vars_optimizer.vala"
			if (php_to_vala_file_func_vars_optimizer_uses_parameter_as_callable (self, local_function, _tmp9_)) {
#line 2834 "file_func_vars_optimizer.c"
				LocalParameter* _tmp10_;
#line 271 "../src/file_func_vars_optimizer.vala"
				_tmp10_ = parameter;
#line 271 "../src/file_func_vars_optimizer.vala"
				_tmp8_ = !php_to_vala_file_func_vars_optimizer_assigns_parameter (self, local_function, _tmp10_);
#line 2840 "file_func_vars_optimizer.c"
			} else {
#line 271 "../src/file_func_vars_optimizer.vala"
				_tmp8_ = FALSE;
#line 2844 "file_func_vars_optimizer.c"
			}
#line 271 "../src/file_func_vars_optimizer.vala"
			if (_tmp8_) {
#line 272 "../src/file_func_vars_optimizer.vala"
				result = TRUE;
#line 272 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (parameter);
#line 272 "../src/file_func_vars_optimizer.vala"
				return result;
#line 2854 "file_func_vars_optimizer.c"
			}
#line 270 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (parameter);
#line 2858 "file_func_vars_optimizer.c"
		}
	}
#line 275 "../src/file_func_vars_optimizer.vala"
	result = FALSE;
#line 275 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2865 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_uses_parameter_as_callable (PhpToValaFileFuncVarsOptimizer* self,
                                                                 LocalFunction* local_function,
                                                                 LocalParameter* parameter)
{
	gboolean _tmp0_ = FALSE;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gboolean _tmp7_;
	gboolean result;
#line 278 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 278 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 278 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (parameter != NULL, FALSE);
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = local_function->body;
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = parameter->name;
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = g_strconcat ("$", _tmp2_, NULL);
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = g_strconcat (_tmp4_, "();", NULL);
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 279 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = string_index_of (_tmp1_, _tmp6_, 0) >= 0;
#line 279 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp6_);
#line 279 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 279 "../src/file_func_vars_optimizer.vala"
	if (_tmp7_) {
#line 279 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 2910 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		gchar* _tmp10_;
		gchar* _tmp11_;
		gchar* _tmp12_;
		gchar* _tmp13_;
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = local_function->body;
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = parameter->name;
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = g_strconcat ("$", _tmp9_, NULL);
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = _tmp10_;
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp12_ = g_strconcat (_tmp11_, " ();", NULL);
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp13_ = _tmp12_;
#line 280 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = string_index_of (_tmp8_, _tmp13_, 0) >= 0;
#line 280 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp13_);
#line 280 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp11_);
#line 2936 "file_func_vars_optimizer.c"
	}
#line 279 "../src/file_func_vars_optimizer.vala"
	result = _tmp0_;
#line 279 "../src/file_func_vars_optimizer.vala"
	return result;
#line 2942 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_assigns_parameter (PhpToValaFileFuncVarsOptimizer* self,
                                                        LocalFunction* local_function,
                                                        LocalParameter* parameter)
{
	gchar* name = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar** _tmp3_;
	gchar** _tmp4_;
	gboolean result;
#line 283 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 283 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 283 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (parameter != NULL, FALSE);
#line 284 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = parameter->name;
#line 284 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = g_strconcat ("$", _tmp0_, NULL);
#line 284 "../src/file_func_vars_optimizer.vala"
	name = _tmp1_;
#line 285 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = local_function->body;
#line 285 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = _tmp3_ = g_strsplit (_tmp2_, "\n", 0);
#line 2973 "file_func_vars_optimizer.c"
	{
		gchar** raw_line_collection = NULL;
		gint raw_line_collection_length1 = 0;
		gint _raw_line_collection_size_ = 0;
		gint raw_line_it = 0;
#line 285 "../src/file_func_vars_optimizer.vala"
		raw_line_collection = _tmp4_;
#line 285 "../src/file_func_vars_optimizer.vala"
		raw_line_collection_length1 = _vala_array_length (_tmp3_);
#line 285 "../src/file_func_vars_optimizer.vala"
		for (raw_line_it = 0; raw_line_it < raw_line_collection_length1; raw_line_it = raw_line_it + 1) {
#line 2985 "file_func_vars_optimizer.c"
			gchar* _tmp5_;
			gchar* raw_line = NULL;
#line 285 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = g_strdup (raw_line_collection[raw_line_it]);
#line 285 "../src/file_func_vars_optimizer.vala"
			raw_line = _tmp5_;
#line 2992 "file_func_vars_optimizer.c"
			{
				gchar* line = NULL;
				const gchar* _tmp6_;
				gchar* _tmp7_;
				gboolean _tmp8_ = FALSE;
				const gchar* _tmp9_;
				const gchar* _tmp10_;
				gchar* _tmp11_;
				gchar* _tmp12_;
				gboolean _tmp13_;
#line 286 "../src/file_func_vars_optimizer.vala"
				_tmp6_ = raw_line;
#line 286 "../src/file_func_vars_optimizer.vala"
				_tmp7_ = string_strip (_tmp6_);
#line 286 "../src/file_func_vars_optimizer.vala"
				line = _tmp7_;
#line 287 "../src/file_func_vars_optimizer.vala"
				_tmp9_ = line;
#line 287 "../src/file_func_vars_optimizer.vala"
				_tmp10_ = name;
#line 287 "../src/file_func_vars_optimizer.vala"
				_tmp11_ = g_strconcat (_tmp10_, " =", NULL);
#line 287 "../src/file_func_vars_optimizer.vala"
				_tmp12_ = _tmp11_;
#line 287 "../src/file_func_vars_optimizer.vala"
				_tmp13_ = g_str_has_prefix (_tmp9_, _tmp12_);
#line 287 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp12_);
#line 287 "../src/file_func_vars_optimizer.vala"
				if (_tmp13_) {
#line 287 "../src/file_func_vars_optimizer.vala"
					_tmp8_ = TRUE;
#line 3025 "file_func_vars_optimizer.c"
				} else {
					const gchar* _tmp14_;
					const gchar* _tmp15_;
					gchar* _tmp16_;
					gchar* _tmp17_;
#line 287 "../src/file_func_vars_optimizer.vala"
					_tmp14_ = line;
#line 287 "../src/file_func_vars_optimizer.vala"
					_tmp15_ = name;
#line 287 "../src/file_func_vars_optimizer.vala"
					_tmp16_ = g_strconcat (_tmp15_, "=", NULL);
#line 287 "../src/file_func_vars_optimizer.vala"
					_tmp17_ = _tmp16_;
#line 287 "../src/file_func_vars_optimizer.vala"
					_tmp8_ = g_str_has_prefix (_tmp14_, _tmp17_);
#line 287 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp17_);
#line 3043 "file_func_vars_optimizer.c"
				}
#line 287 "../src/file_func_vars_optimizer.vala"
				if (_tmp8_) {
#line 288 "../src/file_func_vars_optimizer.vala"
					result = TRUE;
#line 288 "../src/file_func_vars_optimizer.vala"
					_g_free0 (line);
#line 288 "../src/file_func_vars_optimizer.vala"
					_g_free0 (raw_line);
#line 288 "../src/file_func_vars_optimizer.vala"
					raw_line_collection = (_vala_array_free (raw_line_collection, raw_line_collection_length1, (GDestroyNotify) g_free), NULL);
#line 288 "../src/file_func_vars_optimizer.vala"
					_g_free0 (name);
#line 288 "../src/file_func_vars_optimizer.vala"
					return result;
#line 3059 "file_func_vars_optimizer.c"
				}
#line 285 "../src/file_func_vars_optimizer.vala"
				_g_free0 (line);
#line 285 "../src/file_func_vars_optimizer.vala"
				_g_free0 (raw_line);
#line 3065 "file_func_vars_optimizer.c"
			}
		}
#line 285 "../src/file_func_vars_optimizer.vala"
		raw_line_collection = (_vala_array_free (raw_line_collection, raw_line_collection_length1, (GDestroyNotify) g_free), NULL);
#line 3070 "file_func_vars_optimizer.c"
	}
#line 291 "../src/file_func_vars_optimizer.vala"
	result = FALSE;
#line 291 "../src/file_func_vars_optimizer.vala"
	_g_free0 (name);
#line 291 "../src/file_func_vars_optimizer.vala"
	return result;
#line 3078 "file_func_vars_optimizer.c"
}

static void
php_to_vala_file_func_vars_optimizer_append_callable_delegate_initializers (PhpToValaFileFuncVarsOptimizer* self,
                                                                            GString* output,
                                                                            LocalFunction* local_function)
{
#line 294 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (self != NULL);
#line 294 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (output != NULL);
#line 294 "../src/file_func_vars_optimizer.vala"
	g_return_if_fail (local_function != NULL);
#line 3092 "file_func_vars_optimizer.c"
	{
		GeeArrayList* _parameter_list = NULL;
		GeeArrayList* _tmp0_;
		gint _parameter_size = 0;
		GeeArrayList* _tmp1_;
		gint _tmp2_;
		gint _tmp3_;
		gint _parameter_index = 0;
#line 295 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = local_function->parameters;
#line 295 "../src/file_func_vars_optimizer.vala"
		_parameter_list = _tmp0_;
#line 295 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = _parameter_list;
#line 295 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp1_);
#line 295 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = _tmp2_;
#line 295 "../src/file_func_vars_optimizer.vala"
		_parameter_size = _tmp3_;
#line 295 "../src/file_func_vars_optimizer.vala"
		_parameter_index = -1;
#line 295 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 3117 "file_func_vars_optimizer.c"
			gint _tmp4_;
			gint _tmp5_;
			LocalParameter* parameter = NULL;
			GeeArrayList* _tmp6_;
			gpointer _tmp7_;
			gboolean _tmp8_ = FALSE;
			LocalParameter* _tmp9_;
			gchar* delegate_name = NULL;
			LocalParameter* _tmp11_;
			const gchar* _tmp12_;
			gchar* _tmp13_;
			PhpToValaTranspiler* _tmp14_;
			const gchar* _tmp15_;
			gchar* _tmp16_;
			gchar* _tmp17_;
			gboolean first = FALSE;
#line 295 "../src/file_func_vars_optimizer.vala"
			_parameter_index = _parameter_index + 1;
#line 295 "../src/file_func_vars_optimizer.vala"
			_tmp4_ = _parameter_index;
#line 295 "../src/file_func_vars_optimizer.vala"
			_tmp5_ = _parameter_size;
#line 295 "../src/file_func_vars_optimizer.vala"
			if (!(_tmp4_ < _tmp5_)) {
#line 295 "../src/file_func_vars_optimizer.vala"
				break;
#line 3144 "file_func_vars_optimizer.c"
			}
#line 295 "../src/file_func_vars_optimizer.vala"
			_tmp6_ = _parameter_list;
#line 295 "../src/file_func_vars_optimizer.vala"
			_tmp7_ = gee_abstract_list_get ((GeeAbstractList*) _tmp6_, _parameter_index);
#line 295 "../src/file_func_vars_optimizer.vala"
			parameter = (LocalParameter*) _tmp7_;
#line 296 "../src/file_func_vars_optimizer.vala"
			_tmp9_ = parameter;
#line 296 "../src/file_func_vars_optimizer.vala"
			if (!php_to_vala_file_func_vars_optimizer_uses_parameter_as_callable (self, local_function, _tmp9_)) {
#line 296 "../src/file_func_vars_optimizer.vala"
				_tmp8_ = TRUE;
#line 3158 "file_func_vars_optimizer.c"
			} else {
				LocalParameter* _tmp10_;
#line 296 "../src/file_func_vars_optimizer.vala"
				_tmp10_ = parameter;
#line 296 "../src/file_func_vars_optimizer.vala"
				_tmp8_ = php_to_vala_file_func_vars_optimizer_assigns_parameter (self, local_function, _tmp10_);
#line 3165 "file_func_vars_optimizer.c"
			}
#line 296 "../src/file_func_vars_optimizer.vala"
			if (_tmp8_) {
#line 297 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (parameter);
#line 297 "../src/file_func_vars_optimizer.vala"
				continue;
#line 3173 "file_func_vars_optimizer.c"
			}
#line 299 "../src/file_func_vars_optimizer.vala"
			_tmp11_ = parameter;
#line 299 "../src/file_func_vars_optimizer.vala"
			_tmp12_ = _tmp11_->name;
#line 299 "../src/file_func_vars_optimizer.vala"
			_tmp13_ = php_to_vala_file_func_vars_optimizer_callable_delegate_name (self, _tmp12_);
#line 299 "../src/file_func_vars_optimizer.vala"
			delegate_name = _tmp13_;
#line 300 "../src/file_func_vars_optimizer.vala"
			_tmp14_ = self->priv->transpiler;
#line 300 "../src/file_func_vars_optimizer.vala"
			_tmp15_ = delegate_name;
#line 300 "../src/file_func_vars_optimizer.vala"
			_tmp16_ = g_strdup_printf ("__php2vala_file_func_callable? %s = null;", _tmp15_);
#line 300 "../src/file_func_vars_optimizer.vala"
			_tmp17_ = _tmp16_;
#line 300 "../src/file_func_vars_optimizer.vala"
			php_to_vala_transpiler_append_indented_line (_tmp14_, output, 1, _tmp17_);
#line 300 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp17_);
#line 301 "../src/file_func_vars_optimizer.vala"
			first = TRUE;
#line 3197 "file_func_vars_optimizer.c"
			{
				GeeIterator* _function_name_it = NULL;
				PhpToValaTranspiler* _tmp18_;
				GeeHashMap* _tmp19_;
				GeeSet* _tmp20_;
				GeeSet* _tmp21_;
				GeeSet* _tmp22_;
				GeeIterator* _tmp23_;
				GeeIterator* _tmp24_;
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp18_ = self->priv->transpiler;
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp19_ = _tmp18_->local_functions;
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp20_ = gee_abstract_map_get_keys ((GeeAbstractMap*) _tmp19_);
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp21_ = _tmp20_;
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp22_ = _tmp21_;
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp23_ = gee_iterable_iterator ((GeeIterable*) _tmp22_);
#line 302 "../src/file_func_vars_optimizer.vala"
				_tmp24_ = _tmp23_;
#line 302 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (_tmp22_);
#line 302 "../src/file_func_vars_optimizer.vala"
				_function_name_it = _tmp24_;
#line 302 "../src/file_func_vars_optimizer.vala"
				while (TRUE) {
#line 3227 "file_func_vars_optimizer.c"
					GeeIterator* _tmp25_;
					gchar* function_name = NULL;
					GeeIterator* _tmp26_;
					gpointer _tmp27_;
					LocalFunction* target = NULL;
					PhpToValaTranspiler* _tmp28_;
					GeeHashMap* _tmp29_;
					const gchar* _tmp30_;
					gpointer _tmp31_;
					gboolean _tmp32_ = FALSE;
					gboolean _tmp33_ = FALSE;
					LocalFunction* _tmp34_;
					const gchar* _tmp40_ = NULL;
					PhpToValaTranspiler* _tmp41_;
					LocalParameter* _tmp42_;
					const gchar* _tmp43_;
					const gchar* _tmp44_;
					const gchar* _tmp45_;
					LocalFunction* _tmp46_;
					gchar* _tmp47_;
					gchar* _tmp48_;
					gchar* _tmp49_;
					gchar* _tmp50_;
#line 302 "../src/file_func_vars_optimizer.vala"
					_tmp25_ = _function_name_it;
#line 302 "../src/file_func_vars_optimizer.vala"
					if (!gee_iterator_next (_tmp25_)) {
#line 302 "../src/file_func_vars_optimizer.vala"
						break;
#line 3257 "file_func_vars_optimizer.c"
					}
#line 302 "../src/file_func_vars_optimizer.vala"
					_tmp26_ = _function_name_it;
#line 302 "../src/file_func_vars_optimizer.vala"
					_tmp27_ = gee_iterator_get (_tmp26_);
#line 302 "../src/file_func_vars_optimizer.vala"
					function_name = (gchar*) _tmp27_;
#line 303 "../src/file_func_vars_optimizer.vala"
					_tmp28_ = self->priv->transpiler;
#line 303 "../src/file_func_vars_optimizer.vala"
					_tmp29_ = _tmp28_->local_functions;
#line 303 "../src/file_func_vars_optimizer.vala"
					_tmp30_ = function_name;
#line 303 "../src/file_func_vars_optimizer.vala"
					_tmp31_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp29_, _tmp30_);
#line 303 "../src/file_func_vars_optimizer.vala"
					target = (LocalFunction*) _tmp31_;
#line 304 "../src/file_func_vars_optimizer.vala"
					_tmp34_ = target;
#line 304 "../src/file_func_vars_optimizer.vala"
					if (_tmp34_ == NULL) {
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp33_ = TRUE;
#line 3281 "file_func_vars_optimizer.c"
					} else {
						LocalFunction* _tmp35_;
						GeeArrayList* _tmp36_;
						gint _tmp37_;
						gint _tmp38_;
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp35_ = target;
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp36_ = _tmp35_->parameters;
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp37_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp36_);
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp38_ = _tmp37_;
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp33_ = _tmp38_ != 0;
#line 3297 "file_func_vars_optimizer.c"
					}
#line 304 "../src/file_func_vars_optimizer.vala"
					if (_tmp33_) {
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp32_ = TRUE;
#line 3303 "file_func_vars_optimizer.c"
					} else {
						LocalFunction* _tmp39_;
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp39_ = target;
#line 304 "../src/file_func_vars_optimizer.vala"
						_tmp32_ = !php_to_vala_file_func_vars_optimizer_can_emit (self, _tmp39_);
#line 3310 "file_func_vars_optimizer.c"
					}
#line 304 "../src/file_func_vars_optimizer.vala"
					if (_tmp32_) {
#line 305 "../src/file_func_vars_optimizer.vala"
						_g_object_unref0 (target);
#line 305 "../src/file_func_vars_optimizer.vala"
						_g_free0 (function_name);
#line 305 "../src/file_func_vars_optimizer.vala"
						continue;
#line 3320 "file_func_vars_optimizer.c"
					}
#line 311 "../src/file_func_vars_optimizer.vala"
					if (first) {
#line 311 "../src/file_func_vars_optimizer.vala"
						_tmp40_ = "if";
#line 3326 "file_func_vars_optimizer.c"
					} else {
#line 311 "../src/file_func_vars_optimizer.vala"
						_tmp40_ = "else if";
#line 3330 "file_func_vars_optimizer.c"
					}
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp41_ = self->priv->transpiler;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp42_ = parameter;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp43_ = _tmp42_->name;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp44_ = function_name;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp45_ = delegate_name;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp46_ = target;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp47_ = php_to_vala_file_func_vars_optimizer_native_function_name (self, _tmp46_);
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp48_ = _tmp47_;
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp49_ = g_strdup_printf ("%s (%s == \"%s\") { %s = %s; }", _tmp40_, _tmp43_, _tmp44_, _tmp45_, _tmp48_);
#line 307 "../src/file_func_vars_optimizer.vala"
					_tmp50_ = _tmp49_;
#line 307 "../src/file_func_vars_optimizer.vala"
					php_to_vala_transpiler_append_indented_line (_tmp41_, output, 1, _tmp50_);
#line 307 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp50_);
#line 307 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp48_);
#line 318 "../src/file_func_vars_optimizer.vala"
					first = FALSE;
#line 302 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (target);
#line 302 "../src/file_func_vars_optimizer.vala"
					_g_free0 (function_name);
#line 3364 "file_func_vars_optimizer.c"
				}
#line 302 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (_function_name_it);
#line 3368 "file_func_vars_optimizer.c"
			}
#line 295 "../src/file_func_vars_optimizer.vala"
			_g_free0 (delegate_name);
#line 295 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (parameter);
#line 3374 "file_func_vars_optimizer.c"
		}
	}
}

static gchar*
php_to_vala_file_func_vars_optimizer_callable_delegate_name (PhpToValaFileFuncVarsOptimizer* self,
                                                             const gchar* parameter_name)
{
	gchar* _tmp0_;
	gchar* result;
#line 323 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 323 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (parameter_name != NULL, NULL);
#line 324 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = g_strconcat ("__php2vala_callable_", parameter_name, NULL);
#line 324 "../src/file_func_vars_optimizer.vala"
	result = _tmp0_;
#line 324 "../src/file_func_vars_optimizer.vala"
	return result;
#line 3395 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_line (PhpToValaFileFuncVarsOptimizer* self,
                                                            LocalFunction* local_function,
                                                            const gchar* line,
                                                            gint php_line_number,
                                                            GError** error)
{
	gchar* clean = NULL;
	gchar* _tmp0_;
	gchar* dynamic_call = NULL;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* native_if = NULL;
	const gchar* _tmp4_;
	gchar* _tmp5_;
	const gchar* _tmp6_;
	gboolean _tmp7_ = FALSE;
	const gchar* _tmp8_;
	gchar* local_call = NULL;
	const gchar* _tmp28_;
	gchar* _tmp29_;
	const gchar* _tmp30_;
	gchar* chained_assignment = NULL;
	const gchar* _tmp31_;
	gchar* _tmp32_;
	const gchar* _tmp33_;
	gchar* increment = NULL;
	const gchar* _tmp34_;
	gchar* _tmp35_;
	const gchar* _tmp36_;
	gchar* compound = NULL;
	const gchar* _tmp37_;
	gchar* _tmp38_;
	const gchar* _tmp39_;
	gchar* assignment = NULL;
	const gchar* _tmp40_;
	gchar* _tmp41_;
	const gchar* _tmp42_;
	gchar* list_assignment = NULL;
	const gchar* _tmp43_;
	gchar* _tmp44_;
	const gchar* _tmp45_;
	const gchar* _tmp46_;
	gchar* _tmp75_ = NULL;
	PhpToValaTranspiler* _tmp76_;
	gchar* _tmp77_;
	gchar* _tmp78_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 327 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 327 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 327 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 328 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = string_strip (line);
#line 328 "../src/file_func_vars_optimizer.vala"
	clean = _tmp0_;
#line 329 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = clean;
#line 329 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = php_to_vala_file_func_vars_optimizer_transpile_callable_string_call (self, local_function, _tmp1_, php_line_number, &_inner_error0_);
#line 329 "../src/file_func_vars_optimizer.vala"
	dynamic_call = _tmp2_;
#line 329 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 329 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 329 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 329 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 3472 "file_func_vars_optimizer.c"
	}
#line 330 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = dynamic_call;
#line 330 "../src/file_func_vars_optimizer.vala"
	if (_tmp3_ != NULL) {
#line 331 "../src/file_func_vars_optimizer.vala"
		result = dynamic_call;
#line 331 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 331 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3484 "file_func_vars_optimizer.c"
	}
#line 334 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = clean;
#line 334 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = php_to_vala_file_func_vars_optimizer_transpile_native_if (self, _tmp4_, php_line_number, &_inner_error0_);
#line 334 "../src/file_func_vars_optimizer.vala"
	native_if = _tmp5_;
#line 334 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 334 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 334 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 334 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 334 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 3502 "file_func_vars_optimizer.c"
	}
#line 335 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = native_if;
#line 335 "../src/file_func_vars_optimizer.vala"
	if (_tmp6_ != NULL) {
#line 336 "../src/file_func_vars_optimizer.vala"
		result = native_if;
#line 336 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 336 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 336 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3516 "file_func_vars_optimizer.c"
	}
#line 339 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = clean;
#line 339 "../src/file_func_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp8_, "while(")) {
#line 339 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = TRUE;
#line 3524 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp9_;
#line 339 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = clean;
#line 339 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = g_str_has_prefix (_tmp9_, "while (");
#line 3531 "file_func_vars_optimizer.c"
	}
#line 339 "../src/file_func_vars_optimizer.vala"
	if (_tmp7_) {
#line 3535 "file_func_vars_optimizer.c"
		gint open_index = 0;
		const gchar* _tmp10_;
		gint close_index = 0;
		const gchar* _tmp11_;
		gboolean _tmp12_ = FALSE;
#line 340 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = clean;
#line 340 "../src/file_func_vars_optimizer.vala"
		open_index = string_index_of (_tmp10_, "(", 0);
#line 341 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = clean;
#line 341 "../src/file_func_vars_optimizer.vala"
		close_index = php_to_vala_transpiler_find_matching_paren (_tmp11_, open_index);
#line 342 "../src/file_func_vars_optimizer.vala"
		if (open_index >= 0) {
#line 342 "../src/file_func_vars_optimizer.vala"
			_tmp12_ = close_index > open_index;
#line 3553 "file_func_vars_optimizer.c"
		} else {
#line 342 "../src/file_func_vars_optimizer.vala"
			_tmp12_ = FALSE;
#line 3557 "file_func_vars_optimizer.c"
		}
#line 342 "../src/file_func_vars_optimizer.vala"
		if (_tmp12_) {
#line 3561 "file_func_vars_optimizer.c"
			gchar* condition = NULL;
			const gchar* _tmp13_;
			gchar* _tmp14_;
			gchar* _tmp15_;
			gchar* _tmp16_;
			gchar* _tmp17_;
			gchar* rest = NULL;
			const gchar* _tmp18_;
			gchar* _tmp19_;
			gchar* _tmp20_;
			gchar* _tmp21_;
			gchar* _tmp22_;
			gboolean _tmp23_ = FALSE;
			const gchar* _tmp24_;
#line 343 "../src/file_func_vars_optimizer.vala"
			_tmp13_ = clean;
#line 343 "../src/file_func_vars_optimizer.vala"
			_tmp14_ = string_substring (_tmp13_, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 343 "../src/file_func_vars_optimizer.vala"
			_tmp15_ = _tmp14_;
#line 343 "../src/file_func_vars_optimizer.vala"
			_tmp16_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp15_, php_line_number, "bool", &_inner_error0_);
#line 343 "../src/file_func_vars_optimizer.vala"
			_tmp17_ = _tmp16_;
#line 343 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp15_);
#line 343 "../src/file_func_vars_optimizer.vala"
			condition = _tmp17_;
#line 343 "../src/file_func_vars_optimizer.vala"
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 343 "../src/file_func_vars_optimizer.vala"
				g_propagate_error (error, _inner_error0_);
#line 343 "../src/file_func_vars_optimizer.vala"
				_g_free0 (native_if);
#line 343 "../src/file_func_vars_optimizer.vala"
				_g_free0 (dynamic_call);
#line 343 "../src/file_func_vars_optimizer.vala"
				_g_free0 (clean);
#line 343 "../src/file_func_vars_optimizer.vala"
				return NULL;
#line 3602 "file_func_vars_optimizer.c"
			}
#line 344 "../src/file_func_vars_optimizer.vala"
			_tmp18_ = clean;
#line 344 "../src/file_func_vars_optimizer.vala"
			_tmp19_ = string_substring (_tmp18_, (glong) (close_index + 1), (glong) -1);
#line 344 "../src/file_func_vars_optimizer.vala"
			_tmp20_ = _tmp19_;
#line 344 "../src/file_func_vars_optimizer.vala"
			_tmp21_ = string_strip (_tmp20_);
#line 344 "../src/file_func_vars_optimizer.vala"
			_tmp22_ = _tmp21_;
#line 344 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp20_);
#line 344 "../src/file_func_vars_optimizer.vala"
			rest = _tmp22_;
#line 345 "../src/file_func_vars_optimizer.vala"
			_tmp24_ = rest;
#line 345 "../src/file_func_vars_optimizer.vala"
			if (g_strcmp0 (_tmp24_, "") == 0) {
#line 345 "../src/file_func_vars_optimizer.vala"
				_tmp23_ = TRUE;
#line 3624 "file_func_vars_optimizer.c"
			} else {
				const gchar* _tmp25_;
#line 345 "../src/file_func_vars_optimizer.vala"
				_tmp25_ = rest;
#line 345 "../src/file_func_vars_optimizer.vala"
				_tmp23_ = g_strcmp0 (_tmp25_, "{") == 0;
#line 3631 "file_func_vars_optimizer.c"
			}
#line 345 "../src/file_func_vars_optimizer.vala"
			if (_tmp23_) {
#line 3635 "file_func_vars_optimizer.c"
				const gchar* _tmp26_;
				gchar* _tmp27_;
#line 346 "../src/file_func_vars_optimizer.vala"
				_tmp26_ = condition;
#line 346 "../src/file_func_vars_optimizer.vala"
				_tmp27_ = g_strdup_printf ("while (%s) {", _tmp26_);
#line 346 "../src/file_func_vars_optimizer.vala"
				result = _tmp27_;
#line 346 "../src/file_func_vars_optimizer.vala"
				_g_free0 (rest);
#line 346 "../src/file_func_vars_optimizer.vala"
				_g_free0 (condition);
#line 346 "../src/file_func_vars_optimizer.vala"
				_g_free0 (native_if);
#line 346 "../src/file_func_vars_optimizer.vala"
				_g_free0 (dynamic_call);
#line 346 "../src/file_func_vars_optimizer.vala"
				_g_free0 (clean);
#line 346 "../src/file_func_vars_optimizer.vala"
				return result;
#line 3656 "file_func_vars_optimizer.c"
			}
#line 342 "../src/file_func_vars_optimizer.vala"
			_g_free0 (rest);
#line 342 "../src/file_func_vars_optimizer.vala"
			_g_free0 (condition);
#line 3662 "file_func_vars_optimizer.c"
		}
	}
#line 351 "../src/file_func_vars_optimizer.vala"
	_tmp28_ = clean;
#line 351 "../src/file_func_vars_optimizer.vala"
	_tmp29_ = php_to_vala_file_func_vars_optimizer_transpile_native_local_function_statement (self, _tmp28_, php_line_number, &_inner_error0_);
#line 351 "../src/file_func_vars_optimizer.vala"
	local_call = _tmp29_;
#line 351 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 351 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 351 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 351 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 351 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 351 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 3683 "file_func_vars_optimizer.c"
	}
#line 352 "../src/file_func_vars_optimizer.vala"
	_tmp30_ = local_call;
#line 352 "../src/file_func_vars_optimizer.vala"
	if (_tmp30_ != NULL) {
#line 353 "../src/file_func_vars_optimizer.vala"
		result = local_call;
#line 353 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 353 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 353 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 353 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3699 "file_func_vars_optimizer.c"
	}
#line 356 "../src/file_func_vars_optimizer.vala"
	_tmp31_ = clean;
#line 356 "../src/file_func_vars_optimizer.vala"
	_tmp32_ = php_to_vala_file_func_vars_optimizer_transpile_native_chained_assignment (self, _tmp31_, php_line_number, &_inner_error0_);
#line 356 "../src/file_func_vars_optimizer.vala"
	chained_assignment = _tmp32_;
#line 356 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 356 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 356 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 356 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 356 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 356 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 356 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 3721 "file_func_vars_optimizer.c"
	}
#line 357 "../src/file_func_vars_optimizer.vala"
	_tmp33_ = chained_assignment;
#line 357 "../src/file_func_vars_optimizer.vala"
	if (_tmp33_ != NULL) {
#line 358 "../src/file_func_vars_optimizer.vala"
		result = chained_assignment;
#line 358 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 358 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 358 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 358 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 358 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3739 "file_func_vars_optimizer.c"
	}
#line 361 "../src/file_func_vars_optimizer.vala"
	_tmp34_ = clean;
#line 361 "../src/file_func_vars_optimizer.vala"
	_tmp35_ = php_to_vala_file_func_vars_optimizer_transpile_native_increment (self, _tmp34_);
#line 361 "../src/file_func_vars_optimizer.vala"
	increment = _tmp35_;
#line 362 "../src/file_func_vars_optimizer.vala"
	_tmp36_ = increment;
#line 362 "../src/file_func_vars_optimizer.vala"
	if (_tmp36_ != NULL) {
#line 363 "../src/file_func_vars_optimizer.vala"
		result = increment;
#line 363 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 363 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 363 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 363 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 363 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 363 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3765 "file_func_vars_optimizer.c"
	}
#line 366 "../src/file_func_vars_optimizer.vala"
	_tmp37_ = clean;
#line 366 "../src/file_func_vars_optimizer.vala"
	_tmp38_ = php_to_vala_file_func_vars_optimizer_transpile_native_compound_assignment (self, _tmp37_);
#line 366 "../src/file_func_vars_optimizer.vala"
	compound = _tmp38_;
#line 367 "../src/file_func_vars_optimizer.vala"
	_tmp39_ = compound;
#line 367 "../src/file_func_vars_optimizer.vala"
	if (_tmp39_ != NULL) {
#line 368 "../src/file_func_vars_optimizer.vala"
		result = compound;
#line 368 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 368 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 368 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 368 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 368 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 368 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 368 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3793 "file_func_vars_optimizer.c"
	}
#line 371 "../src/file_func_vars_optimizer.vala"
	_tmp40_ = clean;
#line 371 "../src/file_func_vars_optimizer.vala"
	_tmp41_ = php_to_vala_file_func_vars_optimizer_transpile_native_assignment (self, _tmp40_, php_line_number, &_inner_error0_);
#line 371 "../src/file_func_vars_optimizer.vala"
	assignment = _tmp41_;
#line 371 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 371 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (compound);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 371 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 371 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 3821 "file_func_vars_optimizer.c"
	}
#line 372 "../src/file_func_vars_optimizer.vala"
	_tmp42_ = assignment;
#line 372 "../src/file_func_vars_optimizer.vala"
	if (_tmp42_ != NULL) {
#line 373 "../src/file_func_vars_optimizer.vala"
		result = assignment;
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (compound);
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 373 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 373 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3845 "file_func_vars_optimizer.c"
	}
#line 376 "../src/file_func_vars_optimizer.vala"
	_tmp43_ = clean;
#line 376 "../src/file_func_vars_optimizer.vala"
	_tmp44_ = php_to_vala_file_func_vars_optimizer_transpile_native_list_assignment (self, _tmp43_, php_line_number, &_inner_error0_);
#line 376 "../src/file_func_vars_optimizer.vala"
	list_assignment = _tmp44_;
#line 376 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 376 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (assignment);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (compound);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 376 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 376 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 3875 "file_func_vars_optimizer.c"
	}
#line 377 "../src/file_func_vars_optimizer.vala"
	_tmp45_ = list_assignment;
#line 377 "../src/file_func_vars_optimizer.vala"
	if (_tmp45_ != NULL) {
#line 378 "../src/file_func_vars_optimizer.vala"
		result = list_assignment;
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (assignment);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (compound);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 378 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 378 "../src/file_func_vars_optimizer.vala"
		return result;
#line 3901 "file_func_vars_optimizer.c"
	}
#line 381 "../src/file_func_vars_optimizer.vala"
	_tmp46_ = clean;
#line 381 "../src/file_func_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp46_, "return")) {
#line 3907 "file_func_vars_optimizer.c"
		gchar* expression = NULL;
		const gchar* _tmp47_;
		gint _tmp48_;
		gint _tmp49_;
		gchar* _tmp50_;
		gchar* _tmp51_;
		gchar* _tmp52_;
		gchar* _tmp53_;
		gchar* _tmp54_;
		gchar* _tmp55_;
		gboolean _tmp56_ = FALSE;
		const gchar* _tmp57_;
		gchar* _tmp66_ = NULL;
		gchar* _tmp67_;
		gchar* return_type = NULL;
		gchar* _tmp69_;
		gchar* _tmp70_ = NULL;
		const gchar* _tmp71_;
		const gchar* _tmp72_;
		gchar* _tmp73_;
		gchar* _tmp74_;
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp47_ = clean;
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp48_ = strlen ("return");
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp49_ = _tmp48_;
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp50_ = string_substring (_tmp47_, (glong) _tmp49_, (glong) -1);
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp51_ = _tmp50_;
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp52_ = string_strip (_tmp51_);
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp53_ = _tmp52_;
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp54_ = php_to_vala_transpiler_trim_trailing_semicolon (_tmp53_);
#line 382 "../src/file_func_vars_optimizer.vala"
		_tmp55_ = _tmp54_;
#line 382 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp53_);
#line 382 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp51_);
#line 382 "../src/file_func_vars_optimizer.vala"
		expression = _tmp55_;
#line 383 "../src/file_func_vars_optimizer.vala"
		_tmp57_ = expression;
#line 383 "../src/file_func_vars_optimizer.vala"
		if (g_str_has_prefix (_tmp57_, "(")) {
#line 3957 "file_func_vars_optimizer.c"
			const gchar* _tmp58_;
#line 383 "../src/file_func_vars_optimizer.vala"
			_tmp58_ = expression;
#line 383 "../src/file_func_vars_optimizer.vala"
			_tmp56_ = g_str_has_suffix (_tmp58_, ")");
#line 3963 "file_func_vars_optimizer.c"
		} else {
#line 383 "../src/file_func_vars_optimizer.vala"
			_tmp56_ = FALSE;
#line 3967 "file_func_vars_optimizer.c"
		}
#line 383 "../src/file_func_vars_optimizer.vala"
		if (_tmp56_) {
#line 3971 "file_func_vars_optimizer.c"
			const gchar* _tmp59_;
			const gchar* _tmp60_;
			gint _tmp61_;
			gint _tmp62_;
			gchar* _tmp63_;
			gchar* _tmp64_;
			gchar* _tmp65_;
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp59_ = expression;
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp60_ = expression;
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp61_ = strlen (_tmp60_);
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp62_ = _tmp61_;
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp63_ = string_substring (_tmp59_, (glong) 1, (glong) (_tmp62_ - 2));
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp64_ = _tmp63_;
#line 384 "../src/file_func_vars_optimizer.vala"
			_tmp65_ = string_strip (_tmp64_);
#line 384 "../src/file_func_vars_optimizer.vala"
			_g_free0 (expression);
#line 384 "../src/file_func_vars_optimizer.vala"
			expression = _tmp65_;
#line 384 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp64_);
#line 3999 "file_func_vars_optimizer.c"
		}
#line 386 "../src/file_func_vars_optimizer.vala"
		_tmp67_ = php_to_vala_file_func_vars_optimizer_infer_return_type (self, local_function);
#line 386 "../src/file_func_vars_optimizer.vala"
		_tmp66_ = _tmp67_;
#line 386 "../src/file_func_vars_optimizer.vala"
		if (_tmp66_ == NULL) {
#line 4007 "file_func_vars_optimizer.c"
			gchar* _tmp68_;
#line 386 "../src/file_func_vars_optimizer.vala"
			_tmp68_ = g_strdup ("double");
#line 386 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp66_);
#line 386 "../src/file_func_vars_optimizer.vala"
			_tmp66_ = _tmp68_;
#line 4015 "file_func_vars_optimizer.c"
		}
#line 386 "../src/file_func_vars_optimizer.vala"
		_tmp69_ = _tmp66_;
#line 386 "../src/file_func_vars_optimizer.vala"
		_tmp66_ = NULL;
#line 386 "../src/file_func_vars_optimizer.vala"
		return_type = _tmp69_;
#line 387 "../src/file_func_vars_optimizer.vala"
		_tmp71_ = expression;
#line 387 "../src/file_func_vars_optimizer.vala"
		_tmp72_ = return_type;
#line 387 "../src/file_func_vars_optimizer.vala"
		_tmp73_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp71_, php_line_number, _tmp72_, &_inner_error0_);
#line 387 "../src/file_func_vars_optimizer.vala"
		_tmp70_ = _tmp73_;
#line 387 "../src/file_func_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 387 "../src/file_func_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (return_type);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp66_);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (expression);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (list_assignment);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (assignment);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (compound);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (increment);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (chained_assignment);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (local_call);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (native_if);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (dynamic_call);
#line 387 "../src/file_func_vars_optimizer.vala"
			_g_free0 (clean);
#line 387 "../src/file_func_vars_optimizer.vala"
			return NULL;
#line 4061 "file_func_vars_optimizer.c"
		}
#line 387 "../src/file_func_vars_optimizer.vala"
		_tmp74_ = g_strdup_printf ("return %s;", _tmp70_);
#line 387 "../src/file_func_vars_optimizer.vala"
		result = _tmp74_;
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp70_);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (return_type);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp66_);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (expression);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (list_assignment);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (assignment);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (compound);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 387 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 387 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4095 "file_func_vars_optimizer.c"
	}
#line 390 "../src/file_func_vars_optimizer.vala"
	_tmp76_ = self->priv->transpiler;
#line 390 "../src/file_func_vars_optimizer.vala"
	_tmp77_ = php_to_vala_transpiler_transpile_line (_tmp76_, line, php_line_number, &_inner_error0_);
#line 390 "../src/file_func_vars_optimizer.vala"
	_tmp75_ = _tmp77_;
#line 390 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 390 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (list_assignment);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (assignment);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (compound);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (increment);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (local_call);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_if);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (dynamic_call);
#line 390 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 390 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 4127 "file_func_vars_optimizer.c"
	}
#line 390 "../src/file_func_vars_optimizer.vala"
	_tmp78_ = _tmp75_;
#line 390 "../src/file_func_vars_optimizer.vala"
	_tmp75_ = NULL;
#line 390 "../src/file_func_vars_optimizer.vala"
	result = _tmp78_;
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp75_);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (list_assignment);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (assignment);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (compound);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (increment);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (chained_assignment);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (local_call);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (native_if);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (dynamic_call);
#line 390 "../src/file_func_vars_optimizer.vala"
	_g_free0 (clean);
#line 390 "../src/file_func_vars_optimizer.vala"
	return result;
#line 4157 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_if (PhpToValaFileFuncVarsOptimizer* self,
                                                          const gchar* line,
                                                          gint php_line_number,
                                                          GError** error)
{
	gboolean _tmp0_ = FALSE;
	gint open_index = 0;
	gint close_index = 0;
	gboolean _tmp1_ = FALSE;
	gchar* rest = NULL;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gboolean _tmp6_ = FALSE;
	const gchar* _tmp7_;
	gchar* condition = NULL;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	const gchar* _tmp13_;
	gchar* _tmp14_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 393 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 393 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 394 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "if(")) {
#line 394 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = !g_str_has_prefix (line, "if (");
#line 4194 "file_func_vars_optimizer.c"
	} else {
#line 394 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 4198 "file_func_vars_optimizer.c"
	}
#line 394 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 395 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 395 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4206 "file_func_vars_optimizer.c"
	}
#line 397 "../src/file_func_vars_optimizer.vala"
	open_index = string_index_of (line, "(", 0);
#line 398 "../src/file_func_vars_optimizer.vala"
	close_index = php_to_vala_transpiler_find_matching_paren (line, open_index);
#line 399 "../src/file_func_vars_optimizer.vala"
	if (open_index < 0) {
#line 399 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = TRUE;
#line 4216 "file_func_vars_optimizer.c"
	} else {
#line 399 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = close_index <= open_index;
#line 4220 "file_func_vars_optimizer.c"
	}
#line 399 "../src/file_func_vars_optimizer.vala"
	if (_tmp1_) {
#line 400 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 400 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4228 "file_func_vars_optimizer.c"
	}
#line 402 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = string_substring (line, (glong) (close_index + 1), (glong) -1);
#line 402 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 402 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = string_strip (_tmp3_);
#line 402 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = _tmp4_;
#line 402 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp3_);
#line 402 "../src/file_func_vars_optimizer.vala"
	rest = _tmp5_;
#line 403 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = rest;
#line 403 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (_tmp7_, "") != 0) {
#line 4246 "file_func_vars_optimizer.c"
		const gchar* _tmp8_;
#line 403 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = rest;
#line 403 "../src/file_func_vars_optimizer.vala"
		_tmp6_ = g_strcmp0 (_tmp8_, "{") != 0;
#line 4252 "file_func_vars_optimizer.c"
	} else {
#line 403 "../src/file_func_vars_optimizer.vala"
		_tmp6_ = FALSE;
#line 4256 "file_func_vars_optimizer.c"
	}
#line 403 "../src/file_func_vars_optimizer.vala"
	if (_tmp6_) {
#line 404 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 404 "../src/file_func_vars_optimizer.vala"
		_g_free0 (rest);
#line 404 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4266 "file_func_vars_optimizer.c"
	}
#line 406 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = string_substring (line, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 406 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = _tmp9_;
#line 406 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp10_, php_line_number, "bool", &_inner_error0_);
#line 406 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 406 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp10_);
#line 406 "../src/file_func_vars_optimizer.vala"
	condition = _tmp12_;
#line 406 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 406 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 406 "../src/file_func_vars_optimizer.vala"
		_g_free0 (rest);
#line 406 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 4288 "file_func_vars_optimizer.c"
	}
#line 407 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = condition;
#line 407 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = g_strdup_printf ("if (%s) {", _tmp13_);
#line 407 "../src/file_func_vars_optimizer.vala"
	result = _tmp14_;
#line 407 "../src/file_func_vars_optimizer.vala"
	_g_free0 (condition);
#line 407 "../src/file_func_vars_optimizer.vala"
	_g_free0 (rest);
#line 407 "../src/file_func_vars_optimizer.vala"
	return result;
#line 4302 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_local_function_statement (PhpToValaFileFuncVarsOptimizer* self,
                                                                                const gchar* line,
                                                                                gint php_line_number,
                                                                                GError** error)
{
	gint open_index = 0;
	gchar* function_name = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	PhpToValaTranspiler* _tmp4_;
	GeeHashMap* _tmp5_;
	const gchar* _tmp6_;
	gint close_index = 0;
	gboolean _tmp7_ = FALSE;
	LocalFunction* target = NULL;
	PhpToValaTranspiler* _tmp10_;
	GeeHashMap* _tmp11_;
	const gchar* _tmp12_;
	gpointer _tmp13_;
	gchar* inner_args = NULL;
	gchar* _tmp14_;
	LocalFunction* _tmp15_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 410 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 410 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 411 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_suffix (line, ");")) {
#line 412 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 412 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4342 "file_func_vars_optimizer.c"
	}
#line 414 "../src/file_func_vars_optimizer.vala"
	open_index = string_index_of (line, "(", 0);
#line 415 "../src/file_func_vars_optimizer.vala"
	if (open_index <= 0) {
#line 416 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 416 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4352 "file_func_vars_optimizer.c"
	}
#line 418 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = string_substring (line, (glong) 0, (glong) open_index);
#line 418 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = _tmp0_;
#line 418 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = string_strip (_tmp1_);
#line 418 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 418 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp1_);
#line 418 "../src/file_func_vars_optimizer.vala"
	function_name = _tmp3_;
#line 419 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = self->priv->transpiler;
#line 419 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = _tmp4_->local_functions;
#line 419 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = function_name;
#line 419 "../src/file_func_vars_optimizer.vala"
	if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp5_, _tmp6_)) {
#line 420 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 420 "../src/file_func_vars_optimizer.vala"
		_g_free0 (function_name);
#line 420 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4380 "file_func_vars_optimizer.c"
	}
#line 422 "../src/file_func_vars_optimizer.vala"
	close_index = php_to_vala_transpiler_find_matching_paren (line, open_index);
#line 423 "../src/file_func_vars_optimizer.vala"
	if (close_index < open_index) {
#line 423 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = TRUE;
#line 4388 "file_func_vars_optimizer.c"
	} else {
		gint _tmp8_;
		gint _tmp9_;
#line 423 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = strlen (line);
#line 423 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = _tmp8_;
#line 423 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = close_index != (_tmp9_ - 2);
#line 4398 "file_func_vars_optimizer.c"
	}
#line 423 "../src/file_func_vars_optimizer.vala"
	if (_tmp7_) {
#line 424 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 424 "../src/file_func_vars_optimizer.vala"
		_g_free0 (function_name);
#line 424 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4408 "file_func_vars_optimizer.c"
	}
#line 426 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = self->priv->transpiler;
#line 426 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = _tmp10_->local_functions;
#line 426 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = function_name;
#line 426 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp11_, _tmp12_);
#line 426 "../src/file_func_vars_optimizer.vala"
	target = (LocalFunction*) _tmp13_;
#line 427 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = string_substring (line, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 427 "../src/file_func_vars_optimizer.vala"
	inner_args = _tmp14_;
#line 428 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = target;
#line 428 "../src/file_func_vars_optimizer.vala"
	if (php_to_vala_file_func_vars_optimizer_can_emit (self, _tmp15_)) {
#line 4428 "file_func_vars_optimizer.c"
		gchar* _tmp16_ = NULL;
		const gchar* _tmp17_;
		gchar* _tmp18_;
		LocalFunction* _tmp19_;
		gchar* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
		gchar* _tmp23_;
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp17_ = inner_args;
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp18_ = php_to_vala_file_func_vars_optimizer_convert_native_argument_list (self, _tmp17_, php_line_number, &_inner_error0_);
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp16_ = _tmp18_;
#line 429 "../src/file_func_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 429 "../src/file_func_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 429 "../src/file_func_vars_optimizer.vala"
			_g_free0 (inner_args);
#line 429 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (target);
#line 429 "../src/file_func_vars_optimizer.vala"
			_g_free0 (function_name);
#line 429 "../src/file_func_vars_optimizer.vala"
			return NULL;
#line 4455 "file_func_vars_optimizer.c"
		}
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp19_ = target;
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp20_ = php_to_vala_file_func_vars_optimizer_native_function_name (self, _tmp19_);
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp21_ = _tmp20_;
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp22_ = g_strdup_printf ("%s (%s);", _tmp21_, _tmp16_);
#line 429 "../src/file_func_vars_optimizer.vala"
		_tmp23_ = _tmp22_;
#line 429 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp21_);
#line 429 "../src/file_func_vars_optimizer.vala"
		result = _tmp23_;
#line 429 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp16_);
#line 429 "../src/file_func_vars_optimizer.vala"
		_g_free0 (inner_args);
#line 429 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (target);
#line 429 "../src/file_func_vars_optimizer.vala"
		_g_free0 (function_name);
#line 429 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4481 "file_func_vars_optimizer.c"
	}
#line 431 "../src/file_func_vars_optimizer.vala"
	result = NULL;
#line 431 "../src/file_func_vars_optimizer.vala"
	_g_free0 (inner_args);
#line 431 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (target);
#line 431 "../src/file_func_vars_optimizer.vala"
	_g_free0 (function_name);
#line 431 "../src/file_func_vars_optimizer.vala"
	return result;
#line 4493 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_callable_string_call (PhpToValaFileFuncVarsOptimizer* self,
                                                                     LocalFunction* local_function,
                                                                     const gchar* line,
                                                                     gint php_line_number,
                                                                     GError** error)
{
	gboolean _tmp0_ = FALSE;
	gchar* parameter_name = NULL;
	gint _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	LocalParameter* parameter = NULL;
	gboolean _tmp22_ = FALSE;
	LocalParameter* _tmp23_;
	LocalParameter* _tmp27_;
	GString* output = NULL;
	GString* _tmp34_;
	gboolean first = FALSE;
	GString* _tmp68_;
	GString* _tmp69_;
	const gchar* _tmp70_;
	gchar* _tmp71_;
	gchar* result;
#line 434 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 434 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 434 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 435 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "$")) {
#line 435 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 4535 "file_func_vars_optimizer.c"
	} else {
#line 435 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, "();");
#line 4539 "file_func_vars_optimizer.c"
	}
#line 435 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 436 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 436 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4547 "file_func_vars_optimizer.c"
	}
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = strlen (line);
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = strlen ("();");
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = string_substring (line, (glong) 1, (glong) ((_tmp2_ - 1) - _tmp4_));
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = string_strip (_tmp6_);
#line 438 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 438 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp6_);
#line 438 "../src/file_func_vars_optimizer.vala"
	parameter_name = _tmp8_;
#line 439 "../src/file_func_vars_optimizer.vala"
	parameter = NULL;
#line 4571 "file_func_vars_optimizer.c"
	{
		GeeArrayList* _candidate_list = NULL;
		GeeArrayList* _tmp9_;
		gint _candidate_size = 0;
		GeeArrayList* _tmp10_;
		gint _tmp11_;
		gint _tmp12_;
		gint _candidate_index = 0;
#line 440 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = local_function->parameters;
#line 440 "../src/file_func_vars_optimizer.vala"
		_candidate_list = _tmp9_;
#line 440 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = _candidate_list;
#line 440 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp10_);
#line 440 "../src/file_func_vars_optimizer.vala"
		_tmp12_ = _tmp11_;
#line 440 "../src/file_func_vars_optimizer.vala"
		_candidate_size = _tmp12_;
#line 440 "../src/file_func_vars_optimizer.vala"
		_candidate_index = -1;
#line 440 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 4596 "file_func_vars_optimizer.c"
			gint _tmp13_;
			gint _tmp14_;
			LocalParameter* candidate = NULL;
			GeeArrayList* _tmp15_;
			gpointer _tmp16_;
			LocalParameter* _tmp17_;
			const gchar* _tmp18_;
			const gchar* _tmp19_;
#line 440 "../src/file_func_vars_optimizer.vala"
			_candidate_index = _candidate_index + 1;
#line 440 "../src/file_func_vars_optimizer.vala"
			_tmp13_ = _candidate_index;
#line 440 "../src/file_func_vars_optimizer.vala"
			_tmp14_ = _candidate_size;
#line 440 "../src/file_func_vars_optimizer.vala"
			if (!(_tmp13_ < _tmp14_)) {
#line 440 "../src/file_func_vars_optimizer.vala"
				break;
#line 4615 "file_func_vars_optimizer.c"
			}
#line 440 "../src/file_func_vars_optimizer.vala"
			_tmp15_ = _candidate_list;
#line 440 "../src/file_func_vars_optimizer.vala"
			_tmp16_ = gee_abstract_list_get ((GeeAbstractList*) _tmp15_, _candidate_index);
#line 440 "../src/file_func_vars_optimizer.vala"
			candidate = (LocalParameter*) _tmp16_;
#line 441 "../src/file_func_vars_optimizer.vala"
			_tmp17_ = candidate;
#line 441 "../src/file_func_vars_optimizer.vala"
			_tmp18_ = _tmp17_->name;
#line 441 "../src/file_func_vars_optimizer.vala"
			_tmp19_ = parameter_name;
#line 441 "../src/file_func_vars_optimizer.vala"
			if (g_strcmp0 (_tmp18_, _tmp19_) == 0) {
#line 4631 "file_func_vars_optimizer.c"
				LocalParameter* _tmp20_;
				LocalParameter* _tmp21_;
#line 442 "../src/file_func_vars_optimizer.vala"
				_tmp20_ = candidate;
#line 442 "../src/file_func_vars_optimizer.vala"
				_tmp21_ = _g_object_ref0 (_tmp20_);
#line 442 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (parameter);
#line 442 "../src/file_func_vars_optimizer.vala"
				parameter = _tmp21_;
#line 443 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (candidate);
#line 443 "../src/file_func_vars_optimizer.vala"
				break;
#line 4646 "file_func_vars_optimizer.c"
			}
#line 440 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (candidate);
#line 4650 "file_func_vars_optimizer.c"
		}
	}
#line 446 "../src/file_func_vars_optimizer.vala"
	_tmp23_ = parameter;
#line 446 "../src/file_func_vars_optimizer.vala"
	if (_tmp23_ == NULL) {
#line 446 "../src/file_func_vars_optimizer.vala"
		_tmp22_ = TRUE;
#line 4659 "file_func_vars_optimizer.c"
	} else {
		LocalParameter* _tmp24_;
		gchar* _tmp25_;
		gchar* _tmp26_;
#line 446 "../src/file_func_vars_optimizer.vala"
		_tmp24_ = parameter;
#line 446 "../src/file_func_vars_optimizer.vala"
		_tmp25_ = php_to_vala_file_func_vars_optimizer_infer_parameter_type (self, local_function, _tmp24_);
#line 446 "../src/file_func_vars_optimizer.vala"
		_tmp26_ = _tmp25_;
#line 446 "../src/file_func_vars_optimizer.vala"
		_tmp22_ = g_strcmp0 (_tmp26_, "string") != 0;
#line 446 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp26_);
#line 4674 "file_func_vars_optimizer.c"
	}
#line 446 "../src/file_func_vars_optimizer.vala"
	if (_tmp22_) {
#line 447 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 447 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parameter);
#line 447 "../src/file_func_vars_optimizer.vala"
		_g_free0 (parameter_name);
#line 447 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4686 "file_func_vars_optimizer.c"
	}
#line 450 "../src/file_func_vars_optimizer.vala"
	_tmp27_ = parameter;
#line 450 "../src/file_func_vars_optimizer.vala"
	if (!php_to_vala_file_func_vars_optimizer_assigns_parameter (self, local_function, _tmp27_)) {
#line 4692 "file_func_vars_optimizer.c"
		LocalParameter* _tmp28_;
		const gchar* _tmp29_;
		gchar* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		gchar* _tmp33_;
#line 451 "../src/file_func_vars_optimizer.vala"
		_tmp28_ = parameter;
#line 451 "../src/file_func_vars_optimizer.vala"
		_tmp29_ = _tmp28_->name;
#line 451 "../src/file_func_vars_optimizer.vala"
		_tmp30_ = php_to_vala_file_func_vars_optimizer_callable_delegate_name (self, _tmp29_);
#line 451 "../src/file_func_vars_optimizer.vala"
		_tmp31_ = _tmp30_;
#line 451 "../src/file_func_vars_optimizer.vala"
		_tmp32_ = g_strdup_printf ("%s ();", _tmp31_);
#line 451 "../src/file_func_vars_optimizer.vala"
		_tmp33_ = _tmp32_;
#line 451 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp31_);
#line 451 "../src/file_func_vars_optimizer.vala"
		result = _tmp33_;
#line 451 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parameter);
#line 451 "../src/file_func_vars_optimizer.vala"
		_g_free0 (parameter_name);
#line 451 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4721 "file_func_vars_optimizer.c"
	}
#line 454 "../src/file_func_vars_optimizer.vala"
	_tmp34_ = g_string_new ("");
#line 454 "../src/file_func_vars_optimizer.vala"
	output = _tmp34_;
#line 455 "../src/file_func_vars_optimizer.vala"
	first = TRUE;
#line 4729 "file_func_vars_optimizer.c"
	{
		GeeIterator* _function_name_it = NULL;
		PhpToValaTranspiler* _tmp35_;
		GeeHashMap* _tmp36_;
		GeeSet* _tmp37_;
		GeeSet* _tmp38_;
		GeeSet* _tmp39_;
		GeeIterator* _tmp40_;
		GeeIterator* _tmp41_;
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp35_ = self->priv->transpiler;
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp36_ = _tmp35_->local_functions;
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp37_ = gee_abstract_map_get_keys ((GeeAbstractMap*) _tmp36_);
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp38_ = _tmp37_;
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp39_ = _tmp38_;
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp40_ = gee_iterable_iterator ((GeeIterable*) _tmp39_);
#line 456 "../src/file_func_vars_optimizer.vala"
		_tmp41_ = _tmp40_;
#line 456 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (_tmp39_);
#line 456 "../src/file_func_vars_optimizer.vala"
		_function_name_it = _tmp41_;
#line 456 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 4759 "file_func_vars_optimizer.c"
			GeeIterator* _tmp42_;
			gchar* function_name = NULL;
			GeeIterator* _tmp43_;
			gpointer _tmp44_;
			LocalFunction* target = NULL;
			PhpToValaTranspiler* _tmp45_;
			GeeHashMap* _tmp46_;
			const gchar* _tmp47_;
			gpointer _tmp48_;
			gboolean _tmp49_ = FALSE;
			LocalFunction* _tmp50_;
			gchar* _tmp55_ = NULL;
			LocalFunction* _tmp56_;
			gchar* call_name = NULL;
			gchar* _tmp62_;
			const gchar* _tmp63_ = NULL;
			GString* _tmp64_;
			const gchar* _tmp65_;
			const gchar* _tmp66_;
			const gchar* _tmp67_;
#line 456 "../src/file_func_vars_optimizer.vala"
			_tmp42_ = _function_name_it;
#line 456 "../src/file_func_vars_optimizer.vala"
			if (!gee_iterator_next (_tmp42_)) {
#line 456 "../src/file_func_vars_optimizer.vala"
				break;
#line 4786 "file_func_vars_optimizer.c"
			}
#line 456 "../src/file_func_vars_optimizer.vala"
			_tmp43_ = _function_name_it;
#line 456 "../src/file_func_vars_optimizer.vala"
			_tmp44_ = gee_iterator_get (_tmp43_);
#line 456 "../src/file_func_vars_optimizer.vala"
			function_name = (gchar*) _tmp44_;
#line 457 "../src/file_func_vars_optimizer.vala"
			_tmp45_ = self->priv->transpiler;
#line 457 "../src/file_func_vars_optimizer.vala"
			_tmp46_ = _tmp45_->local_functions;
#line 457 "../src/file_func_vars_optimizer.vala"
			_tmp47_ = function_name;
#line 457 "../src/file_func_vars_optimizer.vala"
			_tmp48_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp46_, _tmp47_);
#line 457 "../src/file_func_vars_optimizer.vala"
			target = (LocalFunction*) _tmp48_;
#line 458 "../src/file_func_vars_optimizer.vala"
			_tmp50_ = target;
#line 458 "../src/file_func_vars_optimizer.vala"
			if (_tmp50_ == NULL) {
#line 458 "../src/file_func_vars_optimizer.vala"
				_tmp49_ = TRUE;
#line 4810 "file_func_vars_optimizer.c"
			} else {
				LocalFunction* _tmp51_;
				GeeArrayList* _tmp52_;
				gint _tmp53_;
				gint _tmp54_;
#line 458 "../src/file_func_vars_optimizer.vala"
				_tmp51_ = target;
#line 458 "../src/file_func_vars_optimizer.vala"
				_tmp52_ = _tmp51_->parameters;
#line 458 "../src/file_func_vars_optimizer.vala"
				_tmp53_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp52_);
#line 458 "../src/file_func_vars_optimizer.vala"
				_tmp54_ = _tmp53_;
#line 458 "../src/file_func_vars_optimizer.vala"
				_tmp49_ = _tmp54_ != 0;
#line 4826 "file_func_vars_optimizer.c"
			}
#line 458 "../src/file_func_vars_optimizer.vala"
			if (_tmp49_) {
#line 459 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (target);
#line 459 "../src/file_func_vars_optimizer.vala"
				_g_free0 (function_name);
#line 459 "../src/file_func_vars_optimizer.vala"
				continue;
#line 4836 "file_func_vars_optimizer.c"
			}
#line 461 "../src/file_func_vars_optimizer.vala"
			_tmp56_ = target;
#line 461 "../src/file_func_vars_optimizer.vala"
			if (php_to_vala_file_func_vars_optimizer_can_emit (self, _tmp56_)) {
#line 4842 "file_func_vars_optimizer.c"
				LocalFunction* _tmp57_;
				gchar* _tmp58_;
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp57_ = target;
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp58_ = php_to_vala_file_func_vars_optimizer_native_function_name (self, _tmp57_);
#line 461 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp55_);
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp55_ = _tmp58_;
#line 4853 "file_func_vars_optimizer.c"
			} else {
				LocalFunction* _tmp59_;
				const gchar* _tmp60_;
				gchar* _tmp61_;
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp59_ = target;
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp60_ = _tmp59_->name;
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp61_ = g_strdup (_tmp60_);
#line 461 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp55_);
#line 461 "../src/file_func_vars_optimizer.vala"
				_tmp55_ = _tmp61_;
#line 4868 "file_func_vars_optimizer.c"
			}
#line 461 "../src/file_func_vars_optimizer.vala"
			_tmp62_ = _tmp55_;
#line 461 "../src/file_func_vars_optimizer.vala"
			_tmp55_ = NULL;
#line 461 "../src/file_func_vars_optimizer.vala"
			call_name = _tmp62_;
#line 464 "../src/file_func_vars_optimizer.vala"
			if (first) {
#line 464 "../src/file_func_vars_optimizer.vala"
				_tmp63_ = "if";
#line 4880 "file_func_vars_optimizer.c"
			} else {
#line 464 "../src/file_func_vars_optimizer.vala"
				_tmp63_ = "else if";
#line 4884 "file_func_vars_optimizer.c"
			}
#line 462 "../src/file_func_vars_optimizer.vala"
			_tmp64_ = output;
#line 462 "../src/file_func_vars_optimizer.vala"
			_tmp65_ = parameter_name;
#line 462 "../src/file_func_vars_optimizer.vala"
			_tmp66_ = function_name;
#line 462 "../src/file_func_vars_optimizer.vala"
			_tmp67_ = call_name;
#line 462 "../src/file_func_vars_optimizer.vala"
			g_string_append_printf (_tmp64_, "%s (%s == \"%s\") { %s (); }", _tmp63_, _tmp65_, _tmp66_, _tmp67_);
#line 469 "../src/file_func_vars_optimizer.vala"
			first = FALSE;
#line 456 "../src/file_func_vars_optimizer.vala"
			_g_free0 (call_name);
#line 456 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp55_);
#line 456 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (target);
#line 456 "../src/file_func_vars_optimizer.vala"
			_g_free0 (function_name);
#line 4906 "file_func_vars_optimizer.c"
		}
#line 456 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (_function_name_it);
#line 4910 "file_func_vars_optimizer.c"
	}
#line 471 "../src/file_func_vars_optimizer.vala"
	if (first) {
#line 472 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 472 "../src/file_func_vars_optimizer.vala"
		_g_string_free0 (output);
#line 472 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parameter);
#line 472 "../src/file_func_vars_optimizer.vala"
		_g_free0 (parameter_name);
#line 472 "../src/file_func_vars_optimizer.vala"
		return result;
#line 4924 "file_func_vars_optimizer.c"
	}
#line 474 "../src/file_func_vars_optimizer.vala"
	_tmp68_ = output;
#line 474 "../src/file_func_vars_optimizer.vala"
	g_string_append (_tmp68_, " else { }");
#line 475 "../src/file_func_vars_optimizer.vala"
	_tmp69_ = output;
#line 475 "../src/file_func_vars_optimizer.vala"
	_tmp70_ = _tmp69_->str;
#line 475 "../src/file_func_vars_optimizer.vala"
	_tmp71_ = g_strdup (_tmp70_);
#line 475 "../src/file_func_vars_optimizer.vala"
	result = _tmp71_;
#line 475 "../src/file_func_vars_optimizer.vala"
	_g_string_free0 (output);
#line 475 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (parameter);
#line 475 "../src/file_func_vars_optimizer.vala"
	_g_free0 (parameter_name);
#line 475 "../src/file_func_vars_optimizer.vala"
	return result;
#line 4946 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_chained_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                          const gchar* line,
                                                                          gint php_line_number,
                                                                          GError** error)
{
	gboolean _tmp0_ = FALSE;
	GeeArrayList* parts = NULL;
	PhpToValaTranspiler* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	GeeArrayList* _tmp4_;
	GeeArrayList* _tmp5_;
	GeeArrayList* _tmp6_;
	gint _tmp7_;
	gint _tmp8_;
	gchar* expression = NULL;
	GeeArrayList* _tmp9_;
	GeeArrayList* _tmp10_;
	gint _tmp11_;
	gint _tmp12_;
	gpointer _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	gchar* type_name = NULL;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	GString* output = NULL;
	GString* _tmp21_;
	GString* _tmp55_;
	const gchar* _tmp56_;
	gchar* _tmp57_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 478 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 478 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 479 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "$")) {
#line 479 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 4994 "file_func_vars_optimizer.c"
	} else {
#line 479 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, ";");
#line 4998 "file_func_vars_optimizer.c"
	}
#line 479 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 480 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 480 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5006 "file_func_vars_optimizer.c"
	}
#line 482 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = self->priv->transpiler;
#line 482 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = php_to_vala_transpiler_trim_trailing_semicolon (line);
#line 482 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 482 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = php_to_vala_transpiler_split_top_level (_tmp1_, _tmp3_, '=');
#line 482 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = _tmp4_;
#line 482 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp3_);
#line 482 "../src/file_func_vars_optimizer.vala"
	parts = _tmp5_;
#line 483 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = parts;
#line 483 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp6_);
#line 483 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 483 "../src/file_func_vars_optimizer.vala"
	if (_tmp8_ <= 2) {
#line 484 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 484 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 484 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5036 "file_func_vars_optimizer.c"
	}
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = parts;
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = parts;
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp10_);
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = gee_abstract_list_get ((GeeAbstractList*) _tmp9_, _tmp12_ - 1);
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = (gchar*) _tmp13_;
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = string_strip (_tmp14_);
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = _tmp15_;
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp16_, php_line_number, "", &_inner_error0_);
#line 486 "../src/file_func_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 486 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp16_);
#line 486 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp14_);
#line 486 "../src/file_func_vars_optimizer.vala"
	expression = _tmp18_;
#line 486 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 486 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 486 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 486 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 5072 "file_func_vars_optimizer.c"
	}
#line 487 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = expression;
#line 487 "../src/file_func_vars_optimizer.vala"
	_tmp20_ = php_to_vala_file_func_vars_optimizer_infer_native_expression_type (self, _tmp19_);
#line 487 "../src/file_func_vars_optimizer.vala"
	type_name = _tmp20_;
#line 488 "../src/file_func_vars_optimizer.vala"
	_tmp21_ = g_string_new ("");
#line 488 "../src/file_func_vars_optimizer.vala"
	output = _tmp21_;
#line 5084 "file_func_vars_optimizer.c"
	{
		gint i = 0;
		GeeArrayList* _tmp22_;
		gint _tmp23_;
		gint _tmp24_;
#line 489 "../src/file_func_vars_optimizer.vala"
		_tmp22_ = parts;
#line 489 "../src/file_func_vars_optimizer.vala"
		_tmp23_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp22_);
#line 489 "../src/file_func_vars_optimizer.vala"
		_tmp24_ = _tmp23_;
#line 489 "../src/file_func_vars_optimizer.vala"
		i = _tmp24_ - 2;
#line 5098 "file_func_vars_optimizer.c"
		{
			gboolean _tmp25_ = FALSE;
#line 489 "../src/file_func_vars_optimizer.vala"
			_tmp25_ = TRUE;
#line 489 "../src/file_func_vars_optimizer.vala"
			while (TRUE) {
#line 5105 "file_func_vars_optimizer.c"
				gchar* name = NULL;
				GeeArrayList* _tmp27_;
				gpointer _tmp28_;
				gchar* _tmp29_;
				gchar* _tmp30_;
				gchar* _tmp31_;
				const gchar* _tmp32_;
				const gchar* _tmp33_;
				gchar* _tmp34_;
				gchar* _tmp35_;
				gchar* _tmp36_;
				GString* _tmp37_;
				PhpToValaTranspiler* _tmp39_;
				GeeHashMap* _tmp40_;
				const gchar* _tmp41_;
				const gchar* _tmp53_;
				gchar* _tmp54_;
#line 489 "../src/file_func_vars_optimizer.vala"
				if (!_tmp25_) {
#line 5125 "file_func_vars_optimizer.c"
					gint _tmp26_;
#line 489 "../src/file_func_vars_optimizer.vala"
					_tmp26_ = i;
#line 489 "../src/file_func_vars_optimizer.vala"
					i = _tmp26_ - 1;
#line 5131 "file_func_vars_optimizer.c"
				}
#line 489 "../src/file_func_vars_optimizer.vala"
				_tmp25_ = FALSE;
#line 489 "../src/file_func_vars_optimizer.vala"
				if (!(i >= 0)) {
#line 489 "../src/file_func_vars_optimizer.vala"
					break;
#line 5139 "file_func_vars_optimizer.c"
				}
#line 490 "../src/file_func_vars_optimizer.vala"
				_tmp27_ = parts;
#line 490 "../src/file_func_vars_optimizer.vala"
				_tmp28_ = gee_abstract_list_get ((GeeAbstractList*) _tmp27_, i);
#line 490 "../src/file_func_vars_optimizer.vala"
				_tmp29_ = (gchar*) _tmp28_;
#line 490 "../src/file_func_vars_optimizer.vala"
				_tmp30_ = string_strip (_tmp29_);
#line 490 "../src/file_func_vars_optimizer.vala"
				_tmp31_ = _tmp30_;
#line 490 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp29_);
#line 490 "../src/file_func_vars_optimizer.vala"
				name = _tmp31_;
#line 491 "../src/file_func_vars_optimizer.vala"
				_tmp32_ = name;
#line 491 "../src/file_func_vars_optimizer.vala"
				if (!g_str_has_prefix (_tmp32_, "$")) {
#line 492 "../src/file_func_vars_optimizer.vala"
					result = NULL;
#line 492 "../src/file_func_vars_optimizer.vala"
					_g_free0 (name);
#line 492 "../src/file_func_vars_optimizer.vala"
					_g_string_free0 (output);
#line 492 "../src/file_func_vars_optimizer.vala"
					_g_free0 (type_name);
#line 492 "../src/file_func_vars_optimizer.vala"
					_g_free0 (expression);
#line 492 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (parts);
#line 492 "../src/file_func_vars_optimizer.vala"
					return result;
#line 5173 "file_func_vars_optimizer.c"
				}
#line 494 "../src/file_func_vars_optimizer.vala"
				_tmp33_ = name;
#line 494 "../src/file_func_vars_optimizer.vala"
				_tmp34_ = string_substring (_tmp33_, (glong) 1, (glong) -1);
#line 494 "../src/file_func_vars_optimizer.vala"
				_tmp35_ = _tmp34_;
#line 494 "../src/file_func_vars_optimizer.vala"
				_tmp36_ = string_strip (_tmp35_);
#line 494 "../src/file_func_vars_optimizer.vala"
				_g_free0 (name);
#line 494 "../src/file_func_vars_optimizer.vala"
				name = _tmp36_;
#line 494 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp35_);
#line 495 "../src/file_func_vars_optimizer.vala"
				_tmp37_ = output;
#line 495 "../src/file_func_vars_optimizer.vala"
				if (_tmp37_->len > ((gssize) 0)) {
#line 5193 "file_func_vars_optimizer.c"
					GString* _tmp38_;
#line 496 "../src/file_func_vars_optimizer.vala"
					_tmp38_ = output;
#line 496 "../src/file_func_vars_optimizer.vala"
					g_string_append (_tmp38_, "\n");
#line 5199 "file_func_vars_optimizer.c"
				}
#line 498 "../src/file_func_vars_optimizer.vala"
				_tmp39_ = self->priv->transpiler;
#line 498 "../src/file_func_vars_optimizer.vala"
				_tmp40_ = _tmp39_->variable_types;
#line 498 "../src/file_func_vars_optimizer.vala"
				_tmp41_ = name;
#line 498 "../src/file_func_vars_optimizer.vala"
				if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp40_, _tmp41_)) {
#line 5209 "file_func_vars_optimizer.c"
					PhpToValaTranspiler* _tmp42_;
					GeeHashMap* _tmp43_;
					const gchar* _tmp44_;
					const gchar* _tmp45_;
					GString* _tmp46_;
					const gchar* _tmp47_;
					const gchar* _tmp48_;
					const gchar* _tmp49_;
#line 499 "../src/file_func_vars_optimizer.vala"
					_tmp42_ = self->priv->transpiler;
#line 499 "../src/file_func_vars_optimizer.vala"
					_tmp43_ = _tmp42_->variable_types;
#line 499 "../src/file_func_vars_optimizer.vala"
					_tmp44_ = name;
#line 499 "../src/file_func_vars_optimizer.vala"
					_tmp45_ = type_name;
#line 499 "../src/file_func_vars_optimizer.vala"
					gee_abstract_map_set ((GeeAbstractMap*) _tmp43_, _tmp44_, _tmp45_);
#line 500 "../src/file_func_vars_optimizer.vala"
					_tmp46_ = output;
#line 500 "../src/file_func_vars_optimizer.vala"
					_tmp47_ = type_name;
#line 500 "../src/file_func_vars_optimizer.vala"
					_tmp48_ = name;
#line 500 "../src/file_func_vars_optimizer.vala"
					_tmp49_ = expression;
#line 500 "../src/file_func_vars_optimizer.vala"
					g_string_append_printf (_tmp46_, "%s %s = %s;", _tmp47_, _tmp48_, _tmp49_);
#line 5238 "file_func_vars_optimizer.c"
				} else {
					GString* _tmp50_;
					const gchar* _tmp51_;
					const gchar* _tmp52_;
#line 502 "../src/file_func_vars_optimizer.vala"
					_tmp50_ = output;
#line 502 "../src/file_func_vars_optimizer.vala"
					_tmp51_ = name;
#line 502 "../src/file_func_vars_optimizer.vala"
					_tmp52_ = expression;
#line 502 "../src/file_func_vars_optimizer.vala"
					g_string_append_printf (_tmp50_, "%s = %s;", _tmp51_, _tmp52_);
#line 5251 "file_func_vars_optimizer.c"
				}
#line 504 "../src/file_func_vars_optimizer.vala"
				_tmp53_ = name;
#line 504 "../src/file_func_vars_optimizer.vala"
				_tmp54_ = g_strdup (_tmp53_);
#line 504 "../src/file_func_vars_optimizer.vala"
				_g_free0 (expression);
#line 504 "../src/file_func_vars_optimizer.vala"
				expression = _tmp54_;
#line 489 "../src/file_func_vars_optimizer.vala"
				_g_free0 (name);
#line 5263 "file_func_vars_optimizer.c"
			}
		}
	}
#line 506 "../src/file_func_vars_optimizer.vala"
	_tmp55_ = output;
#line 506 "../src/file_func_vars_optimizer.vala"
	_tmp56_ = _tmp55_->str;
#line 506 "../src/file_func_vars_optimizer.vala"
	_tmp57_ = g_strdup (_tmp56_);
#line 506 "../src/file_func_vars_optimizer.vala"
	result = _tmp57_;
#line 506 "../src/file_func_vars_optimizer.vala"
	_g_string_free0 (output);
#line 506 "../src/file_func_vars_optimizer.vala"
	_g_free0 (type_name);
#line 506 "../src/file_func_vars_optimizer.vala"
	_g_free0 (expression);
#line 506 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (parts);
#line 506 "../src/file_func_vars_optimizer.vala"
	return result;
#line 5285 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_increment (PhpToValaFileFuncVarsOptimizer* self,
                                                                 const gchar* line)
{
	gboolean _tmp0_ = FALSE;
	gchar* name = NULL;
	gint _tmp1_;
	gint _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp8_ = NULL;
	const gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* result;
#line 509 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 509 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 510 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_suffix (line, "++;")) {
#line 510 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, "--;");
#line 5318 "file_func_vars_optimizer.c"
	} else {
#line 510 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 5322 "file_func_vars_optimizer.c"
	}
#line 510 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 511 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 511 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5330 "file_func_vars_optimizer.c"
	}
#line 513 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = strlen (line);
#line 513 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 513 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = string_substring (line, (glong) 0, (glong) (_tmp2_ - 3));
#line 513 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 513 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = string_strip (_tmp4_);
#line 513 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 513 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 513 "../src/file_func_vars_optimizer.vala"
	name = _tmp6_;
#line 514 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = name;
#line 514 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (_tmp7_, "$")) {
#line 515 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 515 "../src/file_func_vars_optimizer.vala"
		_g_free0 (name);
#line 515 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5358 "file_func_vars_optimizer.c"
	}
#line 517 "../src/file_func_vars_optimizer.vala"
	if (g_str_has_suffix (line, "++;")) {
#line 517 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = "++";
#line 5364 "file_func_vars_optimizer.c"
	} else {
#line 517 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = "--";
#line 5368 "file_func_vars_optimizer.c"
	}
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = name;
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = string_substring (_tmp9_, (glong) 1, (glong) -1);
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = _tmp10_;
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = string_strip (_tmp11_);
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = _tmp12_;
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = g_strdup_printf ("%s%s;", _tmp13_, _tmp8_);
#line 517 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = _tmp14_;
#line 517 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp13_);
#line 517 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp11_);
#line 517 "../src/file_func_vars_optimizer.vala"
	result = _tmp15_;
#line 517 "../src/file_func_vars_optimizer.vala"
	_g_free0 (name);
#line 517 "../src/file_func_vars_optimizer.vala"
	return result;
#line 5394 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_compound_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                           const gchar* line)
{
	gchar* clean = NULL;
	gchar* _tmp0_;
	gchar** operators = NULL;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar** _tmp5_;
	gint operators_length1;
	gint _operators_size_;
	gchar** _tmp6_;
	gint _tmp6__length1;
	gchar* result;
#line 520 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 520 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 521 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = php_to_vala_transpiler_trim_trailing_semicolon (line);
#line 521 "../src/file_func_vars_optimizer.vala"
	clean = _tmp0_;
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = g_strdup ("+=");
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = g_strdup ("-=");
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = g_strdup ("*=");
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = g_strdup ("/=");
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = g_new0 (gchar*, 4 + 1);
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp5_[0] = _tmp1_;
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp5_[1] = _tmp2_;
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp5_[2] = _tmp3_;
#line 522 "../src/file_func_vars_optimizer.vala"
	_tmp5_[3] = _tmp4_;
#line 522 "../src/file_func_vars_optimizer.vala"
	operators = _tmp5_;
#line 522 "../src/file_func_vars_optimizer.vala"
	operators_length1 = 4;
#line 522 "../src/file_func_vars_optimizer.vala"
	_operators_size_ = operators_length1;
#line 523 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = operators;
#line 523 "../src/file_func_vars_optimizer.vala"
	_tmp6__length1 = operators_length1;
#line 5450 "file_func_vars_optimizer.c"
	{
		gchar** op_collection = NULL;
		gint op_collection_length1 = 0;
		gint _op_collection_size_ = 0;
		gint op_it = 0;
#line 523 "../src/file_func_vars_optimizer.vala"
		op_collection = _tmp6_;
#line 523 "../src/file_func_vars_optimizer.vala"
		op_collection_length1 = _tmp6__length1;
#line 523 "../src/file_func_vars_optimizer.vala"
		for (op_it = 0; op_it < op_collection_length1; op_it = op_it + 1) {
#line 5462 "file_func_vars_optimizer.c"
			gchar* _tmp7_;
			gchar* op = NULL;
#line 523 "../src/file_func_vars_optimizer.vala"
			_tmp7_ = g_strdup (op_collection[op_it]);
#line 523 "../src/file_func_vars_optimizer.vala"
			op = _tmp7_;
#line 5469 "file_func_vars_optimizer.c"
			{
				gint index = 0;
				const gchar* _tmp8_;
				const gchar* _tmp9_;
				gchar* lhs = NULL;
				const gchar* _tmp10_;
				gchar* _tmp11_;
				gchar* _tmp12_;
				gchar* _tmp13_;
				gchar* _tmp14_;
				gchar* rhs = NULL;
				const gchar* _tmp15_;
				const gchar* _tmp16_;
				gint _tmp17_;
				gint _tmp18_;
				gchar* _tmp19_;
				gchar* _tmp20_;
				gchar* _tmp21_;
				gchar* _tmp22_;
				const gchar* _tmp23_;
				gchar* vala_op = NULL;
				const gchar* _tmp24_;
				gchar* _tmp25_;
				gchar* _tmp26_;
				gchar* _tmp27_;
				gchar* _tmp28_;
				gchar* _tmp29_ = NULL;
				const gchar* _tmp30_;
				const gchar* _tmp37_;
				gchar* _tmp38_;
				gchar* _tmp39_;
				gchar* _tmp40_;
				gchar* _tmp41_;
				const gchar* _tmp42_;
				gchar* _tmp43_;
				gchar* _tmp44_;
#line 524 "../src/file_func_vars_optimizer.vala"
				_tmp8_ = clean;
#line 524 "../src/file_func_vars_optimizer.vala"
				_tmp9_ = op;
#line 524 "../src/file_func_vars_optimizer.vala"
				index = string_index_of (_tmp8_, _tmp9_, 0);
#line 525 "../src/file_func_vars_optimizer.vala"
				if (index <= 0) {
#line 526 "../src/file_func_vars_optimizer.vala"
					_g_free0 (op);
#line 526 "../src/file_func_vars_optimizer.vala"
					continue;
#line 5518 "file_func_vars_optimizer.c"
				}
#line 528 "../src/file_func_vars_optimizer.vala"
				_tmp10_ = clean;
#line 528 "../src/file_func_vars_optimizer.vala"
				_tmp11_ = string_substring (_tmp10_, (glong) 0, (glong) index);
#line 528 "../src/file_func_vars_optimizer.vala"
				_tmp12_ = _tmp11_;
#line 528 "../src/file_func_vars_optimizer.vala"
				_tmp13_ = string_strip (_tmp12_);
#line 528 "../src/file_func_vars_optimizer.vala"
				_tmp14_ = _tmp13_;
#line 528 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp12_);
#line 528 "../src/file_func_vars_optimizer.vala"
				lhs = _tmp14_;
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp15_ = clean;
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp16_ = op;
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp17_ = strlen (_tmp16_);
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp18_ = _tmp17_;
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp19_ = string_substring (_tmp15_, (glong) (index + _tmp18_), (glong) -1);
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp20_ = _tmp19_;
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp21_ = string_strip (_tmp20_);
#line 529 "../src/file_func_vars_optimizer.vala"
				_tmp22_ = _tmp21_;
#line 529 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp20_);
#line 529 "../src/file_func_vars_optimizer.vala"
				rhs = _tmp22_;
#line 530 "../src/file_func_vars_optimizer.vala"
				_tmp23_ = lhs;
#line 530 "../src/file_func_vars_optimizer.vala"
				if (!g_str_has_prefix (_tmp23_, "$")) {
#line 531 "../src/file_func_vars_optimizer.vala"
					result = NULL;
#line 531 "../src/file_func_vars_optimizer.vala"
					_g_free0 (rhs);
#line 531 "../src/file_func_vars_optimizer.vala"
					_g_free0 (lhs);
#line 531 "../src/file_func_vars_optimizer.vala"
					_g_free0 (op);
#line 531 "../src/file_func_vars_optimizer.vala"
					operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 531 "../src/file_func_vars_optimizer.vala"
					_g_free0 (clean);
#line 531 "../src/file_func_vars_optimizer.vala"
					return result;
#line 5572 "file_func_vars_optimizer.c"
				}
#line 533 "../src/file_func_vars_optimizer.vala"
				_tmp24_ = op;
#line 533 "../src/file_func_vars_optimizer.vala"
				_tmp25_ = string_substring (_tmp24_, (glong) 0, (glong) 1);
#line 533 "../src/file_func_vars_optimizer.vala"
				_tmp26_ = _tmp25_;
#line 533 "../src/file_func_vars_optimizer.vala"
				_tmp27_ = g_strconcat (_tmp26_, "=", NULL);
#line 533 "../src/file_func_vars_optimizer.vala"
				_tmp28_ = _tmp27_;
#line 533 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp26_);
#line 533 "../src/file_func_vars_optimizer.vala"
				vala_op = _tmp28_;
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp30_ = rhs;
#line 534 "../src/file_func_vars_optimizer.vala"
				if (g_str_has_prefix (_tmp30_, "$")) {
#line 5592 "file_func_vars_optimizer.c"
					const gchar* _tmp31_;
					gchar* _tmp32_;
					gchar* _tmp33_;
					gchar* _tmp34_;
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp31_ = rhs;
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp32_ = string_substring (_tmp31_, (glong) 1, (glong) -1);
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp33_ = _tmp32_;
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp34_ = string_strip (_tmp33_);
#line 534 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp29_);
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp29_ = _tmp34_;
#line 534 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp33_);
#line 5611 "file_func_vars_optimizer.c"
				} else {
					const gchar* _tmp35_;
					gchar* _tmp36_;
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp35_ = rhs;
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp36_ = g_strdup (_tmp35_);
#line 534 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp29_);
#line 534 "../src/file_func_vars_optimizer.vala"
					_tmp29_ = _tmp36_;
#line 5623 "file_func_vars_optimizer.c"
				}
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp37_ = lhs;
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp38_ = string_substring (_tmp37_, (glong) 1, (glong) -1);
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp39_ = _tmp38_;
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp40_ = string_strip (_tmp39_);
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp41_ = _tmp40_;
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp42_ = vala_op;
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp43_ = g_strdup_printf ("%s %s %s;", _tmp41_, _tmp42_, _tmp29_);
#line 534 "../src/file_func_vars_optimizer.vala"
				_tmp44_ = _tmp43_;
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp41_);
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp39_);
#line 534 "../src/file_func_vars_optimizer.vala"
				result = _tmp44_;
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp29_);
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (vala_op);
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (rhs);
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (lhs);
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (op);
#line 534 "../src/file_func_vars_optimizer.vala"
				operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 534 "../src/file_func_vars_optimizer.vala"
				_g_free0 (clean);
#line 534 "../src/file_func_vars_optimizer.vala"
				return result;
#line 5663 "file_func_vars_optimizer.c"
			}
		}
	}
#line 536 "../src/file_func_vars_optimizer.vala"
	result = NULL;
#line 536 "../src/file_func_vars_optimizer.vala"
	operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 536 "../src/file_func_vars_optimizer.vala"
	_g_free0 (clean);
#line 536 "../src/file_func_vars_optimizer.vala"
	return result;
#line 5675 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                  const gchar* line,
                                                                  gint php_line_number,
                                                                  GError** error)
{
	gboolean _tmp0_ = FALSE;
	gchar* clean = NULL;
	gchar* _tmp1_;
	GeeArrayList* parts = NULL;
	PhpToValaTranspiler* _tmp2_;
	const gchar* _tmp3_;
	GeeArrayList* _tmp4_;
	GeeArrayList* _tmp5_;
	gint _tmp6_;
	gint _tmp7_;
	gchar* lhs = NULL;
	GeeArrayList* _tmp8_;
	gpointer _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	const gchar* _tmp13_;
	gchar* name = NULL;
	const gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	const gchar* _tmp19_;
	gchar* expression = NULL;
	GeeArrayList* _tmp20_;
	gpointer _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	gchar* type_name = NULL;
	const gchar* _tmp27_;
	gchar* _tmp28_;
	PhpToValaTranspiler* _tmp29_;
	GeeHashMap* _tmp30_;
	const gchar* _tmp31_;
	const gchar* _tmp40_;
	const gchar* _tmp41_;
	gchar* _tmp42_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 539 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 539 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 540 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "$")) {
#line 540 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 5735 "file_func_vars_optimizer.c"
	} else {
#line 540 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, ";");
#line 5739 "file_func_vars_optimizer.c"
	}
#line 540 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 541 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 541 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5747 "file_func_vars_optimizer.c"
	}
#line 543 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = php_to_vala_transpiler_trim_trailing_semicolon (line);
#line 543 "../src/file_func_vars_optimizer.vala"
	clean = _tmp1_;
#line 544 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = self->priv->transpiler;
#line 544 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = clean;
#line 544 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = php_to_vala_transpiler_split_top_level (_tmp2_, _tmp3_, '=');
#line 544 "../src/file_func_vars_optimizer.vala"
	parts = _tmp4_;
#line 545 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = parts;
#line 545 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp5_);
#line 545 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 545 "../src/file_func_vars_optimizer.vala"
	if (_tmp7_ != 2) {
#line 546 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 546 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 546 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 546 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5777 "file_func_vars_optimizer.c"
	}
#line 548 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = parts;
#line 548 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = gee_abstract_list_get ((GeeAbstractList*) _tmp8_, 0);
#line 548 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = (gchar*) _tmp9_;
#line 548 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = string_strip (_tmp10_);
#line 548 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 548 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp10_);
#line 548 "../src/file_func_vars_optimizer.vala"
	lhs = _tmp12_;
#line 549 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = lhs;
#line 549 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (_tmp13_, "$")) {
#line 550 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 550 "../src/file_func_vars_optimizer.vala"
		_g_free0 (lhs);
#line 550 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 550 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 550 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5807 "file_func_vars_optimizer.c"
	}
#line 552 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = lhs;
#line 552 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = string_substring (_tmp14_, (glong) 1, (glong) -1);
#line 552 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = _tmp15_;
#line 552 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = string_strip (_tmp16_);
#line 552 "../src/file_func_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 552 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp16_);
#line 552 "../src/file_func_vars_optimizer.vala"
	name = _tmp18_;
#line 553 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = name;
#line 553 "../src/file_func_vars_optimizer.vala"
	if (!php_to_vala_file_func_vars_optimizer_is_plain_identifier (self, _tmp19_)) {
#line 554 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 554 "../src/file_func_vars_optimizer.vala"
		_g_free0 (name);
#line 554 "../src/file_func_vars_optimizer.vala"
		_g_free0 (lhs);
#line 554 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 554 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 554 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5839 "file_func_vars_optimizer.c"
	}
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp20_ = parts;
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp21_ = gee_abstract_list_get ((GeeAbstractList*) _tmp20_, 1);
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp22_ = (gchar*) _tmp21_;
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp23_ = string_strip (_tmp22_);
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp24_ = _tmp23_;
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp25_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp24_, php_line_number, "", &_inner_error0_);
#line 556 "../src/file_func_vars_optimizer.vala"
	_tmp26_ = _tmp25_;
#line 556 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp24_);
#line 556 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp22_);
#line 556 "../src/file_func_vars_optimizer.vala"
	expression = _tmp26_;
#line 556 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 556 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 556 "../src/file_func_vars_optimizer.vala"
		_g_free0 (name);
#line 556 "../src/file_func_vars_optimizer.vala"
		_g_free0 (lhs);
#line 556 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 556 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 556 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 5875 "file_func_vars_optimizer.c"
	}
#line 557 "../src/file_func_vars_optimizer.vala"
	_tmp27_ = expression;
#line 557 "../src/file_func_vars_optimizer.vala"
	_tmp28_ = php_to_vala_file_func_vars_optimizer_infer_native_expression_type (self, _tmp27_);
#line 557 "../src/file_func_vars_optimizer.vala"
	type_name = _tmp28_;
#line 558 "../src/file_func_vars_optimizer.vala"
	_tmp29_ = self->priv->transpiler;
#line 558 "../src/file_func_vars_optimizer.vala"
	_tmp30_ = _tmp29_->variable_types;
#line 558 "../src/file_func_vars_optimizer.vala"
	_tmp31_ = name;
#line 558 "../src/file_func_vars_optimizer.vala"
	if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp30_, _tmp31_)) {
#line 5891 "file_func_vars_optimizer.c"
		PhpToValaTranspiler* _tmp32_;
		GeeHashMap* _tmp33_;
		const gchar* _tmp34_;
		const gchar* _tmp35_;
		const gchar* _tmp36_;
		const gchar* _tmp37_;
		const gchar* _tmp38_;
		gchar* _tmp39_;
#line 559 "../src/file_func_vars_optimizer.vala"
		_tmp32_ = self->priv->transpiler;
#line 559 "../src/file_func_vars_optimizer.vala"
		_tmp33_ = _tmp32_->variable_types;
#line 559 "../src/file_func_vars_optimizer.vala"
		_tmp34_ = name;
#line 559 "../src/file_func_vars_optimizer.vala"
		_tmp35_ = type_name;
#line 559 "../src/file_func_vars_optimizer.vala"
		gee_abstract_map_set ((GeeAbstractMap*) _tmp33_, _tmp34_, _tmp35_);
#line 560 "../src/file_func_vars_optimizer.vala"
		_tmp36_ = type_name;
#line 560 "../src/file_func_vars_optimizer.vala"
		_tmp37_ = name;
#line 560 "../src/file_func_vars_optimizer.vala"
		_tmp38_ = expression;
#line 560 "../src/file_func_vars_optimizer.vala"
		_tmp39_ = g_strdup_printf ("%s %s = %s;", _tmp36_, _tmp37_, _tmp38_);
#line 560 "../src/file_func_vars_optimizer.vala"
		result = _tmp39_;
#line 560 "../src/file_func_vars_optimizer.vala"
		_g_free0 (type_name);
#line 560 "../src/file_func_vars_optimizer.vala"
		_g_free0 (expression);
#line 560 "../src/file_func_vars_optimizer.vala"
		_g_free0 (name);
#line 560 "../src/file_func_vars_optimizer.vala"
		_g_free0 (lhs);
#line 560 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 560 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 560 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5934 "file_func_vars_optimizer.c"
	}
#line 562 "../src/file_func_vars_optimizer.vala"
	_tmp40_ = name;
#line 562 "../src/file_func_vars_optimizer.vala"
	_tmp41_ = expression;
#line 562 "../src/file_func_vars_optimizer.vala"
	_tmp42_ = g_strdup_printf ("%s = %s;", _tmp40_, _tmp41_);
#line 562 "../src/file_func_vars_optimizer.vala"
	result = _tmp42_;
#line 562 "../src/file_func_vars_optimizer.vala"
	_g_free0 (type_name);
#line 562 "../src/file_func_vars_optimizer.vala"
	_g_free0 (expression);
#line 562 "../src/file_func_vars_optimizer.vala"
	_g_free0 (name);
#line 562 "../src/file_func_vars_optimizer.vala"
	_g_free0 (lhs);
#line 562 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (parts);
#line 562 "../src/file_func_vars_optimizer.vala"
	_g_free0 (clean);
#line 562 "../src/file_func_vars_optimizer.vala"
	return result;
#line 5958 "file_func_vars_optimizer.c"
}

static gboolean
php_to_vala_file_func_vars_optimizer_is_plain_identifier (PhpToValaFileFuncVarsOptimizer* self,
                                                          const gchar* name)
{
	gboolean _tmp0_ = FALSE;
	gint _tmp1_;
	gint _tmp2_;
	gboolean result;
#line 565 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 565 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (name != NULL, FALSE);
#line 566 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = strlen (name);
#line 566 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 566 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_ == 0) {
#line 566 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 5981 "file_func_vars_optimizer.c"
	} else {
#line 566 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = g_ascii_isdigit (string_get (name, (glong) 0));
#line 5985 "file_func_vars_optimizer.c"
	}
#line 566 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 567 "../src/file_func_vars_optimizer.vala"
		result = FALSE;
#line 567 "../src/file_func_vars_optimizer.vala"
		return result;
#line 5993 "file_func_vars_optimizer.c"
	}
	{
		gint i = 0;
#line 569 "../src/file_func_vars_optimizer.vala"
		i = 0;
#line 5999 "file_func_vars_optimizer.c"
		{
			gboolean _tmp3_ = FALSE;
#line 569 "../src/file_func_vars_optimizer.vala"
			_tmp3_ = TRUE;
#line 569 "../src/file_func_vars_optimizer.vala"
			while (TRUE) {
#line 6006 "file_func_vars_optimizer.c"
				gint _tmp5_;
				gint _tmp6_;
#line 569 "../src/file_func_vars_optimizer.vala"
				if (!_tmp3_) {
#line 6011 "file_func_vars_optimizer.c"
					gint _tmp4_;
#line 569 "../src/file_func_vars_optimizer.vala"
					_tmp4_ = i;
#line 569 "../src/file_func_vars_optimizer.vala"
					i = _tmp4_ + 1;
#line 6017 "file_func_vars_optimizer.c"
				}
#line 569 "../src/file_func_vars_optimizer.vala"
				_tmp3_ = FALSE;
#line 569 "../src/file_func_vars_optimizer.vala"
				_tmp5_ = strlen (name);
#line 569 "../src/file_func_vars_optimizer.vala"
				_tmp6_ = _tmp5_;
#line 569 "../src/file_func_vars_optimizer.vala"
				if (!(i < _tmp6_)) {
#line 569 "../src/file_func_vars_optimizer.vala"
					break;
#line 6029 "file_func_vars_optimizer.c"
				}
#line 570 "../src/file_func_vars_optimizer.vala"
				if (!php_to_vala_transpiler_is_identifier_char (string_get (name, (glong) i))) {
#line 571 "../src/file_func_vars_optimizer.vala"
					result = FALSE;
#line 571 "../src/file_func_vars_optimizer.vala"
					return result;
#line 6037 "file_func_vars_optimizer.c"
				}
			}
		}
	}
#line 574 "../src/file_func_vars_optimizer.vala"
	result = TRUE;
#line 574 "../src/file_func_vars_optimizer.vala"
	return result;
#line 6046 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_transpile_native_list_assignment (PhpToValaFileFuncVarsOptimizer* self,
                                                                       const gchar* line,
                                                                       gint php_line_number,
                                                                       GError** error)
{
	gboolean _tmp0_ = FALSE;
	gint close_index = 0;
	gchar* rest = NULL;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gboolean _tmp7_ = FALSE;
	const gchar* _tmp8_;
	GeeArrayList* targets = NULL;
	PhpToValaTranspiler* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	GeeArrayList* _tmp13_;
	GeeArrayList* _tmp14_;
	GeeArrayList* values = NULL;
	PhpToValaTranspiler* _tmp15_;
	const gchar* _tmp16_;
	gint _tmp17_;
	gint _tmp18_;
	const gchar* _tmp19_;
	gint _tmp20_;
	gint _tmp21_;
	gint _tmp22_;
	gint _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	GeeArrayList* _tmp26_;
	GeeArrayList* _tmp27_;
	GString* output = NULL;
	GString* _tmp28_;
	GString* _tmp60_;
	const gchar* _tmp61_;
	gchar* _tmp62_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 577 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 577 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 578 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "list(")) {
#line 578 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = !g_str_has_prefix (line, "list (");
#line 6101 "file_func_vars_optimizer.c"
	} else {
#line 578 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 6105 "file_func_vars_optimizer.c"
	}
#line 578 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 579 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 579 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6113 "file_func_vars_optimizer.c"
	}
#line 581 "../src/file_func_vars_optimizer.vala"
	close_index = string_index_of (line, ")", 0);
#line 582 "../src/file_func_vars_optimizer.vala"
	if (close_index < 0) {
#line 583 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 583 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6123 "file_func_vars_optimizer.c"
	}
#line 585 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = string_substring (line, (glong) (close_index + 1), (glong) -1);
#line 585 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 585 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = string_strip (_tmp2_);
#line 585 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 585 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = php_to_vala_transpiler_trim_trailing_semicolon (_tmp4_);
#line 585 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 585 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 585 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp2_);
#line 585 "../src/file_func_vars_optimizer.vala"
	rest = _tmp6_;
#line 586 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = rest;
#line 586 "../src/file_func_vars_optimizer.vala"
	if (!g_str_has_prefix (_tmp8_, "= array(")) {
#line 586 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = TRUE;
#line 6149 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp9_;
#line 586 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = rest;
#line 586 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = !g_str_has_suffix (_tmp9_, ")");
#line 6156 "file_func_vars_optimizer.c"
	}
#line 586 "../src/file_func_vars_optimizer.vala"
	if (_tmp7_) {
#line 587 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 587 "../src/file_func_vars_optimizer.vala"
		_g_free0 (rest);
#line 587 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6166 "file_func_vars_optimizer.c"
	}
#line 589 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = self->priv->transpiler;
#line 589 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = string_substring (line, (glong) (string_index_of (line, "(", 0) + 1), (glong) ((close_index - string_index_of (line, "(", 0)) - 1));
#line 589 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 589 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = php_to_vala_transpiler_split_top_level (_tmp10_, _tmp12_, ',');
#line 589 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = _tmp13_;
#line 589 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp12_);
#line 589 "../src/file_func_vars_optimizer.vala"
	targets = _tmp14_;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = self->priv->transpiler;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = rest;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = strlen ("= array(");
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = rest;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp20_ = strlen (_tmp19_);
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp21_ = _tmp20_;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp22_ = strlen ("= array(");
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp23_ = _tmp22_;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp24_ = string_substring (_tmp16_, (glong) _tmp18_, (glong) ((_tmp21_ - _tmp23_) - 1));
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp25_ = _tmp24_;
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp26_ = php_to_vala_transpiler_split_top_level (_tmp15_, _tmp25_, ',');
#line 590 "../src/file_func_vars_optimizer.vala"
	_tmp27_ = _tmp26_;
#line 590 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp25_);
#line 590 "../src/file_func_vars_optimizer.vala"
	values = _tmp27_;
#line 591 "../src/file_func_vars_optimizer.vala"
	_tmp28_ = g_string_new ("");
#line 591 "../src/file_func_vars_optimizer.vala"
	output = _tmp28_;
#line 6216 "file_func_vars_optimizer.c"
	{
		gint i = 0;
#line 592 "../src/file_func_vars_optimizer.vala"
		i = 0;
#line 6221 "file_func_vars_optimizer.c"
		{
			gboolean _tmp29_ = FALSE;
#line 592 "../src/file_func_vars_optimizer.vala"
			_tmp29_ = TRUE;
#line 592 "../src/file_func_vars_optimizer.vala"
			while (TRUE) {
#line 6228 "file_func_vars_optimizer.c"
				gboolean _tmp31_ = FALSE;
				GeeArrayList* _tmp32_;
				gint _tmp33_;
				gint _tmp34_;
				gchar* target = NULL;
				GeeArrayList* _tmp38_;
				gpointer _tmp39_;
				gchar* _tmp40_;
				gchar* _tmp41_;
				gchar* _tmp42_;
				const gchar* _tmp43_;
				GString* _tmp44_;
				gchar* _tmp46_ = NULL;
				GeeArrayList* _tmp47_;
				gpointer _tmp48_;
				gchar* _tmp49_;
				gchar* _tmp50_;
				gchar* _tmp51_;
				gchar* _tmp52_;
				gchar* _tmp53_;
				GString* _tmp54_;
				const gchar* _tmp55_;
				gchar* _tmp56_;
				gchar* _tmp57_;
				gchar* _tmp58_;
				gchar* _tmp59_;
#line 592 "../src/file_func_vars_optimizer.vala"
				if (!_tmp29_) {
#line 6257 "file_func_vars_optimizer.c"
					gint _tmp30_;
#line 592 "../src/file_func_vars_optimizer.vala"
					_tmp30_ = i;
#line 592 "../src/file_func_vars_optimizer.vala"
					i = _tmp30_ + 1;
#line 6263 "file_func_vars_optimizer.c"
				}
#line 592 "../src/file_func_vars_optimizer.vala"
				_tmp29_ = FALSE;
#line 592 "../src/file_func_vars_optimizer.vala"
				_tmp32_ = targets;
#line 592 "../src/file_func_vars_optimizer.vala"
				_tmp33_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp32_);
#line 592 "../src/file_func_vars_optimizer.vala"
				_tmp34_ = _tmp33_;
#line 592 "../src/file_func_vars_optimizer.vala"
				if (i < _tmp34_) {
#line 6275 "file_func_vars_optimizer.c"
					GeeArrayList* _tmp35_;
					gint _tmp36_;
					gint _tmp37_;
#line 592 "../src/file_func_vars_optimizer.vala"
					_tmp35_ = values;
#line 592 "../src/file_func_vars_optimizer.vala"
					_tmp36_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp35_);
#line 592 "../src/file_func_vars_optimizer.vala"
					_tmp37_ = _tmp36_;
#line 592 "../src/file_func_vars_optimizer.vala"
					_tmp31_ = i < _tmp37_;
#line 6287 "file_func_vars_optimizer.c"
				} else {
#line 592 "../src/file_func_vars_optimizer.vala"
					_tmp31_ = FALSE;
#line 6291 "file_func_vars_optimizer.c"
				}
#line 592 "../src/file_func_vars_optimizer.vala"
				if (!_tmp31_) {
#line 592 "../src/file_func_vars_optimizer.vala"
					break;
#line 6297 "file_func_vars_optimizer.c"
				}
#line 593 "../src/file_func_vars_optimizer.vala"
				_tmp38_ = targets;
#line 593 "../src/file_func_vars_optimizer.vala"
				_tmp39_ = gee_abstract_list_get ((GeeAbstractList*) _tmp38_, i);
#line 593 "../src/file_func_vars_optimizer.vala"
				_tmp40_ = (gchar*) _tmp39_;
#line 593 "../src/file_func_vars_optimizer.vala"
				_tmp41_ = string_strip (_tmp40_);
#line 593 "../src/file_func_vars_optimizer.vala"
				_tmp42_ = _tmp41_;
#line 593 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp40_);
#line 593 "../src/file_func_vars_optimizer.vala"
				target = _tmp42_;
#line 594 "../src/file_func_vars_optimizer.vala"
				_tmp43_ = target;
#line 594 "../src/file_func_vars_optimizer.vala"
				if (!g_str_has_prefix (_tmp43_, "$")) {
#line 595 "../src/file_func_vars_optimizer.vala"
					_g_free0 (target);
#line 595 "../src/file_func_vars_optimizer.vala"
					continue;
#line 6321 "file_func_vars_optimizer.c"
				}
#line 597 "../src/file_func_vars_optimizer.vala"
				_tmp44_ = output;
#line 597 "../src/file_func_vars_optimizer.vala"
				if (_tmp44_->len > ((gssize) 0)) {
#line 6327 "file_func_vars_optimizer.c"
					GString* _tmp45_;
#line 598 "../src/file_func_vars_optimizer.vala"
					_tmp45_ = output;
#line 598 "../src/file_func_vars_optimizer.vala"
					g_string_append (_tmp45_, "\n");
#line 6333 "file_func_vars_optimizer.c"
				}
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp47_ = values;
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp48_ = gee_abstract_list_get ((GeeAbstractList*) _tmp47_, i);
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp49_ = (gchar*) _tmp48_;
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp50_ = string_strip (_tmp49_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp51_ = _tmp50_;
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp52_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp51_, php_line_number, "", &_inner_error0_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp53_ = _tmp52_;
#line 600 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp51_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp49_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp46_ = _tmp53_;
#line 600 "../src/file_func_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 600 "../src/file_func_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 600 "../src/file_func_vars_optimizer.vala"
					_g_free0 (target);
#line 600 "../src/file_func_vars_optimizer.vala"
					_g_string_free0 (output);
#line 600 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (values);
#line 600 "../src/file_func_vars_optimizer.vala"
					_g_object_unref0 (targets);
#line 600 "../src/file_func_vars_optimizer.vala"
					_g_free0 (rest);
#line 600 "../src/file_func_vars_optimizer.vala"
					return NULL;
#line 6371 "file_func_vars_optimizer.c"
				}
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp54_ = output;
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp55_ = target;
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp56_ = string_substring (_tmp55_, (glong) 1, (glong) -1);
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp57_ = _tmp56_;
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp58_ = string_strip (_tmp57_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_tmp59_ = _tmp58_;
#line 600 "../src/file_func_vars_optimizer.vala"
				g_string_append_printf (_tmp54_, "%s = %s;", _tmp59_, _tmp46_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp59_);
#line 600 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp57_);
#line 592 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp46_);
#line 592 "../src/file_func_vars_optimizer.vala"
				_g_free0 (target);
#line 6395 "file_func_vars_optimizer.c"
			}
		}
	}
#line 602 "../src/file_func_vars_optimizer.vala"
	_tmp60_ = output;
#line 602 "../src/file_func_vars_optimizer.vala"
	_tmp61_ = _tmp60_->str;
#line 602 "../src/file_func_vars_optimizer.vala"
	_tmp62_ = g_strdup (_tmp61_);
#line 602 "../src/file_func_vars_optimizer.vala"
	result = _tmp62_;
#line 602 "../src/file_func_vars_optimizer.vala"
	_g_string_free0 (output);
#line 602 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (values);
#line 602 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (targets);
#line 602 "../src/file_func_vars_optimizer.vala"
	_g_free0 (rest);
#line 602 "../src/file_func_vars_optimizer.vala"
	return result;
#line 6417 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_convert_native_expression (PhpToValaFileFuncVarsOptimizer* self,
                                                                const gchar* expression,
                                                                gint php_line_number,
                                                                const gchar* expected_type,
                                                                GError** error)
{
	gchar* clean = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp3_;
	gboolean _tmp5_ = FALSE;
	const gchar* _tmp6_;
	gboolean _tmp18_ = FALSE;
	const gchar* _tmp19_;
	gchar* native_division = NULL;
	const gchar* _tmp39_;
	gchar* _tmp40_;
	const gchar* _tmp41_;
	gchar* native_comparison = NULL;
	const gchar* _tmp42_;
	gchar* _tmp43_;
	const gchar* _tmp44_;
	const gchar* _tmp45_;
	gchar* converted = NULL;
	PhpToValaTranspiler* _tmp74_;
	const gchar* _tmp75_;
	gchar* _tmp76_;
	gboolean _tmp77_ = FALSE;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 605 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 605 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 605 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expected_type != NULL, NULL);
#line 606 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = string_strip (expression);
#line 606 "../src/file_func_vars_optimizer.vala"
	clean = _tmp0_;
#line 607 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = clean;
#line 607 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (_tmp1_, "true") == 0) {
#line 6465 "file_func_vars_optimizer.c"
		gchar* _tmp2_;
#line 608 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = g_strdup ("true");
#line 608 "../src/file_func_vars_optimizer.vala"
		result = _tmp2_;
#line 608 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 608 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6475 "file_func_vars_optimizer.c"
	}
#line 610 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = clean;
#line 610 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (_tmp3_, "false") == 0) {
#line 6481 "file_func_vars_optimizer.c"
		gchar* _tmp4_;
#line 611 "../src/file_func_vars_optimizer.vala"
		_tmp4_ = g_strdup ("false");
#line 611 "../src/file_func_vars_optimizer.vala"
		result = _tmp4_;
#line 611 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 611 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6491 "file_func_vars_optimizer.c"
	}
#line 613 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = clean;
#line 613 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (_tmp6_, "microtime(true)") == 0) {
#line 613 "../src/file_func_vars_optimizer.vala"
		_tmp5_ = TRUE;
#line 6499 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp7_;
#line 613 "../src/file_func_vars_optimizer.vala"
		_tmp7_ = clean;
#line 613 "../src/file_func_vars_optimizer.vala"
		_tmp5_ = g_strcmp0 (_tmp7_, "microtime (true)") == 0;
#line 6506 "file_func_vars_optimizer.c"
	}
#line 613 "../src/file_func_vars_optimizer.vala"
	if (_tmp5_) {
#line 6510 "file_func_vars_optimizer.c"
		gchar* _tmp8_ = NULL;
		PhpToValaTranspiler* _tmp9_;
		gchar* _tmp10_;
		PhpToValaTranspiler* _tmp11_;
		gchar* _tmp12_;
		gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
		gchar* _tmp17_;
#line 615 "../src/file_func_vars_optimizer.vala"
		_tmp9_ = self->priv->transpiler;
#line 615 "../src/file_func_vars_optimizer.vala"
		_tmp10_ = php_to_vala_transpiler_map_php_runtime_function_name (_tmp9_, "microtime", "microtime_float_static", php_line_number, &_inner_error0_);
#line 615 "../src/file_func_vars_optimizer.vala"
		_tmp8_ = _tmp10_;
#line 615 "../src/file_func_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 615 "../src/file_func_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 615 "../src/file_func_vars_optimizer.vala"
			_g_free0 (clean);
#line 615 "../src/file_func_vars_optimizer.vala"
			return NULL;
#line 6535 "file_func_vars_optimizer.c"
		}
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp11_ = self->priv->transpiler;
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp12_ = php_to_vala_transpiler_source_location_args (_tmp11_, php_line_number);
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp13_ = _tmp12_;
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp14_ = string_substring (_tmp13_, (glong) 2, (glong) -1);
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp15_ = _tmp14_;
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp16_ = g_strdup_printf ("%s (%s)", _tmp8_, _tmp15_);
#line 614 "../src/file_func_vars_optimizer.vala"
		_tmp17_ = _tmp16_;
#line 614 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp15_);
#line 614 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp13_);
#line 614 "../src/file_func_vars_optimizer.vala"
		result = _tmp17_;
#line 614 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp8_);
#line 614 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 614 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6563 "file_func_vars_optimizer.c"
	}
#line 619 "../src/file_func_vars_optimizer.vala"
	_tmp19_ = clean;
#line 619 "../src/file_func_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp19_, "round(")) {
#line 619 "../src/file_func_vars_optimizer.vala"
		_tmp18_ = TRUE;
#line 6571 "file_func_vars_optimizer.c"
	} else {
		const gchar* _tmp20_;
#line 619 "../src/file_func_vars_optimizer.vala"
		_tmp20_ = clean;
#line 619 "../src/file_func_vars_optimizer.vala"
		_tmp18_ = g_str_has_prefix (_tmp20_, "round (");
#line 6578 "file_func_vars_optimizer.c"
	}
#line 619 "../src/file_func_vars_optimizer.vala"
	if (_tmp18_) {
#line 6582 "file_func_vars_optimizer.c"
		gint open_index = 0;
		const gchar* _tmp21_;
		gint close_index = 0;
		const gchar* _tmp22_;
		gchar* inner = NULL;
		const gchar* _tmp23_;
		gchar* _tmp24_;
		gchar* _tmp25_ = NULL;
		PhpToValaTranspiler* _tmp26_;
		gchar* _tmp27_;
		gchar* _tmp28_ = NULL;
		const gchar* _tmp29_;
		gchar* _tmp30_;
		PhpToValaTranspiler* _tmp31_;
		gchar* _tmp32_;
		gchar* _tmp33_;
		PhpToValaTranspiler* _tmp34_;
		gchar* _tmp35_;
		gchar* _tmp36_;
		gchar* _tmp37_;
		gchar* _tmp38_;
#line 620 "../src/file_func_vars_optimizer.vala"
		_tmp21_ = clean;
#line 620 "../src/file_func_vars_optimizer.vala"
		open_index = string_index_of (_tmp21_, "(", 0);
#line 621 "../src/file_func_vars_optimizer.vala"
		_tmp22_ = clean;
#line 621 "../src/file_func_vars_optimizer.vala"
		close_index = php_to_vala_transpiler_find_matching_paren (_tmp22_, open_index);
#line 622 "../src/file_func_vars_optimizer.vala"
		_tmp23_ = clean;
#line 622 "../src/file_func_vars_optimizer.vala"
		_tmp24_ = string_substring (_tmp23_, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 622 "../src/file_func_vars_optimizer.vala"
		inner = _tmp24_;
#line 624 "../src/file_func_vars_optimizer.vala"
		_tmp26_ = self->priv->transpiler;
#line 624 "../src/file_func_vars_optimizer.vala"
		_tmp27_ = php_to_vala_transpiler_map_php_function_name (_tmp26_, "round", php_line_number, &_inner_error0_);
#line 624 "../src/file_func_vars_optimizer.vala"
		_tmp25_ = _tmp27_;
#line 624 "../src/file_func_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 624 "../src/file_func_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 624 "../src/file_func_vars_optimizer.vala"
			_g_free0 (inner);
#line 624 "../src/file_func_vars_optimizer.vala"
			_g_free0 (clean);
#line 624 "../src/file_func_vars_optimizer.vala"
			return NULL;
#line 6634 "file_func_vars_optimizer.c"
		}
#line 625 "../src/file_func_vars_optimizer.vala"
		_tmp29_ = inner;
#line 625 "../src/file_func_vars_optimizer.vala"
		_tmp30_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp29_, php_line_number, "double", &_inner_error0_);
#line 625 "../src/file_func_vars_optimizer.vala"
		_tmp28_ = _tmp30_;
#line 625 "../src/file_func_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 625 "../src/file_func_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 625 "../src/file_func_vars_optimizer.vala"
			_g_free0 (_tmp25_);
#line 625 "../src/file_func_vars_optimizer.vala"
			_g_free0 (inner);
#line 625 "../src/file_func_vars_optimizer.vala"
			_g_free0 (clean);
#line 625 "../src/file_func_vars_optimizer.vala"
			return NULL;
#line 6654 "file_func_vars_optimizer.c"
		}
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp31_ = self->priv->transpiler;
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp32_ = php_to_vala_transpiler_enum_prefix_for_function (_tmp31_, "round");
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp33_ = _tmp32_;
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp34_ = self->priv->transpiler;
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp35_ = php_to_vala_transpiler_source_location_args (_tmp34_, php_line_number);
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp36_ = _tmp35_;
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp37_ = g_strdup_printf ("%s (%s, 0, %s.RoundMode.HALF_UP%s)", _tmp25_, _tmp28_, _tmp33_, _tmp36_);
#line 623 "../src/file_func_vars_optimizer.vala"
		_tmp38_ = _tmp37_;
#line 623 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp36_);
#line 623 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp33_);
#line 623 "../src/file_func_vars_optimizer.vala"
		result = _tmp38_;
#line 623 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp28_);
#line 623 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp25_);
#line 623 "../src/file_func_vars_optimizer.vala"
		_g_free0 (inner);
#line 623 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 623 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6688 "file_func_vars_optimizer.c"
	}
#line 631 "../src/file_func_vars_optimizer.vala"
	_tmp39_ = clean;
#line 631 "../src/file_func_vars_optimizer.vala"
	_tmp40_ = php_to_vala_file_func_vars_optimizer_convert_native_division_expression (self, _tmp39_, php_line_number, &_inner_error0_);
#line 631 "../src/file_func_vars_optimizer.vala"
	native_division = _tmp40_;
#line 631 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 631 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 631 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 631 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 6704 "file_func_vars_optimizer.c"
	}
#line 632 "../src/file_func_vars_optimizer.vala"
	_tmp41_ = native_division;
#line 632 "../src/file_func_vars_optimizer.vala"
	if (_tmp41_ != NULL) {
#line 633 "../src/file_func_vars_optimizer.vala"
		result = native_division;
#line 633 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 633 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6716 "file_func_vars_optimizer.c"
	}
#line 636 "../src/file_func_vars_optimizer.vala"
	_tmp42_ = clean;
#line 636 "../src/file_func_vars_optimizer.vala"
	_tmp43_ = php_to_vala_file_func_vars_optimizer_convert_native_comparison_expression (self, _tmp42_, php_line_number, &_inner_error0_);
#line 636 "../src/file_func_vars_optimizer.vala"
	native_comparison = _tmp43_;
#line 636 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 636 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 636 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_division);
#line 636 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 636 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 6734 "file_func_vars_optimizer.c"
	}
#line 637 "../src/file_func_vars_optimizer.vala"
	_tmp44_ = native_comparison;
#line 637 "../src/file_func_vars_optimizer.vala"
	if (_tmp44_ != NULL) {
#line 638 "../src/file_func_vars_optimizer.vala"
		result = native_comparison;
#line 638 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_division);
#line 638 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 638 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6748 "file_func_vars_optimizer.c"
	}
#line 641 "../src/file_func_vars_optimizer.vala"
	_tmp45_ = clean;
#line 641 "../src/file_func_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp45_, "$")) {
#line 6754 "file_func_vars_optimizer.c"
		gchar* variable_name = NULL;
		const gchar* _tmp46_;
		gchar* _tmp47_;
		gchar* _tmp48_;
		gchar* _tmp49_;
		gchar* _tmp50_;
		PhpToValaTranspiler* _tmp51_;
		GeeHashMap* _tmp52_;
		const gchar* _tmp53_;
#line 642 "../src/file_func_vars_optimizer.vala"
		_tmp46_ = clean;
#line 642 "../src/file_func_vars_optimizer.vala"
		_tmp47_ = string_substring (_tmp46_, (glong) 1, (glong) -1);
#line 642 "../src/file_func_vars_optimizer.vala"
		_tmp48_ = _tmp47_;
#line 642 "../src/file_func_vars_optimizer.vala"
		_tmp49_ = string_strip (_tmp48_);
#line 642 "../src/file_func_vars_optimizer.vala"
		_tmp50_ = _tmp49_;
#line 642 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp48_);
#line 642 "../src/file_func_vars_optimizer.vala"
		variable_name = _tmp50_;
#line 643 "../src/file_func_vars_optimizer.vala"
		_tmp51_ = self->priv->transpiler;
#line 643 "../src/file_func_vars_optimizer.vala"
		_tmp52_ = _tmp51_->variable_types;
#line 643 "../src/file_func_vars_optimizer.vala"
		_tmp53_ = variable_name;
#line 643 "../src/file_func_vars_optimizer.vala"
		if (gee_abstract_map_has_key ((GeeAbstractMap*) _tmp52_, _tmp53_)) {
#line 644 "../src/file_func_vars_optimizer.vala"
			result = variable_name;
#line 644 "../src/file_func_vars_optimizer.vala"
			_g_free0 (native_comparison);
#line 644 "../src/file_func_vars_optimizer.vala"
			_g_free0 (native_division);
#line 644 "../src/file_func_vars_optimizer.vala"
			_g_free0 (clean);
#line 644 "../src/file_func_vars_optimizer.vala"
			return result;
#line 6796 "file_func_vars_optimizer.c"
		}
#line 641 "../src/file_func_vars_optimizer.vala"
		_g_free0 (variable_name);
#line 6800 "file_func_vars_optimizer.c"
	}
	{
		GeeIterator* _function_name_it = NULL;
		PhpToValaTranspiler* _tmp54_;
		GeeHashMap* _tmp55_;
		GeeSet* _tmp56_;
		GeeSet* _tmp57_;
		GeeSet* _tmp58_;
		GeeIterator* _tmp59_;
		GeeIterator* _tmp60_;
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp54_ = self->priv->transpiler;
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp55_ = _tmp54_->local_functions;
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp56_ = gee_abstract_map_get_keys ((GeeAbstractMap*) _tmp55_);
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp57_ = _tmp56_;
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp58_ = _tmp57_;
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp59_ = gee_iterable_iterator ((GeeIterable*) _tmp58_);
#line 648 "../src/file_func_vars_optimizer.vala"
		_tmp60_ = _tmp59_;
#line 648 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (_tmp58_);
#line 648 "../src/file_func_vars_optimizer.vala"
		_function_name_it = _tmp60_;
#line 648 "../src/file_func_vars_optimizer.vala"
		while (TRUE) {
#line 6831 "file_func_vars_optimizer.c"
			GeeIterator* _tmp61_;
			gchar* function_name = NULL;
			GeeIterator* _tmp62_;
			gpointer _tmp63_;
			LocalFunction* target = NULL;
			PhpToValaTranspiler* _tmp64_;
			GeeHashMap* _tmp65_;
			const gchar* _tmp66_;
			gpointer _tmp67_;
			gboolean _tmp68_ = FALSE;
			LocalFunction* _tmp69_;
			const gchar* _tmp71_;
			LocalFunction* _tmp72_;
			gchar* _tmp73_;
#line 648 "../src/file_func_vars_optimizer.vala"
			_tmp61_ = _function_name_it;
#line 648 "../src/file_func_vars_optimizer.vala"
			if (!gee_iterator_next (_tmp61_)) {
#line 648 "../src/file_func_vars_optimizer.vala"
				break;
#line 6852 "file_func_vars_optimizer.c"
			}
#line 648 "../src/file_func_vars_optimizer.vala"
			_tmp62_ = _function_name_it;
#line 648 "../src/file_func_vars_optimizer.vala"
			_tmp63_ = gee_iterator_get (_tmp62_);
#line 648 "../src/file_func_vars_optimizer.vala"
			function_name = (gchar*) _tmp63_;
#line 649 "../src/file_func_vars_optimizer.vala"
			_tmp64_ = self->priv->transpiler;
#line 649 "../src/file_func_vars_optimizer.vala"
			_tmp65_ = _tmp64_->local_functions;
#line 649 "../src/file_func_vars_optimizer.vala"
			_tmp66_ = function_name;
#line 649 "../src/file_func_vars_optimizer.vala"
			_tmp67_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp65_, _tmp66_);
#line 649 "../src/file_func_vars_optimizer.vala"
			target = (LocalFunction*) _tmp67_;
#line 650 "../src/file_func_vars_optimizer.vala"
			_tmp69_ = target;
#line 650 "../src/file_func_vars_optimizer.vala"
			if (_tmp69_ == NULL) {
#line 650 "../src/file_func_vars_optimizer.vala"
				_tmp68_ = TRUE;
#line 6876 "file_func_vars_optimizer.c"
			} else {
				LocalFunction* _tmp70_;
#line 650 "../src/file_func_vars_optimizer.vala"
				_tmp70_ = target;
#line 650 "../src/file_func_vars_optimizer.vala"
				_tmp68_ = !php_to_vala_file_func_vars_optimizer_can_emit (self, _tmp70_);
#line 6883 "file_func_vars_optimizer.c"
			}
#line 650 "../src/file_func_vars_optimizer.vala"
			if (_tmp68_) {
#line 651 "../src/file_func_vars_optimizer.vala"
				_g_object_unref0 (target);
#line 651 "../src/file_func_vars_optimizer.vala"
				_g_free0 (function_name);
#line 651 "../src/file_func_vars_optimizer.vala"
				continue;
#line 6893 "file_func_vars_optimizer.c"
			}
#line 653 "../src/file_func_vars_optimizer.vala"
			_tmp71_ = clean;
#line 653 "../src/file_func_vars_optimizer.vala"
			_tmp72_ = target;
#line 653 "../src/file_func_vars_optimizer.vala"
			_tmp73_ = php_to_vala_file_func_vars_optimizer_replace_inline_local_function_call (self, _tmp71_, _tmp72_, php_line_number);
#line 653 "../src/file_func_vars_optimizer.vala"
			_g_free0 (clean);
#line 653 "../src/file_func_vars_optimizer.vala"
			clean = _tmp73_;
#line 648 "../src/file_func_vars_optimizer.vala"
			_g_object_unref0 (target);
#line 648 "../src/file_func_vars_optimizer.vala"
			_g_free0 (function_name);
#line 6909 "file_func_vars_optimizer.c"
		}
#line 648 "../src/file_func_vars_optimizer.vala"
		_g_object_unref0 (_function_name_it);
#line 6913 "file_func_vars_optimizer.c"
	}
#line 656 "../src/file_func_vars_optimizer.vala"
	_tmp74_ = self->priv->transpiler;
#line 656 "../src/file_func_vars_optimizer.vala"
	_tmp75_ = clean;
#line 656 "../src/file_func_vars_optimizer.vala"
	_tmp76_ = php_to_vala_transpiler_convert_expression (_tmp74_, _tmp75_, php_line_number, &_inner_error0_);
#line 656 "../src/file_func_vars_optimizer.vala"
	converted = _tmp76_;
#line 656 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 656 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 656 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_comparison);
#line 656 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_division);
#line 656 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 656 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 6935 "file_func_vars_optimizer.c"
	}
#line 657 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (expected_type, "double") == 0) {
#line 6939 "file_func_vars_optimizer.c"
		const gchar* _tmp78_;
#line 657 "../src/file_func_vars_optimizer.vala"
		_tmp78_ = converted;
#line 657 "../src/file_func_vars_optimizer.vala"
		_tmp77_ = string_index_of (_tmp78_, "/", 0) >= 0;
#line 6945 "file_func_vars_optimizer.c"
	} else {
#line 657 "../src/file_func_vars_optimizer.vala"
		_tmp77_ = FALSE;
#line 6949 "file_func_vars_optimizer.c"
	}
#line 657 "../src/file_func_vars_optimizer.vala"
	if (_tmp77_) {
#line 658 "../src/file_func_vars_optimizer.vala"
		result = converted;
#line 658 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_comparison);
#line 658 "../src/file_func_vars_optimizer.vala"
		_g_free0 (native_division);
#line 658 "../src/file_func_vars_optimizer.vala"
		_g_free0 (clean);
#line 658 "../src/file_func_vars_optimizer.vala"
		return result;
#line 6963 "file_func_vars_optimizer.c"
	}
#line 660 "../src/file_func_vars_optimizer.vala"
	result = converted;
#line 660 "../src/file_func_vars_optimizer.vala"
	_g_free0 (native_comparison);
#line 660 "../src/file_func_vars_optimizer.vala"
	_g_free0 (native_division);
#line 660 "../src/file_func_vars_optimizer.vala"
	_g_free0 (clean);
#line 660 "../src/file_func_vars_optimizer.vala"
	return result;
#line 6975 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_convert_native_comparison_expression (PhpToValaFileFuncVarsOptimizer* self,
                                                                           const gchar* expression,
                                                                           gint php_line_number,
                                                                           GError** error)
{
	gchar** operators = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar** _tmp8_;
	gint operators_length1;
	gint _operators_size_;
	gchar** _tmp9_;
	gint _tmp9__length1;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 663 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 663 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = g_strdup ("!==");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = g_strdup ("===");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = g_strdup (">=");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = g_strdup ("<=");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = g_strdup ("!=");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = g_strdup ("==");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = g_strdup (">");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = g_strdup ("<");
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = g_new0 (gchar*, 8 + 1);
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[0] = _tmp0_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[1] = _tmp1_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[2] = _tmp2_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[3] = _tmp3_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[4] = _tmp4_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[5] = _tmp5_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[6] = _tmp6_;
#line 664 "../src/file_func_vars_optimizer.vala"
	_tmp8_[7] = _tmp7_;
#line 664 "../src/file_func_vars_optimizer.vala"
	operators = _tmp8_;
#line 664 "../src/file_func_vars_optimizer.vala"
	operators_length1 = 8;
#line 664 "../src/file_func_vars_optimizer.vala"
	_operators_size_ = operators_length1;
#line 665 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = operators;
#line 665 "../src/file_func_vars_optimizer.vala"
	_tmp9__length1 = operators_length1;
#line 7048 "file_func_vars_optimizer.c"
	{
		gchar** op_collection = NULL;
		gint op_collection_length1 = 0;
		gint _op_collection_size_ = 0;
		gint op_it = 0;
#line 665 "../src/file_func_vars_optimizer.vala"
		op_collection = _tmp9_;
#line 665 "../src/file_func_vars_optimizer.vala"
		op_collection_length1 = _tmp9__length1;
#line 665 "../src/file_func_vars_optimizer.vala"
		for (op_it = 0; op_it < op_collection_length1; op_it = op_it + 1) {
#line 7060 "file_func_vars_optimizer.c"
			gchar* _tmp10_;
			gchar* op = NULL;
#line 665 "../src/file_func_vars_optimizer.vala"
			_tmp10_ = g_strdup (op_collection[op_it]);
#line 665 "../src/file_func_vars_optimizer.vala"
			op = _tmp10_;
#line 7067 "file_func_vars_optimizer.c"
			{
				gint index = 0;
				const gchar* _tmp11_;
				gchar* left = NULL;
				gchar* _tmp12_;
				gchar* _tmp13_;
				gchar* _tmp14_;
				gchar* _tmp15_;
				gchar* right = NULL;
				const gchar* _tmp16_;
				gint _tmp17_;
				gint _tmp18_;
				gchar* _tmp19_;
				gchar* _tmp20_;
				gchar* _tmp21_;
				gchar* _tmp22_;
				const gchar* _tmp23_ = NULL;
				const gchar* _tmp24_;
				gchar* vala_op = NULL;
				gchar* _tmp28_;
				gchar* _tmp29_ = NULL;
				const gchar* _tmp30_;
				gchar* _tmp31_;
				gchar* _tmp32_ = NULL;
				const gchar* _tmp33_;
				gchar* _tmp34_;
				const gchar* _tmp35_;
				gchar* _tmp36_;
#line 666 "../src/file_func_vars_optimizer.vala"
				_tmp11_ = op;
#line 666 "../src/file_func_vars_optimizer.vala"
				index = php_to_vala_file_func_vars_optimizer_find_top_level_operator (self, expression, _tmp11_);
#line 667 "../src/file_func_vars_optimizer.vala"
				if (index <= 0) {
#line 668 "../src/file_func_vars_optimizer.vala"
					_g_free0 (op);
#line 668 "../src/file_func_vars_optimizer.vala"
					continue;
#line 7106 "file_func_vars_optimizer.c"
				}
#line 670 "../src/file_func_vars_optimizer.vala"
				_tmp12_ = string_substring (expression, (glong) 0, (glong) index);
#line 670 "../src/file_func_vars_optimizer.vala"
				_tmp13_ = _tmp12_;
#line 670 "../src/file_func_vars_optimizer.vala"
				_tmp14_ = string_strip (_tmp13_);
#line 670 "../src/file_func_vars_optimizer.vala"
				_tmp15_ = _tmp14_;
#line 670 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp13_);
#line 670 "../src/file_func_vars_optimizer.vala"
				left = _tmp15_;
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp16_ = op;
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp17_ = strlen (_tmp16_);
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp18_ = _tmp17_;
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp19_ = string_substring (expression, (glong) (index + _tmp18_), (glong) -1);
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp20_ = _tmp19_;
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp21_ = string_strip (_tmp20_);
#line 671 "../src/file_func_vars_optimizer.vala"
				_tmp22_ = _tmp21_;
#line 671 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp20_);
#line 671 "../src/file_func_vars_optimizer.vala"
				right = _tmp22_;
#line 672 "../src/file_func_vars_optimizer.vala"
				_tmp24_ = op;
#line 672 "../src/file_func_vars_optimizer.vala"
				if (g_strcmp0 (_tmp24_, "===") == 0) {
#line 672 "../src/file_func_vars_optimizer.vala"
					_tmp23_ = "==";
#line 7144 "file_func_vars_optimizer.c"
				} else {
					const gchar* _tmp25_ = NULL;
					const gchar* _tmp26_;
#line 672 "../src/file_func_vars_optimizer.vala"
					_tmp26_ = op;
#line 672 "../src/file_func_vars_optimizer.vala"
					if (g_strcmp0 (_tmp26_, "!==") == 0) {
#line 672 "../src/file_func_vars_optimizer.vala"
						_tmp25_ = "!=";
#line 7154 "file_func_vars_optimizer.c"
					} else {
						const gchar* _tmp27_;
#line 672 "../src/file_func_vars_optimizer.vala"
						_tmp27_ = op;
#line 672 "../src/file_func_vars_optimizer.vala"
						_tmp25_ = _tmp27_;
#line 7161 "file_func_vars_optimizer.c"
					}
#line 672 "../src/file_func_vars_optimizer.vala"
					_tmp23_ = _tmp25_;
#line 7165 "file_func_vars_optimizer.c"
				}
#line 672 "../src/file_func_vars_optimizer.vala"
				_tmp28_ = g_strdup (_tmp23_);
#line 672 "../src/file_func_vars_optimizer.vala"
				vala_op = _tmp28_;
#line 674 "../src/file_func_vars_optimizer.vala"
				_tmp30_ = left;
#line 674 "../src/file_func_vars_optimizer.vala"
				_tmp31_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp30_, php_line_number, "", &_inner_error0_);
#line 674 "../src/file_func_vars_optimizer.vala"
				_tmp29_ = _tmp31_;
#line 674 "../src/file_func_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 674 "../src/file_func_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 674 "../src/file_func_vars_optimizer.vala"
					_g_free0 (vala_op);
#line 674 "../src/file_func_vars_optimizer.vala"
					_g_free0 (right);
#line 674 "../src/file_func_vars_optimizer.vala"
					_g_free0 (left);
#line 674 "../src/file_func_vars_optimizer.vala"
					_g_free0 (op);
#line 674 "../src/file_func_vars_optimizer.vala"
					operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 674 "../src/file_func_vars_optimizer.vala"
					return NULL;
#line 7193 "file_func_vars_optimizer.c"
				}
#line 676 "../src/file_func_vars_optimizer.vala"
				_tmp33_ = right;
#line 676 "../src/file_func_vars_optimizer.vala"
				_tmp34_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp33_, php_line_number, "", &_inner_error0_);
#line 676 "../src/file_func_vars_optimizer.vala"
				_tmp32_ = _tmp34_;
#line 676 "../src/file_func_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 676 "../src/file_func_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 676 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp29_);
#line 676 "../src/file_func_vars_optimizer.vala"
					_g_free0 (vala_op);
#line 676 "../src/file_func_vars_optimizer.vala"
					_g_free0 (right);
#line 676 "../src/file_func_vars_optimizer.vala"
					_g_free0 (left);
#line 676 "../src/file_func_vars_optimizer.vala"
					_g_free0 (op);
#line 676 "../src/file_func_vars_optimizer.vala"
					operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 676 "../src/file_func_vars_optimizer.vala"
					return NULL;
#line 7219 "file_func_vars_optimizer.c"
				}
#line 673 "../src/file_func_vars_optimizer.vala"
				_tmp35_ = vala_op;
#line 673 "../src/file_func_vars_optimizer.vala"
				_tmp36_ = g_strdup_printf ("%s %s %s", _tmp29_, _tmp35_, _tmp32_);
#line 673 "../src/file_func_vars_optimizer.vala"
				result = _tmp36_;
#line 673 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp32_);
#line 673 "../src/file_func_vars_optimizer.vala"
				_g_free0 (_tmp29_);
#line 673 "../src/file_func_vars_optimizer.vala"
				_g_free0 (vala_op);
#line 673 "../src/file_func_vars_optimizer.vala"
				_g_free0 (right);
#line 673 "../src/file_func_vars_optimizer.vala"
				_g_free0 (left);
#line 673 "../src/file_func_vars_optimizer.vala"
				_g_free0 (op);
#line 673 "../src/file_func_vars_optimizer.vala"
				operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 673 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7243 "file_func_vars_optimizer.c"
			}
		}
	}
#line 679 "../src/file_func_vars_optimizer.vala"
	result = NULL;
#line 679 "../src/file_func_vars_optimizer.vala"
	operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 679 "../src/file_func_vars_optimizer.vala"
	return result;
#line 7253 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_convert_native_division_expression (PhpToValaFileFuncVarsOptimizer* self,
                                                                         const gchar* expression,
                                                                         gint php_line_number,
                                                                         GError** error)
{
	gint index = 0;
	gchar* left = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* right = NULL;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_ = NULL;
	const gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_ = NULL;
	const gchar* _tmp12_;
	gchar* _tmp13_;
	PhpToValaTranspiler* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 682 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 682 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 683 "../src/file_func_vars_optimizer.vala"
	index = php_to_vala_file_func_vars_optimizer_find_top_level_operator (self, expression, "/");
#line 684 "../src/file_func_vars_optimizer.vala"
	if (index <= 0) {
#line 685 "../src/file_func_vars_optimizer.vala"
		result = NULL;
#line 685 "../src/file_func_vars_optimizer.vala"
		return result;
#line 7298 "file_func_vars_optimizer.c"
	}
#line 687 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = string_substring (expression, (glong) 0, (glong) index);
#line 687 "../src/file_func_vars_optimizer.vala"
	_tmp1_ = _tmp0_;
#line 687 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = string_strip (_tmp1_);
#line 687 "../src/file_func_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 687 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp1_);
#line 687 "../src/file_func_vars_optimizer.vala"
	left = _tmp3_;
#line 688 "../src/file_func_vars_optimizer.vala"
	_tmp4_ = string_substring (expression, (glong) (index + 1), (glong) -1);
#line 688 "../src/file_func_vars_optimizer.vala"
	_tmp5_ = _tmp4_;
#line 688 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = string_strip (_tmp5_);
#line 688 "../src/file_func_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 688 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp5_);
#line 688 "../src/file_func_vars_optimizer.vala"
	right = _tmp7_;
#line 690 "../src/file_func_vars_optimizer.vala"
	_tmp9_ = left;
#line 690 "../src/file_func_vars_optimizer.vala"
	_tmp10_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp9_, php_line_number, "double", &_inner_error0_);
#line 690 "../src/file_func_vars_optimizer.vala"
	_tmp8_ = _tmp10_;
#line 690 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 690 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 690 "../src/file_func_vars_optimizer.vala"
		_g_free0 (right);
#line 690 "../src/file_func_vars_optimizer.vala"
		_g_free0 (left);
#line 690 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 7340 "file_func_vars_optimizer.c"
	}
#line 691 "../src/file_func_vars_optimizer.vala"
	_tmp12_ = right;
#line 691 "../src/file_func_vars_optimizer.vala"
	_tmp13_ = php_to_vala_file_func_vars_optimizer_convert_native_expression (self, _tmp12_, php_line_number, "double", &_inner_error0_);
#line 691 "../src/file_func_vars_optimizer.vala"
	_tmp11_ = _tmp13_;
#line 691 "../src/file_func_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 691 "../src/file_func_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 691 "../src/file_func_vars_optimizer.vala"
		_g_free0 (_tmp8_);
#line 691 "../src/file_func_vars_optimizer.vala"
		_g_free0 (right);
#line 691 "../src/file_func_vars_optimizer.vala"
		_g_free0 (left);
#line 691 "../src/file_func_vars_optimizer.vala"
		return NULL;
#line 7360 "file_func_vars_optimizer.c"
	}
#line 689 "../src/file_func_vars_optimizer.vala"
	_tmp14_ = self->priv->transpiler;
#line 689 "../src/file_func_vars_optimizer.vala"
	_tmp15_ = php_to_vala_transpiler_source_location_args (_tmp14_, php_line_number);
#line 689 "../src/file_func_vars_optimizer.vala"
	_tmp16_ = _tmp15_;
#line 689 "../src/file_func_vars_optimizer.vala"
	_tmp17_ = g_strdup_printf ("Php.div_static (%s, %s%s)", _tmp8_, _tmp11_, _tmp16_);
#line 689 "../src/file_func_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 689 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp16_);
#line 689 "../src/file_func_vars_optimizer.vala"
	result = _tmp18_;
#line 689 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp11_);
#line 689 "../src/file_func_vars_optimizer.vala"
	_g_free0 (_tmp8_);
#line 689 "../src/file_func_vars_optimizer.vala"
	_g_free0 (right);
#line 689 "../src/file_func_vars_optimizer.vala"
	_g_free0 (left);
#line 689 "../src/file_func_vars_optimizer.vala"
	return result;
#line 7386 "file_func_vars_optimizer.c"
}

static gint
php_to_vala_file_func_vars_optimizer_find_top_level_operator (PhpToValaFileFuncVarsOptimizer* self,
                                                              const gchar* expression,
                                                              const gchar* op)
{
	gint depth = 0;
	gboolean in_string = FALSE;
	gchar string_quote = '\0';
	gint result;
#line 696 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, -1);
#line 696 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, -1);
#line 696 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (op != NULL, -1);
#line 697 "../src/file_func_vars_optimizer.vala"
	depth = 0;
#line 698 "../src/file_func_vars_optimizer.vala"
	in_string = FALSE;
#line 699 "../src/file_func_vars_optimizer.vala"
	string_quote = '\0';
#line 7410 "file_func_vars_optimizer.c"
	{
		gint i = 0;
#line 700 "../src/file_func_vars_optimizer.vala"
		i = 0;
#line 7415 "file_func_vars_optimizer.c"
		{
			gboolean _tmp0_ = FALSE;
#line 700 "../src/file_func_vars_optimizer.vala"
			_tmp0_ = TRUE;
#line 700 "../src/file_func_vars_optimizer.vala"
			while (TRUE) {
#line 7422 "file_func_vars_optimizer.c"
				gint _tmp2_;
				gint _tmp3_;
				gint _tmp4_;
				gint _tmp5_;
				gchar c = '\0';
				gboolean _tmp8_ = FALSE;
				gboolean _tmp9_ = FALSE;
				gboolean _tmp10_ = FALSE;
				gboolean _tmp12_ = FALSE;
				gboolean _tmp13_ = FALSE;
				gboolean _tmp15_ = FALSE;
#line 700 "../src/file_func_vars_optimizer.vala"
				if (!_tmp0_) {
#line 7436 "file_func_vars_optimizer.c"
					gint _tmp1_;
#line 700 "../src/file_func_vars_optimizer.vala"
					_tmp1_ = i;
#line 700 "../src/file_func_vars_optimizer.vala"
					i = _tmp1_ + 1;
#line 7442 "file_func_vars_optimizer.c"
				}
#line 700 "../src/file_func_vars_optimizer.vala"
				_tmp0_ = FALSE;
#line 700 "../src/file_func_vars_optimizer.vala"
				_tmp2_ = strlen (expression);
#line 700 "../src/file_func_vars_optimizer.vala"
				_tmp3_ = _tmp2_;
#line 700 "../src/file_func_vars_optimizer.vala"
				_tmp4_ = strlen (op);
#line 700 "../src/file_func_vars_optimizer.vala"
				_tmp5_ = _tmp4_;
#line 700 "../src/file_func_vars_optimizer.vala"
				if (!(i <= (_tmp3_ - _tmp5_))) {
#line 700 "../src/file_func_vars_optimizer.vala"
					break;
#line 7458 "file_func_vars_optimizer.c"
				}
#line 701 "../src/file_func_vars_optimizer.vala"
				c = string_get (expression, (glong) i);
#line 702 "../src/file_func_vars_optimizer.vala"
				if (in_string) {
#line 7464 "file_func_vars_optimizer.c"
					gboolean _tmp6_ = FALSE;
#line 703 "../src/file_func_vars_optimizer.vala"
					if (c == string_quote) {
#line 7468 "file_func_vars_optimizer.c"
						gboolean _tmp7_ = FALSE;
#line 703 "../src/file_func_vars_optimizer.vala"
						if (i == 0) {
#line 703 "../src/file_func_vars_optimizer.vala"
							_tmp7_ = TRUE;
#line 7474 "file_func_vars_optimizer.c"
						} else {
#line 703 "../src/file_func_vars_optimizer.vala"
							_tmp7_ = string_get (expression, (glong) (i - 1)) != '\\';
#line 7478 "file_func_vars_optimizer.c"
						}
#line 703 "../src/file_func_vars_optimizer.vala"
						_tmp6_ = _tmp7_;
#line 7482 "file_func_vars_optimizer.c"
					} else {
#line 703 "../src/file_func_vars_optimizer.vala"
						_tmp6_ = FALSE;
#line 7486 "file_func_vars_optimizer.c"
					}
#line 703 "../src/file_func_vars_optimizer.vala"
					if (_tmp6_) {
#line 704 "../src/file_func_vars_optimizer.vala"
						in_string = FALSE;
#line 7492 "file_func_vars_optimizer.c"
					}
#line 706 "../src/file_func_vars_optimizer.vala"
					continue;
#line 7496 "file_func_vars_optimizer.c"
				}
#line 708 "../src/file_func_vars_optimizer.vala"
				if (c == '\'') {
#line 708 "../src/file_func_vars_optimizer.vala"
					_tmp8_ = TRUE;
#line 7502 "file_func_vars_optimizer.c"
				} else {
#line 708 "../src/file_func_vars_optimizer.vala"
					_tmp8_ = c == '"';
#line 7506 "file_func_vars_optimizer.c"
				}
#line 708 "../src/file_func_vars_optimizer.vala"
				if (_tmp8_) {
#line 709 "../src/file_func_vars_optimizer.vala"
					in_string = TRUE;
#line 710 "../src/file_func_vars_optimizer.vala"
					string_quote = c;
#line 711 "../src/file_func_vars_optimizer.vala"
					continue;
#line 7516 "file_func_vars_optimizer.c"
				}
#line 713 "../src/file_func_vars_optimizer.vala"
				if (c == '(') {
#line 713 "../src/file_func_vars_optimizer.vala"
					_tmp10_ = TRUE;
#line 7522 "file_func_vars_optimizer.c"
				} else {
#line 713 "../src/file_func_vars_optimizer.vala"
					_tmp10_ = c == '[';
#line 7526 "file_func_vars_optimizer.c"
				}
#line 713 "../src/file_func_vars_optimizer.vala"
				if (_tmp10_) {
#line 713 "../src/file_func_vars_optimizer.vala"
					_tmp9_ = TRUE;
#line 7532 "file_func_vars_optimizer.c"
				} else {
#line 713 "../src/file_func_vars_optimizer.vala"
					_tmp9_ = c == '{';
#line 7536 "file_func_vars_optimizer.c"
				}
#line 713 "../src/file_func_vars_optimizer.vala"
				if (_tmp9_) {
#line 7540 "file_func_vars_optimizer.c"
					gint _tmp11_;
#line 714 "../src/file_func_vars_optimizer.vala"
					_tmp11_ = depth;
#line 714 "../src/file_func_vars_optimizer.vala"
					depth = _tmp11_ + 1;
#line 715 "../src/file_func_vars_optimizer.vala"
					continue;
#line 7548 "file_func_vars_optimizer.c"
				}
#line 717 "../src/file_func_vars_optimizer.vala"
				if (c == ')') {
#line 717 "../src/file_func_vars_optimizer.vala"
					_tmp13_ = TRUE;
#line 7554 "file_func_vars_optimizer.c"
				} else {
#line 717 "../src/file_func_vars_optimizer.vala"
					_tmp13_ = c == ']';
#line 7558 "file_func_vars_optimizer.c"
				}
#line 717 "../src/file_func_vars_optimizer.vala"
				if (_tmp13_) {
#line 717 "../src/file_func_vars_optimizer.vala"
					_tmp12_ = TRUE;
#line 7564 "file_func_vars_optimizer.c"
				} else {
#line 717 "../src/file_func_vars_optimizer.vala"
					_tmp12_ = c == '}';
#line 7568 "file_func_vars_optimizer.c"
				}
#line 717 "../src/file_func_vars_optimizer.vala"
				if (_tmp12_) {
#line 7572 "file_func_vars_optimizer.c"
					gint _tmp14_;
#line 718 "../src/file_func_vars_optimizer.vala"
					_tmp14_ = depth;
#line 718 "../src/file_func_vars_optimizer.vala"
					depth = _tmp14_ - 1;
#line 719 "../src/file_func_vars_optimizer.vala"
					continue;
#line 7580 "file_func_vars_optimizer.c"
				}
#line 721 "../src/file_func_vars_optimizer.vala"
				if (depth == 0) {
#line 7584 "file_func_vars_optimizer.c"
					gchar* _tmp16_;
					gchar* _tmp17_;
#line 721 "../src/file_func_vars_optimizer.vala"
					_tmp16_ = string_substring (expression, (glong) i, (glong) -1);
#line 721 "../src/file_func_vars_optimizer.vala"
					_tmp17_ = _tmp16_;
#line 721 "../src/file_func_vars_optimizer.vala"
					_tmp15_ = g_str_has_prefix (_tmp17_, op);
#line 721 "../src/file_func_vars_optimizer.vala"
					_g_free0 (_tmp17_);
#line 7595 "file_func_vars_optimizer.c"
				} else {
#line 721 "../src/file_func_vars_optimizer.vala"
					_tmp15_ = FALSE;
#line 7599 "file_func_vars_optimizer.c"
				}
#line 721 "../src/file_func_vars_optimizer.vala"
				if (_tmp15_) {
#line 722 "../src/file_func_vars_optimizer.vala"
					result = i;
#line 722 "../src/file_func_vars_optimizer.vala"
					return result;
#line 7607 "file_func_vars_optimizer.c"
				}
			}
		}
	}
#line 725 "../src/file_func_vars_optimizer.vala"
	result = -1;
#line 725 "../src/file_func_vars_optimizer.vala"
	return result;
#line 7616 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_infer_native_expression_type (PhpToValaFileFuncVarsOptimizer* self,
                                                                   const gchar* expression)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gchar* _tmp6_;
	gchar* result;
#line 728 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 728 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 729 "../src/file_func_vars_optimizer.vala"
	if (g_strcmp0 (expression, "true") == 0) {
#line 729 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 7637 "file_func_vars_optimizer.c"
	} else {
#line 729 "../src/file_func_vars_optimizer.vala"
		_tmp0_ = g_strcmp0 (expression, "false") == 0;
#line 7641 "file_func_vars_optimizer.c"
	}
#line 729 "../src/file_func_vars_optimizer.vala"
	if (_tmp0_) {
#line 7645 "file_func_vars_optimizer.c"
		gchar* _tmp1_;
#line 730 "../src/file_func_vars_optimizer.vala"
		_tmp1_ = g_strdup ("bool");
#line 730 "../src/file_func_vars_optimizer.vala"
		result = _tmp1_;
#line 730 "../src/file_func_vars_optimizer.vala"
		return result;
#line 7653 "file_func_vars_optimizer.c"
	}
#line 732 "../src/file_func_vars_optimizer.vala"
	if (string_index_of (expression, "Php.zval_to_double", 0) >= 0) {
#line 732 "../src/file_func_vars_optimizer.vala"
		_tmp4_ = TRUE;
#line 7659 "file_func_vars_optimizer.c"
	} else {
#line 733 "../src/file_func_vars_optimizer.vala"
		_tmp4_ = string_index_of (expression, "microtime_float_static", 0) >= 0;
#line 7663 "file_func_vars_optimizer.c"
	}
#line 732 "../src/file_func_vars_optimizer.vala"
	if (_tmp4_) {
#line 732 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = TRUE;
#line 7669 "file_func_vars_optimizer.c"
	} else {
#line 734 "../src/file_func_vars_optimizer.vala"
		_tmp3_ = string_index_of (expression, "round_static", 0) >= 0;
#line 7673 "file_func_vars_optimizer.c"
	}
#line 732 "../src/file_func_vars_optimizer.vala"
	if (_tmp3_) {
#line 732 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = TRUE;
#line 7679 "file_func_vars_optimizer.c"
	} else {
#line 735 "../src/file_func_vars_optimizer.vala"
		_tmp2_ = string_index_of (expression, "/", 0) >= 0;
#line 7683 "file_func_vars_optimizer.c"
	}
#line 732 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_) {
#line 7687 "file_func_vars_optimizer.c"
		gchar* _tmp5_;
#line 736 "../src/file_func_vars_optimizer.vala"
		_tmp5_ = g_strdup ("double");
#line 736 "../src/file_func_vars_optimizer.vala"
		result = _tmp5_;
#line 736 "../src/file_func_vars_optimizer.vala"
		return result;
#line 7695 "file_func_vars_optimizer.c"
	}
#line 738 "../src/file_func_vars_optimizer.vala"
	_tmp6_ = g_strdup ("int");
#line 738 "../src/file_func_vars_optimizer.vala"
	result = _tmp6_;
#line 738 "../src/file_func_vars_optimizer.vala"
	return result;
#line 7703 "file_func_vars_optimizer.c"
}

static gchar*
php_to_vala_file_func_vars_optimizer_zval_to_native_argument (PhpToValaFileFuncVarsOptimizer* self,
                                                              const gchar* parameter_name,
                                                              const gchar* native_type)
{
	const gchar* _tmp0_;
	GQuark _tmp2_ = 0U;
#line 742 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label0 = 0;
#line 742 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label1 = 0;
#line 742 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label2 = 0;
#line 742 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label3 = 0;
#line 7721 "file_func_vars_optimizer.c"
	gchar* result;
#line 741 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 741 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (parameter_name != NULL, NULL);
#line 741 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (native_type != NULL, NULL);
#line 742 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = native_type;
#line 742 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
#line 742 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("int")))) {
#line 742 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7737 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp3_;
#line 744 "../src/file_func_vars_optimizer.vala"
				_tmp3_ = g_strdup_printf ("Php.zval_to_int (%s)", parameter_name);
#line 744 "../src/file_func_vars_optimizer.vala"
				result = _tmp3_;
#line 744 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7747 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("double")))) {
#line 742 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7753 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp4_;
#line 746 "../src/file_func_vars_optimizer.vala"
				_tmp4_ = g_strdup_printf ("Php.zval_to_double (%s)", parameter_name);
#line 746 "../src/file_func_vars_optimizer.vala"
				result = _tmp4_;
#line 746 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7763 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string ("string")))) {
#line 742 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7769 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp5_;
#line 748 "../src/file_func_vars_optimizer.vala"
				_tmp5_ = g_strdup_printf ("Php.zval_to_string (%s)", parameter_name);
#line 748 "../src/file_func_vars_optimizer.vala"
				result = _tmp5_;
#line 748 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7779 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string ("bool")))) {
#line 742 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7785 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp6_;
#line 750 "../src/file_func_vars_optimizer.vala"
				_tmp6_ = g_strdup_printf ("Php.truthy (%s)", parameter_name);
#line 750 "../src/file_func_vars_optimizer.vala"
				result = _tmp6_;
#line 750 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7795 "file_func_vars_optimizer.c"
			}
		}
	} else {
#line 742 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7801 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp7_;
#line 752 "../src/file_func_vars_optimizer.vala"
				_tmp7_ = g_strdup (parameter_name);
#line 752 "../src/file_func_vars_optimizer.vala"
				result = _tmp7_;
#line 752 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7811 "file_func_vars_optimizer.c"
			}
		}
	}
}

static gchar*
php_to_vala_file_func_vars_optimizer_native_to_zval_return (PhpToValaFileFuncVarsOptimizer* self,
                                                            const gchar* expression,
                                                            const gchar* native_type)
{
	const gchar* _tmp0_;
	GQuark _tmp2_ = 0U;
#line 757 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label0 = 0;
#line 757 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label1 = 0;
#line 757 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label2 = 0;
#line 757 "../src/file_func_vars_optimizer.vala"
	static GQuark _tmp1_label3 = 0;
#line 7832 "file_func_vars_optimizer.c"
	gchar* result;
#line 756 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 756 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 756 "../src/file_func_vars_optimizer.vala"
	g_return_val_if_fail (native_type != NULL, NULL);
#line 757 "../src/file_func_vars_optimizer.vala"
	_tmp0_ = native_type;
#line 757 "../src/file_func_vars_optimizer.vala"
	_tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
#line 757 "../src/file_func_vars_optimizer.vala"
	if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("int")))) {
#line 757 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7848 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp3_;
#line 759 "../src/file_func_vars_optimizer.vala"
				_tmp3_ = g_strdup_printf ("Php.zval.integer (%s)", expression);
#line 759 "../src/file_func_vars_optimizer.vala"
				result = _tmp3_;
#line 759 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7858 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("double")))) {
#line 757 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7864 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp4_;
#line 761 "../src/file_func_vars_optimizer.vala"
				_tmp4_ = g_strdup_printf ("Php.zval.double_number (%s)", expression);
#line 761 "../src/file_func_vars_optimizer.vala"
				result = _tmp4_;
#line 761 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7874 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string ("string")))) {
#line 757 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7880 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp5_;
#line 763 "../src/file_func_vars_optimizer.vala"
				_tmp5_ = g_strdup_printf ("Php.zval.string_value (%s)", expression);
#line 763 "../src/file_func_vars_optimizer.vala"
				result = _tmp5_;
#line 763 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7890 "file_func_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string ("bool")))) {
#line 757 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7896 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp6_;
#line 765 "../src/file_func_vars_optimizer.vala"
				_tmp6_ = g_strdup_printf ("Php.zval.boolean (%s)", expression);
#line 765 "../src/file_func_vars_optimizer.vala"
				result = _tmp6_;
#line 765 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7906 "file_func_vars_optimizer.c"
			}
		}
	} else {
#line 757 "../src/file_func_vars_optimizer.vala"
		switch (0) {
#line 7912 "file_func_vars_optimizer.c"
			default:
			{
				gchar* _tmp7_;
#line 767 "../src/file_func_vars_optimizer.vala"
				_tmp7_ = g_strdup ("Php.zval.null_value ()");
#line 767 "../src/file_func_vars_optimizer.vala"
				result = _tmp7_;
#line 767 "../src/file_func_vars_optimizer.vala"
				return result;
#line 7922 "file_func_vars_optimizer.c"
			}
		}
	}
}

static void
php_to_vala_file_func_vars_optimizer_class_init (PhpToValaFileFuncVarsOptimizerClass * klass,
                                                 gpointer klass_data)
{
#line 12 "../src/file_func_vars_optimizer.vala"
	php_to_vala_file_func_vars_optimizer_parent_class = g_type_class_peek_parent (klass);
#line 12 "../src/file_func_vars_optimizer.vala"
	g_type_class_adjust_private_offset (klass, &PhpToValaFileFuncVarsOptimizer_private_offset);
#line 12 "../src/file_func_vars_optimizer.vala"
	G_OBJECT_CLASS (klass)->finalize = php_to_vala_file_func_vars_optimizer_finalize;
#line 7938 "file_func_vars_optimizer.c"
}

static void
php_to_vala_file_func_vars_optimizer_instance_init (PhpToValaFileFuncVarsOptimizer * self,
                                                    gpointer klass)
{
#line 12 "../src/file_func_vars_optimizer.vala"
	self->priv = php_to_vala_file_func_vars_optimizer_get_instance_private (self);
#line 14 "../src/file_func_vars_optimizer.vala"
	self->priv->emitted_callable_delegate = FALSE;
#line 7949 "file_func_vars_optimizer.c"
}

static void
php_to_vala_file_func_vars_optimizer_finalize (GObject * obj)
{
	PhpToValaFileFuncVarsOptimizer * self;
#line 12 "../src/file_func_vars_optimizer.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PHP_TO_VALA_FILE_FUNC_VARS_OPTIMIZER, PhpToValaFileFuncVarsOptimizer);
#line 13 "../src/file_func_vars_optimizer.vala"
	_g_object_unref0 (self->priv->transpiler);
#line 12 "../src/file_func_vars_optimizer.vala"
	G_OBJECT_CLASS (php_to_vala_file_func_vars_optimizer_parent_class)->finalize (obj);
#line 7962 "file_func_vars_optimizer.c"
}

static GType
php_to_vala_file_func_vars_optimizer_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (PhpToValaFileFuncVarsOptimizerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) php_to_vala_file_func_vars_optimizer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PhpToValaFileFuncVarsOptimizer), 0, (GInstanceInitFunc) php_to_vala_file_func_vars_optimizer_instance_init, NULL };
	GType php_to_vala_file_func_vars_optimizer_type_id;
	php_to_vala_file_func_vars_optimizer_type_id = g_type_register_static (G_TYPE_OBJECT, "PhpToValaFileFuncVarsOptimizer", &g_define_type_info, 0);
	PhpToValaFileFuncVarsOptimizer_private_offset = g_type_add_instance_private (php_to_vala_file_func_vars_optimizer_type_id, sizeof (PhpToValaFileFuncVarsOptimizerPrivate));
	return php_to_vala_file_func_vars_optimizer_type_id;
}

GType
php_to_vala_file_func_vars_optimizer_get_type (void)
{
	static volatile gsize php_to_vala_file_func_vars_optimizer_type_id__once = 0;
	if (g_once_init_enter (&php_to_vala_file_func_vars_optimizer_type_id__once)) {
		GType php_to_vala_file_func_vars_optimizer_type_id;
		php_to_vala_file_func_vars_optimizer_type_id = php_to_vala_file_func_vars_optimizer_get_type_once ();
		g_once_init_leave (&php_to_vala_file_func_vars_optimizer_type_id__once, php_to_vala_file_func_vars_optimizer_type_id);
	}
	return php_to_vala_file_func_vars_optimizer_type_id__once;
}

static void
_vala_array_destroy (gpointer array,
                     gssize array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		gssize i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}

static void
_vala_array_free (gpointer array,
                  gssize array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}

static gssize
_vala_array_length (gpointer array)
{
	gssize length;
	length = 0;
	if (array) {
		while (((gpointer*) array)[length]) {
			length++;
		}
	}
	return length;
}

