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

/* taglet.vala
 *
 * Copyright (C) 2008-2009 Didier Villevalois
 * Copyright (C) 2008-2012 Florian Brosch
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Author:
 * 	Didier 'Ptitjes Villevalois <ptitjes@free.fr>
 */

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

enum  {
	VALADOC_TAGLETS_PARAM_0_PROPERTY,
	VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY,
	VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY,
	VALADOC_TAGLETS_PARAM_POSITION_PROPERTY,
	VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY,
	VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY,
	VALADOC_TAGLETS_PARAM_NUM_PROPERTIES
};
static GParamSpec* valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

struct _ValadocTagletsParamPrivate {
	gchar* _parameter_name;
	ValadocApiSymbol* _parameter;
	gint _position;
	gboolean _is_c_self_param;
	gboolean _is_this;
};


static gpointer valadoc_taglets_param_parent_class = NULL;
static ValadocContentTagletIface * valadoc_taglets_param_valadoc_content_taglet_parent_iface = NULL;
static ValadocContentBlockIface * valadoc_taglets_param_valadoc_content_block_parent_iface = NULL;

#define VALADOC_TAGLETS_PARAM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParamPrivate))
static ValadocRule* valadoc_taglets_param_real_get_parser_rule (ValadocContentTaglet* base, ValadocRule* run_rule);
static void __lambda11_ (ValadocTagletsParam* self, ValadocToken* token, GError** error);
G_GNUC_INTERNAL void valadoc_taglets_param_set_parameter_name (ValadocTagletsParam* self, const gchar* value);
static void ___lambda11__valadoc_token_type_action (ValadocToken* token, gpointer self, GError** error);
static void valadoc_taglets_param_real_check (ValadocContentContentElement* base, ValadocApiTree* api_root, ValadocApiNode* container, const gchar* file_path, ValadocErrorReporter* reporter, ValadocSettings* settings);
static gboolean valadoc_taglets_param_has_instance (ValadocTagletsParam* self, ValadocApiItem* element);
static void valadoc_taglets_param_set_parameter (ValadocTagletsParam* self, ValadocApiSymbol* value);
G_GNUC_INTERNAL const gchar* valadoc_api_callable_get_implicit_array_length_cparameter_name (ValadocApiCallable* self);
static void valadoc_taglets_param_set_is_this (ValadocTagletsParam* self, gboolean value);
static void valadoc_taglets_param_set_position (ValadocTagletsParam* self, gint value);
G_GNUC_INTERNAL const gchar* valadoc_api_formal_parameter_get_implicit_array_length_cparameter_name (ValadocApiFormalParameter* self);
G_GNUC_INTERNAL const gchar* valadoc_api_formal_parameter_get_implicit_closure_cparameter_name (ValadocApiFormalParameter* self);
G_GNUC_INTERNAL const gchar* valadoc_api_formal_parameter_get_implicit_destroy_cparameter_name (ValadocApiFormalParameter* self);
static void valadoc_taglets_param_real_accept (ValadocContentContentElement* base, ValadocContentContentVisitor* visitor);
static ValaList* valadoc_taglets_param_real_get_inheritable_documentation (ValadocContentTaglet* base);
static gboolean valadoc_taglets_param_real_inheritable (ValadocContentTaglet* base, ValadocContentTaglet* taglet);
static ValadocContentContentElement* valadoc_taglets_param_real_copy (ValadocContentContentElement* base, ValadocContentContentElement* new_parent);
G_GNUC_INTERNAL void valadoc_content_content_element_set_parent (ValadocContentContentElement* self, ValadocContentContentElement* value);
G_GNUC_INTERNAL ValadocContentBlockContent* valadoc_content_block_content_construct (GType object_type);
G_GNUC_INTERNAL void valadoc_taglets_param_set_is_c_self_param (ValadocTagletsParam* self, gboolean value);
static void valadoc_taglets_param_finalize (GObject * obj);
static void _vala_valadoc_taglets_param_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_valadoc_taglets_param_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


static void __lambda11_ (ValadocTagletsParam* self, ValadocToken* token, GError** error) {
	ValadocToken* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	g_return_if_fail (token != NULL);
	_tmp0_ = token;
	_tmp1_ = valadoc_token_to_string (_tmp0_);
	_tmp2_ = _tmp1_;
	valadoc_taglets_param_set_parameter_name (self, _tmp2_);
	_g_free0 (_tmp2_);
}


static void ___lambda11__valadoc_token_type_action (ValadocToken* token, gpointer self, GError** error) {
	__lambda11_ ((ValadocTagletsParam*) self, token, error);
}


