/* tpf-persona-store-cache.c generated by valac 0.29.3.10-b87a, the Vala compiler
 * generated from tpf-persona-store-cache.vala, do not modify */

/*
 * Copyright (C) 2011 Collabora Ltd.
 *
 * 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, see <http://www.gnu.org/licenses/>.
 *
 * Authors:
 *       Philip Withnall <philip.withnall@collabora.co.uk>
 */

#include <glib.h>
#include <glib-object.h>
#include <folks/folks.h>
#include <gee.h>
#include <stdlib.h>
#include <string.h>
#include <gio/gio.h>
#include <folks/small-set.h>


#define TPF_TYPE_PERSONA_STORE_CACHE (tpf_persona_store_cache_get_type ())
#define TPF_PERSONA_STORE_CACHE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCache))
#define TPF_PERSONA_STORE_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCacheClass))
#define TPF_IS_PERSONA_STORE_CACHE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TPF_TYPE_PERSONA_STORE_CACHE))
#define TPF_IS_PERSONA_STORE_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TPF_TYPE_PERSONA_STORE_CACHE))
#define TPF_PERSONA_STORE_CACHE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCacheClass))

typedef struct _TpfPersonaStoreCache TpfPersonaStoreCache;
typedef struct _TpfPersonaStoreCacheClass TpfPersonaStoreCacheClass;
typedef struct _TpfPersonaStoreCachePrivate TpfPersonaStoreCachePrivate;

#define TPF_TYPE_PERSONA_STORE (tpf_persona_store_get_type ())
#define TPF_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TPF_TYPE_PERSONA_STORE, TpfPersonaStore))
#define TPF_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TPF_TYPE_PERSONA_STORE, TpfPersonaStoreClass))
#define TPF_IS_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TPF_TYPE_PERSONA_STORE))
#define TPF_IS_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TPF_TYPE_PERSONA_STORE))
#define TPF_PERSONA_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TPF_TYPE_PERSONA_STORE, TpfPersonaStoreClass))

typedef struct _TpfPersonaStore TpfPersonaStore;
typedef struct _TpfPersonaStoreClass TpfPersonaStoreClass;

#define TPF_TYPE_PERSONA (tpf_persona_get_type ())
#define TPF_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TPF_TYPE_PERSONA, TpfPersona))
#define TPF_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TPF_TYPE_PERSONA, TpfPersonaClass))
#define TPF_IS_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TPF_TYPE_PERSONA))
#define TPF_IS_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TPF_TYPE_PERSONA))
#define TPF_PERSONA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TPF_TYPE_PERSONA, TpfPersonaClass))

typedef struct _TpfPersona TpfPersona;
typedef struct _TpfPersonaClass TpfPersonaClass;
#define _g_variant_type_free0(var) ((var == NULL) ? NULL : (var = (g_variant_type_free (var), NULL)))
#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef struct _Block2Data Block2Data;
#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))

struct _TpfPersonaStoreCache {
	FolksObjectCache parent_instance;
	TpfPersonaStoreCachePrivate * priv;
};

struct _TpfPersonaStoreCacheClass {
	FolksObjectCacheClass parent_class;
};

struct _TpfPersonaStoreCachePrivate {
	TpfPersonaStore* _store;
};

typedef void (*TpfPersonaStoreCacheAfdDeserialisationCallback) (const gchar* val, GeeHashMultiMap* parameters, void* user_data);
struct _Block2Data {
	int _ref_count_;
	TpfPersonaStoreCache* self;
	FolksSmallSet* email_address_set;
	FolksSmallSet* phone_number_set;
	FolksSmallSet* url_set;
};


static gpointer tpf_persona_store_cache_parent_class = NULL;

GType tpf_persona_store_cache_get_type (void) G_GNUC_CONST;
GType tpf_persona_store_get_type (void) G_GNUC_CONST;
#define TPF_PERSONA_STORE_CACHE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCachePrivate))
enum  {
	TPF_PERSONA_STORE_CACHE_DUMMY_PROPERTY,
	TPF_PERSONA_STORE_CACHE_STORE
};
#define TPF_PERSONA_STORE_CACHE__FILE_FORMAT_VERSION ((guint8) 2)
TpfPersonaStoreCache* tpf_persona_store_cache_new (TpfPersonaStore* store);
TpfPersonaStoreCache* tpf_persona_store_cache_construct (GType object_type, TpfPersonaStore* store);
GType tpf_persona_get_type (void) G_GNUC_CONST;
static GVariantType* tpf_persona_store_cache_real_get_serialised_object_type (FolksObjectCache* base, guint8 object_version);
static guint8 tpf_persona_store_cache_real_get_serialised_object_version (FolksObjectCache* base);
static GVariant** tpf_persona_store_cache_serialise_abstract_field_details (TpfPersonaStoreCache* self, GeeSet* field_details_set, int* result_length1);
static GVariant* _variant_new1 (const gchar* value);
static GVariant* tpf_persona_store_cache_real_serialise_object (FolksObjectCache* base, TpfPersona* persona);
gboolean tpf_persona_get_is_in_contact_list (TpfPersona* self);
static void tpf_persona_store_cache_deserialise_abstract_field_details (TpfPersonaStoreCache* self, GVariant* input_variants, TpfPersonaStoreCacheAfdDeserialisationCallback cb, void* cb_target);
static TpfPersona* tpf_persona_store_cache_real_deserialise_object (FolksObjectCache* base, GVariant* variant, guint8 object_version);
static Block2Data* block2_data_ref (Block2Data* _data2_);
static void block2_data_unref (void * _userdata_);
static guint _folks_abstract_field_details_hash_static_gee_hash_data_func (gconstpointer v, gpointer self);
static gboolean _folks_abstract_field_details_equal_static_gee_equal_data_func (gconstpointer a, gconstpointer b, gpointer self);
static void ___lambda5_ (Block2Data* _data2_, const gchar* v, GeeHashMultiMap* p);
static void ____lambda5__tpf_persona_store_cache_afd_deserialisation_callback (const gchar* val, GeeHashMultiMap* parameters, gpointer self);
static void ___lambda6_ (Block2Data* _data2_, const gchar* v, GeeHashMultiMap* p);
static void ____lambda6__tpf_persona_store_cache_afd_deserialisation_callback (const gchar* val, GeeHashMultiMap* parameters, gpointer self);
static void ___lambda7_ (Block2Data* _data2_, const gchar* v, GeeHashMultiMap* p);
static void ____lambda7__tpf_persona_store_cache_afd_deserialisation_callback (const gchar* val, GeeHashMultiMap* parameters, gpointer self);
TpfPersona* tpf_persona_new_from_cache (TpfPersonaStore* store, const gchar* uid, const gchar* iid, const gchar* im_address, const gchar* protocol, FolksSmallSet* groups, gboolean is_favourite, const gchar* alias, gboolean is_in_contact_list, gboolean is_user, GLoadableIcon* avatar, GDateTime* birthday, const gchar* full_name, FolksSmallSet* email_addresses, FolksSmallSet* phone_numbers, FolksSmallSet* urls);
TpfPersona* tpf_persona_construct_from_cache (GType object_type, TpfPersonaStore* store, const gchar* uid, const gchar* iid, const gchar* im_address, const gchar* protocol, FolksSmallSet* groups, gboolean is_favourite, const gchar* alias, gboolean is_in_contact_list, gboolean is_user, GLoadableIcon* avatar, GDateTime* birthday, const gchar* full_name, FolksSmallSet* email_addresses, FolksSmallSet* phone_numbers, FolksSmallSet* urls);
TpfPersonaStore* tpf_persona_store_cache_get_store (TpfPersonaStoreCache* self);
static void tpf_persona_store_cache_set_store (TpfPersonaStoreCache* self, TpfPersonaStore* value);
static void tpf_persona_store_cache_finalize (GObject* obj);
static void _vala_tpf_persona_store_cache_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_tpf_persona_store_cache_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);


