/* local_vars_optimizer.c generated by valac 0.56.19, the Vala compiler
 * generated from local_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_LOCAL_VARS_OPTIMIZER (php_to_vala_local_vars_optimizer_get_type ())
#define PHP_TO_VALA_LOCAL_VARS_OPTIMIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER, PhpToValaLocalVarsOptimizer))
#define PHP_TO_VALA_LOCAL_VARS_OPTIMIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER, PhpToValaLocalVarsOptimizerClass))
#define IS_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER))
#define IS_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER))
#define PHP_TO_VALA_LOCAL_VARS_OPTIMIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER, PhpToValaLocalVarsOptimizerClass))

typedef struct _PhpToValaLocalVarsOptimizer PhpToValaLocalVarsOptimizer;
typedef struct _PhpToValaLocalVarsOptimizerClass PhpToValaLocalVarsOptimizerClass;
typedef struct _PhpToValaLocalVarsOptimizerPrivate PhpToValaLocalVarsOptimizerPrivate;

#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_LOCAL_VARS_OPTIMIZER_0_PROPERTY,
	PHP_TO_VALA_LOCAL_VARS_OPTIMIZER_NUM_PROPERTIES
};
static GParamSpec* php_to_vala_local_vars_optimizer_properties[PHP_TO_VALA_LOCAL_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;
typedef struct _LocalFunctionPrivate LocalFunctionPrivate;

#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;
#define _g_free0(var) (var = (g_free (var), 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;
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))

struct _PhpToValaLocalVarsOptimizer {
	GObject parent_instance;
	PhpToValaLocalVarsOptimizerPrivate * priv;
};

struct _PhpToValaLocalVarsOptimizerClass {
	GObjectClass parent_class;
};

struct _PhpToValaLocalVarsOptimizerPrivate {
	PhpToValaTranspiler* transpiler;
};

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 PhpToValaLocalVarsOptimizer_private_offset;
static gpointer php_to_vala_local_vars_optimizer_parent_class = NULL;

VALA_EXTERN GType php_to_vala_local_vars_optimizer_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PhpToValaLocalVarsOptimizer, 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 PhpToValaLocalVarsOptimizer* php_to_vala_local_vars_optimizer_new (PhpToValaTranspiler* transpiler);
VALA_EXTERN PhpToValaLocalVarsOptimizer* php_to_vala_local_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_local_vars_optimizer_can_emit (PhpToValaLocalVarsOptimizer* 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_local_vars_optimizer_infer_return_type (PhpToValaLocalVarsOptimizer* self,
                                                           LocalFunction* local_function);
static gchar* php_to_vala_local_vars_optimizer_infer_parameter_type (PhpToValaLocalVarsOptimizer* self,
                                                              LocalFunction* local_function,
                                                              LocalParameter* parameter);
VALA_EXTERN void php_to_vala_local_vars_optimizer_append_zval_local_function (PhpToValaLocalVarsOptimizer* self,
                                                                  GString* output,
                                                                  LocalFunction* local_function,
                                                                  GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_build_zval_local_function_parameter_list (PhpToValaTranspiler* 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_local_vars_optimizer_zval_to_native_argument (PhpToValaLocalVarsOptimizer* self,
                                                                 const gchar* parameter_name,
                                                                 const gchar* native_type);
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_local_vars_optimizer_transpile_zval_local_line (PhpToValaLocalVarsOptimizer* self,
                                                                   const gchar* line,
                                                                   gint php_line_number,
                                                                   const gchar* return_type,
                                                                   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_local_vars_optimizer_body_has_unconditional_loop_return (PhpToValaLocalVarsOptimizer* self,
                                                                              LocalFunction* local_function);
static gchar* php_to_vala_local_vars_optimizer_native_to_zval_return (PhpToValaLocalVarsOptimizer* self,
                                                               const gchar* expression,
                                                               const gchar* native_type);
VALA_EXTERN gchar* php_to_vala_local_vars_optimizer_local_function_call_as_native_value (PhpToValaLocalVarsOptimizer* self,
                                                                             LocalFunction* local_function,
                                                                             const gchar* args,
                                                                             gint php_line_number,
                                                                             GError** error);
static gchar* php_to_vala_local_vars_optimizer_convert_native_argument_list_to_zval_args (PhpToValaLocalVarsOptimizer* self,
                                                                                   LocalFunction* local_function,
                                                                                   const gchar* args,
                                                                                   gint php_line_number,
                                                                                   GError** error);
VALA_EXTERN gchar* php_to_vala_local_vars_optimizer_replace_inline_local_function_call (PhpToValaLocalVarsOptimizer* 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 gchar* php_to_vala_local_vars_optimizer_transpile_callable_string_call (PhpToValaLocalVarsOptimizer* self,
                                                                        const gchar* line);
static gchar* php_to_vala_local_vars_optimizer_transpile_control_condition (PhpToValaLocalVarsOptimizer* self,
                                                                     const gchar* keyword,
                                                                     const gchar* line,
                                                                     gint php_line_number,
                                                                     GError** error);
static gchar* php_to_vala_local_vars_optimizer_transpile_native_chained_assignment (PhpToValaLocalVarsOptimizer* self,
                                                                             const gchar* line,
                                                                             gint php_line_number,
                                                                             GError** error);
static gchar* php_to_vala_local_vars_optimizer_transpile_native_assignment (PhpToValaLocalVarsOptimizer* self,
                                                                     const gchar* line,
                                                                     gint php_line_number,
                                                                     GError** error);
static gchar* php_to_vala_local_vars_optimizer_transpile_native_increment (PhpToValaLocalVarsOptimizer* self,
                                                                    const gchar* line);
static gchar* php_to_vala_local_vars_optimizer_transpile_native_compound_assignment (PhpToValaLocalVarsOptimizer* self,
                                                                              const gchar* line,
                                                                              gint php_line_number,
                                                                              GError** error);
static gchar* php_to_vala_local_vars_optimizer_transpile_native_list_assignment (PhpToValaLocalVarsOptimizer* self,
                                                                          const gchar* line,
                                                                          gint php_line_number,
                                                                          GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_trim_trailing_semicolon (const gchar* value);
static gchar* php_to_vala_local_vars_optimizer_convert_local_expression (PhpToValaLocalVarsOptimizer* self,
                                                                  const gchar* expression,
                                                                  gint php_line_number,
                                                                  const gchar* expected_type,
                                                                  GError** error);
VALA_EXTERN gchar* php_to_vala_transpiler_transpile_line (PhpToValaTranspiler* self,
                                              const gchar* line,
                                              gint php_line_number,
                                              GError** error);
VALA_EXTERN GeeArrayList* php_to_vala_transpiler_split_top_level (PhpToValaTranspiler* self,
                                                      const gchar* expression,
                                                      gchar separator);
static gchar* php_to_vala_local_vars_optimizer_infer_local_expression_type (PhpToValaLocalVarsOptimizer* self,
                                                                     const gchar* expression);
static gboolean php_to_vala_local_vars_optimizer_is_plain_identifier (PhpToValaLocalVarsOptimizer* self,
                                                               const gchar* name);
static gchar* php_to_vala_local_vars_optimizer_native_variable_name (PhpToValaLocalVarsOptimizer* self,
                                                              const gchar* php_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_local_vars_optimizer_convert_local_division_expression (PhpToValaLocalVarsOptimizer* 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_local_vars_optimizer_find_top_level_operator (PhpToValaLocalVarsOptimizer* self,
                                                               const gchar* expression,
                                                               const gchar* op);
static gchar* php_to_vala_local_vars_optimizer_native_scalar_type (PhpToValaLocalVarsOptimizer* self,
                                                            const gchar* php_type);
static void php_to_vala_local_vars_optimizer_finalize (GObject * obj);
static GType php_to_vala_local_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 inline gpointer
php_to_vala_local_vars_optimizer_get_instance_private (PhpToValaLocalVarsOptimizer* self)
{
	return G_STRUCT_MEMBER_P (self, PhpToValaLocalVarsOptimizer_private_offset);
}

static gpointer
_g_object_ref0 (gpointer self)
{
#line 15 "../src/local_vars_optimizer.vala"
	return self ? g_object_ref (self) : NULL;
#line 326 "local_vars_optimizer.c"
}

PhpToValaLocalVarsOptimizer*
php_to_vala_local_vars_optimizer_construct (GType object_type,
                                            PhpToValaTranspiler* transpiler)
{
	PhpToValaLocalVarsOptimizer * self = NULL;
	PhpToValaTranspiler* _tmp0_;
#line 14 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (transpiler != NULL, NULL);
#line 14 "../src/local_vars_optimizer.vala"
	self = (PhpToValaLocalVarsOptimizer*) g_object_new (object_type, NULL);
#line 15 "../src/local_vars_optimizer.vala"
	_tmp0_ = _g_object_ref0 (transpiler);
#line 15 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (self->priv->transpiler);
#line 15 "../src/local_vars_optimizer.vala"
	self->priv->transpiler = _tmp0_;
#line 14 "../src/local_vars_optimizer.vala"
	return self;
#line 347 "local_vars_optimizer.c"
}

PhpToValaLocalVarsOptimizer*
php_to_vala_local_vars_optimizer_new (PhpToValaTranspiler* transpiler)
{
#line 14 "../src/local_vars_optimizer.vala"
	return php_to_vala_local_vars_optimizer_construct (TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER, transpiler);
#line 355 "local_vars_optimizer.c"
}

gboolean
php_to_vala_local_vars_optimizer_can_emit (PhpToValaLocalVarsOptimizer* self,
                                           LocalFunction* local_function)
{
	GeeArrayList* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gboolean _tmp5_;
	gboolean result;
#line 18 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 18 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 19 "../src/local_vars_optimizer.vala"
	_tmp0_ = local_function->parameters;
#line 19 "../src/local_vars_optimizer.vala"
	_tmp1_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp0_);
#line 19 "../src/local_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 19 "../src/local_vars_optimizer.vala"
	if (_tmp2_ == 0) {
#line 20 "../src/local_vars_optimizer.vala"
		result = FALSE;
#line 20 "../src/local_vars_optimizer.vala"
		return result;
#line 385 "local_vars_optimizer.c"
	}
#line 22 "../src/local_vars_optimizer.vala"
	_tmp3_ = php_to_vala_local_vars_optimizer_infer_return_type (self, local_function);
#line 22 "../src/local_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 22 "../src/local_vars_optimizer.vala"
	_tmp5_ = _tmp4_ == NULL;
#line 22 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 22 "../src/local_vars_optimizer.vala"
	if (_tmp5_) {
#line 23 "../src/local_vars_optimizer.vala"
		result = FALSE;
#line 23 "../src/local_vars_optimizer.vala"
		return result;
#line 401 "local_vars_optimizer.c"
	}
	{
		GeeArrayList* _parameter_list = NULL;
		GeeArrayList* _tmp6_;
		gint _parameter_size = 0;
		GeeArrayList* _tmp7_;
		gint _tmp8_;
		gint _tmp9_;
		gint _parameter_index = 0;
#line 25 "../src/local_vars_optimizer.vala"
		_tmp6_ = local_function->parameters;
#line 25 "../src/local_vars_optimizer.vala"
		_parameter_list = _tmp6_;
#line 25 "../src/local_vars_optimizer.vala"
		_tmp7_ = _parameter_list;
#line 25 "../src/local_vars_optimizer.vala"
		_tmp8_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp7_);
#line 25 "../src/local_vars_optimizer.vala"
		_tmp9_ = _tmp8_;
#line 25 "../src/local_vars_optimizer.vala"
		_parameter_size = _tmp9_;
#line 25 "../src/local_vars_optimizer.vala"
		_parameter_index = -1;
#line 25 "../src/local_vars_optimizer.vala"
		while (TRUE) {
#line 427 "local_vars_optimizer.c"
			gint _tmp10_;
			gint _tmp11_;
			LocalParameter* parameter = NULL;
			GeeArrayList* _tmp12_;
			gpointer _tmp13_;
			LocalParameter* _tmp14_;
			gchar* _tmp15_;
			gchar* _tmp16_;
			gboolean _tmp17_;
#line 25 "../src/local_vars_optimizer.vala"
			_parameter_index = _parameter_index + 1;
#line 25 "../src/local_vars_optimizer.vala"
			_tmp10_ = _parameter_index;
#line 25 "../src/local_vars_optimizer.vala"
			_tmp11_ = _parameter_size;
#line 25 "../src/local_vars_optimizer.vala"
			if (!(_tmp10_ < _tmp11_)) {
#line 25 "../src/local_vars_optimizer.vala"
				break;
#line 447 "local_vars_optimizer.c"
			}
#line 25 "../src/local_vars_optimizer.vala"
			_tmp12_ = _parameter_list;
#line 25 "../src/local_vars_optimizer.vala"
			_tmp13_ = gee_abstract_list_get ((GeeAbstractList*) _tmp12_, _parameter_index);
#line 25 "../src/local_vars_optimizer.vala"
			parameter = (LocalParameter*) _tmp13_;
#line 26 "../src/local_vars_optimizer.vala"
			_tmp14_ = parameter;
#line 26 "../src/local_vars_optimizer.vala"
			_tmp15_ = php_to_vala_local_vars_optimizer_infer_parameter_type (self, local_function, _tmp14_);
#line 26 "../src/local_vars_optimizer.vala"
			_tmp16_ = _tmp15_;
#line 26 "../src/local_vars_optimizer.vala"
			_tmp17_ = _tmp16_ == NULL;
#line 26 "../src/local_vars_optimizer.vala"
			_g_free0 (_tmp16_);
#line 26 "../src/local_vars_optimizer.vala"
			if (_tmp17_) {
#line 27 "../src/local_vars_optimizer.vala"
				result = FALSE;
#line 27 "../src/local_vars_optimizer.vala"
				_g_object_unref0 (parameter);
#line 27 "../src/local_vars_optimizer.vala"
				return result;
#line 473 "local_vars_optimizer.c"
			}
#line 25 "../src/local_vars_optimizer.vala"
			_g_object_unref0 (parameter);
#line 477 "local_vars_optimizer.c"
		}
	}
#line 30 "../src/local_vars_optimizer.vala"
	result = TRUE;
#line 30 "../src/local_vars_optimizer.vala"
	return result;
#line 484 "local_vars_optimizer.c"
}

void
php_to_vala_local_vars_optimizer_append_zval_local_function (PhpToValaLocalVarsOptimizer* 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_;
	gchar* _tmp18_ = NULL;
	gchar* _tmp19_;
	gchar* return_type = NULL;
	gchar* _tmp21_;
	const gchar* _tmp22_;
	PhpToValaTranspiler* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	Statements* statements = NULL;
	const gchar* _tmp61_;
	Statements* _tmp62_;
	gint function_block_level = 0;
	gboolean last_statement_terminates = FALSE;
	gboolean _tmp95_ = FALSE;
	PhpToValaTranspiler* _tmp108_;
	GeeHashMap* _tmp109_;
	GeeHashMap* _tmp110_;
	PhpToValaTranspiler* _tmp111_;
	GeeHashMap* _tmp112_;
	GeeHashMap* _tmp113_;
	PhpToValaTranspiler* _tmp114_;
	PhpToValaTranspiler* _tmp115_;
	const gchar* _tmp116_;
	gchar* _tmp117_;
	GError* _inner_error0_ = NULL;
#line 33 "../src/local_vars_optimizer.vala"
	g_return_if_fail (self != NULL);
#line 33 "../src/local_vars_optimizer.vala"
	g_return_if_fail (output != NULL);
#line 33 "../src/local_vars_optimizer.vala"
	g_return_if_fail (local_function != NULL);
#line 34 "../src/local_vars_optimizer.vala"
	_tmp0_ = self->priv->transpiler;
#line 34 "../src/local_vars_optimizer.vala"
	_tmp1_ = _tmp0_->variable_types;
#line 34 "../src/local_vars_optimizer.vala"
	_tmp2_ = _g_object_ref0 (_tmp1_);
#line 34 "../src/local_vars_optimizer.vala"
	previous_variable_types = _tmp2_;
#line 35 "../src/local_vars_optimizer.vala"
	_tmp3_ = self->priv->transpiler;
#line 35 "../src/local_vars_optimizer.vala"
	_tmp4_ = _tmp3_->variable_aliases;
#line 35 "../src/local_vars_optimizer.vala"
	_tmp5_ = _g_object_ref0 (_tmp4_);
#line 35 "../src/local_vars_optimizer.vala"
	previous_variable_aliases = _tmp5_;
#line 36 "../src/local_vars_optimizer.vala"
	_tmp6_ = self->priv->transpiler;
#line 36 "../src/local_vars_optimizer.vala"
	previous_transpiling_local_function = _tmp6_->transpiling_local_function;
#line 37 "../src/local_vars_optimizer.vala"
	_tmp7_ = self->priv->transpiler;
#line 37 "../src/local_vars_optimizer.vala"
	_tmp8_ = _tmp7_->current_local_function_name;
#line 37 "../src/local_vars_optimizer.vala"
	_tmp9_ = g_strdup (_tmp8_);
#line 37 "../src/local_vars_optimizer.vala"
	previous_local_function_name = _tmp9_;
#line 39 "../src/local_vars_optimizer.vala"
	_tmp10_ = self->priv->transpiler;
#line 39 "../src/local_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 39 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (_tmp10_->variable_types);
#line 39 "../src/local_vars_optimizer.vala"
	_tmp10_->variable_types = _tmp11_;
#line 40 "../src/local_vars_optimizer.vala"
	_tmp12_ = self->priv->transpiler;
#line 40 "../src/local_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 40 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (_tmp12_->variable_aliases);
#line 40 "../src/local_vars_optimizer.vala"
	_tmp12_->variable_aliases = _tmp13_;
#line 41 "../src/local_vars_optimizer.vala"
	_tmp14_ = self->priv->transpiler;
#line 41 "../src/local_vars_optimizer.vala"
	_tmp14_->transpiling_local_function = TRUE;
#line 42 "../src/local_vars_optimizer.vala"
	_tmp15_ = self->priv->transpiler;
#line 42 "../src/local_vars_optimizer.vala"
	_tmp16_ = local_function->name;
#line 42 "../src/local_vars_optimizer.vala"
	_tmp17_ = g_strdup (_tmp16_);
#line 42 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp15_->current_local_function_name);
#line 42 "../src/local_vars_optimizer.vala"
	_tmp15_->current_local_function_name = _tmp17_;
#line 44 "../src/local_vars_optimizer.vala"
	_tmp19_ = php_to_vala_local_vars_optimizer_infer_return_type (self, local_function);
#line 44 "../src/local_vars_optimizer.vala"
	_tmp18_ = _tmp19_;
#line 44 "../src/local_vars_optimizer.vala"
	if (_tmp18_ == NULL) {
#line 610 "local_vars_optimizer.c"
		gchar* _tmp20_;
#line 44 "../src/local_vars_optimizer.vala"
		_tmp20_ = g_strdup ("void");
#line 44 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp18_);
#line 44 "../src/local_vars_optimizer.vala"
		_tmp18_ = _tmp20_;
#line 618 "local_vars_optimizer.c"
	}
#line 44 "../src/local_vars_optimizer.vala"
	_tmp21_ = _tmp18_;
#line 44 "../src/local_vars_optimizer.vala"
	_tmp18_ = NULL;
#line 44 "../src/local_vars_optimizer.vala"
	return_type = _tmp21_;
#line 45 "../src/local_vars_optimizer.vala"
	_tmp22_ = local_function->name;
#line 45 "../src/local_vars_optimizer.vala"
	_tmp23_ = self->priv->transpiler;
#line 45 "../src/local_vars_optimizer.vala"
	_tmp24_ = php_to_vala_transpiler_build_zval_local_function_parameter_list (_tmp23_, local_function);
#line 45 "../src/local_vars_optimizer.vala"
	_tmp25_ = _tmp24_;
#line 45 "../src/local_vars_optimizer.vala"
	g_string_append_printf (output, "public static Php.zval %s (%s) throws Error {\n", _tmp22_, _tmp25_);
#line 45 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp25_);
#line 638 "local_vars_optimizer.c"
	{
		GeeArrayList* _parameter_list = NULL;
		GeeArrayList* _tmp26_;
		gint _parameter_size = 0;
		GeeArrayList* _tmp27_;
		gint _tmp28_;
		gint _tmp29_;
		gint _parameter_index = 0;
#line 46 "../src/local_vars_optimizer.vala"
		_tmp26_ = local_function->parameters;
#line 46 "../src/local_vars_optimizer.vala"
		_parameter_list = _tmp26_;
#line 46 "../src/local_vars_optimizer.vala"
		_tmp27_ = _parameter_list;
#line 46 "../src/local_vars_optimizer.vala"
		_tmp28_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp27_);
#line 46 "../src/local_vars_optimizer.vala"
		_tmp29_ = _tmp28_;
#line 46 "../src/local_vars_optimizer.vala"
		_parameter_size = _tmp29_;
#line 46 "../src/local_vars_optimizer.vala"
		_parameter_index = -1;
#line 46 "../src/local_vars_optimizer.vala"
		while (TRUE) {
#line 663 "local_vars_optimizer.c"
			gint _tmp30_;
			gint _tmp31_;
			LocalParameter* parameter = NULL;
			GeeArrayList* _tmp32_;
			gpointer _tmp33_;
			gchar* _tmp34_ = NULL;
			LocalParameter* _tmp35_;
			gchar* _tmp36_;
			gchar* parameter_type = NULL;
			gchar* _tmp38_;
			gchar* local_name = NULL;
			LocalParameter* _tmp39_;
			const gchar* _tmp40_;
			gchar* _tmp41_;
			PhpToValaTranspiler* _tmp42_;
			GeeHashMap* _tmp43_;
			LocalParameter* _tmp44_;
			const gchar* _tmp45_;
			const gchar* _tmp46_;
			PhpToValaTranspiler* _tmp47_;
			GeeHashMap* _tmp48_;
			const gchar* _tmp49_;
			const gchar* _tmp50_;
			PhpToValaTranspiler* _tmp51_;
			const gchar* _tmp52_;
			const gchar* _tmp53_;
			LocalParameter* _tmp54_;
			const gchar* _tmp55_;
			const gchar* _tmp56_;
			gchar* _tmp57_;
			gchar* _tmp58_;
			gchar* _tmp59_;
			gchar* _tmp60_;
#line 46 "../src/local_vars_optimizer.vala"
			_parameter_index = _parameter_index + 1;
#line 46 "../src/local_vars_optimizer.vala"
			_tmp30_ = _parameter_index;
#line 46 "../src/local_vars_optimizer.vala"
			_tmp31_ = _parameter_size;
#line 46 "../src/local_vars_optimizer.vala"
			if (!(_tmp30_ < _tmp31_)) {
#line 46 "../src/local_vars_optimizer.vala"
				break;
#line 707 "local_vars_optimizer.c"
			}
#line 46 "../src/local_vars_optimizer.vala"
			_tmp32_ = _parameter_list;
#line 46 "../src/local_vars_optimizer.vala"
			_tmp33_ = gee_abstract_list_get ((GeeAbstractList*) _tmp32_, _parameter_index);
#line 46 "../src/local_vars_optimizer.vala"
			parameter = (LocalParameter*) _tmp33_;
#line 47 "../src/local_vars_optimizer.vala"
			_tmp35_ = parameter;
#line 47 "../src/local_vars_optimizer.vala"
			_tmp36_ = php_to_vala_local_vars_optimizer_infer_parameter_type (self, local_function, _tmp35_);
#line 47 "../src/local_vars_optimizer.vala"
			_tmp34_ = _tmp36_;
#line 47 "../src/local_vars_optimizer.vala"
			if (_tmp34_ == NULL) {
#line 723 "local_vars_optimizer.c"
				gchar* _tmp37_;
#line 47 "../src/local_vars_optimizer.vala"
				_tmp37_ = g_strdup ("var");
#line 47 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp34_);
#line 47 "../src/local_vars_optimizer.vala"
				_tmp34_ = _tmp37_;
#line 731 "local_vars_optimizer.c"
			}
#line 47 "../src/local_vars_optimizer.vala"
			_tmp38_ = _tmp34_;
#line 47 "../src/local_vars_optimizer.vala"
			_tmp34_ = NULL;
#line 47 "../src/local_vars_optimizer.vala"
			parameter_type = _tmp38_;
#line 48 "../src/local_vars_optimizer.vala"
			_tmp39_ = parameter;
#line 48 "../src/local_vars_optimizer.vala"
			_tmp40_ = _tmp39_->name;
#line 48 "../src/local_vars_optimizer.vala"
			_tmp41_ = g_strconcat ("__php2vala_local_", _tmp40_, NULL);
#line 48 "../src/local_vars_optimizer.vala"
			local_name = _tmp41_;
#line 49 "../src/local_vars_optimizer.vala"
			_tmp42_ = self->priv->transpiler;
#line 49 "../src/local_vars_optimizer.vala"
			_tmp43_ = _tmp42_->variable_aliases;
#line 49 "../src/local_vars_optimizer.vala"
			_tmp44_ = parameter;
#line 49 "../src/local_vars_optimizer.vala"
			_tmp45_ = _tmp44_->name;
#line 49 "../src/local_vars_optimizer.vala"
			_tmp46_ = local_name;
#line 49 "../src/local_vars_optimizer.vala"
			gee_abstract_map_set ((GeeAbstractMap*) _tmp43_, _tmp45_, _tmp46_);
#line 50 "../src/local_vars_optimizer.vala"
			_tmp47_ = self->priv->transpiler;
#line 50 "../src/local_vars_optimizer.vala"
			_tmp48_ = _tmp47_->variable_types;
#line 50 "../src/local_vars_optimizer.vala"
			_tmp49_ = local_name;
#line 50 "../src/local_vars_optimizer.vala"
			_tmp50_ = parameter_type;
#line 50 "../src/local_vars_optimizer.vala"
			gee_abstract_map_set ((GeeAbstractMap*) _tmp48_, _tmp49_, _tmp50_);
#line 51 "../src/local_vars_optimizer.vala"
			_tmp51_ = self->priv->transpiler;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp52_ = parameter_type;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp53_ = local_name;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp54_ = parameter;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp55_ = _tmp54_->name;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp56_ = parameter_type;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp57_ = php_to_vala_local_vars_optimizer_zval_to_native_argument (self, _tmp55_, _tmp56_);
#line 51 "../src/local_vars_optimizer.vala"
			_tmp58_ = _tmp57_;
#line 51 "../src/local_vars_optimizer.vala"
			_tmp59_ = g_strdup_printf ("%s %s = %s;", _tmp52_, _tmp53_, _tmp58_);
#line 51 "../src/local_vars_optimizer.vala"
			_tmp60_ = _tmp59_;
#line 51 "../src/local_vars_optimizer.vala"
			php_to_vala_transpiler_append_indented_line (_tmp51_, output, 1, _tmp60_);
#line 51 "../src/local_vars_optimizer.vala"
			_g_free0 (_tmp60_);
#line 51 "../src/local_vars_optimizer.vala"
			_g_free0 (_tmp58_);
#line 46 "../src/local_vars_optimizer.vala"
			_g_free0 (local_name);
#line 46 "../src/local_vars_optimizer.vala"
			_g_free0 (parameter_type);
#line 46 "../src/local_vars_optimizer.vala"
			_g_free0 (_tmp34_);
#line 46 "../src/local_vars_optimizer.vala"
			_g_object_unref0 (parameter);
#line 803 "local_vars_optimizer.c"
		}
	}
#line 54 "../src/local_vars_optimizer.vala"
	_tmp61_ = local_function->body;
#line 54 "../src/local_vars_optimizer.vala"
	_tmp62_ = php_to_vala_source_parser_collect_statements (_tmp61_, local_function->line + 1);
#line 54 "../src/local_vars_optimizer.vala"
	statements = _tmp62_;
#line 55 "../src/local_vars_optimizer.vala"
	function_block_level = 0;
#line 56 "../src/local_vars_optimizer.vala"
	last_statement_terminates = FALSE;
#line 816 "local_vars_optimizer.c"
	{
		gint i = 0;
#line 57 "../src/local_vars_optimizer.vala"
		i = 0;
#line 821 "local_vars_optimizer.c"
		{
			gboolean _tmp63_ = FALSE;
#line 57 "../src/local_vars_optimizer.vala"
			_tmp63_ = TRUE;
#line 57 "../src/local_vars_optimizer.vala"
			while (TRUE) {
#line 828 "local_vars_optimizer.c"
				Statements* _tmp65_;
				GeeArrayList* _tmp66_;
				gint _tmp67_;
				gint _tmp68_;
				gchar* vala_line = NULL;
				Statements* _tmp69_;
				GeeArrayList* _tmp70_;
				gpointer _tmp71_;
				gchar* _tmp72_;
				Statements* _tmp73_;
				GeeArrayList* _tmp74_;
				gpointer _tmp75_;
				const gchar* _tmp76_;
				gchar* _tmp77_;
				gchar* _tmp78_;
				const gchar* _tmp79_;
				PhpToValaTranspiler* _tmp80_;
				Statements* _tmp81_;
				GeeArrayList* _tmp82_;
				gpointer _tmp83_;
				gchar* _tmp84_;
				Statements* _tmp85_;
				GeeArrayList* _tmp86_;
				gpointer _tmp87_;
				Statements* _tmp88_;
				GeeArrayList* _tmp89_;
				gpointer _tmp90_;
				const gchar* _tmp91_;
				PhpToValaTranspiler* _tmp92_;
				const gchar* _tmp93_;
				const gchar* _tmp94_;
#line 57 "../src/local_vars_optimizer.vala"
				if (!_tmp63_) {
#line 862 "local_vars_optimizer.c"
					gint _tmp64_;
#line 57 "../src/local_vars_optimizer.vala"
					_tmp64_ = i;
#line 57 "../src/local_vars_optimizer.vala"
					i = _tmp64_ + 1;
#line 868 "local_vars_optimizer.c"
				}
#line 57 "../src/local_vars_optimizer.vala"
				_tmp63_ = FALSE;
#line 57 "../src/local_vars_optimizer.vala"
				_tmp65_ = statements;
#line 57 "../src/local_vars_optimizer.vala"
				_tmp66_ = _tmp65_->texts;
#line 57 "../src/local_vars_optimizer.vala"
				_tmp67_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp66_);
#line 57 "../src/local_vars_optimizer.vala"
				_tmp68_ = _tmp67_;
#line 57 "../src/local_vars_optimizer.vala"
				if (!(i < _tmp68_)) {
#line 57 "../src/local_vars_optimizer.vala"
					break;
#line 884 "local_vars_optimizer.c"
				}
#line 58 "../src/local_vars_optimizer.vala"
				_tmp69_ = statements;
#line 58 "../src/local_vars_optimizer.vala"
				_tmp70_ = _tmp69_->texts;
#line 58 "../src/local_vars_optimizer.vala"
				_tmp71_ = gee_abstract_list_get ((GeeAbstractList*) _tmp70_, i);
#line 58 "../src/local_vars_optimizer.vala"
				_tmp72_ = (gchar*) _tmp71_;
#line 58 "../src/local_vars_optimizer.vala"
				_tmp73_ = statements;
#line 58 "../src/local_vars_optimizer.vala"
				_tmp74_ = _tmp73_->lines;
#line 58 "../src/local_vars_optimizer.vala"
				_tmp75_ = gee_abstract_list_get ((GeeAbstractList*) _tmp74_, i);
#line 58 "../src/local_vars_optimizer.vala"
				_tmp76_ = return_type;
#line 58 "../src/local_vars_optimizer.vala"
				_tmp77_ = php_to_vala_local_vars_optimizer_transpile_zval_local_line (self, _tmp72_, (gint) ((gintptr) _tmp75_), _tmp76_, &_inner_error0_);
#line 58 "../src/local_vars_optimizer.vala"
				_tmp78_ = _tmp77_;
#line 58 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp72_);
#line 58 "../src/local_vars_optimizer.vala"
				vala_line = _tmp78_;
#line 58 "../src/local_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 58 "../src/local_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 58 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (statements);
#line 58 "../src/local_vars_optimizer.vala"
					_g_free0 (return_type);
#line 58 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp18_);
#line 58 "../src/local_vars_optimizer.vala"
					_g_free0 (previous_local_function_name);
#line 58 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_aliases);
#line 58 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_types);
#line 58 "../src/local_vars_optimizer.vala"
					return;
#line 928 "local_vars_optimizer.c"
				}
#line 59 "../src/local_vars_optimizer.vala"
				_tmp79_ = vala_line;
#line 59 "../src/local_vars_optimizer.vala"
				if (_tmp79_ == NULL) {
#line 60 "../src/local_vars_optimizer.vala"
					_g_free0 (vala_line);
#line 60 "../src/local_vars_optimizer.vala"
					continue;
#line 938 "local_vars_optimizer.c"
				}
#line 62 "../src/local_vars_optimizer.vala"
				_tmp80_ = self->priv->transpiler;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp81_ = statements;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp82_ = _tmp81_->texts;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp83_ = gee_abstract_list_get ((GeeAbstractList*) _tmp82_, i);
#line 62 "../src/local_vars_optimizer.vala"
				_tmp84_ = (gchar*) _tmp83_;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp85_ = statements;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp86_ = _tmp85_->lines;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp87_ = gee_abstract_list_get ((GeeAbstractList*) _tmp86_, i);
#line 62 "../src/local_vars_optimizer.vala"
				_tmp88_ = statements;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp89_ = _tmp88_->columns;
#line 62 "../src/local_vars_optimizer.vala"
				_tmp90_ = gee_abstract_list_get ((GeeAbstractList*) _tmp89_, i);
#line 62 "../src/local_vars_optimizer.vala"
				_tmp91_ = vala_line;
#line 62 "../src/local_vars_optimizer.vala"
				php_to_vala_transpiler_validate_no_untranslated_php (_tmp80_, _tmp84_, (gint) ((gintptr) _tmp87_), (gint) ((gintptr) _tmp90_), _tmp91_, &_inner_error0_);
#line 62 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp84_);
#line 62 "../src/local_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 62 "../src/local_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 62 "../src/local_vars_optimizer.vala"
					_g_free0 (vala_line);
#line 62 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (statements);
#line 62 "../src/local_vars_optimizer.vala"
					_g_free0 (return_type);
#line 62 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp18_);
#line 62 "../src/local_vars_optimizer.vala"
					_g_free0 (previous_local_function_name);
#line 62 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_aliases);
#line 62 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (previous_variable_types);
#line 62 "../src/local_vars_optimizer.vala"
					return;
#line 988 "local_vars_optimizer.c"
				}
#line 63 "../src/local_vars_optimizer.vala"
				_tmp92_ = self->priv->transpiler;
#line 63 "../src/local_vars_optimizer.vala"
				_tmp93_ = vala_line;
#line 63 "../src/local_vars_optimizer.vala"
				function_block_level = php_to_vala_transpiler_append_generated_block (_tmp92_, output, 1, _tmp93_, function_block_level);
#line 64 "../src/local_vars_optimizer.vala"
				_tmp94_ = vala_line;
#line 64 "../src/local_vars_optimizer.vala"
				last_statement_terminates = php_to_vala_transpiler_zval_statement_terminates_function (_tmp94_);
#line 57 "../src/local_vars_optimizer.vala"
				_g_free0 (vala_line);
#line 1002 "local_vars_optimizer.c"
			}
		}
	}
#line 66 "../src/local_vars_optimizer.vala"
	if (!last_statement_terminates) {
#line 66 "../src/local_vars_optimizer.vala"
		_tmp95_ = !php_to_vala_local_vars_optimizer_body_has_unconditional_loop_return (self, local_function);
#line 1010 "local_vars_optimizer.c"
	} else {
#line 66 "../src/local_vars_optimizer.vala"
		_tmp95_ = FALSE;
#line 1014 "local_vars_optimizer.c"
	}
#line 66 "../src/local_vars_optimizer.vala"
	if (_tmp95_) {
#line 1018 "local_vars_optimizer.c"
		const gchar* _tmp96_ = NULL;
		const gchar* _tmp97_;
		PhpToValaTranspiler* _tmp102_;
		const gchar* _tmp103_;
		gchar* _tmp104_;
		gchar* _tmp105_;
		gchar* _tmp106_;
		gchar* _tmp107_;
#line 67 "../src/local_vars_optimizer.vala"
		_tmp97_ = return_type;
#line 67 "../src/local_vars_optimizer.vala"
		if (g_strcmp0 (_tmp97_, "double") == 0) {
#line 67 "../src/local_vars_optimizer.vala"
			_tmp96_ = "0.0";
#line 1033 "local_vars_optimizer.c"
		} else {
			const gchar* _tmp98_ = NULL;
			const gchar* _tmp99_;
#line 67 "../src/local_vars_optimizer.vala"
			_tmp99_ = return_type;
#line 67 "../src/local_vars_optimizer.vala"
			if (g_strcmp0 (_tmp99_, "bool") == 0) {
#line 67 "../src/local_vars_optimizer.vala"
				_tmp98_ = "false";
#line 1043 "local_vars_optimizer.c"
			} else {
				const gchar* _tmp100_ = NULL;
				const gchar* _tmp101_;
#line 67 "../src/local_vars_optimizer.vala"
				_tmp101_ = return_type;
#line 67 "../src/local_vars_optimizer.vala"
				if (g_strcmp0 (_tmp101_, "string") == 0) {
#line 67 "../src/local_vars_optimizer.vala"
					_tmp100_ = "\"\"";
#line 1053 "local_vars_optimizer.c"
				} else {
#line 67 "../src/local_vars_optimizer.vala"
					_tmp100_ = "0";
#line 1057 "local_vars_optimizer.c"
				}
#line 67 "../src/local_vars_optimizer.vala"
				_tmp98_ = _tmp100_;
#line 1061 "local_vars_optimizer.c"
			}
#line 67 "../src/local_vars_optimizer.vala"
			_tmp96_ = _tmp98_;
#line 1065 "local_vars_optimizer.c"
		}
#line 67 "../src/local_vars_optimizer.vala"
		_tmp102_ = self->priv->transpiler;
#line 67 "../src/local_vars_optimizer.vala"
		_tmp103_ = return_type;
#line 67 "../src/local_vars_optimizer.vala"
		_tmp104_ = php_to_vala_local_vars_optimizer_native_to_zval_return (self, _tmp96_, _tmp103_);
#line 67 "../src/local_vars_optimizer.vala"
		_tmp105_ = _tmp104_;
#line 67 "../src/local_vars_optimizer.vala"
		_tmp106_ = g_strdup_printf ("return %s;", _tmp105_);
#line 67 "../src/local_vars_optimizer.vala"
		_tmp107_ = _tmp106_;
#line 67 "../src/local_vars_optimizer.vala"
		php_to_vala_transpiler_append_indented_line (_tmp102_, output, 1, _tmp107_);
#line 67 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp107_);
#line 67 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp105_);
#line 1085 "local_vars_optimizer.c"
	}
#line 69 "../src/local_vars_optimizer.vala"
	g_string_append (output, "}\n\n");
#line 71 "../src/local_vars_optimizer.vala"
	_tmp108_ = self->priv->transpiler;
#line 71 "../src/local_vars_optimizer.vala"
	_tmp109_ = previous_variable_types;
#line 71 "../src/local_vars_optimizer.vala"
	_tmp110_ = _g_object_ref0 (_tmp109_);
#line 71 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (_tmp108_->variable_types);
#line 71 "../src/local_vars_optimizer.vala"
	_tmp108_->variable_types = _tmp110_;
#line 72 "../src/local_vars_optimizer.vala"
	_tmp111_ = self->priv->transpiler;
#line 72 "../src/local_vars_optimizer.vala"
	_tmp112_ = previous_variable_aliases;
#line 72 "../src/local_vars_optimizer.vala"
	_tmp113_ = _g_object_ref0 (_tmp112_);
#line 72 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (_tmp111_->variable_aliases);
#line 72 "../src/local_vars_optimizer.vala"
	_tmp111_->variable_aliases = _tmp113_;
#line 73 "../src/local_vars_optimizer.vala"
	_tmp114_ = self->priv->transpiler;
#line 73 "../src/local_vars_optimizer.vala"
	_tmp114_->transpiling_local_function = previous_transpiling_local_function;
#line 74 "../src/local_vars_optimizer.vala"
	_tmp115_ = self->priv->transpiler;
#line 74 "../src/local_vars_optimizer.vala"
	_tmp116_ = previous_local_function_name;
#line 74 "../src/local_vars_optimizer.vala"
	_tmp117_ = g_strdup (_tmp116_);
#line 74 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp115_->current_local_function_name);
#line 74 "../src/local_vars_optimizer.vala"
	_tmp115_->current_local_function_name = _tmp117_;
#line 33 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (statements);
#line 33 "../src/local_vars_optimizer.vala"
	_g_free0 (return_type);
#line 33 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp18_);
#line 33 "../src/local_vars_optimizer.vala"
	_g_free0 (previous_local_function_name);
#line 33 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (previous_variable_aliases);
#line 33 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (previous_variable_types);
#line 1135 "local_vars_optimizer.c"
}

gchar*
php_to_vala_local_vars_optimizer_local_function_call_as_native_value (PhpToValaLocalVarsOptimizer* self,
                                                                      LocalFunction* local_function,
                                                                      const gchar* args,
                                                                      gint php_line_number,
                                                                      GError** error)
{
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_;
	gchar* native_type = NULL;
	gchar* _tmp3_;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 77 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 77 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 77 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (args != NULL, NULL);
#line 78 "../src/local_vars_optimizer.vala"
	_tmp1_ = php_to_vala_local_vars_optimizer_infer_return_type (self, local_function);
#line 78 "../src/local_vars_optimizer.vala"
	_tmp0_ = _tmp1_;
#line 78 "../src/local_vars_optimizer.vala"
	if (_tmp0_ == NULL) {
#line 1170 "local_vars_optimizer.c"
		gchar* _tmp2_;
#line 78 "../src/local_vars_optimizer.vala"
		_tmp2_ = g_strdup ("var");
#line 78 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp0_);
#line 78 "../src/local_vars_optimizer.vala"
		_tmp0_ = _tmp2_;
#line 1178 "local_vars_optimizer.c"
	}
#line 78 "../src/local_vars_optimizer.vala"
	_tmp3_ = _tmp0_;
#line 78 "../src/local_vars_optimizer.vala"
	_tmp0_ = NULL;
#line 78 "../src/local_vars_optimizer.vala"
	native_type = _tmp3_;
#line 80 "../src/local_vars_optimizer.vala"
	_tmp5_ = php_to_vala_local_vars_optimizer_convert_native_argument_list_to_zval_args (self, local_function, args, php_line_number, &_inner_error0_);
#line 80 "../src/local_vars_optimizer.vala"
	_tmp4_ = _tmp5_;
#line 80 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 80 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 80 "../src/local_vars_optimizer.vala"
		_g_free0 (native_type);
#line 80 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp0_);
#line 80 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1200 "local_vars_optimizer.c"
	}
#line 79 "../src/local_vars_optimizer.vala"
	_tmp6_ = local_function->name;
#line 79 "../src/local_vars_optimizer.vala"
	_tmp7_ = g_strdup_printf ("%s (%s)", _tmp6_, _tmp4_);
#line 79 "../src/local_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 79 "../src/local_vars_optimizer.vala"
	_tmp9_ = php_to_vala_local_vars_optimizer_zval_to_native_argument (self, _tmp8_, native_type);
#line 79 "../src/local_vars_optimizer.vala"
	_tmp10_ = _tmp9_;
#line 79 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp8_);
#line 79 "../src/local_vars_optimizer.vala"
	result = _tmp10_;
#line 79 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 79 "../src/local_vars_optimizer.vala"
	_g_free0 (native_type);
#line 79 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp0_);
#line 79 "../src/local_vars_optimizer.vala"
	return result;
#line 1224 "local_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 1247 "local_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 1256 "local_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 1275 "local_vars_optimizer.c"
	} else {
#line 1514 "glib-2.0.vapi"
		_tmp0_ = FALSE;
#line 1279 "local_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 1285 "local_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 1295 "local_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 1303 "local_vars_optimizer.c"
	} else {
#line 1525 "glib-2.0.vapi"
		g_return_val_if_fail (offset <= string_length, NULL);
#line 1307 "local_vars_optimizer.c"
	}
#line 1527 "glib-2.0.vapi"
	if (len < ((glong) 0)) {
#line 1528 "glib-2.0.vapi"
		len = string_length - offset;
#line 1313 "local_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 1323 "local_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 1340 "local_vars_optimizer.c"
}

gchar*
php_to_vala_local_vars_optimizer_replace_inline_local_function_call (PhpToValaLocalVarsOptimizer* 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 85 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 85 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 85 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 86 "../src/local_vars_optimizer.vala"
	_tmp0_ = local_function->name;
#line 86 "../src/local_vars_optimizer.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 86 "../src/local_vars_optimizer.vala"
	function_name = _tmp1_;
#line 87 "../src/local_vars_optimizer.vala"
	_tmp2_ = g_string_new ("");
#line 87 "../src/local_vars_optimizer.vala"
	output = _tmp2_;
#line 88 "../src/local_vars_optimizer.vala"
	i = 0;
#line 89 "../src/local_vars_optimizer.vala"
	while (TRUE) {
#line 1380 "local_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 89 "../src/local_vars_optimizer.vala"
		_tmp3_ = strlen (expression);
#line 89 "../src/local_vars_optimizer.vala"
		_tmp4_ = _tmp3_;
#line 89 "../src/local_vars_optimizer.vala"
		if (!(i < _tmp4_)) {
#line 89 "../src/local_vars_optimizer.vala"
			break;
#line 1400 "local_vars_optimizer.c"
		}
#line 90 "../src/local_vars_optimizer.vala"
		_tmp6_ = string_substring (expression, (glong) i, (glong) -1);
#line 90 "../src/local_vars_optimizer.vala"
		_tmp7_ = _tmp6_;
#line 90 "../src/local_vars_optimizer.vala"
		_tmp8_ = function_name;
#line 90 "../src/local_vars_optimizer.vala"
		_tmp9_ = g_strconcat (_tmp8_, "(", NULL);
#line 90 "../src/local_vars_optimizer.vala"
		_tmp10_ = _tmp9_;
#line 90 "../src/local_vars_optimizer.vala"
		_tmp11_ = g_str_has_prefix (_tmp7_, _tmp10_);
#line 90 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp10_);
#line 90 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp7_);
#line 90 "../src/local_vars_optimizer.vala"
		if (_tmp11_) {
#line 1420 "local_vars_optimizer.c"
			gboolean _tmp12_ = FALSE;
#line 91 "../src/local_vars_optimizer.vala"
			if (i == 0) {
#line 91 "../src/local_vars_optimizer.vala"
				_tmp12_ = TRUE;
#line 1426 "local_vars_optimizer.c"
			} else {
				gboolean _tmp13_ = FALSE;
#line 91 "../src/local_vars_optimizer.vala"
				if (!php_to_vala_transpiler_is_identifier_char (string_get (expression, (glong) (i - 1)))) {
#line 91 "../src/local_vars_optimizer.vala"
					_tmp13_ = string_get (expression, (glong) (i - 1)) != '.';
#line 1433 "local_vars_optimizer.c"
				} else {
#line 91 "../src/local_vars_optimizer.vala"
					_tmp13_ = FALSE;
#line 1437 "local_vars_optimizer.c"
				}
#line 91 "../src/local_vars_optimizer.vala"
				_tmp12_ = _tmp13_;
#line 1441 "local_vars_optimizer.c"
			}
#line 91 "../src/local_vars_optimizer.vala"
			_tmp5_ = _tmp12_;
#line 1445 "local_vars_optimizer.c"
		} else {
#line 90 "../src/local_vars_optimizer.vala"
			_tmp5_ = FALSE;
#line 1449 "local_vars_optimizer.c"
		}
#line 90 "../src/local_vars_optimizer.vala"
		if (_tmp5_) {
#line 1453 "local_vars_optimizer.c"
			gint open_index = 0;
			const gchar* _tmp14_;
			gint _tmp15_;
			gint _tmp16_;
			gint close_index = 0;
#line 92 "../src/local_vars_optimizer.vala"
			_tmp14_ = function_name;
#line 92 "../src/local_vars_optimizer.vala"
			_tmp15_ = strlen (_tmp14_);
#line 92 "../src/local_vars_optimizer.vala"
			_tmp16_ = _tmp15_;
#line 92 "../src/local_vars_optimizer.vala"
			open_index = i + _tmp16_;
#line 93 "../src/local_vars_optimizer.vala"
			close_index = php_to_vala_transpiler_find_matching_paren (expression, open_index);
#line 94 "../src/local_vars_optimizer.vala"
			if (close_index > open_index) {
#line 1471 "local_vars_optimizer.c"
				gchar* inner_args = NULL;
				gchar* _tmp17_;
#line 95 "../src/local_vars_optimizer.vala"
				_tmp17_ = string_substring (expression, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 95 "../src/local_vars_optimizer.vala"
				inner_args = _tmp17_;
#line 1478 "local_vars_optimizer.c"
				{
					gchar* _tmp18_ = NULL;
					const gchar* _tmp19_;
					gchar* _tmp20_;
					GString* _tmp21_;
#line 97 "../src/local_vars_optimizer.vala"
					_tmp19_ = inner_args;
#line 97 "../src/local_vars_optimizer.vala"
					_tmp20_ = php_to_vala_local_vars_optimizer_local_function_call_as_native_value (self, local_function, _tmp19_, php_line_number, &_inner_error0_);
#line 97 "../src/local_vars_optimizer.vala"
					_tmp18_ = _tmp20_;
#line 97 "../src/local_vars_optimizer.vala"
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 1492 "local_vars_optimizer.c"
						goto __catch0_g_error;
					}
#line 97 "../src/local_vars_optimizer.vala"
					_tmp21_ = output;
#line 97 "../src/local_vars_optimizer.vala"
					g_string_append (_tmp21_, _tmp18_);
#line 98 "../src/local_vars_optimizer.vala"
					i = close_index + 1;
#line 99 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp18_);
#line 99 "../src/local_vars_optimizer.vala"
					_g_free0 (inner_args);
#line 99 "../src/local_vars_optimizer.vala"
					continue;
#line 1507 "local_vars_optimizer.c"
				}
				goto __finally0;
				__catch0_g_error:
				{
#line 96 "../src/local_vars_optimizer.vala"
					g_clear_error (&_inner_error0_);
#line 1514 "local_vars_optimizer.c"
				}
				__finally0:
#line 96 "../src/local_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 96 "../src/local_vars_optimizer.vala"
					_g_free0 (inner_args);
#line 96 "../src/local_vars_optimizer.vala"
					_g_string_free0 (output);
#line 96 "../src/local_vars_optimizer.vala"
					_g_free0 (function_name);
#line 96 "../src/local_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 96 "../src/local_vars_optimizer.vala"
					g_clear_error (&_inner_error0_);
#line 96 "../src/local_vars_optimizer.vala"
					return NULL;
#line 1531 "local_vars_optimizer.c"
				}
#line 94 "../src/local_vars_optimizer.vala"
				_g_free0 (inner_args);
#line 1535 "local_vars_optimizer.c"
			}
		}
#line 104 "../src/local_vars_optimizer.vala"
		_tmp22_ = output;
#line 104 "../src/local_vars_optimizer.vala"
		g_string_append_c (_tmp22_, string_get (expression, (glong) i));
#line 105 "../src/local_vars_optimizer.vala"
		_tmp23_ = i;
#line 105 "../src/local_vars_optimizer.vala"
		i = _tmp23_ + 1;
#line 1546 "local_vars_optimizer.c"
	}
#line 107 "../src/local_vars_optimizer.vala"
	_tmp24_ = output;
#line 107 "../src/local_vars_optimizer.vala"
	_tmp25_ = _tmp24_->str;
#line 107 "../src/local_vars_optimizer.vala"
	_tmp26_ = g_strdup (_tmp25_);
#line 107 "../src/local_vars_optimizer.vala"
	result = _tmp26_;
#line 107 "../src/local_vars_optimizer.vala"
	_g_string_free0 (output);
#line 107 "../src/local_vars_optimizer.vala"
	_g_free0 (function_name);
#line 107 "../src/local_vars_optimizer.vala"
	return result;
#line 1562 "local_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 1583 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_zval_local_line (PhpToValaLocalVarsOptimizer* self,
                                                            const gchar* line,
                                                            gint php_line_number,
                                                            const gchar* return_type,
                                                            GError** error)
{
	gchar* clean = NULL;
	gchar* _tmp0_;
	gchar* callable_call = NULL;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* while_line = NULL;
	const gchar* _tmp4_;
	gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* if_line = NULL;
	const gchar* _tmp7_;
	gchar* _tmp8_;
	const gchar* _tmp9_;
	gchar* chained_assignment = NULL;
	const gchar* _tmp10_;
	gchar* _tmp11_;
	const gchar* _tmp12_;
	gchar* assignment = NULL;
	const gchar* _tmp13_;
	gchar* _tmp14_;
	const gchar* _tmp15_;
	gchar* increment = NULL;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	const gchar* _tmp18_;
	gchar* compound = NULL;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	const gchar* _tmp21_;
	gchar* list_assignment = NULL;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	gchar* _tmp54_ = NULL;
	PhpToValaTranspiler* _tmp55_;
	gchar* _tmp56_;
	gchar* _tmp57_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 110 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 110 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 110 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (return_type != NULL, NULL);
#line 111 "../src/local_vars_optimizer.vala"
	_tmp0_ = string_strip (line);
#line 111 "../src/local_vars_optimizer.vala"
	clean = _tmp0_;
#line 112 "../src/local_vars_optimizer.vala"
	_tmp1_ = clean;
#line 112 "../src/local_vars_optimizer.vala"
	_tmp2_ = php_to_vala_local_vars_optimizer_transpile_callable_string_call (self, _tmp1_);
#line 112 "../src/local_vars_optimizer.vala"
	callable_call = _tmp2_;
#line 113 "../src/local_vars_optimizer.vala"
	_tmp3_ = callable_call;
#line 113 "../src/local_vars_optimizer.vala"
	if (_tmp3_ != NULL) {
#line 114 "../src/local_vars_optimizer.vala"
		result = callable_call;
#line 114 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 114 "../src/local_vars_optimizer.vala"
		return result;
#line 1660 "local_vars_optimizer.c"
	}
#line 117 "../src/local_vars_optimizer.vala"
	_tmp4_ = clean;
#line 117 "../src/local_vars_optimizer.vala"
	_tmp5_ = php_to_vala_local_vars_optimizer_transpile_control_condition (self, "while", _tmp4_, php_line_number, &_inner_error0_);
#line 117 "../src/local_vars_optimizer.vala"
	while_line = _tmp5_;
#line 117 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 117 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 117 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 117 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 117 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1678 "local_vars_optimizer.c"
	}
#line 118 "../src/local_vars_optimizer.vala"
	_tmp6_ = while_line;
#line 118 "../src/local_vars_optimizer.vala"
	if (_tmp6_ != NULL) {
#line 119 "../src/local_vars_optimizer.vala"
		result = while_line;
#line 119 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 119 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 119 "../src/local_vars_optimizer.vala"
		return result;
#line 1692 "local_vars_optimizer.c"
	}
#line 122 "../src/local_vars_optimizer.vala"
	_tmp7_ = clean;
#line 122 "../src/local_vars_optimizer.vala"
	_tmp8_ = php_to_vala_local_vars_optimizer_transpile_control_condition (self, "if", _tmp7_, php_line_number, &_inner_error0_);
#line 122 "../src/local_vars_optimizer.vala"
	if_line = _tmp8_;
#line 122 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 122 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 122 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 122 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 122 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 122 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1712 "local_vars_optimizer.c"
	}
#line 123 "../src/local_vars_optimizer.vala"
	_tmp9_ = if_line;
#line 123 "../src/local_vars_optimizer.vala"
	if (_tmp9_ != NULL) {
#line 124 "../src/local_vars_optimizer.vala"
		result = if_line;
#line 124 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 124 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 124 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 124 "../src/local_vars_optimizer.vala"
		return result;
#line 1728 "local_vars_optimizer.c"
	}
#line 127 "../src/local_vars_optimizer.vala"
	_tmp10_ = clean;
#line 127 "../src/local_vars_optimizer.vala"
	_tmp11_ = php_to_vala_local_vars_optimizer_transpile_native_chained_assignment (self, _tmp10_, php_line_number, &_inner_error0_);
#line 127 "../src/local_vars_optimizer.vala"
	chained_assignment = _tmp11_;
#line 127 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 127 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 127 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 127 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 127 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 127 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 127 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1750 "local_vars_optimizer.c"
	}
#line 128 "../src/local_vars_optimizer.vala"
	_tmp12_ = chained_assignment;
#line 128 "../src/local_vars_optimizer.vala"
	if (_tmp12_ != NULL) {
#line 129 "../src/local_vars_optimizer.vala"
		result = chained_assignment;
#line 129 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 129 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 129 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 129 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 129 "../src/local_vars_optimizer.vala"
		return result;
#line 1768 "local_vars_optimizer.c"
	}
#line 132 "../src/local_vars_optimizer.vala"
	_tmp13_ = clean;
#line 132 "../src/local_vars_optimizer.vala"
	_tmp14_ = php_to_vala_local_vars_optimizer_transpile_native_assignment (self, _tmp13_, php_line_number, &_inner_error0_);
#line 132 "../src/local_vars_optimizer.vala"
	assignment = _tmp14_;
#line 132 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 132 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 132 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 132 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 132 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 132 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 132 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 132 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1792 "local_vars_optimizer.c"
	}
#line 133 "../src/local_vars_optimizer.vala"
	_tmp15_ = assignment;
#line 133 "../src/local_vars_optimizer.vala"
	if (_tmp15_ != NULL) {
#line 134 "../src/local_vars_optimizer.vala"
		result = assignment;
#line 134 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 134 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 134 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 134 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 134 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 134 "../src/local_vars_optimizer.vala"
		return result;
#line 1812 "local_vars_optimizer.c"
	}
#line 137 "../src/local_vars_optimizer.vala"
	_tmp16_ = clean;
#line 137 "../src/local_vars_optimizer.vala"
	_tmp17_ = php_to_vala_local_vars_optimizer_transpile_native_increment (self, _tmp16_);
#line 137 "../src/local_vars_optimizer.vala"
	increment = _tmp17_;
#line 138 "../src/local_vars_optimizer.vala"
	_tmp18_ = increment;
#line 138 "../src/local_vars_optimizer.vala"
	if (_tmp18_ != NULL) {
#line 139 "../src/local_vars_optimizer.vala"
		result = increment;
#line 139 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 139 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 139 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 139 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 139 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 139 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 139 "../src/local_vars_optimizer.vala"
		return result;
#line 1840 "local_vars_optimizer.c"
	}
#line 142 "../src/local_vars_optimizer.vala"
	_tmp19_ = clean;
#line 142 "../src/local_vars_optimizer.vala"
	_tmp20_ = php_to_vala_local_vars_optimizer_transpile_native_compound_assignment (self, _tmp19_, php_line_number, &_inner_error0_);
#line 142 "../src/local_vars_optimizer.vala"
	compound = _tmp20_;
#line 142 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 142 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (increment);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 142 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 142 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1868 "local_vars_optimizer.c"
	}
#line 143 "../src/local_vars_optimizer.vala"
	_tmp21_ = compound;
#line 143 "../src/local_vars_optimizer.vala"
	if (_tmp21_ != NULL) {
#line 144 "../src/local_vars_optimizer.vala"
		result = compound;
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (increment);
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 144 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 144 "../src/local_vars_optimizer.vala"
		return result;
#line 1892 "local_vars_optimizer.c"
	}
#line 147 "../src/local_vars_optimizer.vala"
	_tmp22_ = clean;
#line 147 "../src/local_vars_optimizer.vala"
	_tmp23_ = php_to_vala_local_vars_optimizer_transpile_native_list_assignment (self, _tmp22_, php_line_number, &_inner_error0_);
#line 147 "../src/local_vars_optimizer.vala"
	list_assignment = _tmp23_;
#line 147 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 147 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (compound);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (increment);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 147 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 147 "../src/local_vars_optimizer.vala"
		return NULL;
#line 1922 "local_vars_optimizer.c"
	}
#line 148 "../src/local_vars_optimizer.vala"
	_tmp24_ = list_assignment;
#line 148 "../src/local_vars_optimizer.vala"
	if (_tmp24_ != NULL) {
#line 149 "../src/local_vars_optimizer.vala"
		result = list_assignment;
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (compound);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (increment);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 149 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 149 "../src/local_vars_optimizer.vala"
		return result;
#line 1948 "local_vars_optimizer.c"
	}
#line 152 "../src/local_vars_optimizer.vala"
	_tmp25_ = clean;
#line 152 "../src/local_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp25_, "return")) {
#line 1954 "local_vars_optimizer.c"
		gchar* expression = NULL;
		const gchar* _tmp26_;
		gint _tmp27_;
		gint _tmp28_;
		gchar* _tmp29_;
		gchar* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		gchar* _tmp33_;
		gchar* _tmp34_;
		gboolean _tmp35_ = FALSE;
		const gchar* _tmp36_;
		const gchar* _tmp45_;
		gchar* _tmp47_ = NULL;
		const gchar* _tmp48_;
		gchar* _tmp49_;
		gchar* _tmp50_;
		gchar* _tmp51_;
		gchar* _tmp52_;
		gchar* _tmp53_;
#line 153 "../src/local_vars_optimizer.vala"
		_tmp26_ = clean;
#line 153 "../src/local_vars_optimizer.vala"
		_tmp27_ = strlen ("return");
#line 153 "../src/local_vars_optimizer.vala"
		_tmp28_ = _tmp27_;
#line 153 "../src/local_vars_optimizer.vala"
		_tmp29_ = string_substring (_tmp26_, (glong) _tmp28_, (glong) -1);
#line 153 "../src/local_vars_optimizer.vala"
		_tmp30_ = _tmp29_;
#line 153 "../src/local_vars_optimizer.vala"
		_tmp31_ = string_strip (_tmp30_);
#line 153 "../src/local_vars_optimizer.vala"
		_tmp32_ = _tmp31_;
#line 153 "../src/local_vars_optimizer.vala"
		_tmp33_ = php_to_vala_transpiler_trim_trailing_semicolon (_tmp32_);
#line 153 "../src/local_vars_optimizer.vala"
		_tmp34_ = _tmp33_;
#line 153 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp32_);
#line 153 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp30_);
#line 153 "../src/local_vars_optimizer.vala"
		expression = _tmp34_;
#line 154 "../src/local_vars_optimizer.vala"
		_tmp36_ = expression;
#line 154 "../src/local_vars_optimizer.vala"
		if (g_str_has_prefix (_tmp36_, "(")) {
#line 2003 "local_vars_optimizer.c"
			const gchar* _tmp37_;
#line 154 "../src/local_vars_optimizer.vala"
			_tmp37_ = expression;
#line 154 "../src/local_vars_optimizer.vala"
			_tmp35_ = g_str_has_suffix (_tmp37_, ")");
#line 2009 "local_vars_optimizer.c"
		} else {
#line 154 "../src/local_vars_optimizer.vala"
			_tmp35_ = FALSE;
#line 2013 "local_vars_optimizer.c"
		}
#line 154 "../src/local_vars_optimizer.vala"
		if (_tmp35_) {
#line 2017 "local_vars_optimizer.c"
			const gchar* _tmp38_;
			const gchar* _tmp39_;
			gint _tmp40_;
			gint _tmp41_;
			gchar* _tmp42_;
			gchar* _tmp43_;
			gchar* _tmp44_;
#line 155 "../src/local_vars_optimizer.vala"
			_tmp38_ = expression;
#line 155 "../src/local_vars_optimizer.vala"
			_tmp39_ = expression;
#line 155 "../src/local_vars_optimizer.vala"
			_tmp40_ = strlen (_tmp39_);
#line 155 "../src/local_vars_optimizer.vala"
			_tmp41_ = _tmp40_;
#line 155 "../src/local_vars_optimizer.vala"
			_tmp42_ = string_substring (_tmp38_, (glong) 1, (glong) (_tmp41_ - 2));
#line 155 "../src/local_vars_optimizer.vala"
			_tmp43_ = _tmp42_;
#line 155 "../src/local_vars_optimizer.vala"
			_tmp44_ = string_strip (_tmp43_);
#line 155 "../src/local_vars_optimizer.vala"
			_g_free0 (expression);
#line 155 "../src/local_vars_optimizer.vala"
			expression = _tmp44_;
#line 155 "../src/local_vars_optimizer.vala"
			_g_free0 (_tmp43_);
#line 2045 "local_vars_optimizer.c"
		}
#line 157 "../src/local_vars_optimizer.vala"
		_tmp45_ = expression;
#line 157 "../src/local_vars_optimizer.vala"
		if (g_strcmp0 (_tmp45_, "") == 0) {
#line 2051 "local_vars_optimizer.c"
			gchar* _tmp46_;
#line 158 "../src/local_vars_optimizer.vala"
			_tmp46_ = g_strdup ("return Php.zval.null_value ();");
#line 158 "../src/local_vars_optimizer.vala"
			result = _tmp46_;
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (expression);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (list_assignment);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (compound);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (increment);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (assignment);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (chained_assignment);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (if_line);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (while_line);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (callable_call);
#line 158 "../src/local_vars_optimizer.vala"
			_g_free0 (clean);
#line 158 "../src/local_vars_optimizer.vala"
			return result;
#line 2079 "local_vars_optimizer.c"
		}
#line 160 "../src/local_vars_optimizer.vala"
		_tmp48_ = expression;
#line 160 "../src/local_vars_optimizer.vala"
		_tmp49_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp48_, php_line_number, return_type, &_inner_error0_);
#line 160 "../src/local_vars_optimizer.vala"
		_tmp47_ = _tmp49_;
#line 160 "../src/local_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 160 "../src/local_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (expression);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (list_assignment);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (compound);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (increment);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (assignment);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (chained_assignment);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (if_line);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (while_line);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (callable_call);
#line 160 "../src/local_vars_optimizer.vala"
			_g_free0 (clean);
#line 160 "../src/local_vars_optimizer.vala"
			return NULL;
#line 2113 "local_vars_optimizer.c"
		}
#line 160 "../src/local_vars_optimizer.vala"
		_tmp50_ = php_to_vala_local_vars_optimizer_native_to_zval_return (self, _tmp47_, return_type);
#line 160 "../src/local_vars_optimizer.vala"
		_tmp51_ = _tmp50_;
#line 160 "../src/local_vars_optimizer.vala"
		_tmp52_ = g_strdup_printf ("return %s;", _tmp51_);
#line 160 "../src/local_vars_optimizer.vala"
		_tmp53_ = _tmp52_;
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp51_);
#line 160 "../src/local_vars_optimizer.vala"
		result = _tmp53_;
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp47_);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (expression);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (list_assignment);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (compound);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (increment);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 160 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 160 "../src/local_vars_optimizer.vala"
		return result;
#line 2151 "local_vars_optimizer.c"
	}
#line 163 "../src/local_vars_optimizer.vala"
	_tmp55_ = self->priv->transpiler;
#line 163 "../src/local_vars_optimizer.vala"
	_tmp56_ = php_to_vala_transpiler_transpile_line (_tmp55_, line, php_line_number, &_inner_error0_);
#line 163 "../src/local_vars_optimizer.vala"
	_tmp54_ = _tmp56_;
#line 163 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 163 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (list_assignment);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (compound);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (increment);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (assignment);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (chained_assignment);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (if_line);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (while_line);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (callable_call);
#line 163 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 163 "../src/local_vars_optimizer.vala"
		return NULL;
#line 2183 "local_vars_optimizer.c"
	}
#line 163 "../src/local_vars_optimizer.vala"
	_tmp57_ = _tmp54_;
#line 163 "../src/local_vars_optimizer.vala"
	_tmp54_ = NULL;
#line 163 "../src/local_vars_optimizer.vala"
	result = _tmp57_;
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp54_);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (list_assignment);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (compound);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (increment);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (assignment);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (chained_assignment);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (if_line);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (while_line);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (callable_call);
#line 163 "../src/local_vars_optimizer.vala"
	_g_free0 (clean);
#line 163 "../src/local_vars_optimizer.vala"
	return result;
#line 2213 "local_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 2237 "local_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 2245 "local_vars_optimizer.c"
	} else {
#line 1190 "glib-2.0.vapi"
		result = -1;
#line 1190 "glib-2.0.vapi"
		return result;
#line 2251 "local_vars_optimizer.c"
	}
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_control_condition (PhpToValaLocalVarsOptimizer* self,
                                                              const gchar* keyword,
                                                              const gchar* line,
                                                              gint php_line_number,
                                                              GError** error)
{
	gboolean _tmp0_ = FALSE;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gboolean _tmp3_;
	gint open_index = 0;
	gint close_index = 0;
	gboolean _tmp6_ = FALSE;
	gchar* rest = NULL;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gboolean _tmp11_ = FALSE;
	const gchar* _tmp12_;
	gchar* condition = NULL;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	const gchar* _tmp18_;
	gchar* _tmp19_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 166 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 166 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (keyword != NULL, NULL);
#line 166 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 167 "../src/local_vars_optimizer.vala"
	_tmp1_ = g_strconcat (keyword, "(", NULL);
#line 167 "../src/local_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 167 "../src/local_vars_optimizer.vala"
	_tmp3_ = !g_str_has_prefix (line, _tmp2_);
#line 167 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp2_);
#line 167 "../src/local_vars_optimizer.vala"
	if (_tmp3_) {
#line 2301 "local_vars_optimizer.c"
		gchar* _tmp4_;
		gchar* _tmp5_;
#line 167 "../src/local_vars_optimizer.vala"
		_tmp4_ = g_strconcat (keyword, " (", NULL);
#line 167 "../src/local_vars_optimizer.vala"
		_tmp5_ = _tmp4_;
#line 167 "../src/local_vars_optimizer.vala"
		_tmp0_ = !g_str_has_prefix (line, _tmp5_);
#line 167 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp5_);
#line 2312 "local_vars_optimizer.c"
	} else {
#line 167 "../src/local_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 2316 "local_vars_optimizer.c"
	}
#line 167 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 168 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 168 "../src/local_vars_optimizer.vala"
		return result;
#line 2324 "local_vars_optimizer.c"
	}
#line 170 "../src/local_vars_optimizer.vala"
	open_index = string_index_of (line, "(", 0);
#line 171 "../src/local_vars_optimizer.vala"
	close_index = php_to_vala_transpiler_find_matching_paren (line, open_index);
#line 172 "../src/local_vars_optimizer.vala"
	if (open_index < 0) {
#line 172 "../src/local_vars_optimizer.vala"
		_tmp6_ = TRUE;
#line 2334 "local_vars_optimizer.c"
	} else {
#line 172 "../src/local_vars_optimizer.vala"
		_tmp6_ = close_index <= open_index;
#line 2338 "local_vars_optimizer.c"
	}
#line 172 "../src/local_vars_optimizer.vala"
	if (_tmp6_) {
#line 173 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 173 "../src/local_vars_optimizer.vala"
		return result;
#line 2346 "local_vars_optimizer.c"
	}
#line 175 "../src/local_vars_optimizer.vala"
	_tmp7_ = string_substring (line, (glong) (close_index + 1), (glong) -1);
#line 175 "../src/local_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 175 "../src/local_vars_optimizer.vala"
	_tmp9_ = string_strip (_tmp8_);
#line 175 "../src/local_vars_optimizer.vala"
	_tmp10_ = _tmp9_;
#line 175 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp8_);
#line 175 "../src/local_vars_optimizer.vala"
	rest = _tmp10_;
#line 176 "../src/local_vars_optimizer.vala"
	_tmp12_ = rest;
#line 176 "../src/local_vars_optimizer.vala"
	if (g_strcmp0 (_tmp12_, "") != 0) {
#line 2364 "local_vars_optimizer.c"
		const gchar* _tmp13_;
#line 176 "../src/local_vars_optimizer.vala"
		_tmp13_ = rest;
#line 176 "../src/local_vars_optimizer.vala"
		_tmp11_ = g_strcmp0 (_tmp13_, "{") != 0;
#line 2370 "local_vars_optimizer.c"
	} else {
#line 176 "../src/local_vars_optimizer.vala"
		_tmp11_ = FALSE;
#line 2374 "local_vars_optimizer.c"
	}
#line 176 "../src/local_vars_optimizer.vala"
	if (_tmp11_) {
#line 177 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 177 "../src/local_vars_optimizer.vala"
		_g_free0 (rest);
#line 177 "../src/local_vars_optimizer.vala"
		return result;
#line 2384 "local_vars_optimizer.c"
	}
#line 179 "../src/local_vars_optimizer.vala"
	_tmp14_ = string_substring (line, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 179 "../src/local_vars_optimizer.vala"
	_tmp15_ = _tmp14_;
#line 179 "../src/local_vars_optimizer.vala"
	_tmp16_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp15_, php_line_number, "bool", &_inner_error0_);
#line 179 "../src/local_vars_optimizer.vala"
	_tmp17_ = _tmp16_;
#line 179 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp15_);
#line 179 "../src/local_vars_optimizer.vala"
	condition = _tmp17_;
#line 179 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 179 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 179 "../src/local_vars_optimizer.vala"
		_g_free0 (rest);
#line 179 "../src/local_vars_optimizer.vala"
		return NULL;
#line 2406 "local_vars_optimizer.c"
	}
#line 180 "../src/local_vars_optimizer.vala"
	_tmp18_ = condition;
#line 180 "../src/local_vars_optimizer.vala"
	_tmp19_ = g_strdup_printf ("%s (%s) {", keyword, _tmp18_);
#line 180 "../src/local_vars_optimizer.vala"
	result = _tmp19_;
#line 180 "../src/local_vars_optimizer.vala"
	_g_free0 (condition);
#line 180 "../src/local_vars_optimizer.vala"
	_g_free0 (rest);
#line 180 "../src/local_vars_optimizer.vala"
	return result;
#line 2420 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_native_chained_assignment (PhpToValaLocalVarsOptimizer* 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* _tmp56_;
	const gchar* _tmp57_;
	gchar* _tmp58_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 183 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 183 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 184 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "$")) {
#line 184 "../src/local_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 2468 "local_vars_optimizer.c"
	} else {
#line 184 "../src/local_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, ";");
#line 2472 "local_vars_optimizer.c"
	}
#line 184 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 185 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 185 "../src/local_vars_optimizer.vala"
		return result;
#line 2480 "local_vars_optimizer.c"
	}
#line 187 "../src/local_vars_optimizer.vala"
	_tmp1_ = self->priv->transpiler;
#line 187 "../src/local_vars_optimizer.vala"
	_tmp2_ = php_to_vala_transpiler_trim_trailing_semicolon (line);
#line 187 "../src/local_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 187 "../src/local_vars_optimizer.vala"
	_tmp4_ = php_to_vala_transpiler_split_top_level (_tmp1_, _tmp3_, '=');
#line 187 "../src/local_vars_optimizer.vala"
	_tmp5_ = _tmp4_;
#line 187 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp3_);
#line 187 "../src/local_vars_optimizer.vala"
	parts = _tmp5_;
#line 188 "../src/local_vars_optimizer.vala"
	_tmp6_ = parts;
#line 188 "../src/local_vars_optimizer.vala"
	_tmp7_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp6_);
#line 188 "../src/local_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 188 "../src/local_vars_optimizer.vala"
	if (_tmp8_ <= 2) {
#line 189 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 189 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 189 "../src/local_vars_optimizer.vala"
		return result;
#line 2510 "local_vars_optimizer.c"
	}
#line 191 "../src/local_vars_optimizer.vala"
	_tmp9_ = parts;
#line 191 "../src/local_vars_optimizer.vala"
	_tmp10_ = parts;
#line 191 "../src/local_vars_optimizer.vala"
	_tmp11_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp10_);
#line 191 "../src/local_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 191 "../src/local_vars_optimizer.vala"
	_tmp13_ = gee_abstract_list_get ((GeeAbstractList*) _tmp9_, _tmp12_ - 1);
#line 191 "../src/local_vars_optimizer.vala"
	_tmp14_ = (gchar*) _tmp13_;
#line 191 "../src/local_vars_optimizer.vala"
	_tmp15_ = string_strip (_tmp14_);
#line 191 "../src/local_vars_optimizer.vala"
	_tmp16_ = _tmp15_;
#line 191 "../src/local_vars_optimizer.vala"
	_tmp17_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp16_, php_line_number, "", &_inner_error0_);
#line 191 "../src/local_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 191 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp16_);
#line 191 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp14_);
#line 191 "../src/local_vars_optimizer.vala"
	expression = _tmp18_;
#line 191 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 191 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 191 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 191 "../src/local_vars_optimizer.vala"
		return NULL;
#line 2546 "local_vars_optimizer.c"
	}
#line 192 "../src/local_vars_optimizer.vala"
	_tmp19_ = expression;
#line 192 "../src/local_vars_optimizer.vala"
	_tmp20_ = php_to_vala_local_vars_optimizer_infer_local_expression_type (self, _tmp19_);
#line 192 "../src/local_vars_optimizer.vala"
	type_name = _tmp20_;
#line 193 "../src/local_vars_optimizer.vala"
	_tmp21_ = g_string_new ("");
#line 193 "../src/local_vars_optimizer.vala"
	output = _tmp21_;
#line 2558 "local_vars_optimizer.c"
	{
		gint i = 0;
		GeeArrayList* _tmp22_;
		gint _tmp23_;
		gint _tmp24_;
#line 194 "../src/local_vars_optimizer.vala"
		_tmp22_ = parts;
#line 194 "../src/local_vars_optimizer.vala"
		_tmp23_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp22_);
#line 194 "../src/local_vars_optimizer.vala"
		_tmp24_ = _tmp23_;
#line 194 "../src/local_vars_optimizer.vala"
		i = _tmp24_ - 2;
#line 2572 "local_vars_optimizer.c"
		{
			gboolean _tmp25_ = FALSE;
#line 194 "../src/local_vars_optimizer.vala"
			_tmp25_ = TRUE;
#line 194 "../src/local_vars_optimizer.vala"
			while (TRUE) {
#line 2579 "local_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_;
				const gchar* _tmp37_;
				GString* _tmp38_;
				PhpToValaTranspiler* _tmp40_;
				GeeHashMap* _tmp41_;
				const gchar* _tmp42_;
				const gchar* _tmp54_;
				gchar* _tmp55_;
#line 194 "../src/local_vars_optimizer.vala"
				if (!_tmp25_) {
#line 2600 "local_vars_optimizer.c"
					gint _tmp26_;
#line 194 "../src/local_vars_optimizer.vala"
					_tmp26_ = i;
#line 194 "../src/local_vars_optimizer.vala"
					i = _tmp26_ - 1;
#line 2606 "local_vars_optimizer.c"
				}
#line 194 "../src/local_vars_optimizer.vala"
				_tmp25_ = FALSE;
#line 194 "../src/local_vars_optimizer.vala"
				if (!(i >= 0)) {
#line 194 "../src/local_vars_optimizer.vala"
					break;
#line 2614 "local_vars_optimizer.c"
				}
#line 195 "../src/local_vars_optimizer.vala"
				_tmp27_ = parts;
#line 195 "../src/local_vars_optimizer.vala"
				_tmp28_ = gee_abstract_list_get ((GeeAbstractList*) _tmp27_, i);
#line 195 "../src/local_vars_optimizer.vala"
				_tmp29_ = (gchar*) _tmp28_;
#line 195 "../src/local_vars_optimizer.vala"
				_tmp30_ = string_strip (_tmp29_);
#line 195 "../src/local_vars_optimizer.vala"
				_tmp31_ = _tmp30_;
#line 195 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp29_);
#line 195 "../src/local_vars_optimizer.vala"
				name = _tmp31_;
#line 196 "../src/local_vars_optimizer.vala"
				_tmp32_ = name;
#line 196 "../src/local_vars_optimizer.vala"
				if (!g_str_has_prefix (_tmp32_, "$")) {
#line 197 "../src/local_vars_optimizer.vala"
					result = NULL;
#line 197 "../src/local_vars_optimizer.vala"
					_g_free0 (name);
#line 197 "../src/local_vars_optimizer.vala"
					_g_string_free0 (output);
#line 197 "../src/local_vars_optimizer.vala"
					_g_free0 (type_name);
#line 197 "../src/local_vars_optimizer.vala"
					_g_free0 (expression);
#line 197 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (parts);
#line 197 "../src/local_vars_optimizer.vala"
					return result;
#line 2648 "local_vars_optimizer.c"
				}
#line 199 "../src/local_vars_optimizer.vala"
				_tmp33_ = name;
#line 199 "../src/local_vars_optimizer.vala"
				_tmp34_ = string_substring (_tmp33_, (glong) 1, (glong) -1);
#line 199 "../src/local_vars_optimizer.vala"
				_tmp35_ = _tmp34_;
#line 199 "../src/local_vars_optimizer.vala"
				_tmp36_ = string_strip (_tmp35_);
#line 199 "../src/local_vars_optimizer.vala"
				_g_free0 (name);
#line 199 "../src/local_vars_optimizer.vala"
				name = _tmp36_;
#line 199 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp35_);
#line 200 "../src/local_vars_optimizer.vala"
				_tmp37_ = name;
#line 200 "../src/local_vars_optimizer.vala"
				if (!php_to_vala_local_vars_optimizer_is_plain_identifier (self, _tmp37_)) {
#line 201 "../src/local_vars_optimizer.vala"
					result = NULL;
#line 201 "../src/local_vars_optimizer.vala"
					_g_free0 (name);
#line 201 "../src/local_vars_optimizer.vala"
					_g_string_free0 (output);
#line 201 "../src/local_vars_optimizer.vala"
					_g_free0 (type_name);
#line 201 "../src/local_vars_optimizer.vala"
					_g_free0 (expression);
#line 201 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (parts);
#line 201 "../src/local_vars_optimizer.vala"
					return result;
#line 2682 "local_vars_optimizer.c"
				}
#line 203 "../src/local_vars_optimizer.vala"
				_tmp38_ = output;
#line 203 "../src/local_vars_optimizer.vala"
				if (_tmp38_->len > ((gssize) 0)) {
#line 2688 "local_vars_optimizer.c"
					GString* _tmp39_;
#line 204 "../src/local_vars_optimizer.vala"
					_tmp39_ = output;
#line 204 "../src/local_vars_optimizer.vala"
					g_string_append (_tmp39_, "\n");
#line 2694 "local_vars_optimizer.c"
				}
#line 206 "../src/local_vars_optimizer.vala"
				_tmp40_ = self->priv->transpiler;
#line 206 "../src/local_vars_optimizer.vala"
				_tmp41_ = _tmp40_->variable_types;
#line 206 "../src/local_vars_optimizer.vala"
				_tmp42_ = name;
#line 206 "../src/local_vars_optimizer.vala"
				if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp41_, _tmp42_)) {
#line 2704 "local_vars_optimizer.c"
					PhpToValaTranspiler* _tmp43_;
					GeeHashMap* _tmp44_;
					const gchar* _tmp45_;
					const gchar* _tmp46_;
					GString* _tmp47_;
					const gchar* _tmp48_;
					const gchar* _tmp49_;
					const gchar* _tmp50_;
#line 207 "../src/local_vars_optimizer.vala"
					_tmp43_ = self->priv->transpiler;
#line 207 "../src/local_vars_optimizer.vala"
					_tmp44_ = _tmp43_->variable_types;
#line 207 "../src/local_vars_optimizer.vala"
					_tmp45_ = name;
#line 207 "../src/local_vars_optimizer.vala"
					_tmp46_ = type_name;
#line 207 "../src/local_vars_optimizer.vala"
					gee_abstract_map_set ((GeeAbstractMap*) _tmp44_, _tmp45_, _tmp46_);
#line 208 "../src/local_vars_optimizer.vala"
					_tmp47_ = output;
#line 208 "../src/local_vars_optimizer.vala"
					_tmp48_ = type_name;
#line 208 "../src/local_vars_optimizer.vala"
					_tmp49_ = name;
#line 208 "../src/local_vars_optimizer.vala"
					_tmp50_ = expression;
#line 208 "../src/local_vars_optimizer.vala"
					g_string_append_printf (_tmp47_, "%s %s = %s;", _tmp48_, _tmp49_, _tmp50_);
#line 2733 "local_vars_optimizer.c"
				} else {
					GString* _tmp51_;
					const gchar* _tmp52_;
					const gchar* _tmp53_;
#line 210 "../src/local_vars_optimizer.vala"
					_tmp51_ = output;
#line 210 "../src/local_vars_optimizer.vala"
					_tmp52_ = name;
#line 210 "../src/local_vars_optimizer.vala"
					_tmp53_ = expression;
#line 210 "../src/local_vars_optimizer.vala"
					g_string_append_printf (_tmp51_, "%s = %s;", _tmp52_, _tmp53_);
#line 2746 "local_vars_optimizer.c"
				}
#line 212 "../src/local_vars_optimizer.vala"
				_tmp54_ = name;
#line 212 "../src/local_vars_optimizer.vala"
				_tmp55_ = g_strdup (_tmp54_);
#line 212 "../src/local_vars_optimizer.vala"
				_g_free0 (expression);
#line 212 "../src/local_vars_optimizer.vala"
				expression = _tmp55_;
#line 194 "../src/local_vars_optimizer.vala"
				_g_free0 (name);
#line 2758 "local_vars_optimizer.c"
			}
		}
	}
#line 214 "../src/local_vars_optimizer.vala"
	_tmp56_ = output;
#line 214 "../src/local_vars_optimizer.vala"
	_tmp57_ = _tmp56_->str;
#line 214 "../src/local_vars_optimizer.vala"
	_tmp58_ = g_strdup (_tmp57_);
#line 214 "../src/local_vars_optimizer.vala"
	result = _tmp58_;
#line 214 "../src/local_vars_optimizer.vala"
	_g_string_free0 (output);
#line 214 "../src/local_vars_optimizer.vala"
	_g_free0 (type_name);
#line 214 "../src/local_vars_optimizer.vala"
	_g_free0 (expression);
#line 214 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (parts);
#line 214 "../src/local_vars_optimizer.vala"
	return result;
#line 2780 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_native_assignment (PhpToValaLocalVarsOptimizer* 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 217 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 217 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 218 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "$")) {
#line 218 "../src/local_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 2840 "local_vars_optimizer.c"
	} else {
#line 218 "../src/local_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, ";");
#line 2844 "local_vars_optimizer.c"
	}
#line 218 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 219 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 219 "../src/local_vars_optimizer.vala"
		return result;
#line 2852 "local_vars_optimizer.c"
	}
#line 221 "../src/local_vars_optimizer.vala"
	_tmp1_ = php_to_vala_transpiler_trim_trailing_semicolon (line);
#line 221 "../src/local_vars_optimizer.vala"
	clean = _tmp1_;
#line 222 "../src/local_vars_optimizer.vala"
	_tmp2_ = self->priv->transpiler;
#line 222 "../src/local_vars_optimizer.vala"
	_tmp3_ = clean;
#line 222 "../src/local_vars_optimizer.vala"
	_tmp4_ = php_to_vala_transpiler_split_top_level (_tmp2_, _tmp3_, '=');
#line 222 "../src/local_vars_optimizer.vala"
	parts = _tmp4_;
#line 223 "../src/local_vars_optimizer.vala"
	_tmp5_ = parts;
#line 223 "../src/local_vars_optimizer.vala"
	_tmp6_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp5_);
#line 223 "../src/local_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 223 "../src/local_vars_optimizer.vala"
	if (_tmp7_ != 2) {
#line 224 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 224 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 224 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 224 "../src/local_vars_optimizer.vala"
		return result;
#line 2882 "local_vars_optimizer.c"
	}
#line 226 "../src/local_vars_optimizer.vala"
	_tmp8_ = parts;
#line 226 "../src/local_vars_optimizer.vala"
	_tmp9_ = gee_abstract_list_get ((GeeAbstractList*) _tmp8_, 0);
#line 226 "../src/local_vars_optimizer.vala"
	_tmp10_ = (gchar*) _tmp9_;
#line 226 "../src/local_vars_optimizer.vala"
	_tmp11_ = string_strip (_tmp10_);
#line 226 "../src/local_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 226 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp10_);
#line 226 "../src/local_vars_optimizer.vala"
	lhs = _tmp12_;
#line 227 "../src/local_vars_optimizer.vala"
	_tmp13_ = lhs;
#line 227 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (_tmp13_, "$")) {
#line 228 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 228 "../src/local_vars_optimizer.vala"
		_g_free0 (lhs);
#line 228 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 228 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 228 "../src/local_vars_optimizer.vala"
		return result;
#line 2912 "local_vars_optimizer.c"
	}
#line 230 "../src/local_vars_optimizer.vala"
	_tmp14_ = lhs;
#line 230 "../src/local_vars_optimizer.vala"
	_tmp15_ = string_substring (_tmp14_, (glong) 1, (glong) -1);
#line 230 "../src/local_vars_optimizer.vala"
	_tmp16_ = _tmp15_;
#line 230 "../src/local_vars_optimizer.vala"
	_tmp17_ = string_strip (_tmp16_);
#line 230 "../src/local_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 230 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp16_);
#line 230 "../src/local_vars_optimizer.vala"
	name = _tmp18_;
#line 231 "../src/local_vars_optimizer.vala"
	_tmp19_ = name;
#line 231 "../src/local_vars_optimizer.vala"
	if (!php_to_vala_local_vars_optimizer_is_plain_identifier (self, _tmp19_)) {
#line 232 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 232 "../src/local_vars_optimizer.vala"
		_g_free0 (name);
#line 232 "../src/local_vars_optimizer.vala"
		_g_free0 (lhs);
#line 232 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 232 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 232 "../src/local_vars_optimizer.vala"
		return result;
#line 2944 "local_vars_optimizer.c"
	}
#line 234 "../src/local_vars_optimizer.vala"
	_tmp20_ = parts;
#line 234 "../src/local_vars_optimizer.vala"
	_tmp21_ = gee_abstract_list_get ((GeeAbstractList*) _tmp20_, 1);
#line 234 "../src/local_vars_optimizer.vala"
	_tmp22_ = (gchar*) _tmp21_;
#line 234 "../src/local_vars_optimizer.vala"
	_tmp23_ = string_strip (_tmp22_);
#line 234 "../src/local_vars_optimizer.vala"
	_tmp24_ = _tmp23_;
#line 234 "../src/local_vars_optimizer.vala"
	_tmp25_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp24_, php_line_number, "", &_inner_error0_);
#line 234 "../src/local_vars_optimizer.vala"
	_tmp26_ = _tmp25_;
#line 234 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp24_);
#line 234 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp22_);
#line 234 "../src/local_vars_optimizer.vala"
	expression = _tmp26_;
#line 234 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 234 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 234 "../src/local_vars_optimizer.vala"
		_g_free0 (name);
#line 234 "../src/local_vars_optimizer.vala"
		_g_free0 (lhs);
#line 234 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 234 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 234 "../src/local_vars_optimizer.vala"
		return NULL;
#line 2980 "local_vars_optimizer.c"
	}
#line 235 "../src/local_vars_optimizer.vala"
	_tmp27_ = expression;
#line 235 "../src/local_vars_optimizer.vala"
	_tmp28_ = php_to_vala_local_vars_optimizer_infer_local_expression_type (self, _tmp27_);
#line 235 "../src/local_vars_optimizer.vala"
	type_name = _tmp28_;
#line 236 "../src/local_vars_optimizer.vala"
	_tmp29_ = self->priv->transpiler;
#line 236 "../src/local_vars_optimizer.vala"
	_tmp30_ = _tmp29_->variable_types;
#line 236 "../src/local_vars_optimizer.vala"
	_tmp31_ = name;
#line 236 "../src/local_vars_optimizer.vala"
	if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp30_, _tmp31_)) {
#line 2996 "local_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 237 "../src/local_vars_optimizer.vala"
		_tmp32_ = self->priv->transpiler;
#line 237 "../src/local_vars_optimizer.vala"
		_tmp33_ = _tmp32_->variable_types;
#line 237 "../src/local_vars_optimizer.vala"
		_tmp34_ = name;
#line 237 "../src/local_vars_optimizer.vala"
		_tmp35_ = type_name;
#line 237 "../src/local_vars_optimizer.vala"
		gee_abstract_map_set ((GeeAbstractMap*) _tmp33_, _tmp34_, _tmp35_);
#line 238 "../src/local_vars_optimizer.vala"
		_tmp36_ = type_name;
#line 238 "../src/local_vars_optimizer.vala"
		_tmp37_ = name;
#line 238 "../src/local_vars_optimizer.vala"
		_tmp38_ = expression;
#line 238 "../src/local_vars_optimizer.vala"
		_tmp39_ = g_strdup_printf ("%s %s = %s;", _tmp36_, _tmp37_, _tmp38_);
#line 238 "../src/local_vars_optimizer.vala"
		result = _tmp39_;
#line 238 "../src/local_vars_optimizer.vala"
		_g_free0 (type_name);
#line 238 "../src/local_vars_optimizer.vala"
		_g_free0 (expression);
#line 238 "../src/local_vars_optimizer.vala"
		_g_free0 (name);
#line 238 "../src/local_vars_optimizer.vala"
		_g_free0 (lhs);
#line 238 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (parts);
#line 238 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 238 "../src/local_vars_optimizer.vala"
		return result;
#line 3039 "local_vars_optimizer.c"
	}
#line 240 "../src/local_vars_optimizer.vala"
	_tmp40_ = name;
#line 240 "../src/local_vars_optimizer.vala"
	_tmp41_ = expression;
#line 240 "../src/local_vars_optimizer.vala"
	_tmp42_ = g_strdup_printf ("%s = %s;", _tmp40_, _tmp41_);
#line 240 "../src/local_vars_optimizer.vala"
	result = _tmp42_;
#line 240 "../src/local_vars_optimizer.vala"
	_g_free0 (type_name);
#line 240 "../src/local_vars_optimizer.vala"
	_g_free0 (expression);
#line 240 "../src/local_vars_optimizer.vala"
	_g_free0 (name);
#line 240 "../src/local_vars_optimizer.vala"
	_g_free0 (lhs);
#line 240 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (parts);
#line 240 "../src/local_vars_optimizer.vala"
	_g_free0 (clean);
#line 240 "../src/local_vars_optimizer.vala"
	return result;
#line 3063 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_native_increment (PhpToValaLocalVarsOptimizer* 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* _tmp16_;
	gchar* _tmp17_;
	gchar* result;
#line 243 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 243 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 244 "../src/local_vars_optimizer.vala"
	if (!g_str_has_suffix (line, "++;")) {
#line 244 "../src/local_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, "--;");
#line 3098 "local_vars_optimizer.c"
	} else {
#line 244 "../src/local_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 3102 "local_vars_optimizer.c"
	}
#line 244 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 245 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 245 "../src/local_vars_optimizer.vala"
		return result;
#line 3110 "local_vars_optimizer.c"
	}
#line 247 "../src/local_vars_optimizer.vala"
	_tmp1_ = strlen (line);
#line 247 "../src/local_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 247 "../src/local_vars_optimizer.vala"
	_tmp3_ = string_substring (line, (glong) 0, (glong) (_tmp2_ - 3));
#line 247 "../src/local_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 247 "../src/local_vars_optimizer.vala"
	_tmp5_ = string_strip (_tmp4_);
#line 247 "../src/local_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 247 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 247 "../src/local_vars_optimizer.vala"
	name = _tmp6_;
#line 248 "../src/local_vars_optimizer.vala"
	_tmp7_ = name;
#line 248 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (_tmp7_, "$")) {
#line 249 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 249 "../src/local_vars_optimizer.vala"
		_g_free0 (name);
#line 249 "../src/local_vars_optimizer.vala"
		return result;
#line 3138 "local_vars_optimizer.c"
	}
#line 251 "../src/local_vars_optimizer.vala"
	if (g_str_has_suffix (line, "++;")) {
#line 251 "../src/local_vars_optimizer.vala"
		_tmp8_ = "++";
#line 3144 "local_vars_optimizer.c"
	} else {
#line 251 "../src/local_vars_optimizer.vala"
		_tmp8_ = "--";
#line 3148 "local_vars_optimizer.c"
	}
#line 251 "../src/local_vars_optimizer.vala"
	_tmp9_ = name;
#line 251 "../src/local_vars_optimizer.vala"
	_tmp10_ = string_substring (_tmp9_, (glong) 1, (glong) -1);
#line 251 "../src/local_vars_optimizer.vala"
	_tmp11_ = _tmp10_;
#line 251 "../src/local_vars_optimizer.vala"
	_tmp12_ = string_strip (_tmp11_);
#line 251 "../src/local_vars_optimizer.vala"
	_tmp13_ = _tmp12_;
#line 251 "../src/local_vars_optimizer.vala"
	_tmp14_ = php_to_vala_local_vars_optimizer_native_variable_name (self, _tmp13_);
#line 251 "../src/local_vars_optimizer.vala"
	_tmp15_ = _tmp14_;
#line 251 "../src/local_vars_optimizer.vala"
	_tmp16_ = g_strdup_printf ("%s%s;", _tmp15_, _tmp8_);
#line 251 "../src/local_vars_optimizer.vala"
	_tmp17_ = _tmp16_;
#line 251 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp15_);
#line 251 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp13_);
#line 251 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp11_);
#line 251 "../src/local_vars_optimizer.vala"
	result = _tmp17_;
#line 251 "../src/local_vars_optimizer.vala"
	_g_free0 (name);
#line 251 "../src/local_vars_optimizer.vala"
	return result;
#line 3180 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_native_compound_assignment (PhpToValaLocalVarsOptimizer* self,
                                                                       const gchar* line,
                                                                       gint php_line_number,
                                                                       GError** error)
{
	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;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 254 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 254 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 255 "../src/local_vars_optimizer.vala"
	_tmp0_ = php_to_vala_transpiler_trim_trailing_semicolon (line);
#line 255 "../src/local_vars_optimizer.vala"
	clean = _tmp0_;
#line 256 "../src/local_vars_optimizer.vala"
	_tmp1_ = g_strdup ("+=");
#line 256 "../src/local_vars_optimizer.vala"
	_tmp2_ = g_strdup ("-=");
#line 256 "../src/local_vars_optimizer.vala"
	_tmp3_ = g_strdup ("*=");
#line 256 "../src/local_vars_optimizer.vala"
	_tmp4_ = g_strdup ("/=");
#line 256 "../src/local_vars_optimizer.vala"
	_tmp5_ = g_new0 (gchar*, 4 + 1);
#line 256 "../src/local_vars_optimizer.vala"
	_tmp5_[0] = _tmp1_;
#line 256 "../src/local_vars_optimizer.vala"
	_tmp5_[1] = _tmp2_;
#line 256 "../src/local_vars_optimizer.vala"
	_tmp5_[2] = _tmp3_;
#line 256 "../src/local_vars_optimizer.vala"
	_tmp5_[3] = _tmp4_;
#line 256 "../src/local_vars_optimizer.vala"
	operators = _tmp5_;
#line 256 "../src/local_vars_optimizer.vala"
	operators_length1 = 4;
#line 256 "../src/local_vars_optimizer.vala"
	_operators_size_ = operators_length1;
#line 257 "../src/local_vars_optimizer.vala"
	_tmp6_ = operators;
#line 257 "../src/local_vars_optimizer.vala"
	_tmp6__length1 = operators_length1;
#line 3239 "local_vars_optimizer.c"
	{
		gchar** op_collection = NULL;
		gint op_collection_length1 = 0;
		gint _op_collection_size_ = 0;
		gint op_it = 0;
#line 257 "../src/local_vars_optimizer.vala"
		op_collection = _tmp6_;
#line 257 "../src/local_vars_optimizer.vala"
		op_collection_length1 = _tmp6__length1;
#line 257 "../src/local_vars_optimizer.vala"
		for (op_it = 0; op_it < op_collection_length1; op_it = op_it + 1) {
#line 3251 "local_vars_optimizer.c"
			gchar* _tmp7_;
			gchar* op = NULL;
#line 257 "../src/local_vars_optimizer.vala"
			_tmp7_ = g_strdup (op_collection[op_it]);
#line 257 "../src/local_vars_optimizer.vala"
			op = _tmp7_;
#line 3258 "local_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* _tmp24_ = NULL;
				const gchar* _tmp25_;
				gchar* _tmp26_;
				const gchar* _tmp27_;
				gchar* _tmp28_;
				gchar* _tmp29_;
				gchar* _tmp30_;
				gchar* _tmp31_;
				gchar* _tmp32_;
				gchar* _tmp33_;
				const gchar* _tmp34_;
				gchar* _tmp35_;
				gchar* _tmp36_;
#line 258 "../src/local_vars_optimizer.vala"
				_tmp8_ = clean;
#line 258 "../src/local_vars_optimizer.vala"
				_tmp9_ = op;
#line 258 "../src/local_vars_optimizer.vala"
				index = string_index_of (_tmp8_, _tmp9_, 0);
#line 259 "../src/local_vars_optimizer.vala"
				if (index <= 0) {
#line 260 "../src/local_vars_optimizer.vala"
					_g_free0 (op);
#line 260 "../src/local_vars_optimizer.vala"
					continue;
#line 3304 "local_vars_optimizer.c"
				}
#line 262 "../src/local_vars_optimizer.vala"
				_tmp10_ = clean;
#line 262 "../src/local_vars_optimizer.vala"
				_tmp11_ = string_substring (_tmp10_, (glong) 0, (glong) index);
#line 262 "../src/local_vars_optimizer.vala"
				_tmp12_ = _tmp11_;
#line 262 "../src/local_vars_optimizer.vala"
				_tmp13_ = string_strip (_tmp12_);
#line 262 "../src/local_vars_optimizer.vala"
				_tmp14_ = _tmp13_;
#line 262 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp12_);
#line 262 "../src/local_vars_optimizer.vala"
				lhs = _tmp14_;
#line 263 "../src/local_vars_optimizer.vala"
				_tmp15_ = clean;
#line 263 "../src/local_vars_optimizer.vala"
				_tmp16_ = op;
#line 263 "../src/local_vars_optimizer.vala"
				_tmp17_ = strlen (_tmp16_);
#line 263 "../src/local_vars_optimizer.vala"
				_tmp18_ = _tmp17_;
#line 263 "../src/local_vars_optimizer.vala"
				_tmp19_ = string_substring (_tmp15_, (glong) (index + _tmp18_), (glong) -1);
#line 263 "../src/local_vars_optimizer.vala"
				_tmp20_ = _tmp19_;
#line 263 "../src/local_vars_optimizer.vala"
				_tmp21_ = string_strip (_tmp20_);
#line 263 "../src/local_vars_optimizer.vala"
				_tmp22_ = _tmp21_;
#line 263 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp20_);
#line 263 "../src/local_vars_optimizer.vala"
				rhs = _tmp22_;
#line 264 "../src/local_vars_optimizer.vala"
				_tmp23_ = lhs;
#line 264 "../src/local_vars_optimizer.vala"
				if (!g_str_has_prefix (_tmp23_, "$")) {
#line 265 "../src/local_vars_optimizer.vala"
					result = NULL;
#line 265 "../src/local_vars_optimizer.vala"
					_g_free0 (rhs);
#line 265 "../src/local_vars_optimizer.vala"
					_g_free0 (lhs);
#line 265 "../src/local_vars_optimizer.vala"
					_g_free0 (op);
#line 265 "../src/local_vars_optimizer.vala"
					operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 265 "../src/local_vars_optimizer.vala"
					_g_free0 (clean);
#line 265 "../src/local_vars_optimizer.vala"
					return result;
#line 3358 "local_vars_optimizer.c"
				}
#line 270 "../src/local_vars_optimizer.vala"
				_tmp25_ = rhs;
#line 270 "../src/local_vars_optimizer.vala"
				_tmp26_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp25_, php_line_number, "", &_inner_error0_);
#line 270 "../src/local_vars_optimizer.vala"
				_tmp24_ = _tmp26_;
#line 270 "../src/local_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 270 "../src/local_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 270 "../src/local_vars_optimizer.vala"
					_g_free0 (rhs);
#line 270 "../src/local_vars_optimizer.vala"
					_g_free0 (lhs);
#line 270 "../src/local_vars_optimizer.vala"
					_g_free0 (op);
#line 270 "../src/local_vars_optimizer.vala"
					operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 270 "../src/local_vars_optimizer.vala"
					_g_free0 (clean);
#line 270 "../src/local_vars_optimizer.vala"
					return NULL;
#line 3382 "local_vars_optimizer.c"
				}
#line 267 "../src/local_vars_optimizer.vala"
				_tmp27_ = lhs;
#line 267 "../src/local_vars_optimizer.vala"
				_tmp28_ = string_substring (_tmp27_, (glong) 1, (glong) -1);
#line 267 "../src/local_vars_optimizer.vala"
				_tmp29_ = _tmp28_;
#line 267 "../src/local_vars_optimizer.vala"
				_tmp30_ = string_strip (_tmp29_);
#line 267 "../src/local_vars_optimizer.vala"
				_tmp31_ = _tmp30_;
#line 267 "../src/local_vars_optimizer.vala"
				_tmp32_ = php_to_vala_local_vars_optimizer_native_variable_name (self, _tmp31_);
#line 267 "../src/local_vars_optimizer.vala"
				_tmp33_ = _tmp32_;
#line 267 "../src/local_vars_optimizer.vala"
				_tmp34_ = op;
#line 267 "../src/local_vars_optimizer.vala"
				_tmp35_ = g_strdup_printf ("%s %s %s;", _tmp33_, _tmp34_, _tmp24_);
#line 267 "../src/local_vars_optimizer.vala"
				_tmp36_ = _tmp35_;
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp33_);
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp31_);
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp29_);
#line 267 "../src/local_vars_optimizer.vala"
				result = _tmp36_;
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp24_);
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (rhs);
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (lhs);
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (op);
#line 267 "../src/local_vars_optimizer.vala"
				operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 267 "../src/local_vars_optimizer.vala"
				_g_free0 (clean);
#line 267 "../src/local_vars_optimizer.vala"
				return result;
#line 3426 "local_vars_optimizer.c"
			}
		}
	}
#line 273 "../src/local_vars_optimizer.vala"
	result = NULL;
#line 273 "../src/local_vars_optimizer.vala"
	operators = (_vala_array_free (operators, operators_length1, (GDestroyNotify) g_free), NULL);
#line 273 "../src/local_vars_optimizer.vala"
	_g_free0 (clean);
#line 273 "../src/local_vars_optimizer.vala"
	return result;
#line 3438 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_native_list_assignment (PhpToValaLocalVarsOptimizer* 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* _tmp62_;
	const gchar* _tmp63_;
	gchar* _tmp64_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 276 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 276 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 277 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "list(")) {
#line 277 "../src/local_vars_optimizer.vala"
		_tmp0_ = !g_str_has_prefix (line, "list (");
#line 3493 "local_vars_optimizer.c"
	} else {
#line 277 "../src/local_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 3497 "local_vars_optimizer.c"
	}
#line 277 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 278 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 278 "../src/local_vars_optimizer.vala"
		return result;
#line 3505 "local_vars_optimizer.c"
	}
#line 280 "../src/local_vars_optimizer.vala"
	close_index = string_index_of (line, ")", 0);
#line 281 "../src/local_vars_optimizer.vala"
	if (close_index < 0) {
#line 282 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 282 "../src/local_vars_optimizer.vala"
		return result;
#line 3515 "local_vars_optimizer.c"
	}
#line 284 "../src/local_vars_optimizer.vala"
	_tmp1_ = string_substring (line, (glong) (close_index + 1), (glong) -1);
#line 284 "../src/local_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 284 "../src/local_vars_optimizer.vala"
	_tmp3_ = string_strip (_tmp2_);
#line 284 "../src/local_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 284 "../src/local_vars_optimizer.vala"
	_tmp5_ = php_to_vala_transpiler_trim_trailing_semicolon (_tmp4_);
#line 284 "../src/local_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 284 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp4_);
#line 284 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp2_);
#line 284 "../src/local_vars_optimizer.vala"
	rest = _tmp6_;
#line 285 "../src/local_vars_optimizer.vala"
	_tmp8_ = rest;
#line 285 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (_tmp8_, "= array(")) {
#line 285 "../src/local_vars_optimizer.vala"
		_tmp7_ = TRUE;
#line 3541 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp9_;
#line 285 "../src/local_vars_optimizer.vala"
		_tmp9_ = rest;
#line 285 "../src/local_vars_optimizer.vala"
		_tmp7_ = !g_str_has_suffix (_tmp9_, ")");
#line 3548 "local_vars_optimizer.c"
	}
#line 285 "../src/local_vars_optimizer.vala"
	if (_tmp7_) {
#line 286 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 286 "../src/local_vars_optimizer.vala"
		_g_free0 (rest);
#line 286 "../src/local_vars_optimizer.vala"
		return result;
#line 3558 "local_vars_optimizer.c"
	}
#line 288 "../src/local_vars_optimizer.vala"
	_tmp10_ = self->priv->transpiler;
#line 288 "../src/local_vars_optimizer.vala"
	_tmp11_ = string_substring (line, (glong) (string_index_of (line, "(", 0) + 1), (glong) ((close_index - string_index_of (line, "(", 0)) - 1));
#line 288 "../src/local_vars_optimizer.vala"
	_tmp12_ = _tmp11_;
#line 288 "../src/local_vars_optimizer.vala"
	_tmp13_ = php_to_vala_transpiler_split_top_level (_tmp10_, _tmp12_, ',');
#line 288 "../src/local_vars_optimizer.vala"
	_tmp14_ = _tmp13_;
#line 288 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp12_);
#line 288 "../src/local_vars_optimizer.vala"
	targets = _tmp14_;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp15_ = self->priv->transpiler;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp16_ = rest;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp17_ = strlen ("= array(");
#line 289 "../src/local_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp19_ = rest;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp20_ = strlen (_tmp19_);
#line 289 "../src/local_vars_optimizer.vala"
	_tmp21_ = _tmp20_;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp22_ = strlen ("= array(");
#line 289 "../src/local_vars_optimizer.vala"
	_tmp23_ = _tmp22_;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp24_ = string_substring (_tmp16_, (glong) _tmp18_, (glong) ((_tmp21_ - _tmp23_) - 1));
#line 289 "../src/local_vars_optimizer.vala"
	_tmp25_ = _tmp24_;
#line 289 "../src/local_vars_optimizer.vala"
	_tmp26_ = php_to_vala_transpiler_split_top_level (_tmp15_, _tmp25_, ',');
#line 289 "../src/local_vars_optimizer.vala"
	_tmp27_ = _tmp26_;
#line 289 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp25_);
#line 289 "../src/local_vars_optimizer.vala"
	values = _tmp27_;
#line 290 "../src/local_vars_optimizer.vala"
	_tmp28_ = g_string_new ("");
#line 290 "../src/local_vars_optimizer.vala"
	output = _tmp28_;
#line 3608 "local_vars_optimizer.c"
	{
		gint i = 0;
#line 291 "../src/local_vars_optimizer.vala"
		i = 0;
#line 3613 "local_vars_optimizer.c"
		{
			gboolean _tmp29_ = FALSE;
#line 291 "../src/local_vars_optimizer.vala"
			_tmp29_ = TRUE;
#line 291 "../src/local_vars_optimizer.vala"
			while (TRUE) {
#line 3620 "local_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_;
				gchar* _tmp60_;
				gchar* _tmp61_;
#line 291 "../src/local_vars_optimizer.vala"
				if (!_tmp29_) {
#line 3651 "local_vars_optimizer.c"
					gint _tmp30_;
#line 291 "../src/local_vars_optimizer.vala"
					_tmp30_ = i;
#line 291 "../src/local_vars_optimizer.vala"
					i = _tmp30_ + 1;
#line 3657 "local_vars_optimizer.c"
				}
#line 291 "../src/local_vars_optimizer.vala"
				_tmp29_ = FALSE;
#line 291 "../src/local_vars_optimizer.vala"
				_tmp32_ = targets;
#line 291 "../src/local_vars_optimizer.vala"
				_tmp33_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp32_);
#line 291 "../src/local_vars_optimizer.vala"
				_tmp34_ = _tmp33_;
#line 291 "../src/local_vars_optimizer.vala"
				if (i < _tmp34_) {
#line 3669 "local_vars_optimizer.c"
					GeeArrayList* _tmp35_;
					gint _tmp36_;
					gint _tmp37_;
#line 291 "../src/local_vars_optimizer.vala"
					_tmp35_ = values;
#line 291 "../src/local_vars_optimizer.vala"
					_tmp36_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp35_);
#line 291 "../src/local_vars_optimizer.vala"
					_tmp37_ = _tmp36_;
#line 291 "../src/local_vars_optimizer.vala"
					_tmp31_ = i < _tmp37_;
#line 3681 "local_vars_optimizer.c"
				} else {
#line 291 "../src/local_vars_optimizer.vala"
					_tmp31_ = FALSE;
#line 3685 "local_vars_optimizer.c"
				}
#line 291 "../src/local_vars_optimizer.vala"
				if (!_tmp31_) {
#line 291 "../src/local_vars_optimizer.vala"
					break;
#line 3691 "local_vars_optimizer.c"
				}
#line 292 "../src/local_vars_optimizer.vala"
				_tmp38_ = targets;
#line 292 "../src/local_vars_optimizer.vala"
				_tmp39_ = gee_abstract_list_get ((GeeAbstractList*) _tmp38_, i);
#line 292 "../src/local_vars_optimizer.vala"
				_tmp40_ = (gchar*) _tmp39_;
#line 292 "../src/local_vars_optimizer.vala"
				_tmp41_ = string_strip (_tmp40_);
#line 292 "../src/local_vars_optimizer.vala"
				_tmp42_ = _tmp41_;
#line 292 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp40_);
#line 292 "../src/local_vars_optimizer.vala"
				target = _tmp42_;
#line 293 "../src/local_vars_optimizer.vala"
				_tmp43_ = target;
#line 293 "../src/local_vars_optimizer.vala"
				if (!g_str_has_prefix (_tmp43_, "$")) {
#line 294 "../src/local_vars_optimizer.vala"
					_g_free0 (target);
#line 294 "../src/local_vars_optimizer.vala"
					continue;
#line 3715 "local_vars_optimizer.c"
				}
#line 296 "../src/local_vars_optimizer.vala"
				_tmp44_ = output;
#line 296 "../src/local_vars_optimizer.vala"
				if (_tmp44_->len > ((gssize) 0)) {
#line 3721 "local_vars_optimizer.c"
					GString* _tmp45_;
#line 297 "../src/local_vars_optimizer.vala"
					_tmp45_ = output;
#line 297 "../src/local_vars_optimizer.vala"
					g_string_append (_tmp45_, "\n");
#line 3727 "local_vars_optimizer.c"
				}
#line 299 "../src/local_vars_optimizer.vala"
				_tmp47_ = values;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp48_ = gee_abstract_list_get ((GeeAbstractList*) _tmp47_, i);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp49_ = (gchar*) _tmp48_;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp50_ = string_strip (_tmp49_);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp51_ = _tmp50_;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp52_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp51_, php_line_number, "", &_inner_error0_);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp53_ = _tmp52_;
#line 299 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp51_);
#line 299 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp49_);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp46_ = _tmp53_;
#line 299 "../src/local_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 299 "../src/local_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 299 "../src/local_vars_optimizer.vala"
					_g_free0 (target);
#line 299 "../src/local_vars_optimizer.vala"
					_g_string_free0 (output);
#line 299 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (values);
#line 299 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (targets);
#line 299 "../src/local_vars_optimizer.vala"
					_g_free0 (rest);
#line 299 "../src/local_vars_optimizer.vala"
					return NULL;
#line 3765 "local_vars_optimizer.c"
				}
#line 299 "../src/local_vars_optimizer.vala"
				_tmp54_ = output;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp55_ = target;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp56_ = string_substring (_tmp55_, (glong) 1, (glong) -1);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp57_ = _tmp56_;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp58_ = string_strip (_tmp57_);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp59_ = _tmp58_;
#line 299 "../src/local_vars_optimizer.vala"
				_tmp60_ = php_to_vala_local_vars_optimizer_native_variable_name (self, _tmp59_);
#line 299 "../src/local_vars_optimizer.vala"
				_tmp61_ = _tmp60_;
#line 299 "../src/local_vars_optimizer.vala"
				g_string_append_printf (_tmp54_, "%s = %s;", _tmp61_, _tmp46_);
#line 299 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp61_);
#line 299 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp59_);
#line 299 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp57_);
#line 291 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp46_);
#line 291 "../src/local_vars_optimizer.vala"
				_g_free0 (target);
#line 3795 "local_vars_optimizer.c"
			}
		}
	}
#line 301 "../src/local_vars_optimizer.vala"
	_tmp62_ = output;
#line 301 "../src/local_vars_optimizer.vala"
	_tmp63_ = _tmp62_->str;
#line 301 "../src/local_vars_optimizer.vala"
	_tmp64_ = g_strdup (_tmp63_);
#line 301 "../src/local_vars_optimizer.vala"
	result = _tmp64_;
#line 301 "../src/local_vars_optimizer.vala"
	_g_string_free0 (output);
#line 301 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (values);
#line 301 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (targets);
#line 301 "../src/local_vars_optimizer.vala"
	_g_free0 (rest);
#line 301 "../src/local_vars_optimizer.vala"
	return result;
#line 3817 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_convert_local_expression (PhpToValaLocalVarsOptimizer* self,
                                                           const gchar* expression,
                                                           gint php_line_number,
                                                           const gchar* expected_type,
                                                           GError** error)
{
	gchar* clean = NULL;
	gchar* _tmp0_;
	gboolean _tmp1_ = FALSE;
	const gchar* _tmp2_;
	gboolean _tmp4_ = FALSE;
	const gchar* _tmp5_;
	gboolean _tmp17_ = FALSE;
	const gchar* _tmp18_;
	gchar* division = NULL;
	const gchar* _tmp38_;
	gchar* _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp41_;
	gchar* _tmp50_ = NULL;
	PhpToValaTranspiler* _tmp51_;
	const gchar* _tmp52_;
	gchar* _tmp53_;
	gchar* _tmp54_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 304 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 304 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 304 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expected_type != NULL, NULL);
#line 305 "../src/local_vars_optimizer.vala"
	_tmp0_ = string_strip (expression);
#line 305 "../src/local_vars_optimizer.vala"
	clean = _tmp0_;
#line 306 "../src/local_vars_optimizer.vala"
	_tmp2_ = clean;
#line 306 "../src/local_vars_optimizer.vala"
	if (g_strcmp0 (_tmp2_, "true") == 0) {
#line 306 "../src/local_vars_optimizer.vala"
		_tmp1_ = TRUE;
#line 3863 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp3_;
#line 306 "../src/local_vars_optimizer.vala"
		_tmp3_ = clean;
#line 306 "../src/local_vars_optimizer.vala"
		_tmp1_ = g_strcmp0 (_tmp3_, "false") == 0;
#line 3870 "local_vars_optimizer.c"
	}
#line 306 "../src/local_vars_optimizer.vala"
	if (_tmp1_) {
#line 307 "../src/local_vars_optimizer.vala"
		result = clean;
#line 307 "../src/local_vars_optimizer.vala"
		return result;
#line 3878 "local_vars_optimizer.c"
	}
#line 309 "../src/local_vars_optimizer.vala"
	_tmp5_ = clean;
#line 309 "../src/local_vars_optimizer.vala"
	if (g_strcmp0 (_tmp5_, "microtime(true)") == 0) {
#line 309 "../src/local_vars_optimizer.vala"
		_tmp4_ = TRUE;
#line 3886 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp6_;
#line 309 "../src/local_vars_optimizer.vala"
		_tmp6_ = clean;
#line 309 "../src/local_vars_optimizer.vala"
		_tmp4_ = g_strcmp0 (_tmp6_, "microtime (true)") == 0;
#line 3893 "local_vars_optimizer.c"
	}
#line 309 "../src/local_vars_optimizer.vala"
	if (_tmp4_) {
#line 3897 "local_vars_optimizer.c"
		gchar* _tmp7_ = NULL;
		PhpToValaTranspiler* _tmp8_;
		gchar* _tmp9_;
		PhpToValaTranspiler* _tmp10_;
		gchar* _tmp11_;
		gchar* _tmp12_;
		gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
#line 311 "../src/local_vars_optimizer.vala"
		_tmp8_ = self->priv->transpiler;
#line 311 "../src/local_vars_optimizer.vala"
		_tmp9_ = php_to_vala_transpiler_map_php_runtime_function_name (_tmp8_, "microtime", "microtime_float_static", php_line_number, &_inner_error0_);
#line 311 "../src/local_vars_optimizer.vala"
		_tmp7_ = _tmp9_;
#line 311 "../src/local_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 311 "../src/local_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 311 "../src/local_vars_optimizer.vala"
			_g_free0 (clean);
#line 311 "../src/local_vars_optimizer.vala"
			return NULL;
#line 3922 "local_vars_optimizer.c"
		}
#line 310 "../src/local_vars_optimizer.vala"
		_tmp10_ = self->priv->transpiler;
#line 310 "../src/local_vars_optimizer.vala"
		_tmp11_ = php_to_vala_transpiler_source_location_args (_tmp10_, php_line_number);
#line 310 "../src/local_vars_optimizer.vala"
		_tmp12_ = _tmp11_;
#line 310 "../src/local_vars_optimizer.vala"
		_tmp13_ = string_substring (_tmp12_, (glong) 2, (glong) -1);
#line 310 "../src/local_vars_optimizer.vala"
		_tmp14_ = _tmp13_;
#line 310 "../src/local_vars_optimizer.vala"
		_tmp15_ = g_strdup_printf ("%s (%s)", _tmp7_, _tmp14_);
#line 310 "../src/local_vars_optimizer.vala"
		_tmp16_ = _tmp15_;
#line 310 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp14_);
#line 310 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp12_);
#line 310 "../src/local_vars_optimizer.vala"
		result = _tmp16_;
#line 310 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp7_);
#line 310 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 310 "../src/local_vars_optimizer.vala"
		return result;
#line 3950 "local_vars_optimizer.c"
	}
#line 315 "../src/local_vars_optimizer.vala"
	_tmp18_ = clean;
#line 315 "../src/local_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp18_, "round(")) {
#line 315 "../src/local_vars_optimizer.vala"
		_tmp17_ = TRUE;
#line 3958 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp19_;
#line 315 "../src/local_vars_optimizer.vala"
		_tmp19_ = clean;
#line 315 "../src/local_vars_optimizer.vala"
		_tmp17_ = g_str_has_prefix (_tmp19_, "round (");
#line 3965 "local_vars_optimizer.c"
	}
#line 315 "../src/local_vars_optimizer.vala"
	if (_tmp17_) {
#line 3969 "local_vars_optimizer.c"
		gint open_index = 0;
		const gchar* _tmp20_;
		gint close_index = 0;
		const gchar* _tmp21_;
		gchar* inner = NULL;
		const gchar* _tmp22_;
		gchar* _tmp23_;
		gchar* _tmp24_ = NULL;
		PhpToValaTranspiler* _tmp25_;
		gchar* _tmp26_;
		gchar* _tmp27_ = NULL;
		const gchar* _tmp28_;
		gchar* _tmp29_;
		PhpToValaTranspiler* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		PhpToValaTranspiler* _tmp33_;
		gchar* _tmp34_;
		gchar* _tmp35_;
		gchar* _tmp36_;
		gchar* _tmp37_;
#line 316 "../src/local_vars_optimizer.vala"
		_tmp20_ = clean;
#line 316 "../src/local_vars_optimizer.vala"
		open_index = string_index_of (_tmp20_, "(", 0);
#line 317 "../src/local_vars_optimizer.vala"
		_tmp21_ = clean;
#line 317 "../src/local_vars_optimizer.vala"
		close_index = php_to_vala_transpiler_find_matching_paren (_tmp21_, open_index);
#line 318 "../src/local_vars_optimizer.vala"
		_tmp22_ = clean;
#line 318 "../src/local_vars_optimizer.vala"
		_tmp23_ = string_substring (_tmp22_, (glong) (open_index + 1), (glong) ((close_index - open_index) - 1));
#line 318 "../src/local_vars_optimizer.vala"
		inner = _tmp23_;
#line 320 "../src/local_vars_optimizer.vala"
		_tmp25_ = self->priv->transpiler;
#line 320 "../src/local_vars_optimizer.vala"
		_tmp26_ = php_to_vala_transpiler_map_php_function_name (_tmp25_, "round", php_line_number, &_inner_error0_);
#line 320 "../src/local_vars_optimizer.vala"
		_tmp24_ = _tmp26_;
#line 320 "../src/local_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 320 "../src/local_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 320 "../src/local_vars_optimizer.vala"
			_g_free0 (inner);
#line 320 "../src/local_vars_optimizer.vala"
			_g_free0 (clean);
#line 320 "../src/local_vars_optimizer.vala"
			return NULL;
#line 4021 "local_vars_optimizer.c"
		}
#line 321 "../src/local_vars_optimizer.vala"
		_tmp28_ = inner;
#line 321 "../src/local_vars_optimizer.vala"
		_tmp29_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp28_, php_line_number, "double", &_inner_error0_);
#line 321 "../src/local_vars_optimizer.vala"
		_tmp27_ = _tmp29_;
#line 321 "../src/local_vars_optimizer.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 321 "../src/local_vars_optimizer.vala"
			g_propagate_error (error, _inner_error0_);
#line 321 "../src/local_vars_optimizer.vala"
			_g_free0 (_tmp24_);
#line 321 "../src/local_vars_optimizer.vala"
			_g_free0 (inner);
#line 321 "../src/local_vars_optimizer.vala"
			_g_free0 (clean);
#line 321 "../src/local_vars_optimizer.vala"
			return NULL;
#line 4041 "local_vars_optimizer.c"
		}
#line 319 "../src/local_vars_optimizer.vala"
		_tmp30_ = self->priv->transpiler;
#line 319 "../src/local_vars_optimizer.vala"
		_tmp31_ = php_to_vala_transpiler_enum_prefix_for_function (_tmp30_, "round");
#line 319 "../src/local_vars_optimizer.vala"
		_tmp32_ = _tmp31_;
#line 319 "../src/local_vars_optimizer.vala"
		_tmp33_ = self->priv->transpiler;
#line 319 "../src/local_vars_optimizer.vala"
		_tmp34_ = php_to_vala_transpiler_source_location_args (_tmp33_, php_line_number);
#line 319 "../src/local_vars_optimizer.vala"
		_tmp35_ = _tmp34_;
#line 319 "../src/local_vars_optimizer.vala"
		_tmp36_ = g_strdup_printf ("%s (%s, 0, %s.RoundMode.HALF_UP%s)", _tmp24_, _tmp27_, _tmp32_, _tmp35_);
#line 319 "../src/local_vars_optimizer.vala"
		_tmp37_ = _tmp36_;
#line 319 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp35_);
#line 319 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp32_);
#line 319 "../src/local_vars_optimizer.vala"
		result = _tmp37_;
#line 319 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp27_);
#line 319 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp24_);
#line 319 "../src/local_vars_optimizer.vala"
		_g_free0 (inner);
#line 319 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 319 "../src/local_vars_optimizer.vala"
		return result;
#line 4075 "local_vars_optimizer.c"
	}
#line 326 "../src/local_vars_optimizer.vala"
	_tmp38_ = clean;
#line 326 "../src/local_vars_optimizer.vala"
	_tmp39_ = php_to_vala_local_vars_optimizer_convert_local_division_expression (self, _tmp38_, php_line_number, &_inner_error0_);
#line 326 "../src/local_vars_optimizer.vala"
	division = _tmp39_;
#line 326 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 326 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 326 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 326 "../src/local_vars_optimizer.vala"
		return NULL;
#line 4091 "local_vars_optimizer.c"
	}
#line 327 "../src/local_vars_optimizer.vala"
	_tmp40_ = division;
#line 327 "../src/local_vars_optimizer.vala"
	if (_tmp40_ != NULL) {
#line 328 "../src/local_vars_optimizer.vala"
		result = division;
#line 328 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 328 "../src/local_vars_optimizer.vala"
		return result;
#line 4103 "local_vars_optimizer.c"
	}
#line 330 "../src/local_vars_optimizer.vala"
	_tmp41_ = clean;
#line 330 "../src/local_vars_optimizer.vala"
	if (g_str_has_prefix (_tmp41_, "$")) {
#line 4109 "local_vars_optimizer.c"
		gchar* variable_name = NULL;
		const gchar* _tmp42_;
		gchar* _tmp43_;
		gchar* _tmp44_;
		gchar* _tmp45_;
		gchar* _tmp46_;
		const gchar* _tmp47_;
#line 331 "../src/local_vars_optimizer.vala"
		_tmp42_ = clean;
#line 331 "../src/local_vars_optimizer.vala"
		_tmp43_ = string_substring (_tmp42_, (glong) 1, (glong) -1);
#line 331 "../src/local_vars_optimizer.vala"
		_tmp44_ = _tmp43_;
#line 331 "../src/local_vars_optimizer.vala"
		_tmp45_ = string_strip (_tmp44_);
#line 331 "../src/local_vars_optimizer.vala"
		_tmp46_ = _tmp45_;
#line 331 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp44_);
#line 331 "../src/local_vars_optimizer.vala"
		variable_name = _tmp46_;
#line 332 "../src/local_vars_optimizer.vala"
		_tmp47_ = variable_name;
#line 332 "../src/local_vars_optimizer.vala"
		if (php_to_vala_local_vars_optimizer_is_plain_identifier (self, _tmp47_)) {
#line 4135 "local_vars_optimizer.c"
			const gchar* _tmp48_;
			gchar* _tmp49_;
#line 333 "../src/local_vars_optimizer.vala"
			_tmp48_ = variable_name;
#line 333 "../src/local_vars_optimizer.vala"
			_tmp49_ = php_to_vala_local_vars_optimizer_native_variable_name (self, _tmp48_);
#line 333 "../src/local_vars_optimizer.vala"
			result = _tmp49_;
#line 333 "../src/local_vars_optimizer.vala"
			_g_free0 (variable_name);
#line 333 "../src/local_vars_optimizer.vala"
			_g_free0 (division);
#line 333 "../src/local_vars_optimizer.vala"
			_g_free0 (clean);
#line 333 "../src/local_vars_optimizer.vala"
			return result;
#line 4152 "local_vars_optimizer.c"
		}
#line 330 "../src/local_vars_optimizer.vala"
		_g_free0 (variable_name);
#line 4156 "local_vars_optimizer.c"
	}
#line 336 "../src/local_vars_optimizer.vala"
	_tmp51_ = self->priv->transpiler;
#line 336 "../src/local_vars_optimizer.vala"
	_tmp52_ = clean;
#line 336 "../src/local_vars_optimizer.vala"
	_tmp53_ = php_to_vala_transpiler_convert_expression (_tmp51_, _tmp52_, php_line_number, &_inner_error0_);
#line 336 "../src/local_vars_optimizer.vala"
	_tmp50_ = _tmp53_;
#line 336 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 336 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 336 "../src/local_vars_optimizer.vala"
		_g_free0 (division);
#line 336 "../src/local_vars_optimizer.vala"
		_g_free0 (clean);
#line 336 "../src/local_vars_optimizer.vala"
		return NULL;
#line 4176 "local_vars_optimizer.c"
	}
#line 336 "../src/local_vars_optimizer.vala"
	_tmp54_ = _tmp50_;
#line 336 "../src/local_vars_optimizer.vala"
	_tmp50_ = NULL;
#line 336 "../src/local_vars_optimizer.vala"
	result = _tmp54_;
#line 336 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp50_);
#line 336 "../src/local_vars_optimizer.vala"
	_g_free0 (division);
#line 336 "../src/local_vars_optimizer.vala"
	_g_free0 (clean);
#line 336 "../src/local_vars_optimizer.vala"
	return result;
#line 4192 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_convert_local_division_expression (PhpToValaLocalVarsOptimizer* 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 339 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 339 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 340 "../src/local_vars_optimizer.vala"
	index = php_to_vala_local_vars_optimizer_find_top_level_operator (self, expression, "/");
#line 341 "../src/local_vars_optimizer.vala"
	if (index <= 0) {
#line 342 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 342 "../src/local_vars_optimizer.vala"
		return result;
#line 4237 "local_vars_optimizer.c"
	}
#line 344 "../src/local_vars_optimizer.vala"
	_tmp0_ = string_substring (expression, (glong) 0, (glong) index);
#line 344 "../src/local_vars_optimizer.vala"
	_tmp1_ = _tmp0_;
#line 344 "../src/local_vars_optimizer.vala"
	_tmp2_ = string_strip (_tmp1_);
#line 344 "../src/local_vars_optimizer.vala"
	_tmp3_ = _tmp2_;
#line 344 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp1_);
#line 344 "../src/local_vars_optimizer.vala"
	left = _tmp3_;
#line 345 "../src/local_vars_optimizer.vala"
	_tmp4_ = string_substring (expression, (glong) (index + 1), (glong) -1);
#line 345 "../src/local_vars_optimizer.vala"
	_tmp5_ = _tmp4_;
#line 345 "../src/local_vars_optimizer.vala"
	_tmp6_ = string_strip (_tmp5_);
#line 345 "../src/local_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 345 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp5_);
#line 345 "../src/local_vars_optimizer.vala"
	right = _tmp7_;
#line 347 "../src/local_vars_optimizer.vala"
	_tmp9_ = left;
#line 347 "../src/local_vars_optimizer.vala"
	_tmp10_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp9_, php_line_number, "double", &_inner_error0_);
#line 347 "../src/local_vars_optimizer.vala"
	_tmp8_ = _tmp10_;
#line 347 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 347 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 347 "../src/local_vars_optimizer.vala"
		_g_free0 (right);
#line 347 "../src/local_vars_optimizer.vala"
		_g_free0 (left);
#line 347 "../src/local_vars_optimizer.vala"
		return NULL;
#line 4279 "local_vars_optimizer.c"
	}
#line 348 "../src/local_vars_optimizer.vala"
	_tmp12_ = right;
#line 348 "../src/local_vars_optimizer.vala"
	_tmp13_ = php_to_vala_local_vars_optimizer_convert_local_expression (self, _tmp12_, php_line_number, "double", &_inner_error0_);
#line 348 "../src/local_vars_optimizer.vala"
	_tmp11_ = _tmp13_;
#line 348 "../src/local_vars_optimizer.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 348 "../src/local_vars_optimizer.vala"
		g_propagate_error (error, _inner_error0_);
#line 348 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp8_);
#line 348 "../src/local_vars_optimizer.vala"
		_g_free0 (right);
#line 348 "../src/local_vars_optimizer.vala"
		_g_free0 (left);
#line 348 "../src/local_vars_optimizer.vala"
		return NULL;
#line 4299 "local_vars_optimizer.c"
	}
#line 346 "../src/local_vars_optimizer.vala"
	_tmp14_ = self->priv->transpiler;
#line 346 "../src/local_vars_optimizer.vala"
	_tmp15_ = php_to_vala_transpiler_source_location_args (_tmp14_, php_line_number);
#line 346 "../src/local_vars_optimizer.vala"
	_tmp16_ = _tmp15_;
#line 346 "../src/local_vars_optimizer.vala"
	_tmp17_ = g_strdup_printf ("Php.div_static (%s, %s%s)", _tmp8_, _tmp11_, _tmp16_);
#line 346 "../src/local_vars_optimizer.vala"
	_tmp18_ = _tmp17_;
#line 346 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp16_);
#line 346 "../src/local_vars_optimizer.vala"
	result = _tmp18_;
#line 346 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp11_);
#line 346 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp8_);
#line 346 "../src/local_vars_optimizer.vala"
	_g_free0 (right);
#line 346 "../src/local_vars_optimizer.vala"
	_g_free0 (left);
#line 346 "../src/local_vars_optimizer.vala"
	return result;
#line 4325 "local_vars_optimizer.c"
}

static gint
php_to_vala_local_vars_optimizer_find_top_level_operator (PhpToValaLocalVarsOptimizer* self,
                                                          const gchar* expression,
                                                          const gchar* op)
{
	gint depth = 0;
	gboolean in_string = FALSE;
	gchar string_quote = '\0';
	gint result;
#line 353 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, -1);
#line 353 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, -1);
#line 353 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (op != NULL, -1);
#line 354 "../src/local_vars_optimizer.vala"
	depth = 0;
#line 355 "../src/local_vars_optimizer.vala"
	in_string = FALSE;
#line 356 "../src/local_vars_optimizer.vala"
	string_quote = '\0';
#line 4349 "local_vars_optimizer.c"
	{
		gint i = 0;
#line 357 "../src/local_vars_optimizer.vala"
		i = 0;
#line 4354 "local_vars_optimizer.c"
		{
			gboolean _tmp0_ = FALSE;
#line 357 "../src/local_vars_optimizer.vala"
			_tmp0_ = TRUE;
#line 357 "../src/local_vars_optimizer.vala"
			while (TRUE) {
#line 4361 "local_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 357 "../src/local_vars_optimizer.vala"
				if (!_tmp0_) {
#line 4375 "local_vars_optimizer.c"
					gint _tmp1_;
#line 357 "../src/local_vars_optimizer.vala"
					_tmp1_ = i;
#line 357 "../src/local_vars_optimizer.vala"
					i = _tmp1_ + 1;
#line 4381 "local_vars_optimizer.c"
				}
#line 357 "../src/local_vars_optimizer.vala"
				_tmp0_ = FALSE;
#line 357 "../src/local_vars_optimizer.vala"
				_tmp2_ = strlen (expression);
#line 357 "../src/local_vars_optimizer.vala"
				_tmp3_ = _tmp2_;
#line 357 "../src/local_vars_optimizer.vala"
				_tmp4_ = strlen (op);
#line 357 "../src/local_vars_optimizer.vala"
				_tmp5_ = _tmp4_;
#line 357 "../src/local_vars_optimizer.vala"
				if (!(i <= (_tmp3_ - _tmp5_))) {
#line 357 "../src/local_vars_optimizer.vala"
					break;
#line 4397 "local_vars_optimizer.c"
				}
#line 358 "../src/local_vars_optimizer.vala"
				c = string_get (expression, (glong) i);
#line 359 "../src/local_vars_optimizer.vala"
				if (in_string) {
#line 4403 "local_vars_optimizer.c"
					gboolean _tmp6_ = FALSE;
#line 360 "../src/local_vars_optimizer.vala"
					if (c == string_quote) {
#line 4407 "local_vars_optimizer.c"
						gboolean _tmp7_ = FALSE;
#line 360 "../src/local_vars_optimizer.vala"
						if (i == 0) {
#line 360 "../src/local_vars_optimizer.vala"
							_tmp7_ = TRUE;
#line 4413 "local_vars_optimizer.c"
						} else {
#line 360 "../src/local_vars_optimizer.vala"
							_tmp7_ = string_get (expression, (glong) (i - 1)) != '\\';
#line 4417 "local_vars_optimizer.c"
						}
#line 360 "../src/local_vars_optimizer.vala"
						_tmp6_ = _tmp7_;
#line 4421 "local_vars_optimizer.c"
					} else {
#line 360 "../src/local_vars_optimizer.vala"
						_tmp6_ = FALSE;
#line 4425 "local_vars_optimizer.c"
					}
#line 360 "../src/local_vars_optimizer.vala"
					if (_tmp6_) {
#line 361 "../src/local_vars_optimizer.vala"
						in_string = FALSE;
#line 4431 "local_vars_optimizer.c"
					}
#line 363 "../src/local_vars_optimizer.vala"
					continue;
#line 4435 "local_vars_optimizer.c"
				}
#line 365 "../src/local_vars_optimizer.vala"
				if (c == '\'') {
#line 365 "../src/local_vars_optimizer.vala"
					_tmp8_ = TRUE;
#line 4441 "local_vars_optimizer.c"
				} else {
#line 365 "../src/local_vars_optimizer.vala"
					_tmp8_ = c == '"';
#line 4445 "local_vars_optimizer.c"
				}
#line 365 "../src/local_vars_optimizer.vala"
				if (_tmp8_) {
#line 366 "../src/local_vars_optimizer.vala"
					in_string = TRUE;
#line 367 "../src/local_vars_optimizer.vala"
					string_quote = c;
#line 368 "../src/local_vars_optimizer.vala"
					continue;
#line 4455 "local_vars_optimizer.c"
				}
#line 370 "../src/local_vars_optimizer.vala"
				if (c == '(') {
#line 370 "../src/local_vars_optimizer.vala"
					_tmp10_ = TRUE;
#line 4461 "local_vars_optimizer.c"
				} else {
#line 370 "../src/local_vars_optimizer.vala"
					_tmp10_ = c == '[';
#line 4465 "local_vars_optimizer.c"
				}
#line 370 "../src/local_vars_optimizer.vala"
				if (_tmp10_) {
#line 370 "../src/local_vars_optimizer.vala"
					_tmp9_ = TRUE;
#line 4471 "local_vars_optimizer.c"
				} else {
#line 370 "../src/local_vars_optimizer.vala"
					_tmp9_ = c == '{';
#line 4475 "local_vars_optimizer.c"
				}
#line 370 "../src/local_vars_optimizer.vala"
				if (_tmp9_) {
#line 4479 "local_vars_optimizer.c"
					gint _tmp11_;
#line 371 "../src/local_vars_optimizer.vala"
					_tmp11_ = depth;
#line 371 "../src/local_vars_optimizer.vala"
					depth = _tmp11_ + 1;
#line 372 "../src/local_vars_optimizer.vala"
					continue;
#line 4487 "local_vars_optimizer.c"
				}
#line 374 "../src/local_vars_optimizer.vala"
				if (c == ')') {
#line 374 "../src/local_vars_optimizer.vala"
					_tmp13_ = TRUE;
#line 4493 "local_vars_optimizer.c"
				} else {
#line 374 "../src/local_vars_optimizer.vala"
					_tmp13_ = c == ']';
#line 4497 "local_vars_optimizer.c"
				}
#line 374 "../src/local_vars_optimizer.vala"
				if (_tmp13_) {
#line 374 "../src/local_vars_optimizer.vala"
					_tmp12_ = TRUE;
#line 4503 "local_vars_optimizer.c"
				} else {
#line 374 "../src/local_vars_optimizer.vala"
					_tmp12_ = c == '}';
#line 4507 "local_vars_optimizer.c"
				}
#line 374 "../src/local_vars_optimizer.vala"
				if (_tmp12_) {
#line 4511 "local_vars_optimizer.c"
					gint _tmp14_;
#line 375 "../src/local_vars_optimizer.vala"
					_tmp14_ = depth;
#line 375 "../src/local_vars_optimizer.vala"
					depth = _tmp14_ - 1;
#line 376 "../src/local_vars_optimizer.vala"
					continue;
#line 4519 "local_vars_optimizer.c"
				}
#line 378 "../src/local_vars_optimizer.vala"
				if (depth == 0) {
#line 4523 "local_vars_optimizer.c"
					gchar* _tmp16_;
					gchar* _tmp17_;
#line 378 "../src/local_vars_optimizer.vala"
					_tmp16_ = string_substring (expression, (glong) i, (glong) -1);
#line 378 "../src/local_vars_optimizer.vala"
					_tmp17_ = _tmp16_;
#line 378 "../src/local_vars_optimizer.vala"
					_tmp15_ = g_str_has_prefix (_tmp17_, op);
#line 378 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp17_);
#line 4534 "local_vars_optimizer.c"
				} else {
#line 378 "../src/local_vars_optimizer.vala"
					_tmp15_ = FALSE;
#line 4538 "local_vars_optimizer.c"
				}
#line 378 "../src/local_vars_optimizer.vala"
				if (_tmp15_) {
#line 379 "../src/local_vars_optimizer.vala"
					result = i;
#line 379 "../src/local_vars_optimizer.vala"
					return result;
#line 4546 "local_vars_optimizer.c"
				}
			}
		}
	}
#line 382 "../src/local_vars_optimizer.vala"
	result = -1;
#line 382 "../src/local_vars_optimizer.vala"
	return result;
#line 4555 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_infer_local_expression_type (PhpToValaLocalVarsOptimizer* self,
                                                              const gchar* expression)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gchar* _tmp7_;
	gchar* result;
#line 385 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 385 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 386 "../src/local_vars_optimizer.vala"
	if (g_strcmp0 (expression, "true") == 0) {
#line 386 "../src/local_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 4577 "local_vars_optimizer.c"
	} else {
#line 386 "../src/local_vars_optimizer.vala"
		_tmp0_ = g_strcmp0 (expression, "false") == 0;
#line 4581 "local_vars_optimizer.c"
	}
#line 386 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 4585 "local_vars_optimizer.c"
		gchar* _tmp1_;
#line 387 "../src/local_vars_optimizer.vala"
		_tmp1_ = g_strdup ("bool");
#line 387 "../src/local_vars_optimizer.vala"
		result = _tmp1_;
#line 387 "../src/local_vars_optimizer.vala"
		return result;
#line 4593 "local_vars_optimizer.c"
	}
#line 389 "../src/local_vars_optimizer.vala"
	if (string_index_of (expression, "Php.zval_to_double", 0) >= 0) {
#line 389 "../src/local_vars_optimizer.vala"
		_tmp5_ = TRUE;
#line 4599 "local_vars_optimizer.c"
	} else {
#line 390 "../src/local_vars_optimizer.vala"
		_tmp5_ = string_index_of (expression, "microtime_float_static", 0) >= 0;
#line 4603 "local_vars_optimizer.c"
	}
#line 389 "../src/local_vars_optimizer.vala"
	if (_tmp5_) {
#line 389 "../src/local_vars_optimizer.vala"
		_tmp4_ = TRUE;
#line 4609 "local_vars_optimizer.c"
	} else {
#line 391 "../src/local_vars_optimizer.vala"
		_tmp4_ = string_index_of (expression, "round_static", 0) >= 0;
#line 4613 "local_vars_optimizer.c"
	}
#line 389 "../src/local_vars_optimizer.vala"
	if (_tmp4_) {
#line 389 "../src/local_vars_optimizer.vala"
		_tmp3_ = TRUE;
#line 4619 "local_vars_optimizer.c"
	} else {
#line 392 "../src/local_vars_optimizer.vala"
		_tmp3_ = string_index_of (expression, "div_static", 0) >= 0;
#line 4623 "local_vars_optimizer.c"
	}
#line 389 "../src/local_vars_optimizer.vala"
	if (_tmp3_) {
#line 389 "../src/local_vars_optimizer.vala"
		_tmp2_ = TRUE;
#line 4629 "local_vars_optimizer.c"
	} else {
#line 393 "../src/local_vars_optimizer.vala"
		_tmp2_ = string_index_of (expression, "/", 0) >= 0;
#line 4633 "local_vars_optimizer.c"
	}
#line 389 "../src/local_vars_optimizer.vala"
	if (_tmp2_) {
#line 4637 "local_vars_optimizer.c"
		gchar* _tmp6_;
#line 394 "../src/local_vars_optimizer.vala"
		_tmp6_ = g_strdup ("double");
#line 394 "../src/local_vars_optimizer.vala"
		result = _tmp6_;
#line 394 "../src/local_vars_optimizer.vala"
		return result;
#line 4645 "local_vars_optimizer.c"
	}
#line 396 "../src/local_vars_optimizer.vala"
	_tmp7_ = g_strdup ("int");
#line 396 "../src/local_vars_optimizer.vala"
	result = _tmp7_;
#line 396 "../src/local_vars_optimizer.vala"
	return result;
#line 4653 "local_vars_optimizer.c"
}

static gboolean
php_to_vala_local_vars_optimizer_is_plain_identifier (PhpToValaLocalVarsOptimizer* self,
                                                      const gchar* name)
{
	gboolean _tmp0_ = FALSE;
	gint _tmp1_;
	gint _tmp2_;
	gboolean result;
#line 399 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 399 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (name != NULL, FALSE);
#line 400 "../src/local_vars_optimizer.vala"
	_tmp1_ = strlen (name);
#line 400 "../src/local_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 400 "../src/local_vars_optimizer.vala"
	if (_tmp2_ == 0) {
#line 400 "../src/local_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 4676 "local_vars_optimizer.c"
	} else {
#line 400 "../src/local_vars_optimizer.vala"
		_tmp0_ = g_ascii_isdigit (string_get (name, (glong) 0));
#line 4680 "local_vars_optimizer.c"
	}
#line 400 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 401 "../src/local_vars_optimizer.vala"
		result = FALSE;
#line 401 "../src/local_vars_optimizer.vala"
		return result;
#line 4688 "local_vars_optimizer.c"
	}
	{
		gint i = 0;
#line 403 "../src/local_vars_optimizer.vala"
		i = 0;
#line 4694 "local_vars_optimizer.c"
		{
			gboolean _tmp3_ = FALSE;
#line 403 "../src/local_vars_optimizer.vala"
			_tmp3_ = TRUE;
#line 403 "../src/local_vars_optimizer.vala"
			while (TRUE) {
#line 4701 "local_vars_optimizer.c"
				gint _tmp5_;
				gint _tmp6_;
#line 403 "../src/local_vars_optimizer.vala"
				if (!_tmp3_) {
#line 4706 "local_vars_optimizer.c"
					gint _tmp4_;
#line 403 "../src/local_vars_optimizer.vala"
					_tmp4_ = i;
#line 403 "../src/local_vars_optimizer.vala"
					i = _tmp4_ + 1;
#line 4712 "local_vars_optimizer.c"
				}
#line 403 "../src/local_vars_optimizer.vala"
				_tmp3_ = FALSE;
#line 403 "../src/local_vars_optimizer.vala"
				_tmp5_ = strlen (name);
#line 403 "../src/local_vars_optimizer.vala"
				_tmp6_ = _tmp5_;
#line 403 "../src/local_vars_optimizer.vala"
				if (!(i < _tmp6_)) {
#line 403 "../src/local_vars_optimizer.vala"
					break;
#line 4724 "local_vars_optimizer.c"
				}
#line 404 "../src/local_vars_optimizer.vala"
				if (!php_to_vala_transpiler_is_identifier_char (string_get (name, (glong) i))) {
#line 405 "../src/local_vars_optimizer.vala"
					result = FALSE;
#line 405 "../src/local_vars_optimizer.vala"
					return result;
#line 4732 "local_vars_optimizer.c"
				}
			}
		}
	}
#line 408 "../src/local_vars_optimizer.vala"
	result = TRUE;
#line 408 "../src/local_vars_optimizer.vala"
	return result;
#line 4741 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_native_variable_name (PhpToValaLocalVarsOptimizer* self,
                                                       const gchar* php_name)
{
	gchar* alias = NULL;
	PhpToValaTranspiler* _tmp0_;
	GeeHashMap* _tmp1_;
	gpointer _tmp2_;
	const gchar* _tmp3_ = NULL;
	const gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* result;
#line 411 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 411 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (php_name != NULL, NULL);
#line 412 "../src/local_vars_optimizer.vala"
	_tmp0_ = self->priv->transpiler;
#line 412 "../src/local_vars_optimizer.vala"
	_tmp1_ = _tmp0_->variable_aliases;
#line 412 "../src/local_vars_optimizer.vala"
	_tmp2_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp1_, php_name);
#line 412 "../src/local_vars_optimizer.vala"
	alias = (gchar*) _tmp2_;
#line 413 "../src/local_vars_optimizer.vala"
	_tmp4_ = alias;
#line 413 "../src/local_vars_optimizer.vala"
	_tmp3_ = _tmp4_;
#line 413 "../src/local_vars_optimizer.vala"
	if (_tmp3_ == NULL) {
#line 413 "../src/local_vars_optimizer.vala"
		_tmp3_ = php_name;
#line 4776 "local_vars_optimizer.c"
	}
#line 413 "../src/local_vars_optimizer.vala"
	_tmp5_ = g_strdup (_tmp3_);
#line 413 "../src/local_vars_optimizer.vala"
	result = _tmp5_;
#line 413 "../src/local_vars_optimizer.vala"
	_g_free0 (alias);
#line 413 "../src/local_vars_optimizer.vala"
	return result;
#line 4786 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_transpile_callable_string_call (PhpToValaLocalVarsOptimizer* self,
                                                                 const gchar* line)
{
	gboolean _tmp0_ = FALSE;
	gchar* parameter_name = NULL;
	gint _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* alias = NULL;
	PhpToValaTranspiler* _tmp9_;
	GeeHashMap* _tmp10_;
	const gchar* _tmp11_;
	gpointer _tmp12_;
	gboolean _tmp13_ = FALSE;
	gboolean _tmp14_ = FALSE;
	const gchar* _tmp15_;
	GString* output = NULL;
	GString* _tmp24_;
	gboolean first = FALSE;
	GString* _tmp50_;
	GString* _tmp51_;
	const gchar* _tmp52_;
	gchar* _tmp53_;
	gchar* result;
#line 416 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 416 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (line != NULL, NULL);
#line 417 "../src/local_vars_optimizer.vala"
	if (!g_str_has_prefix (line, "$")) {
#line 417 "../src/local_vars_optimizer.vala"
		_tmp0_ = TRUE;
#line 4827 "local_vars_optimizer.c"
	} else {
#line 417 "../src/local_vars_optimizer.vala"
		_tmp0_ = !g_str_has_suffix (line, "();");
#line 4831 "local_vars_optimizer.c"
	}
#line 417 "../src/local_vars_optimizer.vala"
	if (_tmp0_) {
#line 418 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 418 "../src/local_vars_optimizer.vala"
		return result;
#line 4839 "local_vars_optimizer.c"
	}
#line 420 "../src/local_vars_optimizer.vala"
	_tmp1_ = strlen (line);
#line 420 "../src/local_vars_optimizer.vala"
	_tmp2_ = _tmp1_;
#line 420 "../src/local_vars_optimizer.vala"
	_tmp3_ = strlen ("();");
#line 420 "../src/local_vars_optimizer.vala"
	_tmp4_ = _tmp3_;
#line 420 "../src/local_vars_optimizer.vala"
	_tmp5_ = string_substring (line, (glong) 1, (glong) ((_tmp2_ - 1) - _tmp4_));
#line 420 "../src/local_vars_optimizer.vala"
	_tmp6_ = _tmp5_;
#line 420 "../src/local_vars_optimizer.vala"
	_tmp7_ = string_strip (_tmp6_);
#line 420 "../src/local_vars_optimizer.vala"
	_tmp8_ = _tmp7_;
#line 420 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp6_);
#line 420 "../src/local_vars_optimizer.vala"
	parameter_name = _tmp8_;
#line 421 "../src/local_vars_optimizer.vala"
	_tmp9_ = self->priv->transpiler;
#line 421 "../src/local_vars_optimizer.vala"
	_tmp10_ = _tmp9_->variable_aliases;
#line 421 "../src/local_vars_optimizer.vala"
	_tmp11_ = parameter_name;
#line 421 "../src/local_vars_optimizer.vala"
	_tmp12_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp10_, _tmp11_);
#line 421 "../src/local_vars_optimizer.vala"
	alias = (gchar*) _tmp12_;
#line 422 "../src/local_vars_optimizer.vala"
	_tmp15_ = alias;
#line 422 "../src/local_vars_optimizer.vala"
	if (_tmp15_ == NULL) {
#line 422 "../src/local_vars_optimizer.vala"
		_tmp14_ = TRUE;
#line 4877 "local_vars_optimizer.c"
	} else {
		PhpToValaTranspiler* _tmp16_;
		GeeHashMap* _tmp17_;
		const gchar* _tmp18_;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp16_ = self->priv->transpiler;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp17_ = _tmp16_->variable_types;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp18_ = alias;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp14_ = !gee_abstract_map_has_key ((GeeAbstractMap*) _tmp17_, _tmp18_);
#line 4890 "local_vars_optimizer.c"
	}
#line 422 "../src/local_vars_optimizer.vala"
	if (_tmp14_) {
#line 422 "../src/local_vars_optimizer.vala"
		_tmp13_ = TRUE;
#line 4896 "local_vars_optimizer.c"
	} else {
		PhpToValaTranspiler* _tmp19_;
		GeeHashMap* _tmp20_;
		const gchar* _tmp21_;
		gpointer _tmp22_;
		gchar* _tmp23_;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp19_ = self->priv->transpiler;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp20_ = _tmp19_->variable_types;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp21_ = alias;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp22_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp20_, _tmp21_);
#line 422 "../src/local_vars_optimizer.vala"
		_tmp23_ = (gchar*) _tmp22_;
#line 422 "../src/local_vars_optimizer.vala"
		_tmp13_ = g_strcmp0 (_tmp23_, "string") != 0;
#line 422 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp23_);
#line 4917 "local_vars_optimizer.c"
	}
#line 422 "../src/local_vars_optimizer.vala"
	if (_tmp13_) {
#line 423 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 423 "../src/local_vars_optimizer.vala"
		_g_free0 (alias);
#line 423 "../src/local_vars_optimizer.vala"
		_g_free0 (parameter_name);
#line 423 "../src/local_vars_optimizer.vala"
		return result;
#line 4929 "local_vars_optimizer.c"
	}
#line 426 "../src/local_vars_optimizer.vala"
	_tmp24_ = g_string_new ("");
#line 426 "../src/local_vars_optimizer.vala"
	output = _tmp24_;
#line 427 "../src/local_vars_optimizer.vala"
	first = TRUE;
#line 4937 "local_vars_optimizer.c"
	{
		GeeIterator* _function_name_it = NULL;
		PhpToValaTranspiler* _tmp25_;
		GeeHashMap* _tmp26_;
		GeeSet* _tmp27_;
		GeeSet* _tmp28_;
		GeeSet* _tmp29_;
		GeeIterator* _tmp30_;
		GeeIterator* _tmp31_;
#line 428 "../src/local_vars_optimizer.vala"
		_tmp25_ = self->priv->transpiler;
#line 428 "../src/local_vars_optimizer.vala"
		_tmp26_ = _tmp25_->local_functions;
#line 428 "../src/local_vars_optimizer.vala"
		_tmp27_ = gee_abstract_map_get_keys ((GeeAbstractMap*) _tmp26_);
#line 428 "../src/local_vars_optimizer.vala"
		_tmp28_ = _tmp27_;
#line 428 "../src/local_vars_optimizer.vala"
		_tmp29_ = _tmp28_;
#line 428 "../src/local_vars_optimizer.vala"
		_tmp30_ = gee_iterable_iterator ((GeeIterable*) _tmp29_);
#line 428 "../src/local_vars_optimizer.vala"
		_tmp31_ = _tmp30_;
#line 428 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (_tmp29_);
#line 428 "../src/local_vars_optimizer.vala"
		_function_name_it = _tmp31_;
#line 428 "../src/local_vars_optimizer.vala"
		while (TRUE) {
#line 4967 "local_vars_optimizer.c"
			GeeIterator* _tmp32_;
			gchar* function_name = NULL;
			GeeIterator* _tmp33_;
			gpointer _tmp34_;
			LocalFunction* target = NULL;
			PhpToValaTranspiler* _tmp35_;
			GeeHashMap* _tmp36_;
			const gchar* _tmp37_;
			gpointer _tmp38_;
			gboolean _tmp39_ = FALSE;
			LocalFunction* _tmp40_;
			const gchar* _tmp45_ = NULL;
			GString* _tmp46_;
			const gchar* _tmp47_;
			const gchar* _tmp48_;
			const gchar* _tmp49_;
#line 428 "../src/local_vars_optimizer.vala"
			_tmp32_ = _function_name_it;
#line 428 "../src/local_vars_optimizer.vala"
			if (!gee_iterator_next (_tmp32_)) {
#line 428 "../src/local_vars_optimizer.vala"
				break;
#line 4990 "local_vars_optimizer.c"
			}
#line 428 "../src/local_vars_optimizer.vala"
			_tmp33_ = _function_name_it;
#line 428 "../src/local_vars_optimizer.vala"
			_tmp34_ = gee_iterator_get (_tmp33_);
#line 428 "../src/local_vars_optimizer.vala"
			function_name = (gchar*) _tmp34_;
#line 429 "../src/local_vars_optimizer.vala"
			_tmp35_ = self->priv->transpiler;
#line 429 "../src/local_vars_optimizer.vala"
			_tmp36_ = _tmp35_->local_functions;
#line 429 "../src/local_vars_optimizer.vala"
			_tmp37_ = function_name;
#line 429 "../src/local_vars_optimizer.vala"
			_tmp38_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp36_, _tmp37_);
#line 429 "../src/local_vars_optimizer.vala"
			target = (LocalFunction*) _tmp38_;
#line 430 "../src/local_vars_optimizer.vala"
			_tmp40_ = target;
#line 430 "../src/local_vars_optimizer.vala"
			if (_tmp40_ == NULL) {
#line 430 "../src/local_vars_optimizer.vala"
				_tmp39_ = TRUE;
#line 5014 "local_vars_optimizer.c"
			} else {
				LocalFunction* _tmp41_;
				GeeArrayList* _tmp42_;
				gint _tmp43_;
				gint _tmp44_;
#line 430 "../src/local_vars_optimizer.vala"
				_tmp41_ = target;
#line 430 "../src/local_vars_optimizer.vala"
				_tmp42_ = _tmp41_->parameters;
#line 430 "../src/local_vars_optimizer.vala"
				_tmp43_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp42_);
#line 430 "../src/local_vars_optimizer.vala"
				_tmp44_ = _tmp43_;
#line 430 "../src/local_vars_optimizer.vala"
				_tmp39_ = _tmp44_ != 0;
#line 5030 "local_vars_optimizer.c"
			}
#line 430 "../src/local_vars_optimizer.vala"
			if (_tmp39_) {
#line 431 "../src/local_vars_optimizer.vala"
				_g_object_unref0 (target);
#line 431 "../src/local_vars_optimizer.vala"
				_g_free0 (function_name);
#line 431 "../src/local_vars_optimizer.vala"
				continue;
#line 5040 "local_vars_optimizer.c"
			}
#line 435 "../src/local_vars_optimizer.vala"
			if (first) {
#line 435 "../src/local_vars_optimizer.vala"
				_tmp45_ = "if";
#line 5046 "local_vars_optimizer.c"
			} else {
#line 435 "../src/local_vars_optimizer.vala"
				_tmp45_ = "else if";
#line 5050 "local_vars_optimizer.c"
			}
#line 433 "../src/local_vars_optimizer.vala"
			_tmp46_ = output;
#line 433 "../src/local_vars_optimizer.vala"
			_tmp47_ = alias;
#line 433 "../src/local_vars_optimizer.vala"
			_tmp48_ = function_name;
#line 433 "../src/local_vars_optimizer.vala"
			_tmp49_ = function_name;
#line 433 "../src/local_vars_optimizer.vala"
			g_string_append_printf (_tmp46_, "%s (%s == \"%s\") { %s (); }", _tmp45_, _tmp47_, _tmp48_, _tmp49_);
#line 440 "../src/local_vars_optimizer.vala"
			first = FALSE;
#line 428 "../src/local_vars_optimizer.vala"
			_g_object_unref0 (target);
#line 428 "../src/local_vars_optimizer.vala"
			_g_free0 (function_name);
#line 5068 "local_vars_optimizer.c"
		}
#line 428 "../src/local_vars_optimizer.vala"
		_g_object_unref0 (_function_name_it);
#line 5072 "local_vars_optimizer.c"
	}
#line 442 "../src/local_vars_optimizer.vala"
	if (first) {
#line 443 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 443 "../src/local_vars_optimizer.vala"
		_g_string_free0 (output);
#line 443 "../src/local_vars_optimizer.vala"
		_g_free0 (alias);
#line 443 "../src/local_vars_optimizer.vala"
		_g_free0 (parameter_name);
#line 443 "../src/local_vars_optimizer.vala"
		return result;
#line 5086 "local_vars_optimizer.c"
	}
#line 445 "../src/local_vars_optimizer.vala"
	_tmp50_ = output;
#line 445 "../src/local_vars_optimizer.vala"
	g_string_append (_tmp50_, " else { }");
#line 446 "../src/local_vars_optimizer.vala"
	_tmp51_ = output;
#line 446 "../src/local_vars_optimizer.vala"
	_tmp52_ = _tmp51_->str;
#line 446 "../src/local_vars_optimizer.vala"
	_tmp53_ = g_strdup (_tmp52_);
#line 446 "../src/local_vars_optimizer.vala"
	result = _tmp53_;
#line 446 "../src/local_vars_optimizer.vala"
	_g_string_free0 (output);
#line 446 "../src/local_vars_optimizer.vala"
	_g_free0 (alias);
#line 446 "../src/local_vars_optimizer.vala"
	_g_free0 (parameter_name);
#line 446 "../src/local_vars_optimizer.vala"
	return result;
#line 5108 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_convert_native_argument_list_to_zval_args (PhpToValaLocalVarsOptimizer* self,
                                                                            LocalFunction* local_function,
                                                                            const gchar* args,
                                                                            gint php_line_number,
                                                                            GError** error)
{
	GString* converted = NULL;
	GString* _tmp0_;
	GeeArrayList* raw_args = NULL;
	PhpToValaTranspiler* _tmp1_;
	GeeArrayList* _tmp2_;
	GString* _tmp37_;
	const gchar* _tmp38_;
	gchar* _tmp39_;
	GError* _inner_error0_ = NULL;
	gchar* result;
#line 449 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 449 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 449 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (args != NULL, NULL);
#line 450 "../src/local_vars_optimizer.vala"
	_tmp0_ = g_string_new ("");
#line 450 "../src/local_vars_optimizer.vala"
	converted = _tmp0_;
#line 451 "../src/local_vars_optimizer.vala"
	_tmp1_ = self->priv->transpiler;
#line 451 "../src/local_vars_optimizer.vala"
	_tmp2_ = php_to_vala_transpiler_split_top_level (_tmp1_, args, ',');
#line 451 "../src/local_vars_optimizer.vala"
	raw_args = _tmp2_;
#line 5144 "local_vars_optimizer.c"
	{
		gint i = 0;
#line 452 "../src/local_vars_optimizer.vala"
		i = 0;
#line 5149 "local_vars_optimizer.c"
		{
			gboolean _tmp3_ = FALSE;
#line 452 "../src/local_vars_optimizer.vala"
			_tmp3_ = TRUE;
#line 452 "../src/local_vars_optimizer.vala"
			while (TRUE) {
#line 5156 "local_vars_optimizer.c"
				GeeArrayList* _tmp5_;
				gint _tmp6_;
				gint _tmp7_;
				GString* _tmp8_;
				gchar* _tmp10_ = NULL;
				GeeArrayList* _tmp11_;
				gint _tmp12_;
				gint _tmp13_;
				gchar* native_type = NULL;
				gchar* _tmp23_;
				gchar* _tmp24_ = NULL;
				PhpToValaTranspiler* _tmp25_;
				GeeArrayList* _tmp26_;
				gpointer _tmp27_;
				gchar* _tmp28_;
				gchar* _tmp29_;
				gchar* _tmp30_;
				gchar* _tmp31_;
				gchar* _tmp32_;
				GString* _tmp33_;
				const gchar* _tmp34_;
				gchar* _tmp35_;
				gchar* _tmp36_;
#line 452 "../src/local_vars_optimizer.vala"
				if (!_tmp3_) {
#line 5182 "local_vars_optimizer.c"
					gint _tmp4_;
#line 452 "../src/local_vars_optimizer.vala"
					_tmp4_ = i;
#line 452 "../src/local_vars_optimizer.vala"
					i = _tmp4_ + 1;
#line 5188 "local_vars_optimizer.c"
				}
#line 452 "../src/local_vars_optimizer.vala"
				_tmp3_ = FALSE;
#line 452 "../src/local_vars_optimizer.vala"
				_tmp5_ = raw_args;
#line 452 "../src/local_vars_optimizer.vala"
				_tmp6_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp5_);
#line 452 "../src/local_vars_optimizer.vala"
				_tmp7_ = _tmp6_;
#line 452 "../src/local_vars_optimizer.vala"
				if (!(i < _tmp7_)) {
#line 452 "../src/local_vars_optimizer.vala"
					break;
#line 5202 "local_vars_optimizer.c"
				}
#line 453 "../src/local_vars_optimizer.vala"
				_tmp8_ = converted;
#line 453 "../src/local_vars_optimizer.vala"
				if (_tmp8_->len > ((gssize) 0)) {
#line 5208 "local_vars_optimizer.c"
					GString* _tmp9_;
#line 454 "../src/local_vars_optimizer.vala"
					_tmp9_ = converted;
#line 454 "../src/local_vars_optimizer.vala"
					g_string_append (_tmp9_, ", ");
#line 5214 "local_vars_optimizer.c"
				}
#line 456 "../src/local_vars_optimizer.vala"
				_tmp11_ = local_function->parameters;
#line 456 "../src/local_vars_optimizer.vala"
				_tmp12_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp11_);
#line 456 "../src/local_vars_optimizer.vala"
				_tmp13_ = _tmp12_;
#line 456 "../src/local_vars_optimizer.vala"
				if (i < _tmp13_) {
#line 5224 "local_vars_optimizer.c"
					gchar* _tmp14_ = NULL;
					GeeArrayList* _tmp15_;
					gpointer _tmp16_;
					LocalParameter* _tmp17_;
					gchar* _tmp18_;
					gchar* _tmp19_;
					gchar* _tmp21_;
#line 456 "../src/local_vars_optimizer.vala"
					_tmp15_ = local_function->parameters;
#line 456 "../src/local_vars_optimizer.vala"
					_tmp16_ = gee_abstract_list_get ((GeeAbstractList*) _tmp15_, i);
#line 456 "../src/local_vars_optimizer.vala"
					_tmp17_ = (LocalParameter*) _tmp16_;
#line 456 "../src/local_vars_optimizer.vala"
					_tmp18_ = php_to_vala_local_vars_optimizer_infer_parameter_type (self, local_function, _tmp17_);
#line 456 "../src/local_vars_optimizer.vala"
					_tmp19_ = _tmp18_;
#line 456 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (_tmp17_);
#line 456 "../src/local_vars_optimizer.vala"
					_tmp14_ = _tmp19_;
#line 456 "../src/local_vars_optimizer.vala"
					if (_tmp14_ == NULL) {
#line 5248 "local_vars_optimizer.c"
						gchar* _tmp20_;
#line 456 "../src/local_vars_optimizer.vala"
						_tmp20_ = g_strdup ("var");
#line 456 "../src/local_vars_optimizer.vala"
						_g_free0 (_tmp14_);
#line 456 "../src/local_vars_optimizer.vala"
						_tmp14_ = _tmp20_;
#line 5256 "local_vars_optimizer.c"
					}
#line 456 "../src/local_vars_optimizer.vala"
					_tmp21_ = _tmp14_;
#line 456 "../src/local_vars_optimizer.vala"
					_tmp14_ = NULL;
#line 456 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp10_);
#line 456 "../src/local_vars_optimizer.vala"
					_tmp10_ = _tmp21_;
#line 456 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp14_);
#line 5268 "local_vars_optimizer.c"
				} else {
					gchar* _tmp22_;
#line 456 "../src/local_vars_optimizer.vala"
					_tmp22_ = g_strdup ("var");
#line 456 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp10_);
#line 456 "../src/local_vars_optimizer.vala"
					_tmp10_ = _tmp22_;
#line 5277 "local_vars_optimizer.c"
				}
#line 456 "../src/local_vars_optimizer.vala"
				_tmp23_ = _tmp10_;
#line 456 "../src/local_vars_optimizer.vala"
				_tmp10_ = NULL;
#line 456 "../src/local_vars_optimizer.vala"
				native_type = _tmp23_;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp25_ = self->priv->transpiler;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp26_ = raw_args;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp27_ = gee_abstract_list_get ((GeeAbstractList*) _tmp26_, i);
#line 457 "../src/local_vars_optimizer.vala"
				_tmp28_ = (gchar*) _tmp27_;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp29_ = string_strip (_tmp28_);
#line 457 "../src/local_vars_optimizer.vala"
				_tmp30_ = _tmp29_;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp31_ = php_to_vala_transpiler_convert_expression (_tmp25_, _tmp30_, php_line_number, &_inner_error0_);
#line 457 "../src/local_vars_optimizer.vala"
				_tmp32_ = _tmp31_;
#line 457 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp30_);
#line 457 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp28_);
#line 457 "../src/local_vars_optimizer.vala"
				_tmp24_ = _tmp32_;
#line 457 "../src/local_vars_optimizer.vala"
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 457 "../src/local_vars_optimizer.vala"
					g_propagate_error (error, _inner_error0_);
#line 457 "../src/local_vars_optimizer.vala"
					_g_free0 (native_type);
#line 457 "../src/local_vars_optimizer.vala"
					_g_free0 (_tmp10_);
#line 457 "../src/local_vars_optimizer.vala"
					_g_object_unref0 (raw_args);
#line 457 "../src/local_vars_optimizer.vala"
					_g_string_free0 (converted);
#line 457 "../src/local_vars_optimizer.vala"
					return NULL;
#line 5321 "local_vars_optimizer.c"
				}
#line 457 "../src/local_vars_optimizer.vala"
				_tmp33_ = converted;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp34_ = native_type;
#line 457 "../src/local_vars_optimizer.vala"
				_tmp35_ = php_to_vala_local_vars_optimizer_native_to_zval_return (self, _tmp24_, _tmp34_);
#line 457 "../src/local_vars_optimizer.vala"
				_tmp36_ = _tmp35_;
#line 457 "../src/local_vars_optimizer.vala"
				g_string_append (_tmp33_, _tmp36_);
#line 457 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp36_);
#line 452 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp24_);
#line 452 "../src/local_vars_optimizer.vala"
				_g_free0 (native_type);
#line 452 "../src/local_vars_optimizer.vala"
				_g_free0 (_tmp10_);
#line 5341 "local_vars_optimizer.c"
			}
		}
	}
#line 459 "../src/local_vars_optimizer.vala"
	_tmp37_ = converted;
#line 459 "../src/local_vars_optimizer.vala"
	_tmp38_ = _tmp37_->str;
#line 459 "../src/local_vars_optimizer.vala"
	_tmp39_ = g_strdup (_tmp38_);
#line 459 "../src/local_vars_optimizer.vala"
	result = _tmp39_;
#line 459 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (raw_args);
#line 459 "../src/local_vars_optimizer.vala"
	_g_string_free0 (converted);
#line 459 "../src/local_vars_optimizer.vala"
	return result;
#line 5359 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_infer_return_type (PhpToValaLocalVarsOptimizer* self,
                                                    LocalFunction* local_function)
{
	gchar* declared = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	const gchar* _tmp5_;
	gchar* result;
#line 462 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 462 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 463 "../src/local_vars_optimizer.vala"
	_tmp0_ = local_function->return_type;
#line 463 "../src/local_vars_optimizer.vala"
	_tmp1_ = php_to_vala_local_vars_optimizer_native_scalar_type (self, _tmp0_);
#line 463 "../src/local_vars_optimizer.vala"
	declared = _tmp1_;
#line 464 "../src/local_vars_optimizer.vala"
	_tmp2_ = declared;
#line 464 "../src/local_vars_optimizer.vala"
	if (_tmp2_ != NULL) {
#line 465 "../src/local_vars_optimizer.vala"
		result = declared;
#line 465 "../src/local_vars_optimizer.vala"
		return result;
#line 5392 "local_vars_optimizer.c"
	}
#line 467 "../src/local_vars_optimizer.vala"
	_tmp5_ = local_function->body;
#line 467 "../src/local_vars_optimizer.vala"
	if (string_index_of (_tmp5_, "return round(", 0) >= 0) {
#line 467 "../src/local_vars_optimizer.vala"
		_tmp4_ = TRUE;
#line 5400 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp6_;
#line 468 "../src/local_vars_optimizer.vala"
		_tmp6_ = local_function->body;
#line 468 "../src/local_vars_optimizer.vala"
		_tmp4_ = string_index_of (_tmp6_, "return round (", 0) >= 0;
#line 5407 "local_vars_optimizer.c"
	}
#line 467 "../src/local_vars_optimizer.vala"
	if (_tmp4_) {
#line 467 "../src/local_vars_optimizer.vala"
		_tmp3_ = TRUE;
#line 5413 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp7_;
#line 469 "../src/local_vars_optimizer.vala"
		_tmp7_ = local_function->body;
#line 469 "../src/local_vars_optimizer.vala"
		_tmp3_ = string_index_of (_tmp7_, "return $", 0) >= 0;
#line 5420 "local_vars_optimizer.c"
	}
#line 467 "../src/local_vars_optimizer.vala"
	if (_tmp3_) {
#line 5424 "local_vars_optimizer.c"
		gchar* _tmp8_;
#line 470 "../src/local_vars_optimizer.vala"
		_tmp8_ = g_strdup ("double");
#line 470 "../src/local_vars_optimizer.vala"
		result = _tmp8_;
#line 470 "../src/local_vars_optimizer.vala"
		_g_free0 (declared);
#line 470 "../src/local_vars_optimizer.vala"
		return result;
#line 5434 "local_vars_optimizer.c"
	}
#line 472 "../src/local_vars_optimizer.vala"
	result = NULL;
#line 472 "../src/local_vars_optimizer.vala"
	_g_free0 (declared);
#line 472 "../src/local_vars_optimizer.vala"
	return result;
#line 5442 "local_vars_optimizer.c"
}

static gboolean
php_to_vala_local_vars_optimizer_body_has_unconditional_loop_return (PhpToValaLocalVarsOptimizer* self,
                                                                     LocalFunction* local_function)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	const gchar* _tmp2_;
	gboolean result;
#line 475 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 475 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, FALSE);
#line 476 "../src/local_vars_optimizer.vala"
	_tmp2_ = local_function->body;
#line 476 "../src/local_vars_optimizer.vala"
	if (string_index_of (_tmp2_, "while (true)", 0) >= 0) {
#line 476 "../src/local_vars_optimizer.vala"
		_tmp1_ = TRUE;
#line 5463 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp3_;
#line 476 "../src/local_vars_optimizer.vala"
		_tmp3_ = local_function->body;
#line 476 "../src/local_vars_optimizer.vala"
		_tmp1_ = string_index_of (_tmp3_, "while(true)", 0) >= 0;
#line 5470 "local_vars_optimizer.c"
	}
#line 476 "../src/local_vars_optimizer.vala"
	if (_tmp1_) {
#line 5474 "local_vars_optimizer.c"
		gboolean _tmp4_ = FALSE;
		const gchar* _tmp5_;
#line 477 "../src/local_vars_optimizer.vala"
		_tmp5_ = local_function->body;
#line 477 "../src/local_vars_optimizer.vala"
		if (string_index_of (_tmp5_, "return ", 0) >= 0) {
#line 477 "../src/local_vars_optimizer.vala"
			_tmp4_ = TRUE;
#line 5483 "local_vars_optimizer.c"
		} else {
			const gchar* _tmp6_;
#line 477 "../src/local_vars_optimizer.vala"
			_tmp6_ = local_function->body;
#line 477 "../src/local_vars_optimizer.vala"
			_tmp4_ = string_index_of (_tmp6_, "return(", 0) >= 0;
#line 5490 "local_vars_optimizer.c"
		}
#line 477 "../src/local_vars_optimizer.vala"
		_tmp0_ = _tmp4_;
#line 5494 "local_vars_optimizer.c"
	} else {
#line 476 "../src/local_vars_optimizer.vala"
		_tmp0_ = FALSE;
#line 5498 "local_vars_optimizer.c"
	}
#line 476 "../src/local_vars_optimizer.vala"
	result = _tmp0_;
#line 476 "../src/local_vars_optimizer.vala"
	return result;
#line 5504 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_infer_parameter_type (PhpToValaLocalVarsOptimizer* 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 480 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 480 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (local_function != NULL, NULL);
#line 480 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (parameter != NULL, NULL);
#line 481 "../src/local_vars_optimizer.vala"
	_tmp0_ = parameter->type_name;
#line 481 "../src/local_vars_optimizer.vala"
	_tmp1_ = php_to_vala_local_vars_optimizer_native_scalar_type (self, _tmp0_);
#line 481 "../src/local_vars_optimizer.vala"
	declared = _tmp1_;
#line 482 "../src/local_vars_optimizer.vala"
	_tmp2_ = declared;
#line 482 "../src/local_vars_optimizer.vala"
	if (_tmp2_ != NULL) {
#line 483 "../src/local_vars_optimizer.vala"
		result = declared;
#line 483 "../src/local_vars_optimizer.vala"
		return result;
#line 5545 "local_vars_optimizer.c"
	}
#line 485 "../src/local_vars_optimizer.vala"
	_tmp4_ = local_function->body;
#line 485 "../src/local_vars_optimizer.vala"
	_tmp5_ = parameter->name;
#line 485 "../src/local_vars_optimizer.vala"
	_tmp6_ = g_strconcat ("$", _tmp5_, NULL);
#line 485 "../src/local_vars_optimizer.vala"
	_tmp7_ = _tmp6_;
#line 485 "../src/local_vars_optimizer.vala"
	_tmp8_ = g_strconcat (_tmp7_, "();", NULL);
#line 485 "../src/local_vars_optimizer.vala"
	_tmp9_ = _tmp8_;
#line 485 "../src/local_vars_optimizer.vala"
	_tmp10_ = string_index_of (_tmp4_, _tmp9_, 0) >= 0;
#line 485 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp9_);
#line 485 "../src/local_vars_optimizer.vala"
	_g_free0 (_tmp7_);
#line 485 "../src/local_vars_optimizer.vala"
	if (_tmp10_) {
#line 485 "../src/local_vars_optimizer.vala"
		_tmp3_ = TRUE;
#line 5569 "local_vars_optimizer.c"
	} else {
		const gchar* _tmp11_;
		const gchar* _tmp12_;
		gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
#line 486 "../src/local_vars_optimizer.vala"
		_tmp11_ = local_function->body;
#line 486 "../src/local_vars_optimizer.vala"
		_tmp12_ = parameter->name;
#line 486 "../src/local_vars_optimizer.vala"
		_tmp13_ = g_strconcat ("$", _tmp12_, NULL);
#line 486 "../src/local_vars_optimizer.vala"
		_tmp14_ = _tmp13_;
#line 486 "../src/local_vars_optimizer.vala"
		_tmp15_ = g_strconcat (_tmp14_, " ();", NULL);
#line 486 "../src/local_vars_optimizer.vala"
		_tmp16_ = _tmp15_;
#line 486 "../src/local_vars_optimizer.vala"
		_tmp3_ = string_index_of (_tmp11_, _tmp16_, 0) >= 0;
#line 486 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp16_);
#line 486 "../src/local_vars_optimizer.vala"
		_g_free0 (_tmp14_);
#line 5595 "local_vars_optimizer.c"
	}
#line 485 "../src/local_vars_optimizer.vala"
	if (_tmp3_) {
#line 5599 "local_vars_optimizer.c"
		gchar* _tmp17_;
#line 487 "../src/local_vars_optimizer.vala"
		_tmp17_ = g_strdup ("string");
#line 487 "../src/local_vars_optimizer.vala"
		result = _tmp17_;
#line 487 "../src/local_vars_optimizer.vala"
		_g_free0 (declared);
#line 487 "../src/local_vars_optimizer.vala"
		return result;
#line 5609 "local_vars_optimizer.c"
	}
#line 489 "../src/local_vars_optimizer.vala"
	result = NULL;
#line 489 "../src/local_vars_optimizer.vala"
	_g_free0 (declared);
#line 489 "../src/local_vars_optimizer.vala"
	return result;
#line 5617 "local_vars_optimizer.c"
}

static gchar*
php_to_vala_local_vars_optimizer_native_scalar_type (PhpToValaLocalVarsOptimizer* self,
                                                     const gchar* php_type)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	GQuark _tmp3_ = 0U;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label0 = 0;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label1 = 0;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label2 = 0;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label3 = 0;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label4 = 0;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label5 = 0;
#line 496 "../src/local_vars_optimizer.vala"
	static GQuark _tmp2_label6 = 0;
#line 5641 "local_vars_optimizer.c"
	gchar* result;
#line 492 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 493 "../src/local_vars_optimizer.vala"
	if (php_type == NULL) {
#line 494 "../src/local_vars_optimizer.vala"
		result = NULL;
#line 494 "../src/local_vars_optimizer.vala"
		return result;
#line 5651 "local_vars_optimizer.c"
	}
#line 496 "../src/local_vars_optimizer.vala"
	_tmp0_ = g_utf8_strdown (php_type, (gssize) -1);
#line 496 "../src/local_vars_optimizer.vala"
	_tmp1_ = _tmp0_;
#line 496 "../src/local_vars_optimizer.vala"
	_tmp3_ = (NULL == _tmp1_) ? 0 : g_quark_from_string (_tmp1_);
#line 496 "../src/local_vars_optimizer.vala"
	g_free (_tmp1_);
#line 496 "../src/local_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 496 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5665 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp4_;
#line 499 "../src/local_vars_optimizer.vala"
				_tmp4_ = g_strdup ("int");
#line 499 "../src/local_vars_optimizer.vala"
				result = _tmp4_;
#line 499 "../src/local_vars_optimizer.vala"
				return result;
#line 5675 "local_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 496 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5681 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp5_;
#line 502 "../src/local_vars_optimizer.vala"
				_tmp5_ = g_strdup ("double");
#line 502 "../src/local_vars_optimizer.vala"
				result = _tmp5_;
#line 502 "../src/local_vars_optimizer.vala"
				return result;
#line 5691 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp3_ == ((0 != _tmp2_label4) ? _tmp2_label4 : (_tmp2_label4 = g_quark_from_static_string ("string")))) {
#line 496 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5697 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp6_;
#line 504 "../src/local_vars_optimizer.vala"
				_tmp6_ = g_strdup ("string");
#line 504 "../src/local_vars_optimizer.vala"
				result = _tmp6_;
#line 504 "../src/local_vars_optimizer.vala"
				return result;
#line 5707 "local_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 496 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5713 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp7_;
#line 507 "../src/local_vars_optimizer.vala"
				_tmp7_ = g_strdup ("bool");
#line 507 "../src/local_vars_optimizer.vala"
				result = _tmp7_;
#line 507 "../src/local_vars_optimizer.vala"
				return result;
#line 5723 "local_vars_optimizer.c"
			}
		}
	} else {
#line 496 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5729 "local_vars_optimizer.c"
			default:
			{
#line 509 "../src/local_vars_optimizer.vala"
				result = NULL;
#line 509 "../src/local_vars_optimizer.vala"
				return result;
#line 5736 "local_vars_optimizer.c"
			}
		}
	}
}

static gchar*
php_to_vala_local_vars_optimizer_zval_to_native_argument (PhpToValaLocalVarsOptimizer* self,
                                                          const gchar* parameter_name,
                                                          const gchar* native_type)
{
	const gchar* _tmp0_;
	GQuark _tmp2_ = 0U;
#line 514 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label0 = 0;
#line 514 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label1 = 0;
#line 514 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label2 = 0;
#line 514 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label3 = 0;
#line 5757 "local_vars_optimizer.c"
	gchar* result;
#line 513 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 513 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (parameter_name != NULL, NULL);
#line 513 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (native_type != NULL, NULL);
#line 514 "../src/local_vars_optimizer.vala"
	_tmp0_ = native_type;
#line 514 "../src/local_vars_optimizer.vala"
	_tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
#line 514 "../src/local_vars_optimizer.vala"
	if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("int")))) {
#line 514 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5773 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp3_;
#line 516 "../src/local_vars_optimizer.vala"
				_tmp3_ = g_strdup_printf ("Php.zval_to_int (%s)", parameter_name);
#line 516 "../src/local_vars_optimizer.vala"
				result = _tmp3_;
#line 516 "../src/local_vars_optimizer.vala"
				return result;
#line 5783 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("double")))) {
#line 514 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5789 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp4_;
#line 518 "../src/local_vars_optimizer.vala"
				_tmp4_ = g_strdup_printf ("Php.zval_to_double (%s)", parameter_name);
#line 518 "../src/local_vars_optimizer.vala"
				result = _tmp4_;
#line 518 "../src/local_vars_optimizer.vala"
				return result;
#line 5799 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string ("string")))) {
#line 514 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5805 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp5_;
#line 520 "../src/local_vars_optimizer.vala"
				_tmp5_ = g_strdup_printf ("Php.zval_to_string (%s)", parameter_name);
#line 520 "../src/local_vars_optimizer.vala"
				result = _tmp5_;
#line 520 "../src/local_vars_optimizer.vala"
				return result;
#line 5815 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string ("bool")))) {
#line 514 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5821 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp6_;
#line 522 "../src/local_vars_optimizer.vala"
				_tmp6_ = g_strdup_printf ("Php.truthy (%s)", parameter_name);
#line 522 "../src/local_vars_optimizer.vala"
				result = _tmp6_;
#line 522 "../src/local_vars_optimizer.vala"
				return result;
#line 5831 "local_vars_optimizer.c"
			}
		}
	} else {
#line 514 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5837 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp7_;
#line 524 "../src/local_vars_optimizer.vala"
				_tmp7_ = g_strdup (parameter_name);
#line 524 "../src/local_vars_optimizer.vala"
				result = _tmp7_;
#line 524 "../src/local_vars_optimizer.vala"
				return result;
#line 5847 "local_vars_optimizer.c"
			}
		}
	}
}

static gchar*
php_to_vala_local_vars_optimizer_native_to_zval_return (PhpToValaLocalVarsOptimizer* self,
                                                        const gchar* expression,
                                                        const gchar* native_type)
{
	const gchar* _tmp0_;
	GQuark _tmp2_ = 0U;
#line 529 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label0 = 0;
#line 529 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label1 = 0;
#line 529 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label2 = 0;
#line 529 "../src/local_vars_optimizer.vala"
	static GQuark _tmp1_label3 = 0;
#line 5868 "local_vars_optimizer.c"
	gchar* result;
#line 528 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 528 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (expression != NULL, NULL);
#line 528 "../src/local_vars_optimizer.vala"
	g_return_val_if_fail (native_type != NULL, NULL);
#line 529 "../src/local_vars_optimizer.vala"
	_tmp0_ = native_type;
#line 529 "../src/local_vars_optimizer.vala"
	_tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
#line 529 "../src/local_vars_optimizer.vala"
	if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("int")))) {
#line 529 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5884 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp3_;
#line 531 "../src/local_vars_optimizer.vala"
				_tmp3_ = g_strdup_printf ("Php.zval.integer (%s)", expression);
#line 531 "../src/local_vars_optimizer.vala"
				result = _tmp3_;
#line 531 "../src/local_vars_optimizer.vala"
				return result;
#line 5894 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("double")))) {
#line 529 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5900 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp4_;
#line 533 "../src/local_vars_optimizer.vala"
				_tmp4_ = g_strdup_printf ("Php.zval.double_number (%s)", expression);
#line 533 "../src/local_vars_optimizer.vala"
				result = _tmp4_;
#line 533 "../src/local_vars_optimizer.vala"
				return result;
#line 5910 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string ("string")))) {
#line 529 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5916 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp5_;
#line 535 "../src/local_vars_optimizer.vala"
				_tmp5_ = g_strdup_printf ("Php.zval.string_value (%s)", expression);
#line 535 "../src/local_vars_optimizer.vala"
				result = _tmp5_;
#line 535 "../src/local_vars_optimizer.vala"
				return result;
#line 5926 "local_vars_optimizer.c"
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string ("bool")))) {
#line 529 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5932 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp6_;
#line 537 "../src/local_vars_optimizer.vala"
				_tmp6_ = g_strdup_printf ("Php.zval.boolean (%s)", expression);
#line 537 "../src/local_vars_optimizer.vala"
				result = _tmp6_;
#line 537 "../src/local_vars_optimizer.vala"
				return result;
#line 5942 "local_vars_optimizer.c"
			}
		}
	} else {
#line 529 "../src/local_vars_optimizer.vala"
		switch (0) {
#line 5948 "local_vars_optimizer.c"
			default:
			{
				gchar* _tmp7_;
#line 539 "../src/local_vars_optimizer.vala"
				_tmp7_ = g_strdup ("Php.zval.null_value ()");
#line 539 "../src/local_vars_optimizer.vala"
				result = _tmp7_;
#line 539 "../src/local_vars_optimizer.vala"
				return result;
#line 5958 "local_vars_optimizer.c"
			}
		}
	}
}

static void
php_to_vala_local_vars_optimizer_class_init (PhpToValaLocalVarsOptimizerClass * klass,
                                             gpointer klass_data)
{
#line 11 "../src/local_vars_optimizer.vala"
	php_to_vala_local_vars_optimizer_parent_class = g_type_class_peek_parent (klass);
#line 11 "../src/local_vars_optimizer.vala"
	g_type_class_adjust_private_offset (klass, &PhpToValaLocalVarsOptimizer_private_offset);
#line 11 "../src/local_vars_optimizer.vala"
	G_OBJECT_CLASS (klass)->finalize = php_to_vala_local_vars_optimizer_finalize;
#line 5974 "local_vars_optimizer.c"
}

static void
php_to_vala_local_vars_optimizer_instance_init (PhpToValaLocalVarsOptimizer * self,
                                                gpointer klass)
{
#line 11 "../src/local_vars_optimizer.vala"
	self->priv = php_to_vala_local_vars_optimizer_get_instance_private (self);
#line 5983 "local_vars_optimizer.c"
}

static void
php_to_vala_local_vars_optimizer_finalize (GObject * obj)
{
	PhpToValaLocalVarsOptimizer * self;
#line 11 "../src/local_vars_optimizer.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PHP_TO_VALA_LOCAL_VARS_OPTIMIZER, PhpToValaLocalVarsOptimizer);
#line 12 "../src/local_vars_optimizer.vala"
	_g_object_unref0 (self->priv->transpiler);
#line 11 "../src/local_vars_optimizer.vala"
	G_OBJECT_CLASS (php_to_vala_local_vars_optimizer_parent_class)->finalize (obj);
#line 5996 "local_vars_optimizer.c"
}

static GType
php_to_vala_local_vars_optimizer_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (PhpToValaLocalVarsOptimizerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) php_to_vala_local_vars_optimizer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PhpToValaLocalVarsOptimizer), 0, (GInstanceInitFunc) php_to_vala_local_vars_optimizer_instance_init, NULL };
	GType php_to_vala_local_vars_optimizer_type_id;
	php_to_vala_local_vars_optimizer_type_id = g_type_register_static (G_TYPE_OBJECT, "PhpToValaLocalVarsOptimizer", &g_define_type_info, 0);
	PhpToValaLocalVarsOptimizer_private_offset = g_type_add_instance_private (php_to_vala_local_vars_optimizer_type_id, sizeof (PhpToValaLocalVarsOptimizerPrivate));
	return php_to_vala_local_vars_optimizer_type_id;
}

GType
php_to_vala_local_vars_optimizer_get_type (void)
{
	static volatile gsize php_to_vala_local_vars_optimizer_type_id__once = 0;
	if (g_once_init_enter (&php_to_vala_local_vars_optimizer_type_id__once)) {
		GType php_to_vala_local_vars_optimizer_type_id;
		php_to_vala_local_vars_optimizer_type_id = php_to_vala_local_vars_optimizer_get_type_once ();
		g_once_init_leave (&php_to_vala_local_vars_optimizer_type_id__once, php_to_vala_local_vars_optimizer_type_id);
	}
	return php_to_vala_local_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);
}