static ValadocRule* valadoc_taglets_param_real_get_parser_rule (ValadocContentTaglet* base, ValadocRule* run_rule) {
	ValadocTagletsParam * self;
	ValadocRule* result = NULL;
	ValadocTokenType* _tmp0_;
	GObject* _tmp1_;
	GObject** _tmp2_;
	GObject** _tmp3_;
	gint _tmp3__length1;
	ValadocRule* _tmp4_;
	GObject** _tmp5_;
	GObject** _tmp6_;
	gint _tmp6__length1;
	ValadocRule* _tmp7_;
	ValadocTokenType* _tmp8_;
	ValadocTokenType* _tmp9_;
	ValadocTokenType* _tmp10_;
	ValadocRule* _tmp11_;
	GObject* _tmp12_;
	GObject** _tmp13_;
	GObject** _tmp14_;
	gint _tmp14__length1;
	ValadocRule* _tmp15_;
	ValadocRule* _tmp16_;
	self = (ValadocTagletsParam*) base;
	g_return_val_if_fail (run_rule != NULL, NULL);
	_tmp0_ = valadoc_token_type_SPACE;
	_tmp1_ = _g_object_ref0 ((GObject*) _tmp0_);
	_tmp2_ = g_new0 (GObject*, 1 + 1);
	_tmp2_[0] = _tmp1_;
	_tmp3_ = _tmp2_;
	_tmp3__length1 = 1;
	_tmp4_ = valadoc_rule_many (_tmp3_, 1);
	_tmp5_ = g_new0 (GObject*, 1 + 1);
	_tmp5_[0] = (GObject*) _tmp4_;
	_tmp6_ = _tmp5_;
	_tmp6__length1 = 1;
	_tmp7_ = valadoc_rule_option (_tmp6_, 1);
	_tmp8_ = valadoc_token_type_any_word ();
	_tmp9_ = _tmp8_;
	_tmp10_ = valadoc_token_type_action (_tmp9_, ___lambda11__valadoc_token_type_action, self);
	_tmp11_ = run_rule;
	_tmp12_ = _g_object_ref0 ((GObject*) _tmp11_);
	_tmp13_ = g_new0 (GObject*, 3 + 1);
	_tmp13_[0] = (GObject*) _tmp7_;
	_tmp13_[1] = (GObject*) _tmp10_;
	_tmp13_[2] = _tmp12_;
	_tmp14_ = _tmp13_;
	_tmp14__length1 = 3;
	_tmp15_ = valadoc_rule_seq (_tmp14_, 3);
	_tmp16_ = _tmp15_;
	_tmp14_ = (_vala_array_free (_tmp14_, _tmp14__length1, (GDestroyNotify) g_object_unref), NULL);
	_g_object_unref0 (_tmp9_);
	_tmp6_ = (_vala_array_free (_tmp6_, _tmp6__length1, (GDestroyNotify) g_object_unref), NULL);
	_tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_object_unref), NULL);
	result = _tmp16_;
	return result;
}


static gpointer _vala_iterable_ref0 (gpointer self) {
	return self ? vala_iterable_ref (self) : NULL;
}