TpfPersonaStoreCache* tpf_persona_store_cache_construct (GType object_type, TpfPersonaStore* store) {
	TpfPersonaStoreCache * self = NULL;
	TpfPersonaStore* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	TpfPersonaStore* _tmp3_ = NULL;
	g_return_val_if_fail (store != NULL, NULL);
	_tmp0_ = store;
	_tmp1_ = folks_persona_store_get_id ((FolksPersonaStore*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = store;
	self = (TpfPersonaStoreCache*) g_object_new (object_type, "t_type", TPF_TYPE_PERSONA, "t_dup_func", (GBoxedCopyFunc) g_object_ref, "t_destroy_func", g_object_unref, "type-id", "tpf-persona-stores", "id", _tmp2_, "store", _tmp3_, NULL);
	return self;
}


TpfPersonaStoreCache* tpf_persona_store_cache_new (TpfPersonaStore* store) {
	return tpf_persona_store_cache_construct (TPF_TYPE_PERSONA_STORE_CACHE, store);
}


static gpointer _g_variant_type_copy0 (gpointer self) {
	return self ? g_variant_type_copy (self) : NULL;
}


static GVariantType* tpf_persona_store_cache_real_get_serialised_object_type (FolksObjectCache* base, guint8 object_version) {
	TpfPersonaStoreCache * self;
	GVariantType* result = NULL;
	guint8 _tmp0_ = 0U;
	guint8 _tmp1_ = 0U;
	self = (TpfPersonaStoreCache*) base;
	_tmp0_ = object_version;
	if (_tmp0_ == G_MAXUINT8) {
		object_version = TPF_PERSONA_STORE_CACHE__FILE_FORMAT_VERSION;
	}
	_tmp1_ = object_version;
	if (((gint) _tmp1_) == 1) {
		const GVariantType* _tmp2_ = NULL;
		GVariantType* _tmp3_ = NULL;
		const GVariantType* _tmp4_ = NULL;
		GVariantType* _tmp5_ = NULL;
		const GVariantType* _tmp6_ = NULL;
		GVariantType* _tmp7_ = NULL;
		const GVariantType* _tmp8_ = NULL;
		GVariantType* _tmp9_ = NULL;
		const GVariantType* _tmp10_ = NULL;
		GVariantType* _tmp11_ = NULL;
		const GVariantType* _tmp12_ = NULL;
		GVariantType* _tmp13_ = NULL;
		const GVariantType* _tmp14_ = NULL;
		GVariantType* _tmp15_ = NULL;
		const GVariantType* _tmp16_ = NULL;
		GVariantType* _tmp17_ = NULL;
		const GVariantType* _tmp18_ = NULL;
		GVariantType* _tmp19_ = NULL;
		const GVariantType* _tmp20_ = NULL;
		GVariantType* _tmp21_ = NULL;
		GVariantType** _tmp22_ = NULL;
		GVariantType** _tmp23_ = NULL;
		gint _tmp23__length1 = 0;
		GVariantType* _tmp24_ = NULL;
		GVariantType* _tmp25_ = NULL;
		_tmp2_ = G_VARIANT_TYPE_STRING;
		_tmp3_ = _g_variant_type_copy0 (_tmp2_);
		_tmp4_ = G_VARIANT_TYPE_STRING;
		_tmp5_ = _g_variant_type_copy0 (_tmp4_);
		_tmp6_ = G_VARIANT_TYPE_STRING;
		_tmp7_ = _g_variant_type_copy0 (_tmp6_);
		_tmp8_ = G_VARIANT_TYPE_STRING;
		_tmp9_ = _g_variant_type_copy0 (_tmp8_);
		_tmp10_ = G_VARIANT_TYPE_STRING;
		_tmp11_ = g_variant_type_new_array (_tmp10_);
		_tmp12_ = G_VARIANT_TYPE_BOOLEAN;
		_tmp13_ = _g_variant_type_copy0 (_tmp12_);
		_tmp14_ = G_VARIANT_TYPE_STRING;
		_tmp15_ = _g_variant_type_copy0 (_tmp14_);
		_tmp16_ = G_VARIANT_TYPE_BOOLEAN;
		_tmp17_ = _g_variant_type_copy0 (_tmp16_);
		_tmp18_ = G_VARIANT_TYPE_BOOLEAN;
		_tmp19_ = _g_variant_type_copy0 (_tmp18_);
		_tmp20_ = G_VARIANT_TYPE_STRING;
		_tmp21_ = g_variant_type_new_maybe (_tmp20_);
		_tmp22_ = g_new0 (GVariantType*, 10 + 1);
		_tmp22_[0] = _tmp3_;
		_tmp22_[1] = _tmp5_;
		_tmp22_[2] = _tmp7_;
		_tmp22_[3] = _tmp9_;
		_tmp22_[4] = _tmp11_;
		_tmp22_[5] = _tmp13_;
		_tmp22_[6] = _tmp15_;
		_tmp22_[7] = _tmp17_;
		_tmp22_[8] = _tmp19_;
		_tmp22_[9] = _tmp21_;
		_tmp23_ = _tmp22_;
		_tmp23__length1 = 10;
		_tmp24_ = g_variant_type_new_tuple (_tmp23_, 10);
		_tmp25_ = _tmp24_;
		_tmp23_ = (_vala_array_free (_tmp23_, _tmp23__length1, (GDestroyNotify) g_variant_type_free), NULL);
		result = _tmp25_;
		return result;
	} else {
		gboolean _tmp26_ = FALSE;
		guint8 _tmp27_ = 0U;
		_tmp27_ = object_version;
		if (((gint) _tmp27_) == 2) {
			_tmp26_ = TRUE;
		} else {
			guint8 _tmp28_ = 0U;
			_tmp28_ = object_version;
			_tmp26_ = _tmp28_ == G_MAXUINT8;
		}
		if (_tmp26_) {
			const GVariantType* _tmp29_ = NULL;
			GVariantType* _tmp30_ = NULL;
			const GVariantType* _tmp31_ = NULL;
			GVariantType* _tmp32_ = NULL;
			const GVariantType* _tmp33_ = NULL;
			GVariantType* _tmp34_ = NULL;
			const GVariantType* _tmp35_ = NULL;
			GVariantType* _tmp36_ = NULL;
			const GVariantType* _tmp37_ = NULL;
			GVariantType* _tmp38_ = NULL;
			const GVariantType* _tmp39_ = NULL;
			GVariantType* _tmp40_ = NULL;
			const GVariantType* _tmp41_ = NULL;
			GVariantType* _tmp42_ = NULL;
			const GVariantType* _tmp43_ = NULL;
			GVariantType* _tmp44_ = NULL;
			const GVariantType* _tmp45_ = NULL;
			GVariantType* _tmp46_ = NULL;
			const GVariantType* _tmp47_ = NULL;
			GVariantType* _tmp48_ = NULL;
			const GVariantType* _tmp49_ = NULL;
			GVariantType* _tmp50_ = NULL;
			const GVariantType* _tmp51_ = NULL;
			GVariantType* _tmp52_ = NULL;
			const GVariantType* _tmp53_ = NULL;
			GVariantType* _tmp54_ = NULL;
			const GVariantType* _tmp55_ = NULL;
			GVariantType* _tmp56_ = NULL;
			const GVariantType* _tmp57_ = NULL;
			GVariantType* _tmp58_ = NULL;
			GVariantType** _tmp59_ = NULL;
			GVariantType** _tmp60_ = NULL;
			gint _tmp60__length1 = 0;
			GVariantType* _tmp61_ = NULL;
			GVariantType* _tmp62_ = NULL;
			GVariantType* _tmp63_ = NULL;
			GVariantType** _tmp64_ = NULL;
			GVariantType** _tmp65_ = NULL;
			gint _tmp65__length1 = 0;
			GVariantType* _tmp66_ = NULL;
			GVariantType* _tmp67_ = NULL;
			GVariantType* _tmp68_ = NULL;
			const GVariantType* _tmp69_ = NULL;
			GVariantType* _tmp70_ = NULL;
			const GVariantType* _tmp71_ = NULL;
			GVariantType* _tmp72_ = NULL;
			const GVariantType* _tmp73_ = NULL;
			GVariantType* _tmp74_ = NULL;
			GVariantType** _tmp75_ = NULL;
			GVariantType** _tmp76_ = NULL;
			gint _tmp76__length1 = 0;
			GVariantType* _tmp77_ = NULL;
			GVariantType* _tmp78_ = NULL;
			GVariantType* _tmp79_ = NULL;
			GVariantType** _tmp80_ = NULL;
			GVariantType** _tmp81_ = NULL;
			gint _tmp81__length1 = 0;
			GVariantType* _tmp82_ = NULL;
			GVariantType* _tmp83_ = NULL;
			GVariantType* _tmp84_ = NULL;
			const GVariantType* _tmp85_ = NULL;
			GVariantType* _tmp86_ = NULL;
			const GVariantType* _tmp87_ = NULL;
			GVariantType* _tmp88_ = NULL;
			const GVariantType* _tmp89_ = NULL;
			GVariantType* _tmp90_ = NULL;
			GVariantType** _tmp91_ = NULL;
			GVariantType** _tmp92_ = NULL;
			gint _tmp92__length1 = 0;
			GVariantType* _tmp93_ = NULL;
			GVariantType* _tmp94_ = NULL;
			GVariantType* _tmp95_ = NULL;
			GVariantType** _tmp96_ = NULL;
			GVariantType** _tmp97_ = NULL;
			gint _tmp97__length1 = 0;
			GVariantType* _tmp98_ = NULL;
			GVariantType* _tmp99_ = NULL;
			GVariantType* _tmp100_ = NULL;
			GVariantType** _tmp101_ = NULL;
			GVariantType** _tmp102_ = NULL;
			gint _tmp102__length1 = 0;
			GVariantType* _tmp103_ = NULL;
			GVariantType* _tmp104_ = NULL;
			_tmp29_ = G_VARIANT_TYPE_STRING;
			_tmp30_ = _g_variant_type_copy0 (_tmp29_);
			_tmp31_ = G_VARIANT_TYPE_STRING;
			_tmp32_ = _g_variant_type_copy0 (_tmp31_);
			_tmp33_ = G_VARIANT_TYPE_STRING;
			_tmp34_ = _g_variant_type_copy0 (_tmp33_);
			_tmp35_ = G_VARIANT_TYPE_STRING;
			_tmp36_ = _g_variant_type_copy0 (_tmp35_);
			_tmp37_ = G_VARIANT_TYPE_STRING;
			_tmp38_ = g_variant_type_new_array (_tmp37_);
			_tmp39_ = G_VARIANT_TYPE_BOOLEAN;
			_tmp40_ = _g_variant_type_copy0 (_tmp39_);
			_tmp41_ = G_VARIANT_TYPE_STRING;
			_tmp42_ = _g_variant_type_copy0 (_tmp41_);
			_tmp43_ = G_VARIANT_TYPE_BOOLEAN;
			_tmp44_ = _g_variant_type_copy0 (_tmp43_);
			_tmp45_ = G_VARIANT_TYPE_BOOLEAN;
			_tmp46_ = _g_variant_type_copy0 (_tmp45_);
			_tmp47_ = G_VARIANT_TYPE_STRING;
			_tmp48_ = g_variant_type_new_maybe (_tmp47_);
			_tmp49_ = G_VARIANT_TYPE_INT64;
			_tmp50_ = g_variant_type_new_maybe (_tmp49_);
			_tmp51_ = G_VARIANT_TYPE_STRING;
			_tmp52_ = _g_variant_type_copy0 (_tmp51_);
			_tmp53_ = G_VARIANT_TYPE_STRING;
			_tmp54_ = _g_variant_type_copy0 (_tmp53_);
			_tmp55_ = G_VARIANT_TYPE_STRING;
			_tmp56_ = _g_variant_type_copy0 (_tmp55_);
			_tmp57_ = G_VARIANT_TYPE_STRING;
			_tmp58_ = _g_variant_type_copy0 (_tmp57_);
			_tmp59_ = g_new0 (GVariantType*, 2 + 1);
			_tmp59_[0] = _tmp56_;
			_tmp59_[1] = _tmp58_;
			_tmp60_ = _tmp59_;
			_tmp60__length1 = 2;
			_tmp61_ = g_variant_type_new_tuple (_tmp60_, 2);
			_tmp62_ = _tmp61_;
			_tmp63_ = g_variant_type_new_array (_tmp62_);
			_tmp64_ = g_new0 (GVariantType*, 2 + 1);
			_tmp64_[0] = _tmp54_;
			_tmp64_[1] = _tmp63_;
			_tmp65_ = _tmp64_;
			_tmp65__length1 = 2;
			_tmp66_ = g_variant_type_new_tuple (_tmp65_, 2);
			_tmp67_ = _tmp66_;
			_tmp68_ = g_variant_type_new_array (_tmp67_);
			_tmp69_ = G_VARIANT_TYPE_STRING;
			_tmp70_ = _g_variant_type_copy0 (_tmp69_);
			_tmp71_ = G_VARIANT_TYPE_STRING;
			_tmp72_ = _g_variant_type_copy0 (_tmp71_);
			_tmp73_ = G_VARIANT_TYPE_STRING;
			_tmp74_ = _g_variant_type_copy0 (_tmp73_);
			_tmp75_ = g_new0 (GVariantType*, 2 + 1);
			_tmp75_[0] = _tmp72_;
			_tmp75_[1] = _tmp74_;
			_tmp76_ = _tmp75_;
			_tmp76__length1 = 2;
			_tmp77_ = g_variant_type_new_tuple (_tmp76_, 2);
			_tmp78_ = _tmp77_;
			_tmp79_ = g_variant_type_new_array (_tmp78_);
			_tmp80_ = g_new0 (GVariantType*, 2 + 1);
			_tmp80_[0] = _tmp70_;
			_tmp80_[1] = _tmp79_;
			_tmp81_ = _tmp80_;
			_tmp81__length1 = 2;
			_tmp82_ = g_variant_type_new_tuple (_tmp81_, 2);
			_tmp83_ = _tmp82_;
			_tmp84_ = g_variant_type_new_array (_tmp83_);
			_tmp85_ = G_VARIANT_TYPE_STRING;
			_tmp86_ = _g_variant_type_copy0 (_tmp85_);
			_tmp87_ = G_VARIANT_TYPE_STRING;
			_tmp88_ = _g_variant_type_copy0 (_tmp87_);
			_tmp89_ = G_VARIANT_TYPE_STRING;
			_tmp90_ = _g_variant_type_copy0 (_tmp89_);
			_tmp91_ = g_new0 (GVariantType*, 2 + 1);
			_tmp91_[0] = _tmp88_;
			_tmp91_[1] = _tmp90_;
			_tmp92_ = _tmp91_;
			_tmp92__length1 = 2;
			_tmp93_ = g_variant_type_new_tuple (_tmp92_, 2);
			_tmp94_ = _tmp93_;
			_tmp95_ = g_variant_type_new_array (_tmp94_);
			_tmp96_ = g_new0 (GVariantType*, 2 + 1);
			_tmp96_[0] = _tmp86_;
			_tmp96_[1] = _tmp95_;
			_tmp97_ = _tmp96_;
			_tmp97__length1 = 2;
			_tmp98_ = g_variant_type_new_tuple (_tmp97_, 2);
			_tmp99_ = _tmp98_;
			_tmp100_ = g_variant_type_new_array (_tmp99_);
			_tmp101_ = g_new0 (GVariantType*, 15 + 1);
			_tmp101_[0] = _tmp30_;
			_tmp101_[1] = _tmp32_;
			_tmp101_[2] = _tmp34_;
			_tmp101_[3] = _tmp36_;
			_tmp101_[4] = _tmp38_;
			_tmp101_[5] = _tmp40_;
			_tmp101_[6] = _tmp42_;
			_tmp101_[7] = _tmp44_;
			_tmp101_[8] = _tmp46_;
			_tmp101_[9] = _tmp48_;
			_tmp101_[10] = _tmp50_;
			_tmp101_[11] = _tmp52_;
			_tmp101_[12] = _tmp68_;
			_tmp101_[13] = _tmp84_;
			_tmp101_[14] = _tmp100_;
			_tmp102_ = _tmp101_;
			_tmp102__length1 = 15;
			_tmp103_ = g_variant_type_new_tuple (_tmp102_, 15);
			_tmp104_ = _tmp103_;
			_tmp102_ = (_vala_array_free (_tmp102_, _tmp102__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_variant_type_free0 (_tmp99_);
			_tmp97_ = (_vala_array_free (_tmp97_, _tmp97__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_variant_type_free0 (_tmp94_);
			_tmp92_ = (_vala_array_free (_tmp92_, _tmp92__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_variant_type_free0 (_tmp83_);
			_tmp81_ = (_vala_array_free (_tmp81_, _tmp81__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_variant_type_free0 (_tmp78_);
			_tmp76_ = (_vala_array_free (_tmp76_, _tmp76__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_variant_type_free0 (_tmp67_);
			_tmp65_ = (_vala_array_free (_tmp65_, _tmp65__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_variant_type_free0 (_tmp62_);
			_tmp60_ = (_vala_array_free (_tmp60_, _tmp60__length1, (GDestroyNotify) g_variant_type_free), NULL);
			result = _tmp104_;
			return result;
		}
	}
	result = NULL;
	return result;
}


static guint8 tpf_persona_store_cache_real_get_serialised_object_version (FolksObjectCache* base) {
	TpfPersonaStoreCache * self;
	guint8 result = 0U;
	self = (TpfPersonaStoreCache*) base;
	result = TPF_PERSONA_STORE_CACHE__FILE_FORMAT_VERSION;
	return result;
}


static GVariant* _variant_new1 (const gchar* value) {
	return g_variant_ref_sink (g_variant_new_string (value));
}


static GVariant** tpf_persona_store_cache_serialise_abstract_field_details (TpfPersonaStoreCache* self, GeeSet* field_details_set, int* result_length1) {
	GVariant** result = NULL;
	GVariant** output_variants = NULL;
	GeeSet* _tmp0_ = NULL;
	gint _tmp1_ = 0;
	gint _tmp2_ = 0;
	GVariant** _tmp3_ = NULL;
	gint output_variants_length1 = 0;
	gint _output_variants_size_ = 0;
	guint i = 0U;
	GVariant** _tmp56_ = NULL;
	gint _tmp56__length1 = 0;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (field_details_set != NULL, NULL);
	_tmp0_ = field_details_set;
	_tmp1_ = gee_collection_get_size ((GeeCollection*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_new0 (GVariant*, _tmp2_ + 1);
	output_variants = _tmp3_;
	output_variants_length1 = _tmp2_;
	_output_variants_size_ = output_variants_length1;
	i = (guint) 0;
	{
		GeeIterator* _afd_it = NULL;
		GeeSet* _tmp4_ = NULL;
		GeeIterator* _tmp5_ = NULL;
		_tmp4_ = field_details_set;
		_tmp5_ = gee_iterable_iterator ((GeeIterable*) _tmp4_);
		_afd_it = _tmp5_;
		while (TRUE) {
			GeeIterator* _tmp6_ = NULL;
			gboolean _tmp7_ = FALSE;
			FolksAbstractFieldDetails* afd = NULL;
			GeeIterator* _tmp8_ = NULL;
			gpointer _tmp9_ = NULL;
			GVariant** parameters = NULL;
			FolksAbstractFieldDetails* _tmp10_ = NULL;
			GeeMultiMap* _tmp11_ = NULL;
			GeeMultiMap* _tmp12_ = NULL;
			gint _tmp13_ = 0;
			gint _tmp14_ = 0;
			GVariant** _tmp15_ = NULL;
			gint parameters_length1 = 0;
			gint _parameters_size_ = 0;
			guint f = 0U;
			GeeMapIterator* iter = NULL;
			FolksAbstractFieldDetails* _tmp16_ = NULL;
			GeeMultiMap* _tmp17_ = NULL;
			GeeMultiMap* _tmp18_ = NULL;
			GeeMapIterator* _tmp19_ = NULL;
			GVariant** _tmp36_ = NULL;
			gint _tmp36__length1 = 0;
			guint _tmp37_ = 0U;
			FolksAbstractFieldDetails* _tmp38_ = NULL;
			gconstpointer _tmp39_ = NULL;
			const gchar* _tmp40_ = NULL;
			GVariant* _tmp41_ = NULL;
			const GVariantType* _tmp42_ = NULL;
			GVariantType* _tmp43_ = NULL;
			const GVariantType* _tmp44_ = NULL;
			GVariantType* _tmp45_ = NULL;
			GVariantType** _tmp46_ = NULL;
			GVariantType** _tmp47_ = NULL;
			gint _tmp47__length1 = 0;
			GVariantType* _tmp48_ = NULL;
			GVariantType* _tmp49_ = NULL;
			GVariant** _tmp50_ = NULL;
			gint _tmp50__length1 = 0;
			GVariant* _tmp51_ = NULL;
			GVariant** _tmp52_ = NULL;
			GVariant** _tmp53_ = NULL;
			gint _tmp53__length1 = 0;
			GVariant* _tmp54_ = NULL;
			GVariant* _tmp55_ = NULL;
			_tmp6_ = _afd_it;
			_tmp7_ = gee_iterator_next (_tmp6_);
			if (!_tmp7_) {
				break;
			}
			_tmp8_ = _afd_it;
			_tmp9_ = gee_iterator_get (_tmp8_);
			afd = (FolksAbstractFieldDetails*) _tmp9_;
			_tmp10_ = afd;
			_tmp11_ = folks_abstract_field_details_get_parameters (_tmp10_);
			_tmp12_ = _tmp11_;
			_tmp13_ = gee_multi_map_get_size (_tmp12_);
			_tmp14_ = _tmp13_;
			_tmp15_ = g_new0 (GVariant*, _tmp14_ + 1);
			parameters = _tmp15_;
			parameters_length1 = _tmp14_;
			_parameters_size_ = parameters_length1;
			f = (guint) 0;
			_tmp16_ = afd;
			_tmp17_ = folks_abstract_field_details_get_parameters (_tmp16_);
			_tmp18_ = _tmp17_;
			_tmp19_ = gee_multi_map_map_iterator (_tmp18_);
			iter = _tmp19_;
			while (TRUE) {
				GeeMapIterator* _tmp20_ = NULL;
				gboolean _tmp21_ = FALSE;
				GVariant** _tmp22_ = NULL;
				gint _tmp22__length1 = 0;
				guint _tmp23_ = 0U;
				GeeMapIterator* _tmp24_ = NULL;
				gpointer _tmp25_ = NULL;
				gchar* _tmp26_ = NULL;
				GVariant* _tmp27_ = NULL;
				GeeMapIterator* _tmp28_ = NULL;
				gpointer _tmp29_ = NULL;
				gchar* _tmp30_ = NULL;
				GVariant* _tmp31_ = NULL;
				GVariant** _tmp32_ = NULL;
				GVariant** _tmp33_ = NULL;
				gint _tmp33__length1 = 0;
				GVariant* _tmp34_ = NULL;
				GVariant* _tmp35_ = NULL;
				_tmp20_ = iter;
				_tmp21_ = gee_map_iterator_next (_tmp20_);
				if (!_tmp21_) {
					break;
				}
				_tmp22_ = parameters;
				_tmp22__length1 = parameters_length1;
				_tmp23_ = f;
				f = _tmp23_ + 1;
				_tmp24_ = iter;
				_tmp25_ = gee_map_iterator_get_key (_tmp24_);
				_tmp26_ = (gchar*) _tmp25_;
				_tmp27_ = g_variant_new_string (_tmp26_);
				g_variant_ref_sink (_tmp27_);
				_tmp28_ = iter;
				_tmp29_ = gee_map_iterator_get_value (_tmp28_);
				_tmp30_ = (gchar*) _tmp29_;
				_tmp31_ = g_variant_new_string (_tmp30_);
				g_variant_ref_sink (_tmp31_);
				_tmp32_ = g_new0 (GVariant*, 2 + 1);
				_tmp32_[0] = _tmp27_;
				_tmp32_[1] = _tmp31_;
				_tmp33_ = _tmp32_;
				_tmp33__length1 = 2;
				_tmp34_ = g_variant_new_tuple (_tmp33_, 2);
				g_variant_ref_sink (_tmp34_);
				_g_variant_unref0 (_tmp22_[_tmp23_]);
				_tmp22_[_tmp23_] = _tmp34_;
				_tmp35_ = _tmp22_[_tmp23_];
				_tmp33_ = (_vala_array_free (_tmp33_, _tmp33__length1, (GDestroyNotify) g_variant_unref), NULL);
				_g_free0 (_tmp30_);
				_g_free0 (_tmp26_);
			}
			_tmp36_ = output_variants;
			_tmp36__length1 = output_variants_length1;
			_tmp37_ = i;
			i = _tmp37_ + 1;
			_tmp38_ = afd;
			_tmp39_ = folks_abstract_field_details_get_value (_tmp38_);
			_tmp40_ = _tmp39_;
			_tmp41_ = _variant_new1 ((const gchar*) _tmp40_);
			_tmp42_ = G_VARIANT_TYPE_STRING;
			_tmp43_ = _g_variant_type_copy0 (_tmp42_);
			_tmp44_ = G_VARIANT_TYPE_STRING;
			_tmp45_ = _g_variant_type_copy0 (_tmp44_);
			_tmp46_ = g_new0 (GVariantType*, 2 + 1);
			_tmp46_[0] = _tmp43_;
			_tmp46_[1] = _tmp45_;
			_tmp47_ = _tmp46_;
			_tmp47__length1 = 2;
			_tmp48_ = g_variant_type_new_tuple (_tmp47_, 2);
			_tmp49_ = _tmp48_;
			_tmp50_ = parameters;
			_tmp50__length1 = parameters_length1;
			_tmp51_ = g_variant_new_array (_tmp49_, _tmp50_, _tmp50__length1);
			g_variant_ref_sink (_tmp51_);
			_tmp52_ = g_new0 (GVariant*, 2 + 1);
			_tmp52_[0] = _tmp41_;
			_tmp52_[1] = _tmp51_;
			_tmp53_ = _tmp52_;
			_tmp53__length1 = 2;
			_tmp54_ = g_variant_new_tuple (_tmp53_, 2);
			g_variant_ref_sink (_tmp54_);
			_g_variant_unref0 (_tmp36_[_tmp37_]);
			_tmp36_[_tmp37_] = _tmp54_;
			_tmp55_ = _tmp36_[_tmp37_];
			_tmp53_ = (_vala_array_free (_tmp53_, _tmp53__length1, (GDestroyNotify) g_variant_unref), NULL);
			_g_variant_type_free0 (_tmp49_);
			_tmp47_ = (_vala_array_free (_tmp47_, _tmp47__length1, (GDestroyNotify) g_variant_type_free), NULL);
			_g_object_unref0 (iter);
			parameters = (_vala_array_free (parameters, parameters_length1, (GDestroyNotify) g_variant_unref), NULL);
			_g_object_unref0 (afd);
		}
		_g_object_unref0 (_afd_it);
	}
	_tmp56_ = output_variants;
	_tmp56__length1 = output_variants_length1;
	if (result_length1) {
		*result_length1 = _tmp56__length1;
	}
	result = _tmp56_;
	return result;
}


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


static gpointer _g_variant_ref0 (gpointer self) {
	return self ? g_variant_ref (self) : NULL;
}


static GVariant* tpf_persona_store_cache_real_serialise_object (FolksObjectCache* base, TpfPersona* persona) {
	TpfPersonaStoreCache * self;
	GVariant* result = NULL;
	GVariant** groups = NULL;
	TpfPersona* _tmp0_ = NULL;
	GeeSet* _tmp1_ = NULL;
	GeeSet* _tmp2_ = NULL;
	gint _tmp3_ = 0;
	gint _tmp4_ = 0;
	GVariant** _tmp5_ = NULL;
	gint groups_length1 = 0;
	gint _groups_size_ = 0;
	guint i = 0U;
	gchar* im_protocol = NULL;
	GeeMapIterator* iter = NULL;
	TpfPersona* _tmp19_ = NULL;
	GeeMultiMap* _tmp20_ = NULL;
	GeeMultiMap* _tmp21_ = NULL;
	GeeMapIterator* _tmp22_ = NULL;
	GeeMapIterator* _tmp23_ = NULL;
	gboolean _tmp24_ = FALSE;
	GFile* _tmp27_ = NULL;
	gboolean _tmp28_ = FALSE;
	TpfPersona* _tmp29_ = NULL;
	GLoadableIcon* _tmp30_ = NULL;
	GLoadableIcon* _tmp31_ = NULL;
	GFile* avatar_file = NULL;
	GFile* _tmp39_ = NULL;
	GVariant* _tmp40_ = NULL;
	GFile* _tmp41_ = NULL;
	GVariant* avatar_variant = NULL;
	GVariant* _tmp46_ = NULL;
	GVariant* _tmp47_ = NULL;
	TpfPersona* _tmp48_ = NULL;
	GDateTime* _tmp49_ = NULL;
	GDateTime* _tmp50_ = NULL;
	GVariant* birthday_variant = NULL;
	GVariant* _tmp56_ = NULL;
	GVariant** email_addresses = NULL;
	TpfPersona* _tmp57_ = NULL;
	GeeSet* _tmp58_ = NULL;
	GeeSet* _tmp59_ = NULL;
	gint _tmp60_ = 0;
	GVariant** _tmp61_ = NULL;
	gint email_addresses_length1 = 0;
	gint _email_addresses_size_ = 0;
	GVariant** phone_numbers = NULL;
	TpfPersona* _tmp62_ = NULL;
	GeeSet* _tmp63_ = NULL;
	GeeSet* _tmp64_ = NULL;
	gint _tmp65_ = 0;
	GVariant** _tmp66_ = NULL;
	gint phone_numbers_length1 = 0;
	gint _phone_numbers_size_ = 0;
	GVariant** urls = NULL;
	TpfPersona* _tmp67_ = NULL;
	GeeSet* _tmp68_ = NULL;
	GeeSet* _tmp69_ = NULL;
	gint _tmp70_ = 0;
	GVariant** _tmp71_ = NULL;
	gint urls_length1 = 0;
	gint _urls_size_ = 0;
	TpfPersona* _tmp72_ = NULL;
	const gchar* _tmp73_ = NULL;
	const gchar* _tmp74_ = NULL;
	GVariant* _tmp75_ = NULL;
	TpfPersona* _tmp76_ = NULL;
	const gchar* _tmp77_ = NULL;
	const gchar* _tmp78_ = NULL;
	GVariant* _tmp79_ = NULL;
	TpfPersona* _tmp80_ = NULL;
	const gchar* _tmp81_ = NULL;
	const gchar* _tmp82_ = NULL;
	GVariant* _tmp83_ = NULL;
	const gchar* _tmp84_ = NULL;
	GVariant* _tmp85_ = NULL;
	const GVariantType* _tmp86_ = NULL;
	GVariant** _tmp87_ = NULL;
	gint _tmp87__length1 = 0;
	GVariant* _tmp88_ = NULL;
	TpfPersona* _tmp89_ = NULL;
	gboolean _tmp90_ = FALSE;
	gboolean _tmp91_ = FALSE;
	GVariant* _tmp92_ = NULL;
	TpfPersona* _tmp93_ = NULL;
	const gchar* _tmp94_ = NULL;
	const gchar* _tmp95_ = NULL;
	GVariant* _tmp96_ = NULL;
	TpfPersona* _tmp97_ = NULL;
	gboolean _tmp98_ = FALSE;
	gboolean _tmp99_ = FALSE;
	GVariant* _tmp100_ = NULL;
	TpfPersona* _tmp101_ = NULL;
	gboolean _tmp102_ = FALSE;
	gboolean _tmp103_ = FALSE;
	GVariant* _tmp104_ = NULL;
	const GVariantType* _tmp105_ = NULL;
	GVariant* _tmp106_ = NULL;
	GVariant* _tmp107_ = NULL;
	const GVariantType* _tmp108_ = NULL;
	GVariant* _tmp109_ = NULL;
	TpfPersona* _tmp110_ = NULL;
	const gchar* _tmp111_ = NULL;
	const gchar* _tmp112_ = NULL;
	GVariant* _tmp113_ = NULL;
	const GVariantType* _tmp114_ = NULL;
	GVariantType* _tmp115_ = NULL;
	const GVariantType* _tmp116_ = NULL;
	GVariantType* _tmp117_ = NULL;
	const GVariantType* _tmp118_ = NULL;
	GVariantType* _tmp119_ = NULL;
	GVariantType** _tmp120_ = NULL;
	GVariantType** _tmp121_ = NULL;
	gint _tmp121__length1 = 0;
	GVariantType* _tmp122_ = NULL;
	GVariantType* _tmp123_ = NULL;
	GVariantType* _tmp124_ = NULL;
	GVariantType** _tmp125_ = NULL;
	GVariantType** _tmp126_ = NULL;
	gint _tmp126__length1 = 0;
	GVariantType* _tmp127_ = NULL;
	GVariantType* _tmp128_ = NULL;
	GVariant* _tmp129_ = NULL;
	const GVariantType* _tmp130_ = NULL;
	GVariantType* _tmp131_ = NULL;
	const GVariantType* _tmp132_ = NULL;
	GVariantType* _tmp133_ = NULL;
	const GVariantType* _tmp134_ = NULL;
	GVariantType* _tmp135_ = NULL;
	GVariantType** _tmp136_ = NULL;
	GVariantType** _tmp137_ = NULL;
	gint _tmp137__length1 = 0;
	GVariantType* _tmp138_ = NULL;
	GVariantType* _tmp139_ = NULL;
	GVariantType* _tmp140_ = NULL;
	GVariantType** _tmp141_ = NULL;
	GVariantType** _tmp142_ = NULL;
	gint _tmp142__length1 = 0;
	GVariantType* _tmp143_ = NULL;
	GVariantType* _tmp144_ = NULL;
	GVariant* _tmp145_ = NULL;
	const GVariantType* _tmp146_ = NULL;
	GVariantType* _tmp147_ = NULL;
	const GVariantType* _tmp148_ = NULL;
	GVariantType* _tmp149_ = NULL;
	const GVariantType* _tmp150_ = NULL;
	GVariantType* _tmp151_ = NULL;
	GVariantType** _tmp152_ = NULL;
	GVariantType** _tmp153_ = NULL;
	gint _tmp153__length1 = 0;
	GVariantType* _tmp154_ = NULL;
	GVariantType* _tmp155_ = NULL;
	GVariantType* _tmp156_ = NULL;
	GVariantType** _tmp157_ = NULL;
	GVariantType** _tmp158_ = NULL;
	gint _tmp158__length1 = 0;
	GVariantType* _tmp159_ = NULL;
	GVariantType* _tmp160_ = NULL;
	GVariant* _tmp161_ = NULL;
	GVariant** _tmp162_ = NULL;
	GVariant** _tmp163_ = NULL;
	gint _tmp163__length1 = 0;
	GVariant* _tmp164_ = NULL;
	GVariant* _tmp165_ = NULL;
	self = (TpfPersonaStoreCache*) base;
	g_return_val_if_fail (persona != NULL, NULL);
	_tmp0_ = persona;
	_tmp1_ = folks_group_details_get_groups ((FolksGroupDetails*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = gee_collection_get_size ((GeeCollection*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = g_new0 (GVariant*, _tmp4_ + 1);
	groups = _tmp5_;
	groups_length1 = _tmp4_;
	_groups_size_ = groups_length1;
	i = (guint) 0;
	{
		GeeIterator* _group_it = NULL;
		TpfPersona* _tmp6_ = NULL;
		GeeSet* _tmp7_ = NULL;
		GeeSet* _tmp8_ = NULL;
		GeeIterator* _tmp9_ = NULL;
		_tmp6_ = persona;
		_tmp7_ = folks_group_details_get_groups ((FolksGroupDetails*) _tmp6_);
		_tmp8_ = _tmp7_;
		_tmp9_ = gee_iterable_iterator ((GeeIterable*) _tmp8_);
		_group_it = _tmp9_;
		while (TRUE) {
			GeeIterator* _tmp10_ = NULL;
			gboolean _tmp11_ = FALSE;
			gchar* group = NULL;
			GeeIterator* _tmp12_ = NULL;
			gpointer _tmp13_ = NULL;
			GVariant** _tmp14_ = NULL;
			gint _tmp14__length1 = 0;
			guint _tmp15_ = 0U;
			const gchar* _tmp16_ = NULL;
			GVariant* _tmp17_ = NULL;
			GVariant* _tmp18_ = NULL;
			_tmp10_ = _group_it;
			_tmp11_ = gee_iterator_next (_tmp10_);
			if (!_tmp11_) {
				break;
			}
			_tmp12_ = _group_it;
			_tmp13_ = gee_iterator_get (_tmp12_);
			group = (gchar*) _tmp13_;
			_tmp14_ = groups;
			_tmp14__length1 = groups_length1;
			_tmp15_ = i;
			i = _tmp15_ + 1;
			_tmp16_ = group;
			_tmp17_ = g_variant_new_string (_tmp16_);
			g_variant_ref_sink (_tmp17_);
			_g_variant_unref0 (_tmp14_[_tmp15_]);
			_tmp14_[_tmp15_] = _tmp17_;
			_tmp18_ = _tmp14_[_tmp15_];
			_g_free0 (group);
		}
		_g_object_unref0 (_group_it);
	}
	im_protocol = NULL;
	_tmp19_ = persona;
	_tmp20_ = folks_im_details_get_im_addresses ((FolksImDetails*) _tmp19_);
	_tmp21_ = _tmp20_;
	_tmp22_ = gee_multi_map_map_iterator (_tmp21_);
	iter = _tmp22_;
	_tmp23_ = iter;
	_tmp24_ = gee_map_iterator_next (_tmp23_);
	if (_tmp24_) {
		GeeMapIterator* _tmp25_ = NULL;
		gpointer _tmp26_ = NULL;
		_tmp25_ = iter;
		_tmp26_ = gee_map_iterator_get_key (_tmp25_);
		_g_free0 (im_protocol);
		im_protocol = (gchar*) _tmp26_;
	}
	_tmp29_ = persona;
	_tmp30_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) _tmp29_);
	_tmp31_ = _tmp30_;
	if (_tmp31_ != NULL) {
		TpfPersona* _tmp32_ = NULL;
		GLoadableIcon* _tmp33_ = NULL;
		GLoadableIcon* _tmp34_ = NULL;
		_tmp32_ = persona;
		_tmp33_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) _tmp32_);
		_tmp34_ = _tmp33_;
		_tmp28_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, g_file_icon_get_type ());
	} else {
		_tmp28_ = FALSE;
	}
	if (_tmp28_) {
		TpfPersona* _tmp35_ = NULL;
		GLoadableIcon* _tmp36_ = NULL;
		GLoadableIcon* _tmp37_ = NULL;
		GFile* _tmp38_ = NULL;
		_tmp35_ = persona;
		_tmp36_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) _tmp35_);
		_tmp37_ = _tmp36_;
		_tmp38_ = g_file_icon_get_file (G_TYPE_CHECK_INSTANCE_TYPE (_tmp37_, g_file_icon_get_type ()) ? ((GFileIcon*) _tmp37_) : NULL);
		_tmp27_ = _tmp38_;
	} else {
		_tmp27_ = NULL;
	}
	_tmp39_ = _g_object_ref0 (_tmp27_);
	avatar_file = _tmp39_;
	_tmp41_ = avatar_file;
	if (_tmp41_ != NULL) {
		GFile* _tmp42_ = NULL;
		gchar* _tmp43_ = NULL;
		gchar* _tmp44_ = NULL;
		GVariant* _tmp45_ = NULL;
		_tmp42_ = avatar_file;
		_tmp43_ = g_file_get_uri (_tmp42_);
		_tmp44_ = _tmp43_;
		_tmp45_ = g_variant_new_string (_tmp44_);
		g_variant_ref_sink (_tmp45_);
		_g_variant_unref0 (_tmp40_);
		_tmp40_ = _tmp45_;
		_g_free0 (_tmp44_);
	} else {
		_g_variant_unref0 (_tmp40_);
		_tmp40_ = NULL;
	}
	_tmp46_ = _g_variant_ref0 (_tmp40_);
	avatar_variant = _tmp46_;
	_tmp48_ = persona;
	_tmp49_ = folks_birthday_details_get_birthday ((FolksBirthdayDetails*) _tmp48_);
	_tmp50_ = _tmp49_;
	if (_tmp50_ != NULL) {
		TpfPersona* _tmp51_ = NULL;
		GDateTime* _tmp52_ = NULL;
		GDateTime* _tmp53_ = NULL;
		gint64 _tmp54_ = 0LL;
		GVariant* _tmp55_ = NULL;
		_tmp51_ = persona;
		_tmp52_ = folks_birthday_details_get_birthday ((FolksBirthdayDetails*) _tmp51_);
		_tmp53_ = _tmp52_;
		_tmp54_ = g_date_time_to_unix (_tmp53_);
		_tmp55_ = g_variant_new_int64 (_tmp54_);
		g_variant_ref_sink (_tmp55_);
		_g_variant_unref0 (_tmp47_);
		_tmp47_ = _tmp55_;
	} else {
		_g_variant_unref0 (_tmp47_);
		_tmp47_ = NULL;
	}
	_tmp56_ = _g_variant_ref0 (_tmp47_);
	birthday_variant = _tmp56_;
	_tmp57_ = persona;
	_tmp58_ = folks_email_details_get_email_addresses ((FolksEmailDetails*) _tmp57_);
	_tmp59_ = _tmp58_;
	_tmp61_ = tpf_persona_store_cache_serialise_abstract_field_details (self, _tmp59_, &_tmp60_);
	email_addresses = _tmp61_;
	email_addresses_length1 = _tmp60_;
	_email_addresses_size_ = email_addresses_length1;
	_tmp62_ = persona;
	_tmp63_ = folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) _tmp62_);
	_tmp64_ = _tmp63_;
	_tmp66_ = tpf_persona_store_cache_serialise_abstract_field_details (self, _tmp64_, &_tmp65_);
	phone_numbers = _tmp66_;
	phone_numbers_length1 = _tmp65_;
	_phone_numbers_size_ = phone_numbers_length1;
	_tmp67_ = persona;
	_tmp68_ = folks_url_details_get_urls ((FolksUrlDetails*) _tmp67_);
	_tmp69_ = _tmp68_;
	_tmp71_ = tpf_persona_store_cache_serialise_abstract_field_details (self, _tmp69_, &_tmp70_);
	urls = _tmp71_;
	urls_length1 = _tmp70_;
	_urls_size_ = urls_length1;
	_tmp72_ = persona;
	_tmp73_ = folks_persona_get_uid ((FolksPersona*) _tmp72_);
	_tmp74_ = _tmp73_;
	_tmp75_ = g_variant_new_string (_tmp74_);
	g_variant_ref_sink (_tmp75_);
	_tmp76_ = persona;
	_tmp77_ = folks_persona_get_iid ((FolksPersona*) _tmp76_);
	_tmp78_ = _tmp77_;
	_tmp79_ = g_variant_new_string (_tmp78_);
	g_variant_ref_sink (_tmp79_);
	_tmp80_ = persona;
	_tmp81_ = folks_persona_get_display_id ((FolksPersona*) _tmp80_);
	_tmp82_ = _tmp81_;
	_tmp83_ = g_variant_new_string (_tmp82_);
	g_variant_ref_sink (_tmp83_);
	_tmp84_ = im_protocol;
	_tmp85_ = g_variant_new_string (_tmp84_);
	g_variant_ref_sink (_tmp85_);
	_tmp86_ = G_VARIANT_TYPE_STRING;
	_tmp87_ = groups;
	_tmp87__length1 = groups_length1;
	_tmp88_ = g_variant_new_array (_tmp86_, _tmp87_, _tmp87__length1);
	g_variant_ref_sink (_tmp88_);
	_tmp89_ = persona;
	_tmp90_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp89_);
	_tmp91_ = _tmp90_;
	_tmp92_ = g_variant_new_boolean (_tmp91_);
	g_variant_ref_sink (_tmp92_);
	_tmp93_ = persona;
	_tmp94_ = folks_alias_details_get_alias ((FolksAliasDetails*) _tmp93_);
	_tmp95_ = _tmp94_;
	_tmp96_ = g_variant_new_string (_tmp95_);
	g_variant_ref_sink (_tmp96_);
	_tmp97_ = persona;
	_tmp98_ = tpf_persona_get_is_in_contact_list (_tmp97_);
	_tmp99_ = _tmp98_;
	_tmp100_ = g_variant_new_boolean (_tmp99_);
	g_variant_ref_sink (_tmp100_);
	_tmp101_ = persona;
	_tmp102_ = folks_persona_get_is_user ((FolksPersona*) _tmp101_);
	_tmp103_ = _tmp102_;
	_tmp104_ = g_variant_new_boolean (_tmp103_);
	g_variant_ref_sink (_tmp104_);
	_tmp105_ = G_VARIANT_TYPE_STRING;
	_tmp106_ = avatar_variant;
	_tmp107_ = g_variant_new_maybe (_tmp105_, _tmp106_);
	g_variant_ref_sink (_tmp107_);
	_tmp108_ = G_VARIANT_TYPE_INT64;
	_tmp109_ = g_variant_new_maybe (_tmp108_, birthday_variant);
	g_variant_ref_sink (_tmp109_);
	_tmp110_ = persona;
	_tmp111_ = folks_name_details_get_full_name ((FolksNameDetails*) _tmp110_);
	_tmp112_ = _tmp111_;
	_tmp113_ = g_variant_new_string (_tmp112_);
	g_variant_ref_sink (_tmp113_);
	_tmp114_ = G_VARIANT_TYPE_STRING;
	_tmp115_ = _g_variant_type_copy0 (_tmp114_);
	_tmp116_ = G_VARIANT_TYPE_STRING;
	_tmp117_ = _g_variant_type_copy0 (_tmp116_);
	_tmp118_ = G_VARIANT_TYPE_STRING;
	_tmp119_ = _g_variant_type_copy0 (_tmp118_);
	_tmp120_ = g_new0 (GVariantType*, 2 + 1);
	_tmp120_[0] = _tmp117_;
	_tmp120_[1] = _tmp119_;
	_tmp121_ = _tmp120_;
	_tmp121__length1 = 2;
	_tmp122_ = g_variant_type_new_tuple (_tmp121_, 2);
	_tmp123_ = _tmp122_;
	_tmp124_ = g_variant_type_new_array (_tmp123_);
	_tmp125_ = g_new0 (GVariantType*, 2 + 1);
	_tmp125_[0] = _tmp115_;
	_tmp125_[1] = _tmp124_;
	_tmp126_ = _tmp125_;
	_tmp126__length1 = 2;
	_tmp127_ = g_variant_type_new_tuple (_tmp126_, 2);
	_tmp128_ = _tmp127_;
	_tmp129_ = g_variant_new_array (_tmp128_, email_addresses, email_addresses_length1);
	g_variant_ref_sink (_tmp129_);
	_tmp130_ = G_VARIANT_TYPE_STRING;
	_tmp131_ = _g_variant_type_copy0 (_tmp130_);
	_tmp132_ = G_VARIANT_TYPE_STRING;
	_tmp133_ = _g_variant_type_copy0 (_tmp132_);
	_tmp134_ = G_VARIANT_TYPE_STRING;
	_tmp135_ = _g_variant_type_copy0 (_tmp134_);
	_tmp136_ = g_new0 (GVariantType*, 2 + 1);
	_tmp136_[0] = _tmp133_;
	_tmp136_[1] = _tmp135_;
	_tmp137_ = _tmp136_;
	_tmp137__length1 = 2;
	_tmp138_ = g_variant_type_new_tuple (_tmp137_, 2);
	_tmp139_ = _tmp138_;
	_tmp140_ = g_variant_type_new_array (_tmp139_);
	_tmp141_ = g_new0 (GVariantType*, 2 + 1);
	_tmp141_[0] = _tmp131_;
	_tmp141_[1] = _tmp140_;
	_tmp142_ = _tmp141_;
	_tmp142__length1 = 2;
	_tmp143_ = g_variant_type_new_tuple (_tmp142_, 2);
	_tmp144_ = _tmp143_;
	_tmp145_ = g_variant_new_array (_tmp144_, phone_numbers, phone_numbers_length1);
	g_variant_ref_sink (_tmp145_);
	_tmp146_ = G_VARIANT_TYPE_STRING;
	_tmp147_ = _g_variant_type_copy0 (_tmp146_);
	_tmp148_ = G_VARIANT_TYPE_STRING;
	_tmp149_ = _g_variant_type_copy0 (_tmp148_);
	_tmp150_ = G_VARIANT_TYPE_STRING;
	_tmp151_ = _g_variant_type_copy0 (_tmp150_);
	_tmp152_ = g_new0 (GVariantType*, 2 + 1);
	_tmp152_[0] = _tmp149_;
	_tmp152_[1] = _tmp151_;
	_tmp153_ = _tmp152_;
	_tmp153__length1 = 2;
	_tmp154_ = g_variant_type_new_tuple (_tmp153_, 2);
	_tmp155_ = _tmp154_;
	_tmp156_ = g_variant_type_new_array (_tmp155_);
	_tmp157_ = g_new0 (GVariantType*, 2 + 1);
	_tmp157_[0] = _tmp147_;
	_tmp157_[1] = _tmp156_;
	_tmp158_ = _tmp157_;
	_tmp158__length1 = 2;
	_tmp159_ = g_variant_type_new_tuple (_tmp158_, 2);
	_tmp160_ = _tmp159_;
	_tmp161_ = g_variant_new_array (_tmp160_, urls, urls_length1);
	g_variant_ref_sink (_tmp161_);
	_tmp162_ = g_new0 (GVariant*, 15 + 1);
	_tmp162_[0] = _tmp75_;
	_tmp162_[1] = _tmp79_;
	_tmp162_[2] = _tmp83_;
	_tmp162_[3] = _tmp85_;
	_tmp162_[4] = _tmp88_;
	_tmp162_[5] = _tmp92_;
	_tmp162_[6] = _tmp96_;
	_tmp162_[7] = _tmp100_;
	_tmp162_[8] = _tmp104_;
	_tmp162_[9] = _tmp107_;
	_tmp162_[10] = _tmp109_;
	_tmp162_[11] = _tmp113_;
	_tmp162_[12] = _tmp129_;
	_tmp162_[13] = _tmp145_;
	_tmp162_[14] = _tmp161_;
	_tmp163_ = _tmp162_;
	_tmp163__length1 = 15;
	_tmp164_ = g_variant_new_tuple (_tmp163_, 15);
	g_variant_ref_sink (_tmp164_);
	_tmp165_ = _tmp164_;
	_tmp163_ = (_vala_array_free (_tmp163_, _tmp163__length1, (GDestroyNotify) g_variant_unref), NULL);
	_g_variant_type_free0 (_tmp160_);
	_tmp158_ = (_vala_array_free (_tmp158_, _tmp158__length1, (GDestroyNotify) g_variant_type_free), NULL);
	_g_variant_type_free0 (_tmp155_);
	_tmp153_ = (_vala_array_free (_tmp153_, _tmp153__length1, (GDestroyNotify) g_variant_type_free), NULL);
	_g_variant_type_free0 (_tmp144_);
	_tmp142_ = (_vala_array_free (_tmp142_, _tmp142__length1, (GDestroyNotify) g_variant_type_free), NULL);
	_g_variant_type_free0 (_tmp139_);
	_tmp137_ = (_vala_array_free (_tmp137_, _tmp137__length1, (GDestroyNotify) g_variant_type_free), NULL);
	_g_variant_type_free0 (_tmp128_);
	_tmp126_ = (_vala_array_free (_tmp126_, _tmp126__length1, (GDestroyNotify) g_variant_type_free), NULL);
	_g_variant_type_free0 (_tmp123_);
	_tmp121_ = (_vala_array_free (_tmp121_, _tmp121__length1, (GDestroyNotify) g_variant_type_free), NULL);
	result = _tmp165_;
	urls = (_vala_array_free (urls, urls_length1, (GDestroyNotify) g_variant_unref), NULL);
	phone_numbers = (_vala_array_free (phone_numbers, phone_numbers_length1, (GDestroyNotify) g_variant_unref), NULL);
	email_addresses = (_vala_array_free (email_addresses, email_addresses_length1, (GDestroyNotify) g_variant_unref), NULL);
	_g_variant_unref0 (birthday_variant);
	_g_variant_unref0 (_tmp47_);
	_g_variant_unref0 (avatar_variant);
	_g_variant_unref0 (_tmp40_);
	_g_object_unref0 (avatar_file);
	_g_object_unref0 (iter);
	_g_free0 (im_protocol);
	groups = (_vala_array_free (groups, groups_length1, (GDestroyNotify) g_variant_unref), NULL);
	return result;
}


static void tpf_persona_store_cache_deserialise_abstract_field_details (TpfPersonaStoreCache* self, GVariant* input_variants, TpfPersonaStoreCacheAfdDeserialisationCallback cb, void* cb_target) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (input_variants != NULL);
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp0_ = FALSE;
			_tmp0_ = TRUE;
			while (TRUE) {
				guint _tmp2_ = 0U;
				GVariant* _tmp3_ = NULL;
				gsize _tmp4_ = 0UL;
				GVariant* input_variant = NULL;
				GVariant* _tmp5_ = NULL;
				guint _tmp6_ = 0U;
				GVariant* _tmp7_ = NULL;
				gchar* val = NULL;
				GVariant* _tmp8_ = NULL;
				GVariant* _tmp9_ = NULL;
				GVariant* _tmp10_ = NULL;
				const gchar* _tmp11_ = NULL;
				gchar* _tmp12_ = NULL;
				gchar* _tmp13_ = NULL;
				GeeHashMultiMap* parameters = NULL;
				GeeHashMultiMap* _tmp14_ = NULL;
				GVariant* params_variants = NULL;
				GVariant* _tmp15_ = NULL;
				GVariant* _tmp16_ = NULL;
				TpfPersonaStoreCacheAfdDeserialisationCallback _tmp34_ = NULL;
				void* _tmp34__target = NULL;
				const gchar* _tmp35_ = NULL;
				GeeHashMultiMap* _tmp36_ = NULL;
				if (!_tmp0_) {
					guint _tmp1_ = 0U;
					_tmp1_ = i;
					i = _tmp1_ + 1;
				}
				_tmp0_ = FALSE;
				_tmp2_ = i;
				_tmp3_ = input_variants;
				_tmp4_ = g_variant_n_children (_tmp3_);
				if (!(((gsize) _tmp2_) < _tmp4_)) {
					break;
				}
				_tmp5_ = input_variants;
				_tmp6_ = i;
				_tmp7_ = g_variant_get_child_value (_tmp5_, (gsize) _tmp6_);
				input_variant = _tmp7_;
				_tmp8_ = input_variant;
				_tmp9_ = g_variant_get_child_value (_tmp8_, (gsize) 0);
				_tmp10_ = _tmp9_;
				_tmp11_ = g_variant_get_string (_tmp10_, NULL);
				_tmp12_ = g_strdup (_tmp11_);
				_tmp13_ = _tmp12_;
				_g_variant_unref0 (_tmp10_);
				val = _tmp13_;
				_tmp14_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
				parameters = _tmp14_;
				_tmp15_ = input_variant;
				_tmp16_ = g_variant_get_child_value (_tmp15_, (gsize) 1);
				params_variants = _tmp16_;
				{
					guint f = 0U;
					f = (guint) 0;
					{
						gboolean _tmp17_ = FALSE;
						_tmp17_ = TRUE;
						while (TRUE) {
							guint _tmp19_ = 0U;
							GVariant* _tmp20_ = NULL;
							gsize _tmp21_ = 0UL;
							GVariant* params_variant = NULL;
							GVariant* _tmp22_ = NULL;
							guint _tmp23_ = 0U;
							GVariant* _tmp24_ = NULL;
							GeeHashMultiMap* _tmp25_ = NULL;
							GVariant* _tmp26_ = NULL;
							GVariant* _tmp27_ = NULL;
							GVariant* _tmp28_ = NULL;
							const gchar* _tmp29_ = NULL;
							GVariant* _tmp30_ = NULL;
							GVariant* _tmp31_ = NULL;
							GVariant* _tmp32_ = NULL;
							const gchar* _tmp33_ = NULL;
							if (!_tmp17_) {
								guint _tmp18_ = 0U;
								_tmp18_ = f;
								f = _tmp18_ + 1;
							}
							_tmp17_ = FALSE;
							_tmp19_ = f;
							_tmp20_ = params_variants;
							_tmp21_ = g_variant_n_children (_tmp20_);
							if (!(((gsize) _tmp19_) < _tmp21_)) {
								break;
							}
							_tmp22_ = params_variants;
							_tmp23_ = f;
							_tmp24_ = g_variant_get_child_value (_tmp22_, (gsize) _tmp23_);
							params_variant = _tmp24_;
							_tmp25_ = parameters;
							_tmp26_ = params_variant;
							_tmp27_ = g_variant_get_child_value (_tmp26_, (gsize) 0);
							_tmp28_ = _tmp27_;
							_tmp29_ = g_variant_get_string (_tmp28_, NULL);
							_tmp30_ = params_variant;
							_tmp31_ = g_variant_get_child_value (_tmp30_, (gsize) 1);
							_tmp32_ = _tmp31_;
							_tmp33_ = g_variant_get_string (_tmp32_, NULL);
							gee_multi_map_set ((GeeMultiMap*) _tmp25_, _tmp29_, _tmp33_);
							_g_variant_unref0 (_tmp32_);
							_g_variant_unref0 (_tmp28_);
							_g_variant_unref0 (params_variant);
						}
					}
				}
				_tmp34_ = cb;
				_tmp34__target = cb_target;
				_tmp35_ = val;
				_tmp36_ = parameters;
				_tmp34_ (_tmp35_, _tmp36_, _tmp34__target);
				_g_variant_unref0 (params_variants);
				_g_object_unref0 (parameters);
				_g_free0 (val);
				_g_variant_unref0 (input_variant);
			}
		}
	}
}


static Block2Data* block2_data_ref (Block2Data* _data2_) {
	g_atomic_int_inc (&_data2_->_ref_count_);
	return _data2_;
}


static void block2_data_unref (void * _userdata_) {
	Block2Data* _data2_;
	_data2_ = (Block2Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
		TpfPersonaStoreCache* self;
		self = _data2_->self;
		_g_object_unref0 (_data2_->url_set);
		_g_object_unref0 (_data2_->phone_number_set);
		_g_object_unref0 (_data2_->email_address_set);
		_g_object_unref0 (self);
		g_slice_free (Block2Data, _data2_);
	}
}


static guint _folks_abstract_field_details_hash_static_gee_hash_data_func (gconstpointer v, gpointer self) {
	guint result;
	result = folks_abstract_field_details_hash_static ((FolksAbstractFieldDetails*) v);
	return result;
}


static gboolean _folks_abstract_field_details_equal_static_gee_equal_data_func (gconstpointer a, gconstpointer b, gpointer self) {
	gboolean result;
	result = folks_abstract_field_details_equal_static ((FolksAbstractFieldDetails*) a, (FolksAbstractFieldDetails*) b);
	return result;
}


static void ___lambda5_ (Block2Data* _data2_, const gchar* v, GeeHashMultiMap* p) {
	TpfPersonaStoreCache* self;
	const gchar* _tmp0_ = NULL;
	self = _data2_->self;
	g_return_if_fail (v != NULL);
	g_return_if_fail (p != NULL);
	_tmp0_ = v;
	if (g_strcmp0 (_tmp0_, "") != 0) {
		FolksSmallSet* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		GeeHashMultiMap* _tmp3_ = NULL;
		FolksEmailFieldDetails* _tmp4_ = NULL;
		FolksEmailFieldDetails* _tmp5_ = NULL;
		_tmp1_ = _data2_->email_address_set;
		_tmp2_ = v;
		_tmp3_ = p;
		_tmp4_ = folks_email_field_details_new (_tmp2_, (GeeMultiMap*) _tmp3_);
		_tmp5_ = _tmp4_;
		gee_abstract_collection_add ((GeeAbstractCollection*) _tmp1_, _tmp5_);
		_g_object_unref0 (_tmp5_);
	}
}


static void ____lambda5__tpf_persona_store_cache_afd_deserialisation_callback (const gchar* val, GeeHashMultiMap* parameters, gpointer self) {
	___lambda5_ (self, val, parameters);
}


static void ___lambda6_ (Block2Data* _data2_, const gchar* v, GeeHashMultiMap* p) {
	TpfPersonaStoreCache* self;
	const gchar* _tmp0_ = NULL;
	self = _data2_->self;
	g_return_if_fail (v != NULL);
	g_return_if_fail (p != NULL);
	_tmp0_ = v;
	if (g_strcmp0 (_tmp0_, "") != 0) {
		FolksSmallSet* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		GeeHashMultiMap* _tmp3_ = NULL;
		FolksPhoneFieldDetails* _tmp4_ = NULL;
		FolksPhoneFieldDetails* _tmp5_ = NULL;
		_tmp1_ = _data2_->phone_number_set;
		_tmp2_ = v;
		_tmp3_ = p;
		_tmp4_ = folks_phone_field_details_new (_tmp2_, (GeeMultiMap*) _tmp3_);
		_tmp5_ = _tmp4_;
		gee_abstract_collection_add ((GeeAbstractCollection*) _tmp1_, _tmp5_);
		_g_object_unref0 (_tmp5_);
	}
}


static void ____lambda6__tpf_persona_store_cache_afd_deserialisation_callback (const gchar* val, GeeHashMultiMap* parameters, gpointer self) {
	___lambda6_ (self, val, parameters);
}


static void ___lambda7_ (Block2Data* _data2_, const gchar* v, GeeHashMultiMap* p) {
	TpfPersonaStoreCache* self;
	const gchar* _tmp0_ = NULL;
	self = _data2_->self;
	g_return_if_fail (v != NULL);
	g_return_if_fail (p != NULL);
	_tmp0_ = v;
	if (g_strcmp0 (_tmp0_, "") != 0) {
		FolksSmallSet* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		GeeHashMultiMap* _tmp3_ = NULL;
		FolksUrlFieldDetails* _tmp4_ = NULL;
		FolksUrlFieldDetails* _tmp5_ = NULL;
		_tmp1_ = _data2_->url_set;
		_tmp2_ = v;
		_tmp3_ = p;
		_tmp4_ = folks_url_field_details_new (_tmp2_, (GeeMultiMap*) _tmp3_);
		_tmp5_ = _tmp4_;
		gee_abstract_collection_add ((GeeAbstractCollection*) _tmp1_, _tmp5_);
		_g_object_unref0 (_tmp5_);
	}
}


static void ____lambda7__tpf_persona_store_cache_afd_deserialisation_callback (const gchar* val, GeeHashMultiMap* parameters, gpointer self) {
	___lambda7_ (self, val, parameters);
}


static TpfPersona* tpf_persona_store_cache_real_deserialise_object (FolksObjectCache* base, GVariant* variant, guint8 object_version) {
	TpfPersonaStoreCache * self;
	TpfPersona* result = NULL;
	Block2Data* _data2_;
	gchar* uid = NULL;
	GVariant* _tmp0_ = NULL;
	GVariant* _tmp1_ = NULL;
	GVariant* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* iid = NULL;
	GVariant* _tmp6_ = NULL;
	GVariant* _tmp7_ = NULL;
	GVariant* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* display_id = NULL;
	GVariant* _tmp12_ = NULL;
	GVariant* _tmp13_ = NULL;
	GVariant* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* im_protocol = NULL;
	GVariant* _tmp18_ = NULL;
	GVariant* _tmp19_ = NULL;
	GVariant* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	gchar* _tmp23_ = NULL;
	GVariant* groups = NULL;
	GVariant* _tmp24_ = NULL;
	GVariant* _tmp25_ = NULL;
	gboolean is_favourite = FALSE;
	GVariant* _tmp26_ = NULL;
	GVariant* _tmp27_ = NULL;
	GVariant* _tmp28_ = NULL;
	gboolean _tmp29_ = FALSE;
	gboolean _tmp30_ = FALSE;
	gchar* alias = NULL;
	GVariant* _tmp31_ = NULL;
	GVariant* _tmp32_ = NULL;
	GVariant* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	gchar* _tmp36_ = NULL;
	gboolean is_in_contact_list = FALSE;
	GVariant* _tmp37_ = NULL;
	GVariant* _tmp38_ = NULL;
	GVariant* _tmp39_ = NULL;
	gboolean _tmp40_ = FALSE;
	gboolean _tmp41_ = FALSE;
	gboolean is_user = FALSE;
	GVariant* _tmp42_ = NULL;
	GVariant* _tmp43_ = NULL;
	GVariant* _tmp44_ = NULL;
	gboolean _tmp45_ = FALSE;
	gboolean _tmp46_ = FALSE;
	GVariant* avatar_variant = NULL;
	GVariant* _tmp47_ = NULL;
	GVariant* _tmp48_ = NULL;
	GVariant* _tmp49_ = NULL;
	GVariant* _tmp50_ = NULL;
	GVariant* _tmp51_ = NULL;
	FolksSmallSet* group_set = NULL;
	FolksSmallSet* _tmp52_ = NULL;
	GFileIcon* _tmp64_ = NULL;
	GVariant* _tmp65_ = NULL;
	GFileIcon* avatar = NULL;
	GFileIcon* _tmp71_ = NULL;
	GDateTime* birthday = NULL;
	guint8 _tmp72_ = 0U;
	gchar* full_name = NULL;
	gchar* _tmp82_ = NULL;
	guint8 _tmp83_ = 0U;
	FolksSmallSet* _tmp89_ = NULL;
	FolksSmallSet* _tmp90_ = NULL;
	FolksSmallSet* _tmp91_ = NULL;
	guint8 _tmp92_ = 0U;
	TpfPersonaStore* _tmp102_ = NULL;
	const gchar* _tmp103_ = NULL;
	const gchar* _tmp104_ = NULL;
	const gchar* _tmp105_ = NULL;
	const gchar* _tmp106_ = NULL;
	FolksSmallSet* _tmp107_ = NULL;
	gboolean _tmp108_ = FALSE;
	const gchar* _tmp109_ = NULL;
	gboolean _tmp110_ = FALSE;
	gboolean _tmp111_ = FALSE;
	GFileIcon* _tmp112_ = NULL;
	GDateTime* _tmp113_ = NULL;
	const gchar* _tmp114_ = NULL;
	FolksSmallSet* _tmp115_ = NULL;
	FolksSmallSet* _tmp116_ = NULL;
	FolksSmallSet* _tmp117_ = NULL;
	TpfPersona* _tmp118_ = NULL;
	self = (TpfPersonaStoreCache*) base;
	g_return_val_if_fail (variant != NULL, NULL);
	_data2_ = g_slice_new0 (Block2Data);
	_data2_->_ref_count_ = 1;
	_data2_->self = g_object_ref (self);
	_tmp0_ = variant;
	_tmp1_ = g_variant_get_child_value (_tmp0_, (gsize) 0);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_variant_get_string (_tmp2_, NULL);
	_tmp4_ = g_strdup (_tmp3_);
	_tmp5_ = _tmp4_;
	_g_variant_unref0 (_tmp2_);
	uid = _tmp5_;
	_tmp6_ = variant;
	_tmp7_ = g_variant_get_child_value (_tmp6_, (gsize) 1);
	_tmp8_ = _tmp7_;
	_tmp9_ = g_variant_get_string (_tmp8_, NULL);
	_tmp10_ = g_strdup (_tmp9_);
	_tmp11_ = _tmp10_;
	_g_variant_unref0 (_tmp8_);
	iid = _tmp11_;
	_tmp12_ = variant;
	_tmp13_ = g_variant_get_child_value (_tmp12_, (gsize) 2);
	_tmp14_ = _tmp13_;
	_tmp15_ = g_variant_get_string (_tmp14_, NULL);
	_tmp16_ = g_strdup (_tmp15_);
	_tmp17_ = _tmp16_;
	_g_variant_unref0 (_tmp14_);
	display_id = _tmp17_;
	_tmp18_ = variant;
	_tmp19_ = g_variant_get_child_value (_tmp18_, (gsize) 3);
	_tmp20_ = _tmp19_;
	_tmp21_ = g_variant_get_string (_tmp20_, NULL);
	_tmp22_ = g_strdup (_tmp21_);
	_tmp23_ = _tmp22_;
	_g_variant_unref0 (_tmp20_);
	im_protocol = _tmp23_;
	_tmp24_ = variant;
	_tmp25_ = g_variant_get_child_value (_tmp24_, (gsize) 4);
	groups = _tmp25_;
	_tmp26_ = variant;
	_tmp27_ = g_variant_get_child_value (_tmp26_, (gsize) 5);
	_tmp28_ = _tmp27_;
	_tmp29_ = g_variant_get_boolean (_tmp28_);
	_tmp30_ = _tmp29_;
	_g_variant_unref0 (_tmp28_);
	is_favourite = _tmp30_;
	_tmp31_ = variant;
	_tmp32_ = g_variant_get_child_value (_tmp31_, (gsize) 6);
	_tmp33_ = _tmp32_;
	_tmp34_ = g_variant_get_string (_tmp33_, NULL);
	_tmp35_ = g_strdup (_tmp34_);
	_tmp36_ = _tmp35_;
	_g_variant_unref0 (_tmp33_);
	alias = _tmp36_;
	_tmp37_ = variant;
	_tmp38_ = g_variant_get_child_value (_tmp37_, (gsize) 7);
	_tmp39_ = _tmp38_;
	_tmp40_ = g_variant_get_boolean (_tmp39_);
	_tmp41_ = _tmp40_;
	_g_variant_unref0 (_tmp39_);
	is_in_contact_list = _tmp41_;
	_tmp42_ = variant;
	_tmp43_ = g_variant_get_child_value (_tmp42_, (gsize) 8);
	_tmp44_ = _tmp43_;
	_tmp45_ = g_variant_get_boolean (_tmp44_);
	_tmp46_ = _tmp45_;
	_g_variant_unref0 (_tmp44_);
	is_user = _tmp46_;
	_tmp47_ = variant;
	_tmp48_ = g_variant_get_child_value (_tmp47_, (gsize) 9);
	_tmp49_ = _tmp48_;
	_tmp50_ = g_variant_get_maybe (_tmp49_);
	_tmp51_ = _tmp50_;
	_g_variant_unref0 (_tmp49_);
	avatar_variant = _tmp51_;
	_tmp52_ = folks_small_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL, NULL, NULL, NULL);
	group_set = _tmp52_;
	{
		guint i = 0U;
		i = (guint) 0;
		{
			gboolean _tmp53_ = FALSE;
			_tmp53_ = TRUE;
			while (TRUE) {
				guint _tmp55_ = 0U;
				GVariant* _tmp56_ = NULL;
				gsize _tmp57_ = 0UL;
				FolksSmallSet* _tmp58_ = NULL;
				GVariant* _tmp59_ = NULL;
				guint _tmp60_ = 0U;
				GVariant* _tmp61_ = NULL;
				GVariant* _tmp62_ = NULL;
				const gchar* _tmp63_ = NULL;
				if (!_tmp53_) {
					guint _tmp54_ = 0U;
					_tmp54_ = i;
					i = _tmp54_ + 1;
				}
				_tmp53_ = FALSE;
				_tmp55_ = i;
				_tmp56_ = groups;
				_tmp57_ = g_variant_n_children (_tmp56_);
				if (!(((gsize) _tmp55_) < _tmp57_)) {
					break;
				}
				_tmp58_ = group_set;
				_tmp59_ = groups;
				_tmp60_ = i;
				_tmp61_ = g_variant_get_child_value (_tmp59_, (gsize) _tmp60_);
				_tmp62_ = _tmp61_;
				_tmp63_ = g_variant_get_string (_tmp62_, NULL);
				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp58_, _tmp63_);
				_g_variant_unref0 (_tmp62_);
			}
		}
	}
	_tmp65_ = avatar_variant;
	if (_tmp65_ != NULL) {
		GVariant* _tmp66_ = NULL;
		const gchar* _tmp67_ = NULL;
		GFile* _tmp68_ = NULL;
		GFile* _tmp69_ = NULL;
		GFileIcon* _tmp70_ = NULL;
		_tmp66_ = avatar_variant;
		_tmp67_ = g_variant_get_string (_tmp66_, NULL);
		_tmp68_ = g_file_new_for_uri (_tmp67_);
		_tmp69_ = _tmp68_;
		_tmp70_ = (GFileIcon*) g_file_icon_new (_tmp69_);
		_g_object_unref0 (_tmp64_);
		_tmp64_ = _tmp70_;
		_g_object_unref0 (_tmp69_);
	} else {
		_g_object_unref0 (_tmp64_);
		_tmp64_ = NULL;
	}
	_tmp71_ = _g_object_ref0 (_tmp64_);
	avatar = _tmp71_;
	birthday = NULL;
	_tmp72_ = object_version;
	if (((gint) _tmp72_) == 2) {
		GVariant* birthday_variant = NULL;
		GVariant* _tmp73_ = NULL;
		GVariant* _tmp74_ = NULL;
		GVariant* _tmp75_ = NULL;
		GVariant* _tmp76_ = NULL;
		GVariant* _tmp77_ = NULL;
		GVariant* _tmp78_ = NULL;
		_tmp73_ = variant;
		_tmp74_ = g_variant_get_child_value (_tmp73_, (gsize) 10);
		_tmp75_ = _tmp74_;
		_tmp76_ = g_variant_get_maybe (_tmp75_);
		_tmp77_ = _tmp76_;
		_g_variant_unref0 (_tmp75_);
		birthday_variant = _tmp77_;
		_tmp78_ = birthday_variant;
		if (_tmp78_ != NULL) {
			GVariant* _tmp79_ = NULL;
			gint64 _tmp80_ = 0LL;
			GDateTime* _tmp81_ = NULL;
			_tmp79_ = birthday_variant;
			_tmp80_ = g_variant_get_int64 (_tmp79_);
			_tmp81_ = g_date_time_new_from_unix_utc (_tmp80_);
			_g_date_time_unref0 (birthday);
			birthday = _tmp81_;
		}
		_g_variant_unref0 (birthday_variant);
	}
	_tmp82_ = g_strdup ("");
	full_name = _tmp82_;
	_tmp83_ = object_version;
	if (((gint) _tmp83_) == 2) {
		GVariant* _tmp84_ = NULL;
		GVariant* _tmp85_ = NULL;
		GVariant* _tmp86_ = NULL;
		const gchar* _tmp87_ = NULL;
		gchar* _tmp88_ = NULL;
		_tmp84_ = variant;
		_tmp85_ = g_variant_get_child_value (_tmp84_, (gsize) 11);
		_tmp86_ = _tmp85_;
		_tmp87_ = g_variant_get_string (_tmp86_, NULL);
		_tmp88_ = g_strdup (_tmp87_);
		_g_free0 (full_name);
		full_name = _tmp88_;
		_g_variant_unref0 (_tmp86_);
	}
	_tmp89_ = folks_small_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_data2_->email_address_set = _tmp89_;
	_tmp90_ = folks_small_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_data2_->phone_number_set = _tmp90_;
	_tmp91_ = folks_small_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_data2_->url_set = _tmp91_;
	_tmp92_ = object_version;
	if (((gint) _tmp92_) == 2) {
		GVariant* _tmp93_ = NULL;
		GVariant* _tmp94_ = NULL;
		GVariant* _tmp95_ = NULL;
		GVariant* _tmp96_ = NULL;
		GVariant* _tmp97_ = NULL;
		GVariant* _tmp98_ = NULL;
		GVariant* _tmp99_ = NULL;
		GVariant* _tmp100_ = NULL;
		GVariant* _tmp101_ = NULL;
		_tmp93_ = variant;
		_tmp94_ = g_variant_get_child_value (_tmp93_, (gsize) 12);
		_tmp95_ = _tmp94_;
		tpf_persona_store_cache_deserialise_abstract_field_details (self, _tmp95_, ____lambda5__tpf_persona_store_cache_afd_deserialisation_callback, _data2_);
		_g_variant_unref0 (_tmp95_);
		_tmp96_ = variant;
		_tmp97_ = g_variant_get_child_value (_tmp96_, (gsize) 13);
		_tmp98_ = _tmp97_;
		tpf_persona_store_cache_deserialise_abstract_field_details (self, _tmp98_, ____lambda6__tpf_persona_store_cache_afd_deserialisation_callback, _data2_);
		_g_variant_unref0 (_tmp98_);
		_tmp99_ = variant;
		_tmp100_ = g_variant_get_child_value (_tmp99_, (gsize) 14);
		_tmp101_ = _tmp100_;
		tpf_persona_store_cache_deserialise_abstract_field_details (self, _tmp101_, ____lambda7__tpf_persona_store_cache_afd_deserialisation_callback, _data2_);
		_g_variant_unref0 (_tmp101_);
	}
	_tmp102_ = self->priv->_store;
	_tmp103_ = uid;
	_tmp104_ = iid;
	_tmp105_ = display_id;
	_tmp106_ = im_protocol;
	_tmp107_ = group_set;
	_tmp108_ = is_favourite;
	_tmp109_ = alias;
	_tmp110_ = is_in_contact_list;
	_tmp111_ = is_user;
	_tmp112_ = avatar;
	_tmp113_ = birthday;
	_tmp114_ = full_name;
	_tmp115_ = _data2_->email_address_set;
	_tmp116_ = _data2_->phone_number_set;
	_tmp117_ = _data2_->url_set;
	_tmp118_ = tpf_persona_new_from_cache (_tmp102_, _tmp103_, _tmp104_, _tmp105_, _tmp106_, _tmp107_, _tmp108_, _tmp109_, _tmp110_, _tmp111_, (GLoadableIcon*) _tmp112_, _tmp113_, _tmp114_, _tmp115_, _tmp116_, _tmp117_);
	result = _tmp118_;
	_g_free0 (full_name);
	_g_date_time_unref0 (birthday);
	_g_object_unref0 (avatar);
	_g_object_unref0 (_tmp64_);
	_g_object_unref0 (group_set);
	_g_variant_unref0 (avatar_variant);
	_g_free0 (alias);
	_g_variant_unref0 (groups);
	_g_free0 (im_protocol);
	_g_free0 (display_id);
	_g_free0 (iid);
	_g_free0 (uid);
	block2_data_unref (_data2_);
	_data2_ = NULL;
	return result;
}


TpfPersonaStore* tpf_persona_store_cache_get_store (TpfPersonaStoreCache* self) {
	TpfPersonaStore* result;
	TpfPersonaStore* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_store;
	result = _tmp0_;
	return result;
}


static void tpf_persona_store_cache_set_store (TpfPersonaStoreCache* self, TpfPersonaStore* value) {
	TpfPersonaStore* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	self->priv->_store = _tmp0_;
	g_object_notify ((GObject *) self, "store");
}


static void tpf_persona_store_cache_class_init (TpfPersonaStoreCacheClass * klass) {
	tpf_persona_store_cache_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (TpfPersonaStoreCachePrivate));
	((FolksObjectCacheClass *) klass)->get_serialised_object_type = tpf_persona_store_cache_real_get_serialised_object_type;
	((FolksObjectCacheClass *) klass)->get_serialised_object_version = tpf_persona_store_cache_real_get_serialised_object_version;
	((FolksObjectCacheClass *) klass)->serialise_object = tpf_persona_store_cache_real_serialise_object;
	((FolksObjectCacheClass *) klass)->deserialise_object = tpf_persona_store_cache_real_deserialise_object;
	G_OBJECT_CLASS (klass)->get_property = _vala_tpf_persona_store_cache_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_tpf_persona_store_cache_set_property;
	G_OBJECT_CLASS (klass)->finalize = tpf_persona_store_cache_finalize;
	/**
	   * The {@link Tpf.PersonaStore} associated with this cache.
	   *
	   * @since 0.6.6
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), TPF_PERSONA_STORE_CACHE_STORE, g_param_spec_object ("store", "store", "store", TPF_TYPE_PERSONA_STORE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
}


static void tpf_persona_store_cache_instance_init (TpfPersonaStoreCache * self) {
	self->priv = TPF_PERSONA_STORE_CACHE_GET_PRIVATE (self);
}


static void tpf_persona_store_cache_finalize (GObject* obj) {
	TpfPersonaStoreCache * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCache);
	G_OBJECT_CLASS (tpf_persona_store_cache_parent_class)->finalize (obj);
}


/**
 * An object cache class which implements caching of sets of
 * {@link Tpf.Persona}s from a given {@link Tpf.PersonaStore}.
 *
 * Each {@link Tpf.Persona} is stored as a serialised {@link Variant} which is
 * a tuple containing the following fields:
 *  # UID (``s``)
 *  # IID (``s``)
 *  # IM address (``s``)
 *  # Protocol (``s``)
 *  # Set of group names (``as``)
 *  # Favourite? (``b``)
 *  # Alias (``s``)
 *  # In contact list? (``b``)
 *  # Avatar file URI (``s``)
 *  # Birthday date as a Unix timestamp (``s``)
 *  # Set of e-mail addresses and parameters (``a(sa(ss))``)
 *  # Full name (``s``)
 *
 * @since 0.6.0
 */
GType tpf_persona_store_cache_get_type (void) {
	static volatile gsize tpf_persona_store_cache_type_id__volatile = 0;
	if (g_once_init_enter (&tpf_persona_store_cache_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (TpfPersonaStoreCacheClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) tpf_persona_store_cache_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TpfPersonaStoreCache), 0, (GInstanceInitFunc) tpf_persona_store_cache_instance_init, NULL };
		GType tpf_persona_store_cache_type_id;
		tpf_persona_store_cache_type_id = g_type_register_static (FOLKS_TYPE_OBJECT_CACHE, "TpfPersonaStoreCache", &g_define_type_info, 0);
		g_once_init_leave (&tpf_persona_store_cache_type_id__volatile, tpf_persona_store_cache_type_id);
	}
	return tpf_persona_store_cache_type_id__volatile;
}


static void _vala_tpf_persona_store_cache_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	TpfPersonaStoreCache * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCache);
	switch (property_id) {
		case TPF_PERSONA_STORE_CACHE_STORE:
		g_value_set_object (value, tpf_persona_store_cache_get_store (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_tpf_persona_store_cache_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	TpfPersonaStoreCache * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TPF_TYPE_PERSONA_STORE_CACHE, TpfPersonaStoreCache);
	switch (property_id) {
		case TPF_PERSONA_STORE_CACHE_STORE:
		tpf_persona_store_cache_set_store (self, g_value_get_object (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);
}