static void valadoc_taglets_param_real_check (ValadocContentContentElement* base, ValadocApiTree* api_root, ValadocApiNode* container, const gchar* file_path, ValadocErrorReporter* reporter, ValadocSettings* settings) {
	ValadocTagletsParam * self;
	const gchar* implicit_return_array_length = NULL;
	gboolean has_instance = FALSE;
	ValadocApiNode* _tmp0_;
	gboolean _tmp1_;
	gboolean is_implicit = FALSE;
	ValadocApiNode* _tmp2_;
	gboolean _tmp18_ = FALSE;
	gboolean _tmp19_;
	ValadocApiSymbol* _tmp98_;
	ValadocApiTree* _tmp117_;
	ValadocApiNode* _tmp118_;
	const gchar* _tmp119_;
	ValadocErrorReporter* _tmp120_;
	ValadocSettings* _tmp121_;
	self = (ValadocTagletsParam*) base;
	g_return_if_fail (api_root != NULL);
	g_return_if_fail (container != NULL);
	g_return_if_fail (file_path != NULL);
	g_return_if_fail (reporter != NULL);
	g_return_if_fail (settings != NULL);
	implicit_return_array_length = NULL;
	_tmp0_ = container;
	_tmp1_ = valadoc_taglets_param_has_instance (self, (ValadocApiItem*) _tmp0_);
	has_instance = _tmp1_;
	is_implicit = FALSE;
	valadoc_taglets_param_set_parameter (self, NULL);
	_tmp2_ = container;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALADOC_API_TYPE_CALLABLE)) {
		ValadocApiNode* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		_tmp3_ = container;
		_tmp4_ = valadoc_api_callable_get_implicit_array_length_cparameter_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALADOC_API_TYPE_CALLABLE, ValadocApiCallable));
		_tmp5_ = _tmp4_;
		implicit_return_array_length = _tmp5_;
	} else {
		ValadocErrorReporter* _tmp6_;
		const gchar* _tmp7_;
		ValadocApiNode* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		gchar* _tmp11_;
		gchar* _tmp12_;
		ValadocApiTree* _tmp13_;
		ValadocApiNode* _tmp14_;
		const gchar* _tmp15_;
		ValadocErrorReporter* _tmp16_;
		ValadocSettings* _tmp17_;
		_tmp6_ = reporter;
		_tmp7_ = file_path;
		_tmp8_ = container;
		_tmp9_ = valadoc_api_node_get_full_name (_tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = g_strdup_printf ("%s: %s: @param", _tmp7_, _tmp10_);
		_tmp12_ = _tmp11_;
		valadoc_error_reporter_simple_warning (_tmp6_, _tmp12_, "@param used outside method/delegate/signal context");
		_g_free0 (_tmp12_);
		_g_free0 (_tmp10_);
		_tmp13_ = api_root;
		_tmp14_ = container;
		_tmp15_ = file_path;
		_tmp16_ = reporter;
		_tmp17_ = settings;
		VALADOC_CONTENT_CONTENT_ELEMENT_CLASS (valadoc_taglets_param_parent_class)->check ((ValadocContentContentElement*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_CONTENT_TYPE_BLOCK_CONTENT, ValadocContentBlockContent), _tmp13_, _tmp14_, _tmp15_, _tmp16_, _tmp17_);
		return;
	}
	_tmp19_ = self->priv->_is_c_self_param;
	if (_tmp19_ == TRUE) {
		_tmp18_ = has_instance;
	} else {
		_tmp18_ = FALSE;
	}
	if (_tmp18_) {
		valadoc_taglets_param_set_parameter_name (self, "this");
		valadoc_taglets_param_set_is_this (self, TRUE);
		valadoc_taglets_param_set_position (self, 0);
	} else {
		const gchar* _tmp20_;
		_tmp20_ = self->priv->_parameter_name;
		if (g_strcmp0 (_tmp20_, "...") == 0) {
			ValaList* params = NULL;
			ValadocApiNode* _tmp21_;
			ValaList* _tmp22_;
			_tmp21_ = container;
			_tmp22_ = valadoc_api_node_get_children_by_type (_tmp21_, VALADOC_API_NODE_TYPE_FORMAL_PARAMETER, FALSE);
			params = _tmp22_;
			{
				ValaList* _param_list = NULL;
				ValaList* _tmp23_;
				ValaList* _tmp24_;
				gint _param_size = 0;
				ValaList* _tmp25_;
				gint _tmp26_;
				gint _tmp27_;
				gint _param_index = 0;
				_tmp23_ = params;
				_tmp24_ = _vala_iterable_ref0 (_tmp23_);
				_param_list = _tmp24_;
				_tmp25_ = _param_list;
				_tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_);
				_tmp27_ = _tmp26_;
				_param_size = _tmp27_;
				_param_index = -1;
				while (TRUE) {
					gint _tmp28_;
					gint _tmp29_;
					gint _tmp30_;
					ValadocApiNode* param = NULL;
					ValaList* _tmp31_;
					gint _tmp32_;
					gpointer _tmp33_;
					ValadocApiNode* _tmp34_;
					gboolean _tmp35_;
					gboolean _tmp36_;
					_tmp28_ = _param_index;
					_param_index = _tmp28_ + 1;
					_tmp29_ = _param_index;
					_tmp30_ = _param_size;
					if (!(_tmp29_ < _tmp30_)) {
						break;
					}
					_tmp31_ = _param_list;
					_tmp32_ = _param_index;
					_tmp33_ = vala_list_get (_tmp31_, _tmp32_);
					param = (ValadocApiNode*) _tmp33_;
					_tmp34_ = param;
					_tmp35_ = valadoc_api_formal_parameter_get_ellipsis (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, VALADOC_API_TYPE_FORMAL_PARAMETER, ValadocApiFormalParameter));
					_tmp36_ = _tmp35_;
					if (_tmp36_) {
						ValadocApiNode* _tmp37_;
						gint _tmp38_ = 0;
						_tmp37_ = param;
						valadoc_taglets_param_set_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
						if (has_instance) {
							ValaList* _tmp39_;
							gint _tmp40_;
							gint _tmp41_;
							_tmp39_ = params;
							_tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_);
							_tmp41_ = _tmp40_;
							_tmp38_ = _tmp41_;
						} else {
							ValaList* _tmp42_;
							gint _tmp43_;
							gint _tmp44_;
							_tmp42_ = params;
							_tmp43_ = vala_collection_get_size ((ValaCollection*) _tmp42_);
							_tmp44_ = _tmp43_;
							_tmp38_ = _tmp44_ - 1;
						}
						valadoc_taglets_param_set_position (self, _tmp38_);
						_g_object_unref0 (param);
						break;
					}
					_g_object_unref0 (param);
				}
				_vala_iterable_unref0 (_param_list);
			}
			_vala_iterable_unref0 (params);
		} else {
			ValaList* params = NULL;
			ValadocApiNode* _tmp45_;
			ValadocApiNodeType* _tmp46_;
			ValadocApiNodeType* _tmp47_;
			gint _tmp47__length1;
			ValaList* _tmp48_;
			ValaList* _tmp49_;
			gint _tmp50_ = 0;
			gint pos = 0;
			gboolean _tmp87_ = FALSE;
			ValadocApiSymbol* _tmp88_;
			_tmp45_ = container;
			_tmp46_ = g_new0 (ValadocApiNodeType, 2);
			_tmp46_[0] = VALADOC_API_NODE_TYPE_FORMAL_PARAMETER;
			_tmp46_[1] = VALADOC_API_NODE_TYPE_TYPE_PARAMETER;
			_tmp47_ = _tmp46_;
			_tmp47__length1 = 2;
			_tmp48_ = valadoc_api_node_get_children_by_types (_tmp45_, _tmp47_, 2, FALSE);
			_tmp49_ = _tmp48_;
			_tmp47_ = (g_free (_tmp47_), NULL);
			params = _tmp49_;
			if (has_instance) {
				_tmp50_ = 1;
			} else {
				_tmp50_ = 0;
			}
			pos = _tmp50_;
			{
				ValaList* _param_list = NULL;
				ValaList* _tmp51_;
				ValaList* _tmp52_;
				gint _param_size = 0;
				ValaList* _tmp53_;
				gint _tmp54_;
				gint _tmp55_;
				gint _param_index = 0;
				_tmp51_ = params;
				_tmp52_ = _vala_iterable_ref0 (_tmp51_);
				_param_list = _tmp52_;
				_tmp53_ = _param_list;
				_tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
				_tmp55_ = _tmp54_;
				_param_size = _tmp55_;
				_param_index = -1;
				while (TRUE) {
					gint _tmp56_;
					gint _tmp57_;
					gint _tmp58_;
					ValadocApiNode* param = NULL;
					ValaList* _tmp59_;
					gint _tmp60_;
					gpointer _tmp61_;
					ValadocApiNode* _tmp62_;
					const gchar* _tmp63_;
					const gchar* _tmp64_;
					const gchar* _tmp65_;
					ValadocApiFormalParameter* formalparam = NULL;
					ValadocApiNode* _tmp68_;
					ValadocApiFormalParameter* _tmp69_;
					gboolean _tmp70_ = FALSE;
					ValadocApiFormalParameter* _tmp71_;
					gint _tmp86_;
					_tmp56_ = _param_index;
					_param_index = _tmp56_ + 1;
					_tmp57_ = _param_index;
					_tmp58_ = _param_size;
					if (!(_tmp57_ < _tmp58_)) {
						break;
					}
					_tmp59_ = _param_list;
					_tmp60_ = _param_index;
					_tmp61_ = vala_list_get (_tmp59_, _tmp60_);
					param = (ValadocApiNode*) _tmp61_;
					_tmp62_ = param;
					_tmp63_ = valadoc_api_node_get_name (_tmp62_);
					_tmp64_ = _tmp63_;
					_tmp65_ = self->priv->_parameter_name;
					if (g_strcmp0 (_tmp64_, _tmp65_) == 0) {
						ValadocApiNode* _tmp66_;
						gint _tmp67_;
						_tmp66_ = param;
						valadoc_taglets_param_set_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp66_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
						_tmp67_ = pos;
						valadoc_taglets_param_set_position (self, _tmp67_);
						_g_object_unref0 (param);
						break;
					}
					_tmp68_ = param;
					_tmp69_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp68_, VALADOC_API_TYPE_FORMAL_PARAMETER) ? ((ValadocApiFormalParameter*) _tmp68_) : NULL);
					formalparam = _tmp69_;
					_tmp71_ = formalparam;
					if (_tmp71_ != NULL) {
						gboolean _tmp72_ = FALSE;
						gboolean _tmp73_ = FALSE;
						ValadocApiFormalParameter* _tmp74_;
						const gchar* _tmp75_;
						const gchar* _tmp76_;
						const gchar* _tmp77_;
						_tmp74_ = formalparam;
						_tmp75_ = valadoc_api_formal_parameter_get_implicit_array_length_cparameter_name (_tmp74_);
						_tmp76_ = _tmp75_;
						_tmp77_ = self->priv->_parameter_name;
						if (g_strcmp0 (_tmp76_, _tmp77_) == 0) {
							_tmp73_ = TRUE;
						} else {
							ValadocApiFormalParameter* _tmp78_;
							const gchar* _tmp79_;
							const gchar* _tmp80_;
							const gchar* _tmp81_;
							_tmp78_ = formalparam;
							_tmp79_ = valadoc_api_formal_parameter_get_implicit_closure_cparameter_name (_tmp78_);
							_tmp80_ = _tmp79_;
							_tmp81_ = self->priv->_parameter_name;
							_tmp73_ = g_strcmp0 (_tmp80_, _tmp81_) == 0;
						}
						if (_tmp73_) {
							_tmp72_ = TRUE;
						} else {
							ValadocApiFormalParameter* _tmp82_;
							const gchar* _tmp83_;
							const gchar* _tmp84_;
							const gchar* _tmp85_;
							_tmp82_ = formalparam;
							_tmp83_ = valadoc_api_formal_parameter_get_implicit_destroy_cparameter_name (_tmp82_);
							_tmp84_ = _tmp83_;
							_tmp85_ = self->priv->_parameter_name;
							_tmp72_ = g_strcmp0 (_tmp84_, _tmp85_) == 0;
						}
						_tmp70_ = _tmp72_;
					} else {
						_tmp70_ = FALSE;
					}
					if (_tmp70_) {
						is_implicit = TRUE;
						_g_object_unref0 (formalparam);
						_g_object_unref0 (param);
						break;
					}
					_tmp86_ = pos;
					pos = _tmp86_ + 1;
					_g_object_unref0 (formalparam);
					_g_object_unref0 (param);
				}
				_vala_iterable_unref0 (_param_list);
			}
			_tmp88_ = self->priv->_parameter;
			if (_tmp88_ == NULL) {
				gboolean _tmp89_ = FALSE;
				gboolean _tmp90_ = FALSE;
				const gchar* _tmp91_;
				_tmp91_ = self->priv->_parameter_name;
				if (g_strcmp0 (_tmp91_, "error") == 0) {
					ValadocApiNode* _tmp92_;
					ValadocApiNodeType* _tmp93_;
					ValadocApiNodeType* _tmp94_;
					gint _tmp94__length1;
					gboolean _tmp95_;
					_tmp92_ = container;
					_tmp93_ = g_new0 (ValadocApiNodeType, 2);
					_tmp93_[0] = VALADOC_API_NODE_TYPE_ERROR_DOMAIN;
					_tmp93_[1] = VALADOC_API_NODE_TYPE_CLASS;
					_tmp94_ = _tmp93_;
					_tmp94__length1 = 2;
					_tmp95_ = valadoc_api_node_has_children (_tmp92_, _tmp94_, 2);
					_tmp90_ = _tmp95_;
					_tmp94_ = (g_free (_tmp94_), NULL);
				} else {
					_tmp90_ = FALSE;
				}
				if (_tmp90_) {
					_tmp89_ = TRUE;
				} else {
					const gchar* _tmp96_;
					const gchar* _tmp97_;
					_tmp96_ = self->priv->_parameter_name;
					_tmp97_ = implicit_return_array_length;
					_tmp89_ = g_strcmp0 (_tmp96_, _tmp97_) == 0;
				}
				_tmp87_ = _tmp89_;
			} else {
				_tmp87_ = FALSE;
			}
			if (_tmp87_) {
				is_implicit = TRUE;
			}
			_vala_iterable_unref0 (params);
		}
	}
	_tmp98_ = self->priv->_parameter;
	if (_tmp98_ == NULL) {
		gboolean _tmp99_;
		_tmp99_ = is_implicit;
		if (_tmp99_) {
			ValadocErrorReporter* _tmp100_;
			const gchar* _tmp101_;
			ValadocApiNode* _tmp102_;
			gchar* _tmp103_;
			gchar* _tmp104_;
			gchar* _tmp105_;
			gchar* _tmp106_;
			const gchar* _tmp107_;
			_tmp100_ = reporter;
			_tmp101_ = file_path;
			_tmp102_ = container;
			_tmp103_ = valadoc_api_node_get_full_name (_tmp102_);
			_tmp104_ = _tmp103_;
			_tmp105_ = g_strdup_printf ("%s: %s: @param", _tmp101_, _tmp104_);
			_tmp106_ = _tmp105_;
			_tmp107_ = self->priv->_parameter_name;
			valadoc_error_reporter_simple_note (_tmp100_, _tmp106_, "Implicit parameter `%s' exposed in documentation", _tmp107_);
			_g_free0 (_tmp106_);
			_g_free0 (_tmp104_);
		} else {
			gboolean _tmp108_;
			_tmp108_ = self->priv->_is_c_self_param;
			if (!_tmp108_) {
				ValadocErrorReporter* _tmp109_;
				const gchar* _tmp110_;
				ValadocApiNode* _tmp111_;
				gchar* _tmp112_;
				gchar* _tmp113_;
				gchar* _tmp114_;
				gchar* _tmp115_;
				const gchar* _tmp116_;
				_tmp109_ = reporter;
				_tmp110_ = file_path;
				_tmp111_ = container;
				_tmp112_ = valadoc_api_node_get_full_name (_tmp111_);
				_tmp113_ = _tmp112_;
				_tmp114_ = g_strdup_printf ("%s: %s: @param", _tmp110_, _tmp113_);
				_tmp115_ = _tmp114_;
				_tmp116_ = self->priv->_parameter_name;
				valadoc_error_reporter_simple_warning (_tmp109_, _tmp115_, "Unknown parameter `%s'", _tmp116_);
				_g_free0 (_tmp115_);
				_g_free0 (_tmp113_);
			}
		}
	}
	_tmp117_ = api_root;
	_tmp118_ = container;
	_tmp119_ = file_path;
	_tmp120_ = reporter;
	_tmp121_ = settings;
	VALADOC_CONTENT_CONTENT_ELEMENT_CLASS (valadoc_taglets_param_parent_class)->check ((ValadocContentContentElement*) G_TYPE_CHECK_INSTANCE_CAST (self, VALADOC_CONTENT_TYPE_BLOCK_CONTENT, ValadocContentBlockContent), _tmp117_, _tmp118_, _tmp119_, _tmp120_, _tmp121_);
}


static gboolean valadoc_taglets_param_has_instance (ValadocTagletsParam* self, ValadocApiItem* element) {
	gboolean result = FALSE;
	ValadocApiItem* _tmp0_;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (element != NULL, FALSE);
	_tmp0_ = element;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALADOC_API_TYPE_METHOD)) {
		ValadocApiItem* _tmp1_;
		gboolean _tmp2_;
		gboolean _tmp3_;
		_tmp1_ = element;
		_tmp2_ = valadoc_api_method_get_is_static (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALADOC_API_TYPE_METHOD, ValadocApiMethod));
		_tmp3_ = _tmp2_;
		result = !_tmp3_;
		return result;
	}
	result = FALSE;
	return result;
}


static void valadoc_taglets_param_real_accept (ValadocContentContentElement* base, ValadocContentContentVisitor* visitor) {
	ValadocTagletsParam * self;
	ValadocContentContentVisitor* _tmp0_;
	self = (ValadocTagletsParam*) base;
	g_return_if_fail (visitor != NULL);
	_tmp0_ = visitor;
	valadoc_content_content_visitor_visit_taglet (_tmp0_, (ValadocContentTaglet*) self);
}


static ValaList* valadoc_taglets_param_real_get_inheritable_documentation (ValadocContentTaglet* base) {
	ValadocTagletsParam * self;
	ValaList* result = NULL;
	ValaList* _tmp0_;
	ValaList* _tmp1_;
	ValaList* _tmp2_;
	self = (ValadocTagletsParam*) base;
	_tmp0_ = valadoc_content_block_content_get_content ((ValadocContentBlockContent*) self);
	_tmp1_ = _tmp0_;
	_tmp2_ = _vala_iterable_ref0 (_tmp1_);
	result = _tmp2_;
	return result;
}


static gboolean valadoc_taglets_param_real_inheritable (ValadocContentTaglet* base, ValadocContentTaglet* taglet) {
	ValadocTagletsParam * self;
	gboolean result = FALSE;
	ValadocContentTaglet* _tmp0_;
	ValadocTagletsParam* t = NULL;
	ValadocContentTaglet* _tmp1_;
	ValadocTagletsParam* _tmp2_;
	gboolean _tmp3_ = FALSE;
	ValadocApiSymbol* _tmp4_;
	ValadocTagletsParam* _tmp5_;
	ValadocApiSymbol* _tmp6_;
	self = (ValadocTagletsParam*) base;
	g_return_val_if_fail (taglet != NULL, FALSE);
	_tmp0_ = taglet;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALADOC_TAGLETS_TYPE_PARAM) == FALSE) {
		result = FALSE;
		return result;
	}
	_tmp1_ = taglet;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam));
	t = _tmp2_;
	_tmp4_ = self->priv->_parameter;
	_tmp5_ = t;
	_tmp6_ = _tmp5_->priv->_parameter;
	if (_tmp4_ == _tmp6_) {
		_tmp3_ = TRUE;
	} else {
		const gchar* _tmp7_;
		ValadocTagletsParam* _tmp8_;
		const gchar* _tmp9_;
		_tmp7_ = self->priv->_parameter_name;
		_tmp8_ = t;
		_tmp9_ = _tmp8_->priv->_parameter_name;
		_tmp3_ = g_strcmp0 (_tmp7_, _tmp9_) == 0;
	}
	result = _tmp3_;
	_g_object_unref0 (t);
	return result;
}


static ValadocContentContentElement* valadoc_taglets_param_real_copy (ValadocContentContentElement* base, ValadocContentContentElement* new_parent) {
	ValadocTagletsParam * self;
	ValadocContentContentElement* result = NULL;
	ValadocTagletsParam* param = NULL;
	ValadocTagletsParam* _tmp0_;
	ValadocTagletsParam* _tmp1_;
	ValadocContentContentElement* _tmp2_;
	ValadocTagletsParam* _tmp3_;
	const gchar* _tmp4_;
	ValadocTagletsParam* _tmp5_;
	ValadocApiSymbol* _tmp6_;
	ValadocTagletsParam* _tmp7_;
	gint _tmp8_;
	self = (ValadocTagletsParam*) base;
	_tmp0_ = valadoc_taglets_param_new ();
	param = _tmp0_;
	_tmp1_ = param;
	_tmp2_ = new_parent;
	valadoc_content_content_element_set_parent ((ValadocContentContentElement*) _tmp1_, _tmp2_);
	_tmp3_ = param;
	_tmp4_ = self->priv->_parameter_name;
	valadoc_taglets_param_set_parameter_name (_tmp3_, _tmp4_);
	_tmp5_ = param;
	_tmp6_ = self->priv->_parameter;
	valadoc_taglets_param_set_parameter (_tmp5_, _tmp6_);
	_tmp7_ = param;
	_tmp8_ = self->priv->_position;
	valadoc_taglets_param_set_position (_tmp7_, _tmp8_);
	{
		ValaList* _element_list = NULL;
		ValaList* _tmp9_;
		ValaList* _tmp10_;
		ValaList* _tmp11_;
		gint _element_size = 0;
		ValaList* _tmp12_;
		gint _tmp13_;
		gint _tmp14_;
		gint _element_index = 0;
		_tmp9_ = valadoc_content_block_content_get_content ((ValadocContentBlockContent*) self);
		_tmp10_ = _tmp9_;
		_tmp11_ = _vala_iterable_ref0 (_tmp10_);
		_element_list = _tmp11_;
		_tmp12_ = _element_list;
		_tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
		_tmp14_ = _tmp13_;
		_element_size = _tmp14_;
		_element_index = -1;
		while (TRUE) {
			gint _tmp15_;
			gint _tmp16_;
			gint _tmp17_;
			ValadocContentBlock* element = NULL;
			ValaList* _tmp18_;
			gint _tmp19_;
			gpointer _tmp20_;
			ValadocContentBlock* copy = NULL;
			ValadocContentBlock* _tmp21_;
			ValadocTagletsParam* _tmp22_;
			ValadocContentContentElement* _tmp23_;
			ValadocContentBlock* _tmp24_;
			ValadocTagletsParam* _tmp25_;
			ValaList* _tmp26_;
			ValaList* _tmp27_;
			ValadocContentBlock* _tmp28_;
			_tmp15_ = _element_index;
			_element_index = _tmp15_ + 1;
			_tmp16_ = _element_index;
			_tmp17_ = _element_size;
			if (!(_tmp16_ < _tmp17_)) {
				break;
			}
			_tmp18_ = _element_list;
			_tmp19_ = _element_index;
			_tmp20_ = vala_list_get (_tmp18_, _tmp19_);
			element = (ValadocContentBlock*) _tmp20_;
			_tmp21_ = element;
			_tmp22_ = param;
			_tmp23_ = valadoc_content_content_element_copy ((ValadocContentContentElement*) _tmp21_, (ValadocContentContentElement*) _tmp22_);
			_tmp24_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALADOC_CONTENT_TYPE_BLOCK) ? ((ValadocContentBlock*) _tmp23_) : NULL;
			if (_tmp24_ == NULL) {
				_g_object_unref0 (_tmp23_);
			}
			copy = _tmp24_;
			_tmp25_ = param;
			_tmp26_ = valadoc_content_block_content_get_content ((ValadocContentBlockContent*) _tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = copy;
			vala_collection_add ((ValaCollection*) _tmp27_, _tmp28_);
			_g_object_unref0 (copy);
			_g_object_unref0 (element);
		}
		_vala_iterable_unref0 (_element_list);
	}
	result = (ValadocContentContentElement*) param;
	return result;
}


ValadocTagletsParam* valadoc_taglets_param_construct (GType object_type) {
	ValadocTagletsParam * self = NULL;
	self = (ValadocTagletsParam*) valadoc_content_block_content_construct (object_type);
	return self;
}


ValadocTagletsParam* valadoc_taglets_param_new (void) {
	return valadoc_taglets_param_construct (VALADOC_TAGLETS_TYPE_PARAM);
}


const gchar* valadoc_taglets_param_get_parameter_name (ValadocTagletsParam* self) {
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_parameter_name;
	result = _tmp0_;
	return result;
}


G_GNUC_INTERNAL void valadoc_taglets_param_set_parameter_name (ValadocTagletsParam* self, const gchar* value) {
	g_return_if_fail (self != NULL);
	if (g_strcmp0 (value, valadoc_taglets_param_get_parameter_name (self)) != 0) {
		const gchar* _tmp0_;
		gchar* _tmp1_;
		_tmp0_ = value;
		_tmp1_ = g_strdup (_tmp0_);
		_g_free0 (self->priv->_parameter_name);
		self->priv->_parameter_name = _tmp1_;
		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY]);
	}
}


ValadocApiSymbol* valadoc_taglets_param_get_parameter (ValadocTagletsParam* self) {
	ValadocApiSymbol* result;
	ValadocApiSymbol* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_parameter;
	result = _tmp0_;
	return result;
}


static void valadoc_taglets_param_set_parameter (ValadocTagletsParam* self, ValadocApiSymbol* value) {
	g_return_if_fail (self != NULL);
	if (valadoc_taglets_param_get_parameter (self) != value) {
		ValadocApiSymbol* _tmp0_;
		_tmp0_ = value;
		self->priv->_parameter = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY]);
	}
}


gint valadoc_taglets_param_get_position (ValadocTagletsParam* self) {
	gint result;
	gint _tmp0_;
	g_return_val_if_fail (self != NULL, 0);
	_tmp0_ = self->priv->_position;
	result = _tmp0_;
	return result;
}


static void valadoc_taglets_param_set_position (ValadocTagletsParam* self, gint value) {
	g_return_if_fail (self != NULL);
	if (valadoc_taglets_param_get_position (self) != value) {
		gint _tmp0_;
		_tmp0_ = value;
		self->priv->_position = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_POSITION_PROPERTY]);
	}
}


gboolean valadoc_taglets_param_get_is_c_self_param (ValadocTagletsParam* self) {
	gboolean result;
	gboolean _tmp0_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_is_c_self_param;
	result = _tmp0_;
	return result;
}


G_GNUC_INTERNAL void valadoc_taglets_param_set_is_c_self_param (ValadocTagletsParam* self, gboolean value) {
	g_return_if_fail (self != NULL);
	if (valadoc_taglets_param_get_is_c_self_param (self) != value) {
		gboolean _tmp0_;
		_tmp0_ = value;
		self->priv->_is_c_self_param = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY]);
	}
}


gboolean valadoc_taglets_param_get_is_this (ValadocTagletsParam* self) {
	gboolean result;
	gboolean _tmp0_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_is_this;
	result = _tmp0_;
	return result;
}


static void valadoc_taglets_param_set_is_this (ValadocTagletsParam* self, gboolean value) {
	g_return_if_fail (self != NULL);
	if (valadoc_taglets_param_get_is_this (self) != value) {
		gboolean _tmp0_;
		_tmp0_ = value;
		self->priv->_is_this = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY]);
	}
}


static void valadoc_taglets_param_class_init (ValadocTagletsParamClass * klass) {
	valadoc_taglets_param_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (ValadocTagletsParamPrivate));
	((ValadocContentContentElementClass *) klass)->check = (void (*) (ValadocContentContentElement *, ValadocApiTree*, ValadocApiNode*, const gchar*, ValadocErrorReporter*, ValadocSettings*)) valadoc_taglets_param_real_check;
	((ValadocContentContentElementClass *) klass)->accept = (void (*) (ValadocContentContentElement *, ValadocContentContentVisitor*)) valadoc_taglets_param_real_accept;
	((ValadocContentContentElementClass *) klass)->copy = (ValadocContentContentElement* (*) (ValadocContentContentElement *, ValadocContentContentElement*)) valadoc_taglets_param_real_copy;
	G_OBJECT_CLASS (klass)->get_property = _vala_valadoc_taglets_param_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_valadoc_taglets_param_set_property;
	G_OBJECT_CLASS (klass)->finalize = valadoc_taglets_param_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY] = g_param_spec_string ("parameter-name", "parameter-name", "parameter-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY] = g_param_spec_object ("parameter", "parameter", "parameter", VALADOC_API_TYPE_SYMBOL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_POSITION_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_POSITION_PROPERTY] = g_param_spec_int ("position", "position", "position", G_MININT, G_MAXINT, -1, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY] = g_param_spec_boolean ("is-c-self-param", "is-c-self-param", "is-c-self-param", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY, valadoc_taglets_param_properties[VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY] = g_param_spec_boolean ("is-this", "is-this", "is-this", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}


static void valadoc_taglets_param_valadoc_content_taglet_interface_init (ValadocContentTagletIface * iface) {
	valadoc_taglets_param_valadoc_content_taglet_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_parser_rule = (ValadocRule* (*) (ValadocContentTaglet *, ValadocRule*)) valadoc_taglets_param_real_get_parser_rule;
	iface->get_inheritable_documentation = (ValaList* (*) (ValadocContentTaglet *)) valadoc_taglets_param_real_get_inheritable_documentation;
	iface->inheritable = (gboolean (*) (ValadocContentTaglet *, ValadocContentTaglet*)) valadoc_taglets_param_real_inheritable;
}


static void valadoc_taglets_param_valadoc_content_block_interface_init (ValadocContentBlockIface * iface) {
	valadoc_taglets_param_valadoc_content_block_parent_iface = g_type_interface_peek_parent (iface);
}


static void valadoc_taglets_param_instance_init (ValadocTagletsParam * self) {
	self->priv = VALADOC_TAGLETS_PARAM_GET_PRIVATE (self);
	self->priv->_position = -1;
}


static void valadoc_taglets_param_finalize (GObject * obj) {
	ValadocTagletsParam * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam);
	_g_free0 (self->priv->_parameter_name);
	G_OBJECT_CLASS (valadoc_taglets_param_parent_class)->finalize (obj);
}


GType valadoc_taglets_param_get_type (void) {
	static volatile gsize valadoc_taglets_param_type_id__volatile = 0;
	if (g_once_init_enter (&valadoc_taglets_param_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValadocTagletsParamClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_taglets_param_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocTagletsParam), 0, (GInstanceInitFunc) valadoc_taglets_param_instance_init, NULL };
		static const GInterfaceInfo valadoc_content_taglet_info = { (GInterfaceInitFunc) valadoc_taglets_param_valadoc_content_taglet_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo valadoc_content_block_info = { (GInterfaceInitFunc) valadoc_taglets_param_valadoc_content_block_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType valadoc_taglets_param_type_id;
		valadoc_taglets_param_type_id = g_type_register_static (VALADOC_CONTENT_TYPE_BLOCK_CONTENT, "ValadocTagletsParam", &g_define_type_info, 0);
		g_type_add_interface_static (valadoc_taglets_param_type_id, VALADOC_CONTENT_TYPE_TAGLET, &valadoc_content_taglet_info);
		g_type_add_interface_static (valadoc_taglets_param_type_id, VALADOC_CONTENT_TYPE_BLOCK, &valadoc_content_block_info);
		g_once_init_leave (&valadoc_taglets_param_type_id__volatile, valadoc_taglets_param_type_id);
	}
	return valadoc_taglets_param_type_id__volatile;
}


static void _vala_valadoc_taglets_param_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	ValadocTagletsParam * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam);
	switch (property_id) {
		case VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY:
		g_value_set_string (value, valadoc_taglets_param_get_parameter_name (self));
		break;
		case VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY:
		g_value_set_object (value, valadoc_taglets_param_get_parameter (self));
		break;
		case VALADOC_TAGLETS_PARAM_POSITION_PROPERTY:
		g_value_set_int (value, valadoc_taglets_param_get_position (self));
		break;
		case VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY:
		g_value_set_boolean (value, valadoc_taglets_param_get_is_c_self_param (self));
		break;
		case VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY:
		g_value_set_boolean (value, valadoc_taglets_param_get_is_this (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_valadoc_taglets_param_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	ValadocTagletsParam * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_TAGLETS_TYPE_PARAM, ValadocTagletsParam);
	switch (property_id) {
		case VALADOC_TAGLETS_PARAM_PARAMETER_NAME_PROPERTY:
		valadoc_taglets_param_set_parameter_name (self, g_value_get_string (value));
		break;
		case VALADOC_TAGLETS_PARAM_PARAMETER_PROPERTY:
		valadoc_taglets_param_set_parameter (self, g_value_get_object (value));
		break;
		case VALADOC_TAGLETS_PARAM_POSITION_PROPERTY:
		valadoc_taglets_param_set_position (self, g_value_get_int (value));
		break;
		case VALADOC_TAGLETS_PARAM_IS_C_SELF_PARAM_PROPERTY:
		valadoc_taglets_param_set_is_c_self_param (self, g_value_get_boolean (value));
		break;
		case VALADOC_TAGLETS_PARAM_IS_THIS_PROPERTY:
		valadoc_taglets_param_set_is_this (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	if ((array != NULL) && (destroy_func != NULL)) {
		int 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, gint array_length, GDestroyNotify destroy_func) {
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}



