/* contacts-fake-persona-store.c generated by valac 0.56.0, the Vala compiler
 * generated from contacts-fake-persona-store.vala, do not modify */

/*
 * Copyright (C) 2011 Alexander Larsson <alexl@redhat.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "contacts.h"
#include <gee.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <folks/folks.h>
#include <gio/gio.h>

#define BACKEND_NAME "fake-store"

enum  {
	CONTACTS_FAKE_PERSONA_STORE_0_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY,
	CONTACTS_FAKE_PERSONA_STORE_NUM_PROPERTIES
};
static GParamSpec* contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef struct _ContactsFakePersonaStorePrepareData ContactsFakePersonaStorePrepareData;
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
typedef struct _ContactsFakePersonaStoreAddPersonaFromDetailsData ContactsFakePersonaStoreAddPersonaFromDetailsData;
typedef struct _ContactsFakePersonaStoreRemovePersonaData ContactsFakePersonaStoreRemovePersonaData;
enum  {
	CONTACTS_FAKE_PERSONA_0_PROPERTY,
	CONTACTS_FAKE_PERSONA_REAL_PERSONA_PROPERTY,
	CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY,
	CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY,
	CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY,
	CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY,
	CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY,
	CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY,
	CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY,
	CONTACTS_FAKE_PERSONA_URLS_PROPERTY,
	CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY,
	CONTACTS_FAKE_PERSONA_NOTES_PROPERTY,
	CONTACTS_FAKE_PERSONA_ROLES_PROPERTY,
	CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY,
	CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY,
	CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY,
	CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY,
	CONTACTS_FAKE_PERSONA_NUM_PROPERTIES
};
static GParamSpec* contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NUM_PROPERTIES];
typedef struct _ContactsFakePersonaChangeAvatarData ContactsFakePersonaChangeAvatarData;
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
typedef struct _ContactsFakePersonaApplyChangesToRealData ContactsFakePersonaApplyChangesToRealData;
typedef struct _ContactsFakePersonaSetPersonaPropertyData ContactsFakePersonaSetPersonaPropertyData;
enum  {
	CONTACTS_FAKE_INDIVIDUAL_0_PROPERTY,
	CONTACTS_FAKE_INDIVIDUAL_REAL_INDIVIDUAL_PROPERTY,
	CONTACTS_FAKE_INDIVIDUAL_PRIMARY_PERSONA_PROPERTY,
	CONTACTS_FAKE_INDIVIDUAL_NUM_PROPERTIES
};
static GParamSpec* contacts_fake_individual_properties[CONTACTS_FAKE_INDIVIDUAL_NUM_PROPERTIES];
typedef struct _ContactsFakeIndividualApplyChangesToRealData ContactsFakeIndividualApplyChangesToRealData;
enum  {
	CONTACTS_FAKE_HASH_SET_0_PROPERTY,
	CONTACTS_FAKE_HASH_SET_T_TYPE,
	CONTACTS_FAKE_HASH_SET_T_DUP_FUNC,
	CONTACTS_FAKE_HASH_SET_T_DESTROY_FUNC,
	CONTACTS_FAKE_HASH_SET_NUM_PROPERTIES
};
static GParamSpec* contacts_fake_hash_set_properties[CONTACTS_FAKE_HASH_SET_NUM_PROPERTIES];
enum  {
	CONTACTS_FAKE_HASH_SET_CHANGED_SIGNAL,
	CONTACTS_FAKE_HASH_SET_ADDED_SIGNAL,
	CONTACTS_FAKE_HASH_SET_REMOVED_SIGNAL,
	CONTACTS_FAKE_HASH_SET_NUM_SIGNALS
};
static guint contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_NUM_SIGNALS] = {0};
enum  {
	CONTACTS_FAKE_HASH_MULTI_MAP_0_PROPERTY,
	CONTACTS_FAKE_HASH_MULTI_MAP_K_TYPE,
	CONTACTS_FAKE_HASH_MULTI_MAP_K_DUP_FUNC,
	CONTACTS_FAKE_HASH_MULTI_MAP_K_DESTROY_FUNC,
	CONTACTS_FAKE_HASH_MULTI_MAP_T_TYPE,
	CONTACTS_FAKE_HASH_MULTI_MAP_T_DUP_FUNC,
	CONTACTS_FAKE_HASH_MULTI_MAP_T_DESTROY_FUNC,
	CONTACTS_FAKE_HASH_MULTI_MAP_NUM_PROPERTIES
};
static GParamSpec* contacts_fake_hash_multi_map_properties[CONTACTS_FAKE_HASH_MULTI_MAP_NUM_PROPERTIES];
enum  {
	CONTACTS_FAKE_HASH_MULTI_MAP_CHANGED_SIGNAL,
	CONTACTS_FAKE_HASH_MULTI_MAP_NUM_SIGNALS
};
static guint contacts_fake_hash_multi_map_signals[CONTACTS_FAKE_HASH_MULTI_MAP_NUM_SIGNALS] = {0};

struct _ContactsFakePersonaStorePrivate {
	GeeHashMap* _personas;
	GeeMap* _personas_ro;
	gchar** _always_writeable_properties;
	gint _always_writeable_properties_length1;
	gint __always_writeable_properties_size_;
};

struct _ContactsFakePersonaStorePrepareData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsFakePersonaStore* self;
};

struct _ContactsFakePersonaStoreAddPersonaFromDetailsData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsFakePersonaStore* self;
	GHashTable* details;
	FolksPersona* result;
};

struct _ContactsFakePersonaStoreRemovePersonaData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsFakePersonaStore* self;
	FolksPersona* persona;
};

struct _ContactsFakePersonaPrivate {
	GHashTable* properties;
	FolksPersona* _real_persona;
	gchar** _writeable_properties;
	gint _writeable_properties_length1;
	gint __writeable_properties_size_;
	GeeArrayList* _changed_properties;
};

struct _ContactsFakePersonaChangeAvatarData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsFakePersona* self;
	GLoadableIcon* avatar;
};

struct _ContactsFakePersonaApplyChangesToRealData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsFakePersona* self;
	FolksPersona* _tmp0_;
	GeeArrayList* _prop_list;
	GeeArrayList* _tmp1_;
	gint _prop_size;
	GeeArrayList* _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	gint _prop_index;
	gint _tmp5_;
	gint _tmp6_;
	gchar* prop;
	GeeArrayList* _tmp7_;
	gpointer _tmp8_;
	GHashTable* _tmp9_;
	const gchar* _tmp10_;
	FolksPersona* _tmp11_;
	const gchar* _tmp12_;
	GHashTable* _tmp13_;
	const gchar* _tmp14_;
	gconstpointer _tmp15_;
	GValue _tmp16_;
	GError* e;
	const gchar* _tmp17_;
	GError* _inner_error0_;
};

struct _ContactsFakePersonaSetPersonaPropertyData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	FolksPersona* persona;
	gchar* property_name;
	GValue new_value;
	const gchar* _tmp0_;
	GQuark _tmp2_;
	GValue _tmp3_;
	GValue _tmp4_;
	GValue _tmp5_;
	GValue _tmp6_;
	GeeSet* original;
	GValue _tmp7_;
	GeeSet* _tmp8_;
	GeeHashSet* copy;
	GeeHashSet* _tmp9_;
	GeeIterator* _e_it;
	GeeSet* _tmp10_;
	GeeIterator* _tmp11_;
	GeeIterator* _tmp12_;
	FolksEmailFieldDetails* e;
	GeeIterator* _tmp13_;
	gpointer _tmp14_;
	gboolean _tmp15_;
	FolksEmailFieldDetails* _tmp16_;
	gconstpointer _tmp17_;
	gconstpointer _tmp18_;
	FolksEmailFieldDetails* _tmp19_;
	gconstpointer _tmp20_;
	gconstpointer _tmp21_;
	GeeHashSet* _tmp22_;
	FolksEmailFieldDetails* _tmp23_;
	gconstpointer _tmp24_;
	gconstpointer _tmp25_;
	FolksEmailFieldDetails* _tmp26_;
	GeeMultiMap* _tmp27_;
	GeeMultiMap* _tmp28_;
	FolksEmailFieldDetails* _tmp29_;
	FolksEmailFieldDetails* _tmp30_;
	GeeHashSet* _tmp31_;
	GValue _tmp32_;
	GValue _tmp33_;
	GValue _tmp34_;
	GValue _tmp35_;
	GValue _tmp36_;
	GValue _tmp37_;
	GValue _tmp38_;
	GValue _tmp39_;
	GeeSet* _vala1_original;
	GValue _tmp40_;
	GeeSet* _tmp41_;
	GeeHashSet* _vala1_copy;
	GeeHashSet* _tmp42_;
	GeeIterator* _vala1__e_it;
	GeeSet* _tmp43_;
	GeeIterator* _tmp44_;
	GeeIterator* _tmp45_;
	FolksNoteFieldDetails* _vala1_e;
	GeeIterator* _tmp46_;
	gpointer _tmp47_;
	gboolean _tmp48_;
	FolksNoteFieldDetails* _tmp49_;
	gconstpointer _tmp50_;
	gconstpointer _tmp51_;
	FolksNoteFieldDetails* _tmp52_;
	gconstpointer _tmp53_;
	gconstpointer _tmp54_;
	GeeHashSet* _tmp55_;
	FolksNoteFieldDetails* _tmp56_;
	gconstpointer _tmp57_;
	gconstpointer _tmp58_;
	FolksNoteFieldDetails* _tmp59_;
	GeeMultiMap* _tmp60_;
	GeeMultiMap* _tmp61_;
	FolksNoteFieldDetails* _tmp62_;
	FolksNoteFieldDetails* _tmp63_;
	GeeHashSet* _tmp64_;
	GeeSet* _vala2_original;
	GValue _tmp65_;
	GeeSet* _tmp66_;
	GeeHashSet* _vala2_copy;
	GeeHashSet* _tmp67_;
	GeeIterator* _vala2__e_it;
	GeeSet* _tmp68_;
	GeeIterator* _tmp69_;
	GeeIterator* _tmp70_;
	FolksPhoneFieldDetails* _vala2_e;
	GeeIterator* _tmp71_;
	gpointer _tmp72_;
	gboolean _tmp73_;
	FolksPhoneFieldDetails* _tmp74_;
	gconstpointer _tmp75_;
	gconstpointer _tmp76_;
	FolksPhoneFieldDetails* _tmp77_;
	gconstpointer _tmp78_;
	gconstpointer _tmp79_;
	GeeHashSet* _tmp80_;
	FolksPhoneFieldDetails* _tmp81_;
	gconstpointer _tmp82_;
	gconstpointer _tmp83_;
	FolksPhoneFieldDetails* _tmp84_;
	GeeMultiMap* _tmp85_;
	GeeMultiMap* _tmp86_;
	FolksPhoneFieldDetails* _tmp87_;
	FolksPhoneFieldDetails* _tmp88_;
	GeeHashSet* _tmp89_;
	GeeSet* _vala3_original;
	GValue _tmp90_;
	GeeSet* _tmp91_;
	GeeHashSet* _vala3_copy;
	GeeHashSet* _tmp92_;
	GeeIterator* _vala3__e_it;
	GeeSet* _tmp93_;
	GeeIterator* _tmp94_;
	GeeIterator* _tmp95_;
	FolksPostalAddressFieldDetails* _vala3_e;
	GeeIterator* _tmp96_;
	gpointer _tmp97_;
	gboolean _tmp98_;
	FolksPostalAddressFieldDetails* _tmp99_;
	gconstpointer _tmp100_;
	gconstpointer _tmp101_;
	FolksPostalAddressFieldDetails* _tmp102_;
	gconstpointer _tmp103_;
	gconstpointer _tmp104_;
	GeeHashSet* _tmp105_;
	FolksPostalAddressFieldDetails* _tmp106_;
	gconstpointer _tmp107_;
	gconstpointer _tmp108_;
	FolksPostalAddressFieldDetails* _tmp109_;
	GeeMultiMap* _tmp110_;
	GeeMultiMap* _tmp111_;
	FolksPostalAddressFieldDetails* _tmp112_;
	FolksPostalAddressFieldDetails* _tmp113_;
	GeeHashSet* _tmp114_;
	GeeSet* _vala4_original;
	GValue _tmp115_;
	GeeSet* _tmp116_;
	GeeHashSet* _vala4_copy;
	GeeHashSet* _tmp117_;
	GeeIterator* _vala4__e_it;
	GeeSet* _tmp118_;
	GeeIterator* _tmp119_;
	GeeIterator* _tmp120_;
	FolksRoleFieldDetails* _vala4_e;
	GeeIterator* _tmp121_;
	gpointer _tmp122_;
	gboolean _tmp123_;
	FolksRoleFieldDetails* _tmp124_;
	gconstpointer _tmp125_;
	gconstpointer _tmp126_;
	FolksRoleFieldDetails* _tmp127_;
	gconstpointer _tmp128_;
	gconstpointer _tmp129_;
	GeeHashSet* _tmp130_;
	FolksRoleFieldDetails* _tmp131_;
	gconstpointer _tmp132_;
	gconstpointer _tmp133_;
	FolksRoleFieldDetails* _tmp134_;
	GeeMultiMap* _tmp135_;
	GeeMultiMap* _tmp136_;
	FolksRoleFieldDetails* _tmp137_;
	FolksRoleFieldDetails* _tmp138_;
	GeeHashSet* _tmp139_;
	GeeSet* _vala5_original;
	GValue _tmp140_;
	GeeSet* _tmp141_;
	GeeHashSet* _vala5_copy;
	GeeHashSet* _tmp142_;
	GeeIterator* _vala5__e_it;
	GeeSet* _tmp143_;
	GeeIterator* _tmp144_;
	GeeIterator* _tmp145_;
	FolksUrlFieldDetails* _vala5_e;
	GeeIterator* _tmp146_;
	gpointer _tmp147_;
	gboolean _tmp148_;
	FolksUrlFieldDetails* _tmp149_;
	gconstpointer _tmp150_;
	gconstpointer _tmp151_;
	FolksUrlFieldDetails* _tmp152_;
	gconstpointer _tmp153_;
	gconstpointer _tmp154_;
	GeeHashSet* _tmp155_;
	FolksUrlFieldDetails* _tmp156_;
	gconstpointer _tmp157_;
	gconstpointer _tmp158_;
	FolksUrlFieldDetails* _tmp159_;
	GeeMultiMap* _tmp160_;
	GeeMultiMap* _tmp161_;
	FolksUrlFieldDetails* _tmp162_;
	FolksUrlFieldDetails* _tmp163_;
	GeeHashSet* _tmp164_;
	GValue _tmp165_;
	GError* _inner_error0_;
};

struct _ContactsFakeIndividualPrivate {
	FolksIndividual* _real_individual;
	ContactsFakePersona* _primary_persona;
};

struct _ContactsFakeIndividualApplyChangesToRealData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsFakeIndividual* self;
	FolksIndividual* _tmp0_;
	GeeIterator* _p_it;
	GeeSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeIterator* _tmp3_;
	GeeIterator* _tmp4_;
	FolksPersona* p;
	GeeIterator* _tmp5_;
	gpointer _tmp6_;
	ContactsFakePersona* fake_persona;
	FolksPersona* _tmp7_;
	ContactsFakePersona* _tmp8_;
	ContactsFakePersona* _tmp9_;
	ContactsFakePersona* _tmp10_;
};

struct _ContactsFakeHashSetPrivate {
	GType t_type;
	GBoxedCopyFunc t_dup_func;
	GDestroyNotify t_destroy_func;
};

struct _ContactsFakeHashMultiMapPrivate {
	GType k_type;
	GBoxedCopyFunc k_dup_func;
	GDestroyNotify k_destroy_func;
	GType t_type;
	GBoxedCopyFunc t_dup_func;
	GDestroyNotify t_destroy_func;
};

static gint ContactsFakePersonaStore_private_offset;
static gpointer contacts_fake_persona_store_parent_class = NULL;
ContactsFakePersonaStore* contacts_fake_persona_store__the_store = NULL;
static gint ContactsFakePersona_private_offset;
static gpointer contacts_fake_persona_parent_class = NULL;
static FolksAvatarDetailsIface * contacts_fake_persona_folks_avatar_details_parent_iface = NULL;
static FolksBirthdayDetailsIface * contacts_fake_persona_folks_birthday_details_parent_iface = NULL;
static FolksEmailDetailsIface * contacts_fake_persona_folks_email_details_parent_iface = NULL;
static FolksImDetailsIface * contacts_fake_persona_folks_im_details_parent_iface = NULL;
static FolksNameDetailsIface * contacts_fake_persona_folks_name_details_parent_iface = NULL;
static FolksNoteDetailsIface * contacts_fake_persona_folks_note_details_parent_iface = NULL;
static FolksPhoneDetailsIface * contacts_fake_persona_folks_phone_details_parent_iface = NULL;
static FolksRoleDetailsIface * contacts_fake_persona_folks_role_details_parent_iface = NULL;
static FolksUrlDetailsIface * contacts_fake_persona_folks_url_details_parent_iface = NULL;
static FolksPostalAddressDetailsIface * contacts_fake_persona_folks_postal_address_details_parent_iface = NULL;
static gint ContactsFakeIndividual_private_offset;
static gpointer contacts_fake_individual_parent_class = NULL;
static gint ContactsFakeHashSet_private_offset;
static gpointer contacts_fake_hash_set_parent_class = NULL;
static gint ContactsFakeHashMultiMap_private_offset;
static gpointer contacts_fake_hash_multi_map_parent_class = NULL;

static void contacts_fake_persona_store_real_prepare_data_free (gpointer _data);
static void contacts_fake_persona_store_real_prepare (FolksPersonaStore* base,
                                               GAsyncReadyCallback _callback_,
                                               gpointer _user_data_);
static gboolean contacts_fake_persona_store_real_prepare_co (ContactsFakePersonaStorePrepareData* _data_);
static void contacts_fake_persona_store_real_add_persona_from_details_data_free (gpointer _data);
static void contacts_fake_persona_store_real_add_persona_from_details (FolksPersonaStore* base,
                                                                GHashTable* details,
                                                                GAsyncReadyCallback _callback_,
                                                                gpointer _user_data_);
static gboolean contacts_fake_persona_store_real_add_persona_from_details_co (ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_);
static void contacts_fake_persona_store_real_remove_persona_data_free (gpointer _data);
static void contacts_fake_persona_store_real_remove_persona (FolksPersonaStore* base,
                                                      FolksPersona* persona,
                                                      GAsyncReadyCallback _callback_,
                                                      gpointer _user_data_);
static gboolean contacts_fake_persona_store_real_remove_persona_co (ContactsFakePersonaStoreRemovePersonaData* _data_);
static void contacts_fake_persona_store_finalize (GObject * obj);
static GType contacts_fake_persona_store_get_type_once (void);
static void _vala_contacts_fake_persona_store_get_property (GObject * object,
                                                     guint property_id,
                                                     GValue * value,
                                                     GParamSpec * pspec);
static void contacts_fake_persona_real_change_avatar_data_free (gpointer _data);
static void contacts_fake_persona_real_change_avatar (FolksAvatarDetails* base,
                                               GLoadableIcon* avatar,
                                               GAsyncReadyCallback _callback_,
                                               gpointer _user_data_);
static gboolean contacts_fake_persona_real_change_avatar_co (ContactsFakePersonaChangeAvatarData* _data_);
static gchar** _vala_array_dup1 (gchar** self,
                          gssize length);
static void _g_free0_ (gpointer var);
static void _vala_GValue_free (GValue* self);
static void __vala_GValue_free0_ (gpointer var);
static gchar** _vala_array_dup2 (gchar** self,
                          gssize length);
static void contacts_fake_persona_get_property_from_real (ContactsFakePersona* self,
                                                   FolksPersona* persona,
                                                   const gchar* property_name);
static void __lambda11_ (ContactsFakePersona* self,
                  GObject* obj,
                  GParamSpec* ps);
static void contacts_fake_persona_add_to_changed_properties (ContactsFakePersona* self,
                                                      const gchar* property_name);
static void ___lambda11__g_object_notify (GObject* _sender,
                                   GParamSpec* pspec,
                                   gpointer self);
static void contacts_fake_persona_apply_changes_to_real_data_free (gpointer _data);
static gboolean contacts_fake_persona_apply_changes_to_real_co (ContactsFakePersonaApplyChangesToRealData* _data_);
static void contacts_fake_persona_set_persona_property (FolksPersona* persona,
                                                 const gchar* property_name,
                                                 GValue* new_value,
                                                 GAsyncReadyCallback _callback_,
                                                 gpointer _user_data_);
static void contacts_fake_persona_set_persona_property_finish (GAsyncResult* _res_,
                                                        GError** error);
static void contacts_fake_persona_apply_changes_to_real_ready (GObject* source_object,
                                                        GAsyncResult* _res_,
                                                        gpointer _user_data_);
static void contacts_fake_persona_set_persona_property_data_free (gpointer _data);
static gboolean contacts_fake_persona_set_persona_property_co (ContactsFakePersonaSetPersonaPropertyData* _data_);
static void contacts_fake_persona_set_persona_property_ready (GObject* source_object,
                                                       GAsyncResult* _res_,
                                                       gpointer _user_data_);
static void _contacts_fake_persona_phone_numbers____lambda7_ (ContactsFakePersona* self);
static void __contacts_fake_persona_phone_numbers____lambda7__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                                       gpointer self);
static GValue* _g_value_dup (GValue* self);
static void _contacts_fake_persona_urls____lambda10_ (ContactsFakePersona* self);
static void __contacts_fake_persona_urls____lambda10__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                               gpointer self);
static void _contacts_fake_persona_postal_addresses____lambda8_ (ContactsFakePersona* self);
static void __contacts_fake_persona_postal_addresses____lambda8__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                                          gpointer self);
static void _contacts_fake_persona_notes____lambda6_ (ContactsFakePersona* self);
static void __contacts_fake_persona_notes____lambda6__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                               gpointer self);
static void _contacts_fake_persona_roles____lambda9_ (ContactsFakePersona* self);
static void __contacts_fake_persona_roles____lambda9__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                               gpointer self);
static void _contacts_fake_persona_im_addresses____lambda5_ (ContactsFakePersona* self);
static void __contacts_fake_persona_im_addresses____lambda5__contacts_fake_hash_multi_map_changed (ContactsFakeHashMultiMap* _sender,
                                                                                            gpointer self);
static void _contacts_fake_persona_email_addresses____lambda4_ (ContactsFakePersona* self);
static void __contacts_fake_persona_email_addresses____lambda4__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                                         gpointer self);
static GObject * contacts_fake_persona_constructor (GType type,
                                             guint n_construct_properties,
                                             GObjectConstructParam * construct_properties);
static void contacts_fake_persona_finalize (GObject * obj);
static GType contacts_fake_persona_get_type_once (void);
static void _vala_contacts_fake_persona_get_property (GObject * object,
                                               guint property_id,
                                               GValue * value,
                                               GParamSpec * pspec);
static void _vala_contacts_fake_persona_set_property (GObject * object,
                                               guint property_id,
                                               const GValue * value,
                                               GParamSpec * pspec);
static void contacts_fake_individual_apply_changes_to_real_data_free (gpointer _data);
static gboolean contacts_fake_individual_apply_changes_to_real_co (ContactsFakeIndividualApplyChangesToRealData* _data_);
static void contacts_fake_individual_apply_changes_to_real_ready (GObject* source_object,
                                                           GAsyncResult* _res_,
                                                           gpointer _user_data_);
static void contacts_fake_individual_finalize (GObject * obj);
static GType contacts_fake_individual_get_type_once (void);
static void _vala_contacts_fake_individual_get_property (GObject * object,
                                                  guint property_id,
                                                  GValue * value,
                                                  GParamSpec * pspec);
static void _vala_contacts_fake_individual_set_property (GObject * object,
                                                  guint property_id,
                                                  const GValue * value,
                                                  GParamSpec * pspec);
static gboolean contacts_fake_hash_set_real_add (GeeAbstractCollection* base,
                                          gconstpointer element);
static gboolean contacts_fake_hash_set_real_remove (GeeAbstractCollection* base,
                                             gconstpointer element);
static GType contacts_fake_hash_set_get_type_once (void);
static void _vala_contacts_fake_hash_set_get_property (GObject * object,
                                                guint property_id,
                                                GValue * value,
                                                GParamSpec * pspec);
static void _vala_contacts_fake_hash_set_set_property (GObject * object,
                                                guint property_id,
                                                const GValue * value,
                                                GParamSpec * pspec);
static GType contacts_fake_hash_multi_map_get_type_once (void);
static void _vala_contacts_fake_hash_multi_map_get_property (GObject * object,
                                                      guint property_id,
                                                      GValue * value,
                                                      GParamSpec * pspec);
static void _vala_contacts_fake_hash_multi_map_set_property (GObject * object,
                                                      guint property_id,
                                                      const GValue * value,
                                                      GParamSpec * pspec);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);

static const gchar* CONTACTS_FAKE_PERSONA__linkable_properties[0] = {};

static inline gpointer
contacts_fake_persona_store_get_instance_private (ContactsFakePersonaStore* self)
{
	return G_STRUCT_MEMBER_P (self, ContactsFakePersonaStore_private_offset);
}

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

ContactsFakePersonaStore*
contacts_fake_persona_store_the_store (void)
{
	ContactsFakePersonaStore* _tmp0_;
	ContactsFakePersonaStore* _tmp2_;
	ContactsFakePersonaStore* _tmp3_;
	ContactsFakePersonaStore* result;
	_tmp0_ = contacts_fake_persona_store__the_store;
	if (_tmp0_ == NULL) {
		ContactsFakePersonaStore* _tmp1_;
		_tmp1_ = contacts_fake_persona_store_new ();
		_g_object_unref0 (contacts_fake_persona_store__the_store);
		contacts_fake_persona_store__the_store = _tmp1_;
	}
	_tmp2_ = contacts_fake_persona_store__the_store;
	_tmp3_ = _g_object_ref0 (_tmp2_);
	result = _tmp3_;
	return result;
}

ContactsFakePersonaStore*
contacts_fake_persona_store_construct (GType object_type)
{
	ContactsFakePersonaStore * self = NULL;
	GeeHashMap* _tmp0_;
	GeeHashMap* _tmp1_;
	GeeMap* _tmp2_;
	GeeMap* _tmp3_;
	self = (ContactsFakePersonaStore*) g_object_new (object_type, "id", "uri", "display-name", "fake store", NULL);
	_tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->_personas);
	self->priv->_personas = _tmp0_;
	_tmp1_ = self->priv->_personas;
	_tmp2_ = gee_abstract_map_get_read_only_view ((GeeAbstractMap*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_personas_ro);
	self->priv->_personas_ro = _tmp3_;
	return self;
}

ContactsFakePersonaStore*
contacts_fake_persona_store_new (void)
{
	return contacts_fake_persona_store_construct (CONTACTS_TYPE_FAKE_PERSONA_STORE);
}

static void
contacts_fake_persona_store_real_prepare_data_free (gpointer _data)
{
	ContactsFakePersonaStorePrepareData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsFakePersonaStorePrepareData, _data_);
}

static void
contacts_fake_persona_store_real_prepare (FolksPersonaStore* base,
                                          GAsyncReadyCallback _callback_,
                                          gpointer _user_data_)
{
	ContactsFakePersonaStore * self;
	ContactsFakePersonaStorePrepareData* _data_;
	ContactsFakePersonaStore* _tmp0_;
	self = (ContactsFakePersonaStore*) base;
	_data_ = g_slice_new0 (ContactsFakePersonaStorePrepareData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_persona_store_real_prepare_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	contacts_fake_persona_store_real_prepare_co (_data_);
}

static void
contacts_fake_persona_store_prepare_finish (FolksPersonaStore* base,
                                            GAsyncResult* _res_,
                                            GError** error)
{
	ContactsFakePersonaStorePrepareData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}

static gboolean
contacts_fake_persona_store_real_prepare_co (ContactsFakePersonaStorePrepareData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
contacts_fake_persona_store_real_add_persona_from_details_data_free (gpointer _data)
{
	ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_;
	_data_ = _data;
	_g_hash_table_unref0 (_data_->details);
	_g_object_unref0 (_data_->result);
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsFakePersonaStoreAddPersonaFromDetailsData, _data_);
}

static gpointer
_g_hash_table_ref0 (gpointer self)
{
	return self ? g_hash_table_ref (self) : NULL;
}

static void
contacts_fake_persona_store_real_add_persona_from_details (FolksPersonaStore* base,
                                                           GHashTable* details,
                                                           GAsyncReadyCallback _callback_,
                                                           gpointer _user_data_)
{
	ContactsFakePersonaStore * self;
	ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_;
	ContactsFakePersonaStore* _tmp0_;
	GHashTable* _tmp1_;
	g_return_if_fail (details != NULL);
	self = (ContactsFakePersonaStore*) base;
	_data_ = g_slice_new0 (ContactsFakePersonaStoreAddPersonaFromDetailsData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_persona_store_real_add_persona_from_details_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = _g_hash_table_ref0 (details);
	_g_hash_table_unref0 (_data_->details);
	_data_->details = _tmp1_;
	contacts_fake_persona_store_real_add_persona_from_details_co (_data_);
}

static FolksPersona*
contacts_fake_persona_store_add_persona_from_details_finish (FolksPersonaStore* base,
                                                             GAsyncResult* _res_,
                                                             GError** error)
{
	FolksPersona* result;
	ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return NULL;
	}
	result = _data_->result;
	_data_->result = NULL;
	return result;
}

static gboolean
contacts_fake_persona_store_real_add_persona_from_details_co (ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->result = NULL;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
contacts_fake_persona_store_real_remove_persona_data_free (gpointer _data)
{
	ContactsFakePersonaStoreRemovePersonaData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->persona);
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsFakePersonaStoreRemovePersonaData, _data_);
}

static void
contacts_fake_persona_store_real_remove_persona (FolksPersonaStore* base,
                                                 FolksPersona* persona,
                                                 GAsyncReadyCallback _callback_,
                                                 gpointer _user_data_)
{
	ContactsFakePersonaStore * self;
	ContactsFakePersonaStoreRemovePersonaData* _data_;
	ContactsFakePersonaStore* _tmp0_;
	FolksPersona* _tmp1_;
	g_return_if_fail (persona != NULL);
	self = (ContactsFakePersonaStore*) base;
	_data_ = g_slice_new0 (ContactsFakePersonaStoreRemovePersonaData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_persona_store_real_remove_persona_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = _g_object_ref0 (persona);
	_g_object_unref0 (_data_->persona);
	_data_->persona = _tmp1_;
	contacts_fake_persona_store_real_remove_persona_co (_data_);
}

static void
contacts_fake_persona_store_remove_persona_finish (FolksPersonaStore* base,
                                                   GAsyncResult* _res_,
                                                   GError** error)
{
	ContactsFakePersonaStoreRemovePersonaData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}

static gboolean
contacts_fake_persona_store_real_remove_persona_co (ContactsFakePersonaStoreRemovePersonaData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static const gchar*
contacts_fake_persona_store_real_get_type_id (FolksPersonaStore* base)
{
	const gchar* result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = "fake";
	return result;
}

static GeeMap*
contacts_fake_persona_store_real_get_personas (FolksPersonaStore* base)
{
	GeeMap* result;
	ContactsFakePersonaStore* self;
	GeeMap* _tmp0_;
	self = (ContactsFakePersonaStore*) base;
	_tmp0_ = self->priv->_personas_ro;
	result = _tmp0_;
	return result;
}

static FolksMaybeBool
contacts_fake_persona_store_real_get_can_add_personas (FolksPersonaStore* base)
{
	FolksMaybeBool result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = FOLKS_MAYBE_BOOL_FALSE;
	return result;
}

static FolksMaybeBool
contacts_fake_persona_store_real_get_can_alias_personas (FolksPersonaStore* base)
{
	FolksMaybeBool result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = FOLKS_MAYBE_BOOL_FALSE;
	return result;
}

static FolksMaybeBool
contacts_fake_persona_store_real_get_can_group_personas (FolksPersonaStore* base)
{
	FolksMaybeBool result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = FOLKS_MAYBE_BOOL_FALSE;
	return result;
}

static FolksMaybeBool
contacts_fake_persona_store_real_get_can_remove_personas (FolksPersonaStore* base)
{
	FolksMaybeBool result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = FOLKS_MAYBE_BOOL_TRUE;
	return result;
}

static gboolean
contacts_fake_persona_store_real_get_is_prepared (FolksPersonaStore* base)
{
	gboolean result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = TRUE;
	return result;
}

static gboolean
contacts_fake_persona_store_real_get_is_quiescent (FolksPersonaStore* base)
{
	gboolean result;
	ContactsFakePersonaStore* self;
	self = (ContactsFakePersonaStore*) base;
	result = TRUE;
	return result;
}

static gchar**
contacts_fake_persona_store_real_get_always_writeable_properties (FolksPersonaStore* base,
                                                                  gint* result_length1)
{
	gchar** result;
	ContactsFakePersonaStore* self;
	gchar** _tmp0_;
	gint _tmp0__length1;
	gchar** _tmp1_;
	gint _tmp1__length1;
	self = (ContactsFakePersonaStore*) base;
	_tmp0_ = self->priv->_always_writeable_properties;
	_tmp0__length1 = self->priv->_always_writeable_properties_length1;
	_tmp1_ = _tmp0_;
	_tmp1__length1 = _tmp0__length1;
	if (result_length1) {
		*result_length1 = _tmp1__length1;
	}
	result = _tmp1_;
	return result;
}

static void
contacts_fake_persona_store_class_init (ContactsFakePersonaStoreClass * klass,
                                        gpointer klass_data)
{
	contacts_fake_persona_store_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ContactsFakePersonaStore_private_offset);
	((FolksPersonaStoreClass *) klass)->prepare = (void (*) (FolksPersonaStore*, GAsyncReadyCallback, gpointer)) contacts_fake_persona_store_real_prepare;
	((FolksPersonaStoreClass *) klass)->prepare_finish = (void (*) (FolksPersonaStore*, GAsyncResult*, GError**)) contacts_fake_persona_store_prepare_finish;
	((FolksPersonaStoreClass *) klass)->add_persona_from_details = (void (*) (FolksPersonaStore*, GHashTable*, GAsyncReadyCallback, gpointer)) contacts_fake_persona_store_real_add_persona_from_details;
	((FolksPersonaStoreClass *) klass)->add_persona_from_details_finish = (FolksPersona* (*) (FolksPersonaStore*, GAsyncResult*, GError**)) contacts_fake_persona_store_add_persona_from_details_finish;
	((FolksPersonaStoreClass *) klass)->remove_persona = (void (*) (FolksPersonaStore*, FolksPersona*, GAsyncReadyCallback, gpointer)) contacts_fake_persona_store_real_remove_persona;
	((FolksPersonaStoreClass *) klass)->remove_persona_finish = (void (*) (FolksPersonaStore*, GAsyncResult*, GError**)) contacts_fake_persona_store_remove_persona_finish;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_type_id = contacts_fake_persona_store_real_get_type_id;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_personas = contacts_fake_persona_store_real_get_personas;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_can_add_personas = contacts_fake_persona_store_real_get_can_add_personas;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_can_alias_personas = contacts_fake_persona_store_real_get_can_alias_personas;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_can_group_personas = contacts_fake_persona_store_real_get_can_group_personas;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_can_remove_personas = contacts_fake_persona_store_real_get_can_remove_personas;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_is_prepared = contacts_fake_persona_store_real_get_is_prepared;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_is_quiescent = contacts_fake_persona_store_real_get_is_quiescent;
	FOLKS_PERSONA_STORE_CLASS (klass)->get_always_writeable_properties = contacts_fake_persona_store_real_get_always_writeable_properties;
	G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_persona_store_get_property;
	G_OBJECT_CLASS (klass)->finalize = contacts_fake_persona_store_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY] = g_param_spec_string ("type-id", "type-id", "type-id", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY] = g_param_spec_object ("personas", "personas", "personas", GEE_TYPE_MAP, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY] = g_param_spec_enum ("can-add-personas", "can-add-personas", "can-add-personas", FOLKS_TYPE_MAYBE_BOOL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY] = g_param_spec_enum ("can-alias-personas", "can-alias-personas", "can-alias-personas", FOLKS_TYPE_MAYBE_BOOL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY] = g_param_spec_enum ("can-group-personas", "can-group-personas", "can-group-personas", FOLKS_TYPE_MAYBE_BOOL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY] = g_param_spec_enum ("can-remove-personas", "can-remove-personas", "can-remove-personas", FOLKS_TYPE_MAYBE_BOOL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY] = g_param_spec_boolean ("is-prepared", "is-prepared", "is-prepared", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY] = g_param_spec_boolean ("is-quiescent", "is-quiescent", "is-quiescent", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY, contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY] = g_param_spec_boxed ("always-writeable-properties", "always-writeable-properties", "always-writeable-properties", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
}

static void
contacts_fake_persona_store_instance_init (ContactsFakePersonaStore * self,
                                           gpointer klass)
{
	gchar** _tmp0_;
	self->priv = contacts_fake_persona_store_get_instance_private (self);
	_tmp0_ = g_new0 (gchar*, 0 + 1);
	self->priv->_always_writeable_properties = _tmp0_;
	self->priv->_always_writeable_properties_length1 = 0;
	self->priv->__always_writeable_properties_size_ = self->priv->_always_writeable_properties_length1;
}

static void
contacts_fake_persona_store_finalize (GObject * obj)
{
	ContactsFakePersonaStore * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStore);
	_g_object_unref0 (self->priv->_personas);
	_g_object_unref0 (self->priv->_personas_ro);
	self->priv->_always_writeable_properties = (_vala_array_free (self->priv->_always_writeable_properties, self->priv->_always_writeable_properties_length1, (GDestroyNotify) g_free), NULL);
	G_OBJECT_CLASS (contacts_fake_persona_store_parent_class)->finalize (obj);
}

/**
 * A "dummy" store which is used to have an equivalent of a PersonaStore for a
 * FakePersona.
 */
 G_GNUC_NO_INLINE static GType
contacts_fake_persona_store_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ContactsFakePersonaStoreClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_persona_store_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContactsFakePersonaStore), 0, (GInstanceInitFunc) contacts_fake_persona_store_instance_init, NULL };
	GType contacts_fake_persona_store_type_id;
	contacts_fake_persona_store_type_id = g_type_register_static (FOLKS_TYPE_PERSONA_STORE, "ContactsFakePersonaStore", &g_define_type_info, 0);
	ContactsFakePersonaStore_private_offset = g_type_add_instance_private (contacts_fake_persona_store_type_id, sizeof (ContactsFakePersonaStorePrivate));
	return contacts_fake_persona_store_type_id;
}

GType
contacts_fake_persona_store_get_type (void)
{
	static volatile gsize contacts_fake_persona_store_type_id__once = 0;
	if (g_once_init_enter (&contacts_fake_persona_store_type_id__once)) {
		GType contacts_fake_persona_store_type_id;
		contacts_fake_persona_store_type_id = contacts_fake_persona_store_get_type_once ();
		g_once_init_leave (&contacts_fake_persona_store_type_id__once, contacts_fake_persona_store_type_id);
	}
	return contacts_fake_persona_store_type_id__once;
}

static void
_vala_contacts_fake_persona_store_get_property (GObject * object,
                                                guint property_id,
                                                GValue * value,
                                                GParamSpec * pspec)
{
	ContactsFakePersonaStore * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStore);
	switch (property_id) {
		case CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY:
		g_value_set_string (value, folks_persona_store_get_type_id ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY:
		g_value_set_object (value, folks_persona_store_get_personas ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY:
		g_value_set_enum (value, folks_persona_store_get_can_add_personas ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY:
		g_value_set_enum (value, folks_persona_store_get_can_alias_personas ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY:
		g_value_set_enum (value, folks_persona_store_get_can_group_personas ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY:
		g_value_set_enum (value, folks_persona_store_get_can_remove_personas ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY:
		g_value_set_boolean (value, folks_persona_store_get_is_prepared ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY:
		g_value_set_boolean (value, folks_persona_store_get_is_quiescent ((FolksPersonaStore*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY:
		{
			int length;
			g_value_set_boxed (value, folks_persona_store_get_always_writeable_properties ((FolksPersonaStore*) self, &length));
		}
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
contacts_fake_persona_get_instance_private (ContactsFakePersona* self)
{
	return G_STRUCT_MEMBER_P (self, ContactsFakePersona_private_offset);
}

static void
contacts_fake_persona_real_change_avatar_data_free (gpointer _data)
{
	ContactsFakePersonaChangeAvatarData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->avatar);
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsFakePersonaChangeAvatarData, _data_);
}

static void
contacts_fake_persona_real_change_avatar (FolksAvatarDetails* base,
                                          GLoadableIcon* avatar,
                                          GAsyncReadyCallback _callback_,
                                          gpointer _user_data_)
{
	ContactsFakePersona * self;
	ContactsFakePersonaChangeAvatarData* _data_;
	ContactsFakePersona* _tmp0_;
	GLoadableIcon* _tmp1_;
	self = (ContactsFakePersona*) base;
	_data_ = g_slice_new0 (ContactsFakePersonaChangeAvatarData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_persona_real_change_avatar_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = _g_object_ref0 (avatar);
	_g_object_unref0 (_data_->avatar);
	_data_->avatar = _tmp1_;
	contacts_fake_persona_real_change_avatar_co (_data_);
}

static void
contacts_fake_persona_change_avatar_finish (FolksAvatarDetails* base,
                                            GAsyncResult* _res_,
                                            GError** error)
{
	ContactsFakePersonaChangeAvatarData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}

static gboolean
contacts_fake_persona_real_change_avatar_co (ContactsFakePersonaChangeAvatarData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	folks_avatar_details_set_avatar ((FolksAvatarDetails*) _data_->self, _data_->avatar);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static gchar**
_vala_array_dup1 (gchar** self,
                  gssize length)
{
	if (length >= 0) {
		gchar** result;
		gssize i;
		result = g_new0 (gchar*, length + 1);
		for (i = 0; i < length; i++) {
			gchar* _tmp0_;
			_tmp0_ = g_strdup (self[i]);
			result[i] = _tmp0_;
		}
		return result;
	}
	return NULL;
}

ContactsFakePersona*
contacts_fake_persona_construct (GType object_type,
                                 FolksPersonaStore* store,
                                 gchar** writeable_properties,
                                 gint writeable_properties_length1,
                                 GHashTable* details)
{
	ContactsFakePersona * self = NULL;
	gchar* id = NULL;
	gchar* _tmp0_;
	gchar* uid = NULL;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* iid = NULL;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	gchar* _tmp6_;
	GHashTable* _tmp7_;
	gchar** _tmp8_;
	gint _tmp8__length1;
	g_return_val_if_fail (store != NULL, NULL);
	g_return_val_if_fail (details != NULL, NULL);
	_tmp0_ = g_uuid_string_random ();
	id = _tmp0_;
	_tmp1_ = folks_persona_store_get_id (store);
	_tmp2_ = _tmp1_;
	_tmp3_ = folks_persona_build_uid (BACKEND_NAME, _tmp2_, id);
	uid = _tmp3_;
	_tmp4_ = folks_persona_store_get_id (store);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strdup_printf ("%s:%s", _tmp5_, id);
	iid = _tmp6_;
	self = (ContactsFakePersona*) g_object_new (object_type, "display-id", iid, "uid", uid, "iid", iid, "store", store, "is-user", FALSE, NULL);
	_tmp7_ = _g_hash_table_ref0 (details);
	_g_hash_table_unref0 (self->priv->properties);
	self->priv->properties = _tmp7_;
	_tmp8_ = (writeable_properties != NULL) ? _vala_array_dup1 (writeable_properties, writeable_properties_length1) : writeable_properties;
	_tmp8__length1 = writeable_properties_length1;
	self->priv->_writeable_properties = (_vala_array_free (self->priv->_writeable_properties, self->priv->_writeable_properties_length1, (GDestroyNotify) g_free), NULL);
	self->priv->_writeable_properties = _tmp8_;
	self->priv->_writeable_properties_length1 = _tmp8__length1;
	self->priv->__writeable_properties_size_ = self->priv->_writeable_properties_length1;
	_g_free0 (iid);
	_g_free0 (uid);
	_g_free0 (id);
	return self;
}

ContactsFakePersona*
contacts_fake_persona_new (FolksPersonaStore* store,
                           gchar** writeable_properties,
                           gint writeable_properties_length1,
                           GHashTable* details)
{
	return contacts_fake_persona_construct (CONTACTS_TYPE_FAKE_PERSONA, store, writeable_properties, writeable_properties_length1, details);
}

static void
_g_free0_ (gpointer var)
{
	var = (g_free (var), NULL);
}

static void
_vala_GValue_free (GValue* self)
{
	g_boxed_free (G_TYPE_VALUE, self);
}

static void
__vala_GValue_free0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (_vala_GValue_free (var), NULL));
}

static gchar**
_vala_array_dup2 (gchar** self,
                  gssize length)
{
	if (length >= 0) {
		gchar** result;
		gssize i;
		result = g_new0 (gchar*, length + 1);
		for (i = 0; i < length; i++) {
			gchar* _tmp0_;
			_tmp0_ = g_strdup (self[i]);
			result[i] = _tmp0_;
		}
		return result;
	}
	return NULL;
}

static void
__lambda11_ (ContactsFakePersona* self,
             GObject* obj,
             GParamSpec* ps)
{
	const gchar* _tmp0_;
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = ps->name;
	contacts_fake_persona_add_to_changed_properties (self, _tmp0_);
}

static void
___lambda11__g_object_notify (GObject* _sender,
                              GParamSpec* pspec,
                              gpointer self)
{
	__lambda11_ ((ContactsFakePersona*) self, _sender, pspec);
}

ContactsFakePersona*
contacts_fake_persona_construct_from_real (GType object_type,
                                           FolksPersona* persona)
{
	ContactsFakePersona * self = NULL;
	GHashTable* details = NULL;
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
	ContactsFakePersonaStore* _tmp3_;
	ContactsFakePersonaStore* _tmp4_;
	gchar** _tmp5_;
	gint _tmp5__length1;
	gint _tmp6_ = 0;
	gchar** _tmp7_;
	gint _tmp7__length1;
	GHashTable* _tmp8_;
	gchar** props = NULL;
	gchar** _tmp9_;
	gint _tmp9__length1;
	gint _tmp10_ = 0;
	gchar** _tmp11_;
	gint _tmp11__length1;
	gchar** _tmp12_;
	gint _tmp12__length1;
	gint props_length1;
	gint _props_size_;
	gchar** _tmp13_;
	gint _tmp13__length1;
	g_return_val_if_fail (persona != NULL, NULL);
	_tmp0_ = g_str_hash;
	_tmp1_ = g_str_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, __vala_GValue_free0_);
	details = _tmp2_;
	_tmp3_ = contacts_fake_persona_store_the_store ();
	_tmp4_ = _tmp3_;
	_tmp5_ = folks_persona_get_writeable_properties (persona, &_tmp6_);
	_tmp5__length1 = _tmp6_;
	_tmp7_ = _tmp5_;
	_tmp7__length1 = _tmp5__length1;
	_tmp8_ = details;
	self = (ContactsFakePersona*) contacts_fake_persona_construct (object_type, (FolksPersonaStore*) _tmp4_, _tmp7_, (gint) _tmp7__length1, _tmp8_);
	_g_object_unref0 (_tmp4_);
	_tmp9_ = folks_persona_get_writeable_properties (persona, &_tmp10_);
	_tmp9__length1 = _tmp10_;
	_tmp11_ = _tmp9_;
	_tmp11__length1 = _tmp9__length1;
	_tmp12_ = (_tmp11_ != NULL) ? _vala_array_dup2 (_tmp11_, _tmp11__length1) : _tmp11_;
	_tmp12__length1 = _tmp11__length1;
	props = _tmp12_;
	props_length1 = _tmp12__length1;
	_props_size_ = props_length1;
	_tmp13_ = props;
	_tmp13__length1 = props_length1;
	{
		gchar** prop_collection = NULL;
		gint prop_collection_length1 = 0;
		gint _prop_collection_size_ = 0;
		gint prop_it = 0;
		prop_collection = _tmp13_;
		prop_collection_length1 = _tmp13__length1;
		for (prop_it = 0; prop_it < prop_collection_length1; prop_it = prop_it + 1) {
			gchar* _tmp14_;
			gchar* prop = NULL;
			_tmp14_ = g_strdup (prop_collection[prop_it]);
			prop = _tmp14_;
			{
				const gchar* _tmp15_;
				_tmp15_ = prop;
				contacts_fake_persona_get_property_from_real (self, persona, _tmp15_);
				_g_free0 (prop);
			}
		}
	}
	contacts_fake_persona_set_real_persona (self, persona);
	g_signal_connect_object ((GObject*) self, "notify", (GCallback) ___lambda11__g_object_notify, self, 0);
	props = (_vala_array_free (props, props_length1, (GDestroyNotify) g_free), NULL);
	_g_hash_table_unref0 (details);
	return self;
}

ContactsFakePersona*
contacts_fake_persona_new_from_real (FolksPersona* persona)
{
	return contacts_fake_persona_construct_from_real (CONTACTS_TYPE_FAKE_PERSONA, persona);
}

static void
contacts_fake_persona_get_property_from_real (ContactsFakePersona* self,
                                              FolksPersona* persona,
                                              const gchar* property_name)
{
	const gchar* _tmp0_;
	GQuark _tmp2_ = 0U;
	static GQuark _tmp1_label0 = 0;
	static GQuark _tmp1_label1 = 0;
	static GQuark _tmp1_label2 = 0;
	static GQuark _tmp1_label3 = 0;
	static GQuark _tmp1_label4 = 0;
	static GQuark _tmp1_label5 = 0;
	static GQuark _tmp1_label6 = 0;
	static GQuark _tmp1_label7 = 0;
	static GQuark _tmp1_label8 = 0;
	static GQuark _tmp1_label9 = 0;
	static GQuark _tmp1_label10 = 0;
	static GQuark _tmp1_label11 = 0;
	static GQuark _tmp1_label12 = 0;
	static GQuark _tmp1_label13 = 0;
	static GQuark _tmp1_label14 = 0;
	static GQuark _tmp1_label15 = 0;
	static GQuark _tmp1_label16 = 0;
	static GQuark _tmp1_label17 = 0;
	static GQuark _tmp1_label18 = 0;
	g_return_if_fail (self != NULL);
	g_return_if_fail (persona != NULL);
	g_return_if_fail (property_name != NULL);
	_tmp0_ = property_name;
	_tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
	if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("alias")))) {
		switch (0) {
			default:
			{
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("avatar")))) {
		switch (0) {
			default:
			{
				GLoadableIcon* _tmp3_;
				GLoadableIcon* _tmp4_;
				_tmp3_ = folks_avatar_details_get_avatar (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails));
				_tmp4_ = _tmp3_;
				folks_avatar_details_set_avatar ((FolksAvatarDetails*) self, _tmp4_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string ("birthday")))) {
		switch (0) {
			default:
			{
				GDateTime* _tmp5_;
				GDateTime* _tmp6_;
				_tmp5_ = folks_birthday_details_get_birthday (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
				_tmp6_ = _tmp5_;
				folks_birthday_details_set_birthday ((FolksBirthdayDetails*) self, _tmp6_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string ("calendar-event-id")))) {
		switch (0) {
			default:
			{
				const gchar* _tmp7_;
				const gchar* _tmp8_;
				_tmp7_ = folks_birthday_details_get_calendar_event_id (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
				_tmp8_ = _tmp7_;
				folks_birthday_details_set_calendar_event_id ((FolksBirthdayDetails*) self, _tmp8_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label4) ? _tmp1_label4 : (_tmp1_label4 = g_quark_from_static_string ("email-addresses")))) {
		switch (0) {
			default:
			{
				{
					GeeIterator* _e_it = NULL;
					GeeSet* _tmp9_;
					GeeSet* _tmp10_;
					GeeIterator* _tmp11_;
					_tmp9_ = folks_email_details_get_email_addresses (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetails));
					_tmp10_ = _tmp9_;
					_tmp11_ = gee_iterable_iterator ((GeeIterable*) _tmp10_);
					_e_it = _tmp11_;
					while (TRUE) {
						GeeIterator* _tmp12_;
						FolksEmailFieldDetails* e = NULL;
						GeeIterator* _tmp13_;
						gpointer _tmp14_;
						GeeSet* _tmp15_;
						GeeSet* _tmp16_;
						FolksEmailFieldDetails* _tmp17_;
						gconstpointer _tmp18_;
						gconstpointer _tmp19_;
						FolksEmailFieldDetails* _tmp20_;
						GeeMultiMap* _tmp21_;
						GeeMultiMap* _tmp22_;
						FolksEmailFieldDetails* _tmp23_;
						FolksEmailFieldDetails* _tmp24_;
						_tmp12_ = _e_it;
						if (!gee_iterator_next (_tmp12_)) {
							break;
						}
						_tmp13_ = _e_it;
						_tmp14_ = gee_iterator_get (_tmp13_);
						e = (FolksEmailFieldDetails*) _tmp14_;
						_tmp15_ = folks_email_details_get_email_addresses ((FolksEmailDetails*) self);
						_tmp16_ = _tmp15_;
						_tmp17_ = e;
						_tmp18_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp17_);
						_tmp19_ = _tmp18_;
						_tmp20_ = e;
						_tmp21_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp20_);
						_tmp22_ = _tmp21_;
						_tmp23_ = folks_email_field_details_new ((const gchar*) _tmp19_, _tmp22_);
						_tmp24_ = _tmp23_;
						gee_collection_add ((GeeCollection*) _tmp16_, _tmp24_);
						_g_object_unref0 (_tmp24_);
						_g_object_unref0 (e);
					}
					_g_object_unref0 (_e_it);
				}
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label5) ? _tmp1_label5 : (_tmp1_label5 = g_quark_from_static_string ("is-favourite")))) {
		switch (0) {
			default:
			{
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label6) ? _tmp1_label6 : (_tmp1_label6 = g_quark_from_static_string ("gender")))) {
		switch (0) {
			default:
			{
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label7) ? _tmp1_label7 : (_tmp1_label7 = g_quark_from_static_string ("groups")))) {
		switch (0) {
			default:
			{
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label8) ? _tmp1_label8 : (_tmp1_label8 = g_quark_from_static_string ("im-addresses")))) {
		switch (0) {
			default:
			{
				GeeMultiMap* _tmp25_;
				GeeMultiMap* _tmp26_;
				_tmp25_ = folks_im_details_get_im_addresses (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_IM_DETAILS, FolksImDetails));
				_tmp26_ = _tmp25_;
				folks_im_details_set_im_addresses ((FolksImDetails*) self, _tmp26_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label9) ? _tmp1_label9 : (_tmp1_label9 = g_quark_from_static_string ("local-ids")))) {
		switch (0) {
			default:
			{
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label10) ? _tmp1_label10 : (_tmp1_label10 = g_quark_from_static_string ("structured-name")))) {
		switch (0) {
			default:
			{
				FolksStructuredName* _tmp27_;
				FolksStructuredName* _tmp28_;
				_tmp27_ = folks_name_details_get_structured_name (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
				_tmp28_ = _tmp27_;
				folks_name_details_set_structured_name ((FolksNameDetails*) self, _tmp28_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label11) ? _tmp1_label11 : (_tmp1_label11 = g_quark_from_static_string ("full-name")))) {
		switch (0) {
			default:
			{
				const gchar* _tmp29_;
				const gchar* _tmp30_;
				_tmp29_ = folks_name_details_get_full_name (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
				_tmp30_ = _tmp29_;
				folks_name_details_set_full_name ((FolksNameDetails*) self, _tmp30_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label12) ? _tmp1_label12 : (_tmp1_label12 = g_quark_from_static_string ("nickname")))) {
		switch (0) {
			default:
			{
				const gchar* _tmp31_;
				const gchar* _tmp32_;
				_tmp31_ = folks_name_details_get_nickname (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
				_tmp32_ = _tmp31_;
				folks_name_details_set_nickname ((FolksNameDetails*) self, _tmp32_);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label13) ? _tmp1_label13 : (_tmp1_label13 = g_quark_from_static_string ("notes")))) {
		switch (0) {
			default:
			{
				{
					GeeIterator* _e_it = NULL;
					GeeSet* _tmp33_;
					GeeSet* _tmp34_;
					GeeIterator* _tmp35_;
					_tmp33_ = folks_note_details_get_notes (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_NOTE_DETAILS, FolksNoteDetails));
					_tmp34_ = _tmp33_;
					_tmp35_ = gee_iterable_iterator ((GeeIterable*) _tmp34_);
					_e_it = _tmp35_;
					while (TRUE) {
						GeeIterator* _tmp36_;
						FolksNoteFieldDetails* e = NULL;
						GeeIterator* _tmp37_;
						gpointer _tmp38_;
						GeeSet* _tmp39_;
						GeeSet* _tmp40_;
						FolksNoteFieldDetails* _tmp41_;
						gconstpointer _tmp42_;
						gconstpointer _tmp43_;
						FolksNoteFieldDetails* _tmp44_;
						GeeMultiMap* _tmp45_;
						GeeMultiMap* _tmp46_;
						FolksNoteFieldDetails* _tmp47_;
						const gchar* _tmp48_;
						const gchar* _tmp49_;
						FolksNoteFieldDetails* _tmp50_;
						FolksNoteFieldDetails* _tmp51_;
						_tmp36_ = _e_it;
						if (!gee_iterator_next (_tmp36_)) {
							break;
						}
						_tmp37_ = _e_it;
						_tmp38_ = gee_iterator_get (_tmp37_);
						e = (FolksNoteFieldDetails*) _tmp38_;
						_tmp39_ = folks_note_details_get_notes ((FolksNoteDetails*) self);
						_tmp40_ = _tmp39_;
						_tmp41_ = e;
						_tmp42_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp41_);
						_tmp43_ = _tmp42_;
						_tmp44_ = e;
						_tmp45_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp44_);
						_tmp46_ = _tmp45_;
						_tmp47_ = e;
						_tmp48_ = folks_abstract_field_details_get_id ((FolksAbstractFieldDetails*) _tmp47_);
						_tmp49_ = _tmp48_;
						_tmp50_ = folks_note_field_details_new ((const gchar*) _tmp43_, _tmp46_, _tmp49_);
						_tmp51_ = _tmp50_;
						gee_collection_add ((GeeCollection*) _tmp40_, _tmp51_);
						_g_object_unref0 (_tmp51_);
						_g_object_unref0 (e);
					}
					_g_object_unref0 (_e_it);
				}
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label14) ? _tmp1_label14 : (_tmp1_label14 = g_quark_from_static_string ("phone-numbers")))) {
		switch (0) {
			default:
			{
				{
					GeeIterator* _e_it = NULL;
					GeeSet* _tmp52_;
					GeeSet* _tmp53_;
					GeeIterator* _tmp54_;
					_tmp52_ = folks_phone_details_get_phone_numbers (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_PHONE_DETAILS, FolksPhoneDetails));
					_tmp53_ = _tmp52_;
					_tmp54_ = gee_iterable_iterator ((GeeIterable*) _tmp53_);
					_e_it = _tmp54_;
					while (TRUE) {
						GeeIterator* _tmp55_;
						FolksPhoneFieldDetails* e = NULL;
						GeeIterator* _tmp56_;
						gpointer _tmp57_;
						GeeSet* _tmp58_;
						GeeSet* _tmp59_;
						FolksPhoneFieldDetails* _tmp60_;
						gconstpointer _tmp61_;
						gconstpointer _tmp62_;
						FolksPhoneFieldDetails* _tmp63_;
						GeeMultiMap* _tmp64_;
						GeeMultiMap* _tmp65_;
						FolksPhoneFieldDetails* _tmp66_;
						FolksPhoneFieldDetails* _tmp67_;
						_tmp55_ = _e_it;
						if (!gee_iterator_next (_tmp55_)) {
							break;
						}
						_tmp56_ = _e_it;
						_tmp57_ = gee_iterator_get (_tmp56_);
						e = (FolksPhoneFieldDetails*) _tmp57_;
						_tmp58_ = folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) self);
						_tmp59_ = _tmp58_;
						_tmp60_ = e;
						_tmp61_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp60_);
						_tmp62_ = _tmp61_;
						_tmp63_ = e;
						_tmp64_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp63_);
						_tmp65_ = _tmp64_;
						_tmp66_ = folks_phone_field_details_new ((const gchar*) _tmp62_, _tmp65_);
						_tmp67_ = _tmp66_;
						gee_collection_add ((GeeCollection*) _tmp59_, _tmp67_);
						_g_object_unref0 (_tmp67_);
						_g_object_unref0 (e);
					}
					_g_object_unref0 (_e_it);
				}
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label15) ? _tmp1_label15 : (_tmp1_label15 = g_quark_from_static_string ("postal-addresses")))) {
		switch (0) {
			default:
			{
				{
					GeeIterator* _e_it = NULL;
					GeeSet* _tmp68_;
					GeeSet* _tmp69_;
					GeeIterator* _tmp70_;
					_tmp68_ = folks_postal_address_details_get_postal_addresses (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetails));
					_tmp69_ = _tmp68_;
					_tmp70_ = gee_iterable_iterator ((GeeIterable*) _tmp69_);
					_e_it = _tmp70_;
					while (TRUE) {
						GeeIterator* _tmp71_;
						FolksPostalAddressFieldDetails* e = NULL;
						GeeIterator* _tmp72_;
						gpointer _tmp73_;
						GeeSet* _tmp74_;
						GeeSet* _tmp75_;
						FolksPostalAddressFieldDetails* _tmp76_;
						gconstpointer _tmp77_;
						gconstpointer _tmp78_;
						FolksPostalAddressFieldDetails* _tmp79_;
						GeeMultiMap* _tmp80_;
						GeeMultiMap* _tmp81_;
						FolksPostalAddressFieldDetails* _tmp82_;
						FolksPostalAddressFieldDetails* _tmp83_;
						_tmp71_ = _e_it;
						if (!gee_iterator_next (_tmp71_)) {
							break;
						}
						_tmp72_ = _e_it;
						_tmp73_ = gee_iterator_get (_tmp72_);
						e = (FolksPostalAddressFieldDetails*) _tmp73_;
						_tmp74_ = folks_postal_address_details_get_postal_addresses ((FolksPostalAddressDetails*) self);
						_tmp75_ = _tmp74_;
						_tmp76_ = e;
						_tmp77_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp76_);
						_tmp78_ = _tmp77_;
						_tmp79_ = e;
						_tmp80_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp79_);
						_tmp81_ = _tmp80_;
						_tmp82_ = folks_postal_address_field_details_new ((FolksPostalAddress*) _tmp78_, _tmp81_);
						_tmp83_ = _tmp82_;
						gee_collection_add ((GeeCollection*) _tmp75_, _tmp83_);
						_g_object_unref0 (_tmp83_);
						_g_object_unref0 (e);
					}
					_g_object_unref0 (_e_it);
				}
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label16) ? _tmp1_label16 : (_tmp1_label16 = g_quark_from_static_string ("roles")))) {
		switch (0) {
			default:
			{
				{
					GeeIterator* _role_it = NULL;
					GeeSet* _tmp84_;
					GeeSet* _tmp85_;
					GeeIterator* _tmp86_;
					_tmp84_ = folks_role_details_get_roles (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_ROLE_DETAILS, FolksRoleDetails));
					_tmp85_ = _tmp84_;
					_tmp86_ = gee_iterable_iterator ((GeeIterable*) _tmp85_);
					_role_it = _tmp86_;
					while (TRUE) {
						GeeIterator* _tmp87_;
						FolksRoleFieldDetails* role = NULL;
						GeeIterator* _tmp88_;
						gpointer _tmp89_;
						GeeSet* _tmp90_;
						GeeSet* _tmp91_;
						FolksRoleFieldDetails* _tmp92_;
						gconstpointer _tmp93_;
						gconstpointer _tmp94_;
						FolksRoleFieldDetails* _tmp95_;
						GeeMultiMap* _tmp96_;
						GeeMultiMap* _tmp97_;
						FolksRoleFieldDetails* _tmp98_;
						FolksRoleFieldDetails* _tmp99_;
						_tmp87_ = _role_it;
						if (!gee_iterator_next (_tmp87_)) {
							break;
						}
						_tmp88_ = _role_it;
						_tmp89_ = gee_iterator_get (_tmp88_);
						role = (FolksRoleFieldDetails*) _tmp89_;
						_tmp90_ = folks_role_details_get_roles ((FolksRoleDetails*) self);
						_tmp91_ = _tmp90_;
						_tmp92_ = role;
						_tmp93_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp92_);
						_tmp94_ = _tmp93_;
						_tmp95_ = role;
						_tmp96_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp95_);
						_tmp97_ = _tmp96_;
						_tmp98_ = folks_role_field_details_new ((FolksRole*) _tmp94_, _tmp97_);
						_tmp99_ = _tmp98_;
						gee_collection_add ((GeeCollection*) _tmp91_, _tmp99_);
						_g_object_unref0 (_tmp99_);
						_g_object_unref0 (role);
					}
					_g_object_unref0 (_role_it);
				}
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label17) ? _tmp1_label17 : (_tmp1_label17 = g_quark_from_static_string ("urls")))) {
		switch (0) {
			default:
			{
				{
					GeeIterator* _e_it = NULL;
					GeeSet* _tmp100_;
					GeeSet* _tmp101_;
					GeeIterator* _tmp102_;
					_tmp100_ = folks_url_details_get_urls (G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_URL_DETAILS, FolksUrlDetails));
					_tmp101_ = _tmp100_;
					_tmp102_ = gee_iterable_iterator ((GeeIterable*) _tmp101_);
					_e_it = _tmp102_;
					while (TRUE) {
						GeeIterator* _tmp103_;
						FolksUrlFieldDetails* e = NULL;
						GeeIterator* _tmp104_;
						gpointer _tmp105_;
						GeeSet* _tmp106_;
						GeeSet* _tmp107_;
						FolksUrlFieldDetails* _tmp108_;
						gconstpointer _tmp109_;
						gconstpointer _tmp110_;
						FolksUrlFieldDetails* _tmp111_;
						GeeMultiMap* _tmp112_;
						GeeMultiMap* _tmp113_;
						FolksUrlFieldDetails* _tmp114_;
						FolksUrlFieldDetails* _tmp115_;
						_tmp103_ = _e_it;
						if (!gee_iterator_next (_tmp103_)) {
							break;
						}
						_tmp104_ = _e_it;
						_tmp105_ = gee_iterator_get (_tmp104_);
						e = (FolksUrlFieldDetails*) _tmp105_;
						_tmp106_ = folks_url_details_get_urls ((FolksUrlDetails*) self);
						_tmp107_ = _tmp106_;
						_tmp108_ = e;
						_tmp109_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp108_);
						_tmp110_ = _tmp109_;
						_tmp111_ = e;
						_tmp112_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp111_);
						_tmp113_ = _tmp112_;
						_tmp114_ = folks_url_field_details_new ((const gchar*) _tmp110_, _tmp113_);
						_tmp115_ = _tmp114_;
						gee_collection_add ((GeeCollection*) _tmp107_, _tmp115_);
						_g_object_unref0 (_tmp115_);
						_g_object_unref0 (e);
					}
					_g_object_unref0 (_e_it);
				}
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label18) ? _tmp1_label18 : (_tmp1_label18 = g_quark_from_static_string ("web-service-addresses")))) {
		switch (0) {
			default:
			{
				break;
			}
		}
	} else {
		switch (0) {
			default:
			{
				g_debug ("contacts-fake-persona-store.vala:398: Unknown property '%s' in FakePer" \
"sona.get_property_from_real().", property_name);
				break;
			}
		}
	}
}

static void
contacts_fake_persona_add_to_changed_properties (ContactsFakePersona* self,
                                                 const gchar* property_name)
{
	GeeArrayList* _tmp0_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (property_name != NULL);
	g_debug ("contacts-fake-persona-store.vala:404: Property: %s was added to the ch" \
"anged property list", property_name);
	_tmp0_ = self->priv->_changed_properties;
	if (!gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp0_, property_name)) {
		GeeArrayList* _tmp1_;
		_tmp1_ = self->priv->_changed_properties;
		gee_abstract_collection_add ((GeeAbstractCollection*) _tmp1_, property_name);
	}
}

GHashTable*
contacts_fake_persona_get_details (ContactsFakePersona* self)
{
	GHashTable* _tmp0_;
	GHashTable* _tmp1_;
	GHashTable* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->properties;
	_tmp1_ = _g_hash_table_ref0 (_tmp0_);
	result = _tmp1_;
	return result;
}

static void
contacts_fake_persona_apply_changes_to_real_data_free (gpointer _data)
{
	ContactsFakePersonaApplyChangesToRealData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsFakePersonaApplyChangesToRealData, _data_);
}

void
contacts_fake_persona_apply_changes_to_real (ContactsFakePersona* self,
                                             GAsyncReadyCallback _callback_,
                                             gpointer _user_data_)
{
	ContactsFakePersonaApplyChangesToRealData* _data_;
	ContactsFakePersona* _tmp0_;
	g_return_if_fail (self != NULL);
	_data_ = g_slice_new0 (ContactsFakePersonaApplyChangesToRealData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_persona_apply_changes_to_real_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	contacts_fake_persona_apply_changes_to_real_co (_data_);
}

void
contacts_fake_persona_apply_changes_to_real_finish (ContactsFakePersona* self,
                                                    GAsyncResult* _res_)
{
	ContactsFakePersonaApplyChangesToRealData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
}

static void
contacts_fake_persona_apply_changes_to_real_ready (GObject* source_object,
                                                   GAsyncResult* _res_,
                                                   gpointer _user_data_)
{
	ContactsFakePersonaApplyChangesToRealData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	contacts_fake_persona_apply_changes_to_real_co (_data_);
}

static gboolean
contacts_fake_persona_apply_changes_to_real_co (ContactsFakePersonaApplyChangesToRealData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->self->priv->_real_persona;
	if (_data_->_tmp0_ == NULL) {
		g_warning ("contacts-fake-persona-store.vala:415: No real persona to apply changes" \
" from fake persona");
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	{
		_data_->_tmp1_ = _data_->self->priv->_changed_properties;
		_data_->_prop_list = _data_->_tmp1_;
		_data_->_tmp2_ = _data_->_prop_list;
		_data_->_tmp3_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _data_->_tmp2_);
		_data_->_tmp4_ = _data_->_tmp3_;
		_data_->_prop_size = _data_->_tmp4_;
		_data_->_prop_index = -1;
		while (TRUE) {
			_data_->_prop_index = _data_->_prop_index + 1;
			_data_->_tmp5_ = _data_->_prop_index;
			_data_->_tmp6_ = _data_->_prop_size;
			if (!(_data_->_tmp5_ < _data_->_tmp6_)) {
				break;
			}
			_data_->_tmp7_ = _data_->_prop_list;
			_data_->_tmp8_ = gee_abstract_list_get ((GeeAbstractList*) _data_->_tmp7_, _data_->_prop_index);
			_data_->prop = (gchar*) _data_->_tmp8_;
			_data_->_tmp9_ = _data_->self->priv->properties;
			_data_->_tmp10_ = _data_->prop;
			if (g_hash_table_contains (_data_->_tmp9_, _data_->_tmp10_)) {
				{
					_data_->_tmp11_ = _data_->self->priv->_real_persona;
					_data_->_tmp12_ = _data_->prop;
					_data_->_tmp13_ = _data_->self->priv->properties;
					_data_->_tmp14_ = _data_->prop;
					_data_->_tmp15_ = g_hash_table_lookup (_data_->_tmp13_, _data_->_tmp14_);
					_data_->_tmp16_ = *((GValue*) _data_->_tmp15_);
					_data_->_state_ = 1;
					contacts_fake_persona_set_persona_property (_data_->_tmp11_, _data_->_tmp12_, &_data_->_tmp16_, contacts_fake_persona_apply_changes_to_real_ready, _data_);
					return FALSE;
					_state_1:
					contacts_fake_persona_set_persona_property_finish (_data_->_res_, &_data_->_inner_error0_);
					if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
						goto __catch0_g_error;
					}
				}
				goto __finally0;
				__catch0_g_error:
				{
					_data_->e = _data_->_inner_error0_;
					_data_->_inner_error0_ = NULL;
					_data_->_tmp17_ = _data_->e->message;
					g_error ("contacts-fake-persona-store.vala:423: Couldn't write property: %s", _data_->_tmp17_);
					_g_error_free0 (_data_->e);
				}
				__finally0:
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					_g_free0 (_data_->prop);
					g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
					g_clear_error (&_data_->_inner_error0_);
					g_object_unref (_data_->_async_result);
					return FALSE;
				}
			}
			_g_free0 (_data_->prop);
		}
	}
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
contacts_fake_persona_set_persona_property_data_free (gpointer _data)
{
	ContactsFakePersonaSetPersonaPropertyData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->persona);
	_g_free0 (_data_->property_name);
	G_IS_VALUE (&_data_->new_value) ? (g_value_unset (&_data_->new_value), NULL) : NULL;
	g_slice_free (ContactsFakePersonaSetPersonaPropertyData, _data_);
}

static void
contacts_fake_persona_set_persona_property (FolksPersona* persona,
                                            const gchar* property_name,
                                            GValue* new_value,
                                            GAsyncReadyCallback _callback_,
                                            gpointer _user_data_)
{
	ContactsFakePersonaSetPersonaPropertyData* _data_;
	FolksPersona* _tmp0_;
	gchar* _tmp1_;
	GValue _tmp2_;
	GValue _tmp3_;
	GValue _tmp4_ = {0};
	g_return_if_fail (persona != NULL);
	g_return_if_fail (property_name != NULL);
	g_return_if_fail (new_value != NULL);
	_data_ = g_slice_new0 (ContactsFakePersonaSetPersonaPropertyData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_persona_set_persona_property_data_free);
	_tmp0_ = _g_object_ref0 (persona);
	_g_object_unref0 (_data_->persona);
	_data_->persona = _tmp0_;
	_tmp1_ = g_strdup (property_name);
	_g_free0 (_data_->property_name);
	_data_->property_name = _tmp1_;
	_tmp2_ = *new_value;
	_tmp3_ = _tmp2_;
	if (G_IS_VALUE (&_tmp3_)) {
		g_value_init (&_tmp4_, G_VALUE_TYPE (&_tmp3_));
		g_value_copy (&_tmp3_, &_tmp4_);
	} else {
		_tmp4_ = _tmp3_;
	}
	G_IS_VALUE (&_data_->new_value) ? (g_value_unset (&_data_->new_value), NULL) : NULL;
	_data_->new_value = _tmp4_;
	contacts_fake_persona_set_persona_property_co (_data_);
}

static void
contacts_fake_persona_set_persona_property_finish (GAsyncResult* _res_,
                                                   GError** error)
{
	ContactsFakePersonaSetPersonaPropertyData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}

static void
contacts_fake_persona_set_persona_property_ready (GObject* source_object,
                                                  GAsyncResult* _res_,
                                                  gpointer _user_data_)
{
	ContactsFakePersonaSetPersonaPropertyData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	contacts_fake_persona_set_persona_property_co (_data_);
}

static gboolean
contacts_fake_persona_set_persona_property_co (ContactsFakePersonaSetPersonaPropertyData* _data_)
{
	static GQuark _tmp1_label0 = 0;
	static GQuark _tmp1_label1 = 0;
	static GQuark _tmp1_label2 = 0;
	static GQuark _tmp1_label3 = 0;
	static GQuark _tmp1_label4 = 0;
	static GQuark _tmp1_label5 = 0;
	static GQuark _tmp1_label6 = 0;
	static GQuark _tmp1_label7 = 0;
	static GQuark _tmp1_label8 = 0;
	static GQuark _tmp1_label9 = 0;
	static GQuark _tmp1_label10 = 0;
	static GQuark _tmp1_label11 = 0;
	static GQuark _tmp1_label12 = 0;
	static GQuark _tmp1_label13 = 0;
	static GQuark _tmp1_label14 = 0;
	static GQuark _tmp1_label15 = 0;
	static GQuark _tmp1_label16 = 0;
	static GQuark _tmp1_label17 = 0;
	static GQuark _tmp1_label18 = 0;
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		case 2:
		goto _state_2;
		case 3:
		goto _state_3;
		case 4:
		goto _state_4;
		case 5:
		goto _state_5;
		case 6:
		goto _state_6;
		case 7:
		goto _state_7;
		case 8:
		goto _state_8;
		case 9:
		goto _state_9;
		case 10:
		goto _state_10;
		case 11:
		goto _state_11;
		case 12:
		goto _state_12;
		case 13:
		goto _state_13;
		case 14:
		goto _state_14;
		case 15:
		goto _state_15;
		case 16:
		goto _state_16;
		case 17:
		goto _state_17;
		case 18:
		goto _state_18;
		case 19:
		goto _state_19;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp2_ = 0U;
	_data_->_tmp0_ = _data_->property_name;
	_data_->_tmp2_ = (NULL == _data_->_tmp0_) ? 0 : g_quark_from_string (_data_->_tmp0_);
	if (_data_->_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("alias")))) {
		switch (0) {
			default:
			{
				_data_->_tmp3_ = _data_->new_value;
				_data_->_state_ = 1;
				folks_alias_details_change_alias (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails), g_value_get_string (&_data_->_tmp3_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_1:
				folks_alias_details_change_alias_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("avatar")))) {
		switch (0) {
			default:
			{
				_data_->_tmp4_ = _data_->new_value;
				_data_->_state_ = 2;
				folks_avatar_details_change_avatar (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails), g_value_get_object (&_data_->_tmp4_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_2:
				folks_avatar_details_change_avatar_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string ("birthday")))) {
		switch (0) {
			default:
			{
				_data_->_tmp5_ = _data_->new_value;
				_data_->_state_ = 3;
				folks_birthday_details_change_birthday (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails), g_value_get_boxed (&_data_->_tmp5_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_3:
				folks_birthday_details_change_birthday_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string ("calendar-event-id")))) {
		switch (0) {
			default:
			{
				_data_->_tmp6_ = _data_->new_value;
				_data_->_state_ = 4;
				folks_birthday_details_change_calendar_event_id (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails), g_value_get_string (&_data_->_tmp6_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_4:
				folks_birthday_details_change_calendar_event_id_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label4) ? _tmp1_label4 : (_tmp1_label4 = g_quark_from_static_string ("email-addresses")))) {
		switch (0) {
			default:
			{
				_data_->_tmp7_ = _data_->new_value;
				_data_->_tmp8_ = _g_object_ref0 (g_value_get_object (&_data_->_tmp7_));
				_data_->original = _data_->_tmp8_;
				_data_->_tmp9_ = gee_hash_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				_data_->copy = _data_->_tmp9_;
				{
					_data_->_tmp10_ = _data_->original;
					_data_->_tmp11_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp10_);
					_data_->_e_it = _data_->_tmp11_;
					while (TRUE) {
						_data_->_tmp12_ = _data_->_e_it;
						if (!gee_iterator_next (_data_->_tmp12_)) {
							break;
						}
						_data_->_tmp13_ = _data_->_e_it;
						_data_->_tmp14_ = gee_iterator_get (_data_->_tmp13_);
						_data_->e = (FolksEmailFieldDetails*) _data_->_tmp14_;
						_data_->_tmp16_ = _data_->e;
						_data_->_tmp17_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp16_);
						_data_->_tmp18_ = _data_->_tmp17_;
						if (((const gchar*) _data_->_tmp18_) != NULL) {
							_data_->_tmp19_ = _data_->e;
							_data_->_tmp20_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp19_);
							_data_->_tmp21_ = _data_->_tmp20_;
							_data_->_tmp15_ = g_strcmp0 ((const gchar*) _data_->_tmp21_, "") != 0;
						} else {
							_data_->_tmp15_ = FALSE;
						}
						if (_data_->_tmp15_) {
							_data_->_tmp22_ = _data_->copy;
							_data_->_tmp23_ = _data_->e;
							_data_->_tmp24_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp23_);
							_data_->_tmp25_ = _data_->_tmp24_;
							_data_->_tmp26_ = _data_->e;
							_data_->_tmp27_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _data_->_tmp26_);
							_data_->_tmp28_ = _data_->_tmp27_;
							_data_->_tmp29_ = folks_email_field_details_new ((const gchar*) _data_->_tmp25_, _data_->_tmp28_);
							_data_->_tmp30_ = _data_->_tmp29_;
							gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp22_, _data_->_tmp30_);
							_g_object_unref0 (_data_->_tmp30_);
						}
						_g_object_unref0 (_data_->e);
					}
					_g_object_unref0 (_data_->_e_it);
				}
				_data_->_tmp31_ = _data_->copy;
				_data_->_state_ = 5;
				folks_email_details_change_email_addresses (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetails), (GeeSet*) _data_->_tmp31_, contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_5:
				folks_email_details_change_email_addresses_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						_g_object_unref0 (_data_->copy);
						_g_object_unref0 (_data_->original);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->copy);
						_g_object_unref0 (_data_->original);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->copy);
				_g_object_unref0 (_data_->original);
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label5) ? _tmp1_label5 : (_tmp1_label5 = g_quark_from_static_string ("is-favourite")))) {
		switch (0) {
			default:
			{
				_data_->_tmp32_ = _data_->new_value;
				_data_->_state_ = 6;
				folks_favourite_details_change_is_favourite (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails), g_value_get_boolean (&_data_->_tmp32_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_6:
				folks_favourite_details_change_is_favourite_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label6) ? _tmp1_label6 : (_tmp1_label6 = g_quark_from_static_string ("gender")))) {
		switch (0) {
			default:
			{
				_data_->_tmp33_ = _data_->new_value;
				_data_->_state_ = 7;
				folks_gender_details_change_gender (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_GENDER_DETAILS, FolksGenderDetails), g_value_get_enum (&_data_->_tmp33_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_7:
				folks_gender_details_change_gender_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_GENDER_DETAILS, FolksGenderDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label7) ? _tmp1_label7 : (_tmp1_label7 = g_quark_from_static_string ("groups")))) {
		switch (0) {
			default:
			{
				_data_->_tmp34_ = _data_->new_value;
				_data_->_state_ = 8;
				folks_group_details_change_groups (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails), g_value_get_object (&_data_->_tmp34_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_8:
				folks_group_details_change_groups_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label8) ? _tmp1_label8 : (_tmp1_label8 = g_quark_from_static_string ("im-addresses")))) {
		switch (0) {
			default:
			{
				_data_->_tmp35_ = _data_->new_value;
				_data_->_state_ = 9;
				folks_im_details_change_im_addresses (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_IM_DETAILS, FolksImDetails), g_value_get_object (&_data_->_tmp35_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_9:
				folks_im_details_change_im_addresses_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_IM_DETAILS, FolksImDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label9) ? _tmp1_label9 : (_tmp1_label9 = g_quark_from_static_string ("local-ids")))) {
		switch (0) {
			default:
			{
				_data_->_tmp36_ = _data_->new_value;
				_data_->_state_ = 10;
				folks_local_id_details_change_local_ids (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_LOCAL_ID_DETAILS, FolksLocalIdDetails), g_value_get_object (&_data_->_tmp36_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_10:
				folks_local_id_details_change_local_ids_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_LOCAL_ID_DETAILS, FolksLocalIdDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label10) ? _tmp1_label10 : (_tmp1_label10 = g_quark_from_static_string ("structured-name")))) {
		switch (0) {
			default:
			{
				_data_->_tmp37_ = _data_->new_value;
				_data_->_state_ = 11;
				folks_name_details_change_structured_name (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails), g_value_get_object (&_data_->_tmp37_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_11:
				folks_name_details_change_structured_name_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label11) ? _tmp1_label11 : (_tmp1_label11 = g_quark_from_static_string ("full-name")))) {
		switch (0) {
			default:
			{
				_data_->_tmp38_ = _data_->new_value;
				_data_->_state_ = 12;
				folks_name_details_change_full_name (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails), g_value_get_string (&_data_->_tmp38_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_12:
				folks_name_details_change_full_name_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label12) ? _tmp1_label12 : (_tmp1_label12 = g_quark_from_static_string ("nickname")))) {
		switch (0) {
			default:
			{
				_data_->_tmp39_ = _data_->new_value;
				_data_->_state_ = 13;
				folks_name_details_change_nickname (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails), g_value_get_string (&_data_->_tmp39_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_13:
				folks_name_details_change_nickname_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label13) ? _tmp1_label13 : (_tmp1_label13 = g_quark_from_static_string ("notes")))) {
		switch (0) {
			default:
			{
				_data_->_tmp40_ = _data_->new_value;
				_data_->_tmp41_ = _g_object_ref0 (g_value_get_object (&_data_->_tmp40_));
				_data_->_vala1_original = _data_->_tmp41_;
				_data_->_tmp42_ = gee_hash_set_new (FOLKS_TYPE_NOTE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				_data_->_vala1_copy = _data_->_tmp42_;
				{
					_data_->_tmp43_ = _data_->_vala1_original;
					_data_->_tmp44_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp43_);
					_data_->_vala1__e_it = _data_->_tmp44_;
					while (TRUE) {
						_data_->_tmp45_ = _data_->_vala1__e_it;
						if (!gee_iterator_next (_data_->_tmp45_)) {
							break;
						}
						_data_->_tmp46_ = _data_->_vala1__e_it;
						_data_->_tmp47_ = gee_iterator_get (_data_->_tmp46_);
						_data_->_vala1_e = (FolksNoteFieldDetails*) _data_->_tmp47_;
						_data_->_tmp49_ = _data_->_vala1_e;
						_data_->_tmp50_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp49_);
						_data_->_tmp51_ = _data_->_tmp50_;
						if (((const gchar*) _data_->_tmp51_) != NULL) {
							_data_->_tmp52_ = _data_->_vala1_e;
							_data_->_tmp53_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp52_);
							_data_->_tmp54_ = _data_->_tmp53_;
							_data_->_tmp48_ = g_strcmp0 ((const gchar*) _data_->_tmp54_, "") != 0;
						} else {
							_data_->_tmp48_ = FALSE;
						}
						if (_data_->_tmp48_) {
							_data_->_tmp55_ = _data_->_vala1_copy;
							_data_->_tmp56_ = _data_->_vala1_e;
							_data_->_tmp57_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp56_);
							_data_->_tmp58_ = _data_->_tmp57_;
							_data_->_tmp59_ = _data_->_vala1_e;
							_data_->_tmp60_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _data_->_tmp59_);
							_data_->_tmp61_ = _data_->_tmp60_;
							_data_->_tmp62_ = folks_note_field_details_new ((const gchar*) _data_->_tmp58_, _data_->_tmp61_, NULL);
							_data_->_tmp63_ = _data_->_tmp62_;
							gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp55_, _data_->_tmp63_);
							_g_object_unref0 (_data_->_tmp63_);
						}
						_g_object_unref0 (_data_->_vala1_e);
					}
					_g_object_unref0 (_data_->_vala1__e_it);
				}
				_data_->_tmp64_ = _data_->_vala1_copy;
				_data_->_state_ = 14;
				folks_note_details_change_notes (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NOTE_DETAILS, FolksNoteDetails), (GeeSet*) _data_->_tmp64_, contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_14:
				folks_note_details_change_notes_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_NOTE_DETAILS, FolksNoteDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						_g_object_unref0 (_data_->_vala1_copy);
						_g_object_unref0 (_data_->_vala1_original);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->_vala1_copy);
						_g_object_unref0 (_data_->_vala1_original);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->_vala1_copy);
				_g_object_unref0 (_data_->_vala1_original);
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label14) ? _tmp1_label14 : (_tmp1_label14 = g_quark_from_static_string ("phone-numbers")))) {
		switch (0) {
			default:
			{
				_data_->_tmp65_ = _data_->new_value;
				_data_->_tmp66_ = _g_object_ref0 (g_value_get_object (&_data_->_tmp65_));
				_data_->_vala2_original = _data_->_tmp66_;
				_data_->_tmp67_ = gee_hash_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				_data_->_vala2_copy = _data_->_tmp67_;
				{
					_data_->_tmp68_ = _data_->_vala2_original;
					_data_->_tmp69_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp68_);
					_data_->_vala2__e_it = _data_->_tmp69_;
					while (TRUE) {
						_data_->_tmp70_ = _data_->_vala2__e_it;
						if (!gee_iterator_next (_data_->_tmp70_)) {
							break;
						}
						_data_->_tmp71_ = _data_->_vala2__e_it;
						_data_->_tmp72_ = gee_iterator_get (_data_->_tmp71_);
						_data_->_vala2_e = (FolksPhoneFieldDetails*) _data_->_tmp72_;
						_data_->_tmp74_ = _data_->_vala2_e;
						_data_->_tmp75_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp74_);
						_data_->_tmp76_ = _data_->_tmp75_;
						if (((const gchar*) _data_->_tmp76_) != NULL) {
							_data_->_tmp77_ = _data_->_vala2_e;
							_data_->_tmp78_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp77_);
							_data_->_tmp79_ = _data_->_tmp78_;
							_data_->_tmp73_ = g_strcmp0 ((const gchar*) _data_->_tmp79_, "") != 0;
						} else {
							_data_->_tmp73_ = FALSE;
						}
						if (_data_->_tmp73_) {
							_data_->_tmp80_ = _data_->_vala2_copy;
							_data_->_tmp81_ = _data_->_vala2_e;
							_data_->_tmp82_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp81_);
							_data_->_tmp83_ = _data_->_tmp82_;
							_data_->_tmp84_ = _data_->_vala2_e;
							_data_->_tmp85_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _data_->_tmp84_);
							_data_->_tmp86_ = _data_->_tmp85_;
							_data_->_tmp87_ = folks_phone_field_details_new ((const gchar*) _data_->_tmp83_, _data_->_tmp86_);
							_data_->_tmp88_ = _data_->_tmp87_;
							gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp80_, _data_->_tmp88_);
							_g_object_unref0 (_data_->_tmp88_);
						}
						_g_object_unref0 (_data_->_vala2_e);
					}
					_g_object_unref0 (_data_->_vala2__e_it);
				}
				_data_->_tmp89_ = _data_->_vala2_copy;
				_data_->_state_ = 15;
				folks_phone_details_change_phone_numbers (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_PHONE_DETAILS, FolksPhoneDetails), (GeeSet*) _data_->_tmp89_, contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_15:
				folks_phone_details_change_phone_numbers_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_PHONE_DETAILS, FolksPhoneDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						_g_object_unref0 (_data_->_vala2_copy);
						_g_object_unref0 (_data_->_vala2_original);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->_vala2_copy);
						_g_object_unref0 (_data_->_vala2_original);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->_vala2_copy);
				_g_object_unref0 (_data_->_vala2_original);
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label15) ? _tmp1_label15 : (_tmp1_label15 = g_quark_from_static_string ("postal-addresses")))) {
		switch (0) {
			default:
			{
				_data_->_tmp90_ = _data_->new_value;
				_data_->_tmp91_ = _g_object_ref0 (g_value_get_object (&_data_->_tmp90_));
				_data_->_vala3_original = _data_->_tmp91_;
				_data_->_tmp92_ = gee_hash_set_new (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				_data_->_vala3_copy = _data_->_tmp92_;
				{
					_data_->_tmp93_ = _data_->_vala3_original;
					_data_->_tmp94_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp93_);
					_data_->_vala3__e_it = _data_->_tmp94_;
					while (TRUE) {
						_data_->_tmp95_ = _data_->_vala3__e_it;
						if (!gee_iterator_next (_data_->_tmp95_)) {
							break;
						}
						_data_->_tmp96_ = _data_->_vala3__e_it;
						_data_->_tmp97_ = gee_iterator_get (_data_->_tmp96_);
						_data_->_vala3_e = (FolksPostalAddressFieldDetails*) _data_->_tmp97_;
						_data_->_tmp99_ = _data_->_vala3_e;
						_data_->_tmp100_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp99_);
						_data_->_tmp101_ = _data_->_tmp100_;
						if (((FolksPostalAddress*) _data_->_tmp101_) != NULL) {
							_data_->_tmp102_ = _data_->_vala3_e;
							_data_->_tmp103_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp102_);
							_data_->_tmp104_ = _data_->_tmp103_;
							_data_->_tmp98_ = !folks_postal_address_is_empty ((FolksPostalAddress*) _data_->_tmp104_);
						} else {
							_data_->_tmp98_ = FALSE;
						}
						if (_data_->_tmp98_) {
							_data_->_tmp105_ = _data_->_vala3_copy;
							_data_->_tmp106_ = _data_->_vala3_e;
							_data_->_tmp107_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp106_);
							_data_->_tmp108_ = _data_->_tmp107_;
							_data_->_tmp109_ = _data_->_vala3_e;
							_data_->_tmp110_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _data_->_tmp109_);
							_data_->_tmp111_ = _data_->_tmp110_;
							_data_->_tmp112_ = folks_postal_address_field_details_new ((FolksPostalAddress*) _data_->_tmp108_, _data_->_tmp111_);
							_data_->_tmp113_ = _data_->_tmp112_;
							gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp105_, _data_->_tmp113_);
							_g_object_unref0 (_data_->_tmp113_);
						}
						_g_object_unref0 (_data_->_vala3_e);
					}
					_g_object_unref0 (_data_->_vala3__e_it);
				}
				_data_->_tmp114_ = _data_->_vala3_copy;
				_data_->_state_ = 16;
				folks_postal_address_details_change_postal_addresses (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetails), (GeeSet*) _data_->_tmp114_, contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_16:
				folks_postal_address_details_change_postal_addresses_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						_g_object_unref0 (_data_->_vala3_copy);
						_g_object_unref0 (_data_->_vala3_original);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->_vala3_copy);
						_g_object_unref0 (_data_->_vala3_original);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->_vala3_copy);
				_g_object_unref0 (_data_->_vala3_original);
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label16) ? _tmp1_label16 : (_tmp1_label16 = g_quark_from_static_string ("roles")))) {
		switch (0) {
			default:
			{
				_data_->_tmp115_ = _data_->new_value;
				_data_->_tmp116_ = _g_object_ref0 (g_value_get_object (&_data_->_tmp115_));
				_data_->_vala4_original = _data_->_tmp116_;
				_data_->_tmp117_ = gee_hash_set_new (FOLKS_TYPE_ROLE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				_data_->_vala4_copy = _data_->_tmp117_;
				{
					_data_->_tmp118_ = _data_->_vala4_original;
					_data_->_tmp119_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp118_);
					_data_->_vala4__e_it = _data_->_tmp119_;
					while (TRUE) {
						_data_->_tmp120_ = _data_->_vala4__e_it;
						if (!gee_iterator_next (_data_->_tmp120_)) {
							break;
						}
						_data_->_tmp121_ = _data_->_vala4__e_it;
						_data_->_tmp122_ = gee_iterator_get (_data_->_tmp121_);
						_data_->_vala4_e = (FolksRoleFieldDetails*) _data_->_tmp122_;
						_data_->_tmp124_ = _data_->_vala4_e;
						_data_->_tmp125_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp124_);
						_data_->_tmp126_ = _data_->_tmp125_;
						if (((FolksRole*) _data_->_tmp126_) != NULL) {
							_data_->_tmp127_ = _data_->_vala4_e;
							_data_->_tmp128_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp127_);
							_data_->_tmp129_ = _data_->_tmp128_;
							_data_->_tmp123_ = !folks_role_is_empty ((FolksRole*) _data_->_tmp129_);
						} else {
							_data_->_tmp123_ = FALSE;
						}
						if (_data_->_tmp123_) {
							_data_->_tmp130_ = _data_->_vala4_copy;
							_data_->_tmp131_ = _data_->_vala4_e;
							_data_->_tmp132_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp131_);
							_data_->_tmp133_ = _data_->_tmp132_;
							_data_->_tmp134_ = _data_->_vala4_e;
							_data_->_tmp135_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _data_->_tmp134_);
							_data_->_tmp136_ = _data_->_tmp135_;
							_data_->_tmp137_ = folks_role_field_details_new ((FolksRole*) _data_->_tmp133_, _data_->_tmp136_);
							_data_->_tmp138_ = _data_->_tmp137_;
							gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp130_, _data_->_tmp138_);
							_g_object_unref0 (_data_->_tmp138_);
						}
						_g_object_unref0 (_data_->_vala4_e);
					}
					_g_object_unref0 (_data_->_vala4__e_it);
				}
				_data_->_tmp139_ = _data_->_vala4_copy;
				_data_->_state_ = 17;
				folks_role_details_change_roles (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_ROLE_DETAILS, FolksRoleDetails), (GeeSet*) _data_->_tmp139_, contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_17:
				folks_role_details_change_roles_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_ROLE_DETAILS, FolksRoleDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						_g_object_unref0 (_data_->_vala4_copy);
						_g_object_unref0 (_data_->_vala4_original);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->_vala4_copy);
						_g_object_unref0 (_data_->_vala4_original);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->_vala4_copy);
				_g_object_unref0 (_data_->_vala4_original);
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label17) ? _tmp1_label17 : (_tmp1_label17 = g_quark_from_static_string ("urls")))) {
		switch (0) {
			default:
			{
				_data_->_tmp140_ = _data_->new_value;
				_data_->_tmp141_ = _g_object_ref0 (g_value_get_object (&_data_->_tmp140_));
				_data_->_vala5_original = _data_->_tmp141_;
				_data_->_tmp142_ = gee_hash_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				_data_->_vala5_copy = _data_->_tmp142_;
				{
					_data_->_tmp143_ = _data_->_vala5_original;
					_data_->_tmp144_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp143_);
					_data_->_vala5__e_it = _data_->_tmp144_;
					while (TRUE) {
						_data_->_tmp145_ = _data_->_vala5__e_it;
						if (!gee_iterator_next (_data_->_tmp145_)) {
							break;
						}
						_data_->_tmp146_ = _data_->_vala5__e_it;
						_data_->_tmp147_ = gee_iterator_get (_data_->_tmp146_);
						_data_->_vala5_e = (FolksUrlFieldDetails*) _data_->_tmp147_;
						_data_->_tmp149_ = _data_->_vala5_e;
						_data_->_tmp150_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp149_);
						_data_->_tmp151_ = _data_->_tmp150_;
						if (((const gchar*) _data_->_tmp151_) != NULL) {
							_data_->_tmp152_ = _data_->_vala5_e;
							_data_->_tmp153_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp152_);
							_data_->_tmp154_ = _data_->_tmp153_;
							_data_->_tmp148_ = g_strcmp0 ((const gchar*) _data_->_tmp154_, "") != 0;
						} else {
							_data_->_tmp148_ = FALSE;
						}
						if (_data_->_tmp148_) {
							_data_->_tmp155_ = _data_->_vala5_copy;
							_data_->_tmp156_ = _data_->_vala5_e;
							_data_->_tmp157_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _data_->_tmp156_);
							_data_->_tmp158_ = _data_->_tmp157_;
							_data_->_tmp159_ = _data_->_vala5_e;
							_data_->_tmp160_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _data_->_tmp159_);
							_data_->_tmp161_ = _data_->_tmp160_;
							_data_->_tmp162_ = folks_url_field_details_new ((const gchar*) _data_->_tmp158_, _data_->_tmp161_);
							_data_->_tmp163_ = _data_->_tmp162_;
							gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp155_, _data_->_tmp163_);
							_g_object_unref0 (_data_->_tmp163_);
						}
						_g_object_unref0 (_data_->_vala5_e);
					}
					_g_object_unref0 (_data_->_vala5__e_it);
				}
				_data_->_tmp164_ = _data_->_vala5_copy;
				_data_->_state_ = 18;
				folks_url_details_change_urls (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_URL_DETAILS, FolksUrlDetails), (GeeSet*) _data_->_tmp164_, contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_18:
				folks_url_details_change_urls_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_URL_DETAILS, FolksUrlDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						_g_object_unref0 (_data_->_vala5_copy);
						_g_object_unref0 (_data_->_vala5_original);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->_vala5_copy);
						_g_object_unref0 (_data_->_vala5_original);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->_vala5_copy);
				_g_object_unref0 (_data_->_vala5_original);
				break;
			}
		}
	} else if (_data_->_tmp2_ == ((0 != _tmp1_label18) ? _tmp1_label18 : (_tmp1_label18 = g_quark_from_static_string ("web-service-addresses")))) {
		switch (0) {
			default:
			{
				_data_->_tmp165_ = _data_->new_value;
				_data_->_state_ = 19;
				folks_web_service_details_change_web_service_addresses (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_WEB_SERVICE_DETAILS, FolksWebServiceDetails), g_value_get_object (&_data_->_tmp165_), contacts_fake_persona_set_persona_property_ready, _data_);
				return FALSE;
				_state_19:
				folks_web_service_details_change_web_service_addresses_finish (G_TYPE_CHECK_INSTANCE_CAST (_data_->persona, FOLKS_TYPE_WEB_SERVICE_DETAILS, FolksWebServiceDetails), _data_->_res_, &_data_->_inner_error0_);
				if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
					if (((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || (_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) || (_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR)) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), _data_->_inner_error0_->code);
						g_clear_error (&_data_->_inner_error0_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				break;
			}
		}
	} else {
		switch (0) {
			default:
			{
				g_critical ("contacts-fake-persona-store.vala:526: Unknown property '%s' in Contact" \
".set_persona_property().", _data_->property_name);
				break;
			}
		}
	}
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

FolksPersona*
contacts_fake_persona_get_real_persona (ContactsFakePersona* self)
{
	FolksPersona* result;
	FolksPersona* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_real_persona;
	result = _tmp0_;
	return result;
}

void
contacts_fake_persona_set_real_persona (ContactsFakePersona* self,
                                        FolksPersona* value)
{
	FolksPersona* old_value;
	g_return_if_fail (self != NULL);
	old_value = contacts_fake_persona_get_real_persona (self);
	if (old_value != value) {
		self->priv->_real_persona = value;
		g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_REAL_PERSONA_PROPERTY]);
	}
}

static gchar**
contacts_fake_persona_real_get_linkable_properties (FolksPersona* base,
                                                    gint* result_length1)
{
	gchar** result;
	ContactsFakePersona* self;
	gchar** _tmp0_;
	gint _tmp0__length1;
	self = (ContactsFakePersona*) base;
	_tmp0_ = CONTACTS_FAKE_PERSONA__linkable_properties;
	_tmp0__length1 = G_N_ELEMENTS (CONTACTS_FAKE_PERSONA__linkable_properties);
	if (result_length1) {
		*result_length1 = _tmp0__length1;
	}
	result = _tmp0_;
	return result;
}

static gchar**
contacts_fake_persona_real_get_writeable_properties (FolksPersona* base,
                                                     gint* result_length1)
{
	gchar** result;
	ContactsFakePersona* self;
	gchar** _tmp0_;
	gint _tmp0__length1;
	gchar** _tmp1_;
	gint _tmp1__length1;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->_writeable_properties;
	_tmp0__length1 = self->priv->_writeable_properties_length1;
	_tmp1_ = _tmp0_;
	_tmp1__length1 = _tmp0__length1;
	if (result_length1) {
		*result_length1 = _tmp1__length1;
	}
	result = _tmp1_;
	return result;
}

static GLoadableIcon*
contacts_fake_persona_real_get_avatar (FolksAvatarDetails* base)
{
	GLoadableIcon* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GLoadableIcon* _tmp2_ = NULL;
	GValue* _tmp3_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "avatar");
	value = (GValue*) _tmp1_;
	_tmp3_ = value;
	if (((gpointer) _tmp3_) != NULL) {
		GValue* _tmp4_;
		_tmp4_ = value;
		_tmp2_ = g_value_get_object (_tmp4_);
	} else {
		_tmp2_ = NULL;
	}
	result = _tmp2_;
	return result;
}

static void
contacts_fake_persona_real_set_avatar (FolksAvatarDetails* base,
                                       GLoadableIcon* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("avatar");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, g_loadable_icon_get_type ());
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY]);
}

static const gchar*
contacts_fake_persona_real_get_full_name (FolksNameDetails* base)
{
	const gchar* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp3_;
	const gchar* _tmp4_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "full-name");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		result = "";
		return result;
	}
	_tmp3_ = value;
	_tmp4_ = g_value_get_string (_tmp3_);
	result = _tmp4_;
	return result;
}

static void
contacts_fake_persona_real_set_full_name (FolksNameDetails* base,
                                          const gchar* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("full-name");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, G_TYPE_STRING);
	g_value_set_string (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY]);
}

static const gchar*
contacts_fake_persona_real_get_nickname (FolksNameDetails* base)
{
	const gchar* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp3_;
	const gchar* _tmp4_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "nickname");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		result = "";
		return result;
	}
	_tmp3_ = value;
	_tmp4_ = g_value_get_string (_tmp3_);
	result = _tmp4_;
	return result;
}

static void
contacts_fake_persona_real_set_nickname (FolksNameDetails* base,
                                         const gchar* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("nickname");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, G_TYPE_STRING);
	g_value_set_string (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY]);
}

static FolksStructuredName*
contacts_fake_persona_real_get_structured_name (FolksNameDetails* base)
{
	FolksStructuredName* result;
	ContactsFakePersona* self;
	self = (ContactsFakePersona*) base;
	result = NULL;
	return result;
}

static void
contacts_fake_persona_real_set_structured_name (FolksNameDetails* base,
                                                FolksStructuredName* value)
{
	ContactsFakePersona* self;
	self = (ContactsFakePersona*) base;
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY]);
}

static void
_contacts_fake_persona_phone_numbers____lambda7_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "phone-numbers");
}

static void
__contacts_fake_persona_phone_numbers____lambda7__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                                  gpointer self)
{
	_contacts_fake_persona_phone_numbers____lambda7_ ((ContactsFakePersona*) self);
}

static GValue*
_g_value_dup (GValue* self)
{
	return g_boxed_copy (G_TYPE_VALUE, self);
}

static gpointer
__g_value_dup0 (gpointer self)
{
	return self ? _g_value_dup (self) : NULL;
}

static GeeSet*
contacts_fake_persona_real_get_phone_numbers (FolksPhoneDetails* base)
{
	GeeSet* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp14_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "phone-numbers");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashSet* set = NULL;
		ContactsFakeHashSet* _tmp4_;
		ContactsFakeHashSet* _tmp5_;
		ContactsFakeHashSet* _tmp6_;
		GHashTable* _tmp7_;
		gchar* _tmp8_;
		GValue _tmp9_;
		GValue _tmp10_;
		GValue* _tmp11_;
		GHashTable* _tmp12_;
		gconstpointer _tmp13_;
		g_value_init (&_tmp3_, GEE_TYPE_SET);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp5_);
		_tmp6_ = set;
		g_signal_connect_object (_tmp6_, "changed", (GCallback) __contacts_fake_persona_phone_numbers____lambda7__contacts_fake_hash_set_changed, self, 0);
		_tmp7_ = self->priv->properties;
		_tmp8_ = g_strdup ("phone-numbers");
		_tmp9_ = new_value;
		_tmp10_ = _tmp9_;
		_tmp11_ = __g_value_dup0 (&_tmp10_);
		g_hash_table_insert (_tmp7_, _tmp8_, _tmp11_);
		_tmp12_ = self->priv->properties;
		_tmp13_ = g_hash_table_lookup (_tmp12_, "phone-numbers");
		value = (GValue*) _tmp13_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp14_ = value;
	result = g_value_get_object (_tmp14_);
	return result;
}

static void
contacts_fake_persona_real_set_phone_numbers (FolksPhoneDetails* base,
                                              GeeSet* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("phone-numbers");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_SET);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY]);
}

static void
_contacts_fake_persona_urls____lambda10_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "urls");
}

static void
__contacts_fake_persona_urls____lambda10__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                          gpointer self)
{
	_contacts_fake_persona_urls____lambda10_ ((ContactsFakePersona*) self);
}

static GeeSet*
contacts_fake_persona_real_get_urls (FolksUrlDetails* base)
{
	GeeSet* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp13_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "urls");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashSet* set = NULL;
		ContactsFakeHashSet* _tmp4_;
		ContactsFakeHashSet* _tmp5_;
		ContactsFakeHashSet* _tmp6_;
		GHashTable* _tmp7_;
		gchar* _tmp8_;
		GValue _tmp9_;
		GValue _tmp10_;
		GValue* _tmp11_;
		GValue _tmp12_;
		g_value_init (&_tmp3_, GEE_TYPE_SET);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp5_);
		_tmp6_ = set;
		g_signal_connect_object (_tmp6_, "changed", (GCallback) __contacts_fake_persona_urls____lambda10__contacts_fake_hash_set_changed, self, 0);
		_tmp7_ = self->priv->properties;
		_tmp8_ = g_strdup ("urls");
		_tmp9_ = new_value;
		_tmp10_ = _tmp9_;
		_tmp11_ = __g_value_dup0 (&_tmp10_);
		g_hash_table_insert (_tmp7_, _tmp8_, _tmp11_);
		_tmp12_ = new_value;
		value = &_tmp12_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp13_ = value;
	result = g_value_get_object (_tmp13_);
	return result;
}

static void
contacts_fake_persona_real_set_urls (FolksUrlDetails* base,
                                     GeeSet* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("urls");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_SET);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_URLS_PROPERTY]);
}

static void
_contacts_fake_persona_postal_addresses____lambda8_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "postal-addresses");
}

static void
__contacts_fake_persona_postal_addresses____lambda8__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                                     gpointer self)
{
	_contacts_fake_persona_postal_addresses____lambda8_ ((ContactsFakePersona*) self);
}

static GeeSet*
contacts_fake_persona_real_get_postal_addresses (FolksPostalAddressDetails* base)
{
	GeeSet* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp13_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "postal-addresses");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashSet* set = NULL;
		ContactsFakeHashSet* _tmp4_;
		ContactsFakeHashSet* _tmp5_;
		ContactsFakeHashSet* _tmp6_;
		GHashTable* _tmp7_;
		gchar* _tmp8_;
		GValue _tmp9_;
		GValue _tmp10_;
		GValue* _tmp11_;
		GValue _tmp12_;
		g_value_init (&_tmp3_, GEE_TYPE_SET);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_set_new (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp5_);
		_tmp6_ = set;
		g_signal_connect_object (_tmp6_, "changed", (GCallback) __contacts_fake_persona_postal_addresses____lambda8__contacts_fake_hash_set_changed, self, 0);
		_tmp7_ = self->priv->properties;
		_tmp8_ = g_strdup ("postal-addresses");
		_tmp9_ = new_value;
		_tmp10_ = _tmp9_;
		_tmp11_ = __g_value_dup0 (&_tmp10_);
		g_hash_table_insert (_tmp7_, _tmp8_, _tmp11_);
		_tmp12_ = new_value;
		value = &_tmp12_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp13_ = value;
	result = g_value_get_object (_tmp13_);
	return result;
}

static void
contacts_fake_persona_real_set_postal_addresses (FolksPostalAddressDetails* base,
                                                 GeeSet* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("postal-addresses");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_SET);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY]);
}

static void
_contacts_fake_persona_notes____lambda6_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "notes");
}

static void
__contacts_fake_persona_notes____lambda6__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                          gpointer self)
{
	_contacts_fake_persona_notes____lambda6_ ((ContactsFakePersona*) self);
}

static GeeSet*
contacts_fake_persona_real_get_notes (FolksNoteDetails* base)
{
	GeeSet* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp13_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "notes");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashSet* set = NULL;
		ContactsFakeHashSet* _tmp4_;
		ContactsFakeHashSet* _tmp5_;
		ContactsFakeHashSet* _tmp6_;
		GHashTable* _tmp7_;
		gchar* _tmp8_;
		GValue _tmp9_;
		GValue _tmp10_;
		GValue* _tmp11_;
		GValue _tmp12_;
		g_value_init (&_tmp3_, GEE_TYPE_SET);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_set_new (FOLKS_TYPE_NOTE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp5_);
		_tmp6_ = set;
		g_signal_connect_object (_tmp6_, "changed", (GCallback) __contacts_fake_persona_notes____lambda6__contacts_fake_hash_set_changed, self, 0);
		_tmp7_ = self->priv->properties;
		_tmp8_ = g_strdup ("notes");
		_tmp9_ = new_value;
		_tmp10_ = _tmp9_;
		_tmp11_ = __g_value_dup0 (&_tmp10_);
		g_hash_table_insert (_tmp7_, _tmp8_, _tmp11_);
		_tmp12_ = new_value;
		value = &_tmp12_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp13_ = value;
	result = g_value_get_object (_tmp13_);
	return result;
}

static void
contacts_fake_persona_real_set_notes (FolksNoteDetails* base,
                                      GeeSet* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("notes");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_SET);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NOTES_PROPERTY]);
}

static void
_contacts_fake_persona_roles____lambda9_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "roles");
}

static void
__contacts_fake_persona_roles____lambda9__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                          gpointer self)
{
	_contacts_fake_persona_roles____lambda9_ ((ContactsFakePersona*) self);
}

static GeeSet*
contacts_fake_persona_real_get_roles (FolksRoleDetails* base)
{
	GeeSet* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp13_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "roles");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashSet* set = NULL;
		ContactsFakeHashSet* _tmp4_;
		ContactsFakeHashSet* _tmp5_;
		ContactsFakeHashSet* _tmp6_;
		GHashTable* _tmp7_;
		gchar* _tmp8_;
		GValue _tmp9_;
		GValue _tmp10_;
		GValue* _tmp11_;
		GValue _tmp12_;
		g_value_init (&_tmp3_, GEE_TYPE_SET);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_set_new (FOLKS_TYPE_ROLE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp5_);
		_tmp6_ = set;
		g_signal_connect_object (_tmp6_, "changed", (GCallback) __contacts_fake_persona_roles____lambda9__contacts_fake_hash_set_changed, self, 0);
		_tmp7_ = self->priv->properties;
		_tmp8_ = g_strdup ("roles");
		_tmp9_ = new_value;
		_tmp10_ = _tmp9_;
		_tmp11_ = __g_value_dup0 (&_tmp10_);
		g_hash_table_insert (_tmp7_, _tmp8_, _tmp11_);
		_tmp12_ = new_value;
		value = &_tmp12_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp13_ = value;
	result = g_value_get_object (_tmp13_);
	return result;
}

static void
contacts_fake_persona_real_set_roles (FolksRoleDetails* base,
                                      GeeSet* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("roles");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_SET);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_ROLES_PROPERTY]);
}

static GDateTime*
contacts_fake_persona_real_get_birthday (FolksBirthdayDetails* base)
{
	GDateTime* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp3_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "birthday");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		result = NULL;
		return result;
	}
	_tmp3_ = value;
	result = g_value_get_boxed (_tmp3_);
	return result;
}

static void
contacts_fake_persona_real_set_birthday (FolksBirthdayDetails* base,
                                         GDateTime* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("birthday");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, G_TYPE_DATE_TIME);
	g_value_set_boxed (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY]);
}

static const gchar*
contacts_fake_persona_real_get_calendar_event_id (FolksBirthdayDetails* base)
{
	const gchar* result;
	ContactsFakePersona* self;
	self = (ContactsFakePersona*) base;
	result = NULL;
	return result;
}

static void
contacts_fake_persona_real_set_calendar_event_id (FolksBirthdayDetails* base,
                                                  const gchar* value)
{
	ContactsFakePersona* self;
	self = (ContactsFakePersona*) base;
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY]);
}

static void
_contacts_fake_persona_im_addresses____lambda5_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "im-addresses");
}

static void
__contacts_fake_persona_im_addresses____lambda5__contacts_fake_hash_multi_map_changed (ContactsFakeHashMultiMap* _sender,
                                                                                       gpointer self)
{
	_contacts_fake_persona_im_addresses____lambda5_ ((ContactsFakePersona*) self);
}

static GeeMultiMap*
contacts_fake_persona_real_get_im_addresses (FolksImDetails* base)
{
	GeeMultiMap* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp13_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "im-addresses");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashMultiMap* set = NULL;
		ContactsFakeHashMultiMap* _tmp4_;
		ContactsFakeHashMultiMap* _tmp5_;
		GHashTable* _tmp6_;
		gchar* _tmp7_;
		GValue _tmp8_;
		GValue _tmp9_;
		GValue* _tmp10_;
		ContactsFakeHashMultiMap* _tmp11_;
		GValue _tmp12_;
		g_value_init (&_tmp3_, GEE_TYPE_MULTI_MAP);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp5_);
		_tmp6_ = self->priv->properties;
		_tmp7_ = g_strdup ("im-addresses");
		_tmp8_ = new_value;
		_tmp9_ = _tmp8_;
		_tmp10_ = __g_value_dup0 (&_tmp9_);
		g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
		_tmp11_ = set;
		g_signal_connect_object (_tmp11_, "changed", (GCallback) __contacts_fake_persona_im_addresses____lambda5__contacts_fake_hash_multi_map_changed, self, 0);
		_tmp12_ = new_value;
		value = &_tmp12_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp13_ = value;
	result = g_value_get_object (_tmp13_);
	return result;
}

static void
contacts_fake_persona_real_set_im_addresses (FolksImDetails* base,
                                             GeeMultiMap* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("im-addresses");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_MULTI_MAP);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY]);
}

static void
_contacts_fake_persona_email_addresses____lambda4_ (ContactsFakePersona* self)
{
	g_object_notify ((GObject*) self, "email-addresses");
}

static void
__contacts_fake_persona_email_addresses____lambda4__contacts_fake_hash_set_changed (ContactsFakeHashSet* _sender,
                                                                                    gpointer self)
{
	_contacts_fake_persona_email_addresses____lambda4_ ((ContactsFakePersona*) self);
}

static GeeSet*
contacts_fake_persona_real_get_email_addresses (FolksEmailDetails* base)
{
	GeeSet* result;
	ContactsFakePersona* self;
	GValue* value = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	GValue* _tmp2_;
	GValue* _tmp13_;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_hash_table_lookup (_tmp0_, "email-addresses");
	value = (GValue*) _tmp1_;
	_tmp2_ = value;
	if (((gpointer) _tmp2_) == NULL) {
		GValue new_value = {0};
		GValue _tmp3_ = {0};
		ContactsFakeHashSet* set = NULL;
		ContactsFakeHashSet* _tmp4_;
		ContactsFakeHashSet* _tmp5_;
		ContactsFakeHashSet* _tmp6_;
		GHashTable* _tmp7_;
		gchar* _tmp8_;
		GValue _tmp9_;
		GValue _tmp10_;
		GValue* _tmp11_;
		GValue _tmp12_;
		g_value_init (&_tmp3_, GEE_TYPE_SET);
		new_value = _tmp3_;
		_tmp4_ = contacts_fake_hash_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
		set = _tmp4_;
		_tmp5_ = set;
		g_signal_connect_object (_tmp5_, "changed", (GCallback) __contacts_fake_persona_email_addresses____lambda4__contacts_fake_hash_set_changed, self, 0);
		_tmp6_ = set;
		g_value_set_object (&new_value, (GObject*) _tmp6_);
		_tmp7_ = self->priv->properties;
		_tmp8_ = g_strdup ("email-addresses");
		_tmp9_ = new_value;
		_tmp10_ = _tmp9_;
		_tmp11_ = __g_value_dup0 (&_tmp10_);
		g_hash_table_insert (_tmp7_, _tmp8_, _tmp11_);
		_tmp12_ = new_value;
		value = &_tmp12_;
		_g_object_unref0 (set);
		G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
	}
	_tmp13_ = value;
	result = g_value_get_object (_tmp13_);
	return result;
}

static void
contacts_fake_persona_real_set_email_addresses (FolksEmailDetails* base,
                                                GeeSet* value)
{
	ContactsFakePersona* self;
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GValue* _tmp2_ = NULL;
	self = (ContactsFakePersona*) base;
	_tmp0_ = self->priv->properties;
	_tmp1_ = g_strdup ("email-addresses");
	_tmp2_ = g_new0 (GValue, 1);
	g_value_init (_tmp2_, GEE_TYPE_SET);
	g_value_set_object (_tmp2_, value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
	g_object_notify_by_pspec ((GObject *) self, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY]);
}

static GObject *
contacts_fake_persona_constructor (GType type,
                                   guint n_construct_properties,
                                   GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	ContactsFakePersona * self;
	GeeArrayList* _tmp0_;
	parent_class = G_OBJECT_CLASS (contacts_fake_persona_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
	_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->_changed_properties);
	self->priv->_changed_properties = _tmp0_;
	return obj;
}

static void
contacts_fake_persona_class_init (ContactsFakePersonaClass * klass,
                                  gpointer klass_data)
{
	contacts_fake_persona_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ContactsFakePersona_private_offset);
	FOLKS_PERSONA_CLASS (klass)->get_linkable_properties = contacts_fake_persona_real_get_linkable_properties;
	FOLKS_PERSONA_CLASS (klass)->get_writeable_properties = contacts_fake_persona_real_get_writeable_properties;
	G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_persona_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_contacts_fake_persona_set_property;
	G_OBJECT_CLASS (klass)->constructor = contacts_fake_persona_constructor;
	G_OBJECT_CLASS (klass)->finalize = contacts_fake_persona_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_REAL_PERSONA_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_REAL_PERSONA_PROPERTY] = g_param_spec_object ("real-persona", "real-persona", "real-persona", FOLKS_TYPE_PERSONA, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY] = g_param_spec_boxed ("linkable-properties", "linkable-properties", "linkable-properties", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY] = g_param_spec_boxed ("writeable-properties", "writeable-properties", "writeable-properties", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY] = g_param_spec_object ("avatar", "avatar", "avatar", g_loadable_icon_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY] = g_param_spec_string ("full-name", "full-name", "full-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY] = g_param_spec_string ("nickname", "nickname", "nickname", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY] = g_param_spec_object ("structured-name", "structured-name", "structured-name", FOLKS_TYPE_STRUCTURED_NAME, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY] = g_param_spec_object ("phone-numbers", "phone-numbers", "phone-numbers", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_URLS_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_URLS_PROPERTY] = g_param_spec_object ("urls", "urls", "urls", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY] = g_param_spec_object ("postal-addresses", "postal-addresses", "postal-addresses", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_NOTES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NOTES_PROPERTY] = g_param_spec_object ("notes", "notes", "notes", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_ROLES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_ROLES_PROPERTY] = g_param_spec_object ("roles", "roles", "roles", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY] = g_param_spec_boxed ("birthday", "birthday", "birthday", G_TYPE_DATE_TIME, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY] = g_param_spec_string ("calendar-event-id", "calendar-event-id", "calendar-event-id", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY] = g_param_spec_object ("im-addresses", "im-addresses", "im-addresses", GEE_TYPE_MULTI_MAP, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY, contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY] = g_param_spec_object ("email-addresses", "email-addresses", "email-addresses", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
contacts_fake_persona_folks_avatar_details_interface_init (FolksAvatarDetailsIface * iface,
                                                           gpointer iface_data)
{
	contacts_fake_persona_folks_avatar_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->change_avatar = (void (*) (FolksAvatarDetails*, GLoadableIcon*, GAsyncReadyCallback, gpointer)) contacts_fake_persona_real_change_avatar;
	iface->change_avatar_finish = (void (*) (FolksAvatarDetails*, GAsyncResult*, GError**)) contacts_fake_persona_change_avatar_finish;
	iface->get_avatar = contacts_fake_persona_real_get_avatar;
	iface->set_avatar = contacts_fake_persona_real_set_avatar;
}

static void
contacts_fake_persona_folks_birthday_details_interface_init (FolksBirthdayDetailsIface * iface,
                                                             gpointer iface_data)
{
	contacts_fake_persona_folks_birthday_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_birthday = contacts_fake_persona_real_get_birthday;
	iface->set_birthday = contacts_fake_persona_real_set_birthday;
	iface->get_calendar_event_id = contacts_fake_persona_real_get_calendar_event_id;
	iface->set_calendar_event_id = contacts_fake_persona_real_set_calendar_event_id;
}

static void
contacts_fake_persona_folks_email_details_interface_init (FolksEmailDetailsIface * iface,
                                                          gpointer iface_data)
{
	contacts_fake_persona_folks_email_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_email_addresses = contacts_fake_persona_real_get_email_addresses;
	iface->set_email_addresses = contacts_fake_persona_real_set_email_addresses;
}

static void
contacts_fake_persona_folks_im_details_interface_init (FolksImDetailsIface * iface,
                                                       gpointer iface_data)
{
	contacts_fake_persona_folks_im_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_im_addresses = contacts_fake_persona_real_get_im_addresses;
	iface->set_im_addresses = contacts_fake_persona_real_set_im_addresses;
}

static void
contacts_fake_persona_folks_name_details_interface_init (FolksNameDetailsIface * iface,
                                                         gpointer iface_data)
{
	contacts_fake_persona_folks_name_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_full_name = contacts_fake_persona_real_get_full_name;
	iface->set_full_name = contacts_fake_persona_real_set_full_name;
	iface->get_nickname = contacts_fake_persona_real_get_nickname;
	iface->set_nickname = contacts_fake_persona_real_set_nickname;
	iface->get_structured_name = contacts_fake_persona_real_get_structured_name;
	iface->set_structured_name = contacts_fake_persona_real_set_structured_name;
}

static void
contacts_fake_persona_folks_note_details_interface_init (FolksNoteDetailsIface * iface,
                                                         gpointer iface_data)
{
	contacts_fake_persona_folks_note_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_notes = contacts_fake_persona_real_get_notes;
	iface->set_notes = contacts_fake_persona_real_set_notes;
}

static void
contacts_fake_persona_folks_phone_details_interface_init (FolksPhoneDetailsIface * iface,
                                                          gpointer iface_data)
{
	contacts_fake_persona_folks_phone_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_phone_numbers = contacts_fake_persona_real_get_phone_numbers;
	iface->set_phone_numbers = contacts_fake_persona_real_set_phone_numbers;
}

static void
contacts_fake_persona_folks_role_details_interface_init (FolksRoleDetailsIface * iface,
                                                         gpointer iface_data)
{
	contacts_fake_persona_folks_role_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_roles = contacts_fake_persona_real_get_roles;
	iface->set_roles = contacts_fake_persona_real_set_roles;
}

static void
contacts_fake_persona_folks_url_details_interface_init (FolksUrlDetailsIface * iface,
                                                        gpointer iface_data)
{
	contacts_fake_persona_folks_url_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_urls = contacts_fake_persona_real_get_urls;
	iface->set_urls = contacts_fake_persona_real_set_urls;
}

static void
contacts_fake_persona_folks_postal_address_details_interface_init (FolksPostalAddressDetailsIface * iface,
                                                                   gpointer iface_data)
{
	contacts_fake_persona_folks_postal_address_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_postal_addresses = contacts_fake_persona_real_get_postal_addresses;
	iface->set_postal_addresses = contacts_fake_persona_real_set_postal_addresses;
}

static void
contacts_fake_persona_instance_init (ContactsFakePersona * self,
                                     gpointer klass)
{
	gchar** _tmp0_;
	self->priv = contacts_fake_persona_get_instance_private (self);
	self->priv->_real_persona = NULL;
	_tmp0_ = g_new0 (gchar*, 0 + 1);
	self->priv->_writeable_properties = _tmp0_;
	self->priv->_writeable_properties_length1 = 0;
	self->priv->__writeable_properties_size_ = self->priv->_writeable_properties_length1;
}

static void
contacts_fake_persona_finalize (GObject * obj)
{
	ContactsFakePersona * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
	_g_hash_table_unref0 (self->priv->properties);
	self->priv->_writeable_properties = (_vala_array_free (self->priv->_writeable_properties, self->priv->_writeable_properties_length1, (GDestroyNotify) g_free), NULL);
	_g_object_unref0 (self->priv->_changed_properties);
	G_OBJECT_CLASS (contacts_fake_persona_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
contacts_fake_persona_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ContactsFakePersonaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_persona_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContactsFakePersona), 0, (GInstanceInitFunc) contacts_fake_persona_instance_init, NULL };
	static const GInterfaceInfo folks_avatar_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_avatar_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_birthday_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_birthday_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_email_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_email_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_im_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_im_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_name_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_name_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_note_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_note_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_phone_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_phone_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_role_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_role_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_url_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_url_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	static const GInterfaceInfo folks_postal_address_details_info = { (GInterfaceInitFunc) contacts_fake_persona_folks_postal_address_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	GType contacts_fake_persona_type_id;
	contacts_fake_persona_type_id = g_type_register_static (FOLKS_TYPE_PERSONA, "ContactsFakePersona", &g_define_type_info, 0);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_AVATAR_DETAILS, &folks_avatar_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_BIRTHDAY_DETAILS, &folks_birthday_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_EMAIL_DETAILS, &folks_email_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_IM_DETAILS, &folks_im_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_NAME_DETAILS, &folks_name_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_NOTE_DETAILS, &folks_note_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_PHONE_DETAILS, &folks_phone_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_ROLE_DETAILS, &folks_role_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_URL_DETAILS, &folks_url_details_info);
	g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, &folks_postal_address_details_info);
	ContactsFakePersona_private_offset = g_type_add_instance_private (contacts_fake_persona_type_id, sizeof (ContactsFakePersonaPrivate));
	return contacts_fake_persona_type_id;
}

GType
contacts_fake_persona_get_type (void)
{
	static volatile gsize contacts_fake_persona_type_id__once = 0;
	if (g_once_init_enter (&contacts_fake_persona_type_id__once)) {
		GType contacts_fake_persona_type_id;
		contacts_fake_persona_type_id = contacts_fake_persona_get_type_once ();
		g_once_init_leave (&contacts_fake_persona_type_id__once, contacts_fake_persona_type_id);
	}
	return contacts_fake_persona_type_id__once;
}

static void
_vala_contacts_fake_persona_get_property (GObject * object,
                                          guint property_id,
                                          GValue * value,
                                          GParamSpec * pspec)
{
	ContactsFakePersona * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
	switch (property_id) {
		case CONTACTS_FAKE_PERSONA_REAL_PERSONA_PROPERTY:
		g_value_set_object (value, contacts_fake_persona_get_real_persona (self));
		break;
		case CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY:
		{
			int length;
			g_value_set_boxed (value, folks_persona_get_linkable_properties ((FolksPersona*) self, &length));
		}
		break;
		case CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY:
		{
			int length;
			g_value_set_boxed (value, folks_persona_get_writeable_properties ((FolksPersona*) self, &length));
		}
		break;
		case CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY:
		g_value_set_object (value, folks_avatar_details_get_avatar ((FolksAvatarDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY:
		g_value_set_string (value, folks_name_details_get_full_name ((FolksNameDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY:
		g_value_set_string (value, folks_name_details_get_nickname ((FolksNameDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY:
		g_value_set_object (value, folks_name_details_get_structured_name ((FolksNameDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY:
		g_value_set_object (value, folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_URLS_PROPERTY:
		g_value_set_object (value, folks_url_details_get_urls ((FolksUrlDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY:
		g_value_set_object (value, folks_postal_address_details_get_postal_addresses ((FolksPostalAddressDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_NOTES_PROPERTY:
		g_value_set_object (value, folks_note_details_get_notes ((FolksNoteDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_ROLES_PROPERTY:
		g_value_set_object (value, folks_role_details_get_roles ((FolksRoleDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY:
		g_value_set_boxed (value, folks_birthday_details_get_birthday ((FolksBirthdayDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY:
		g_value_set_string (value, folks_birthday_details_get_calendar_event_id ((FolksBirthdayDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY:
		g_value_set_object (value, folks_im_details_get_im_addresses ((FolksImDetails*) self));
		break;
		case CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY:
		g_value_set_object (value, folks_email_details_get_email_addresses ((FolksEmailDetails*) self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_contacts_fake_persona_set_property (GObject * object,
                                          guint property_id,
                                          const GValue * value,
                                          GParamSpec * pspec)
{
	ContactsFakePersona * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
	switch (property_id) {
		case CONTACTS_FAKE_PERSONA_REAL_PERSONA_PROPERTY:
		contacts_fake_persona_set_real_persona (self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY:
		folks_avatar_details_set_avatar ((FolksAvatarDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY:
		folks_name_details_set_full_name ((FolksNameDetails*) self, g_value_get_string (value));
		break;
		case CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY:
		folks_name_details_set_nickname ((FolksNameDetails*) self, g_value_get_string (value));
		break;
		case CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY:
		folks_name_details_set_structured_name ((FolksNameDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY:
		folks_phone_details_set_phone_numbers ((FolksPhoneDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_URLS_PROPERTY:
		folks_url_details_set_urls ((FolksUrlDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY:
		folks_postal_address_details_set_postal_addresses ((FolksPostalAddressDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_NOTES_PROPERTY:
		folks_note_details_set_notes ((FolksNoteDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_ROLES_PROPERTY:
		folks_role_details_set_roles ((FolksRoleDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY:
		folks_birthday_details_set_birthday ((FolksBirthdayDetails*) self, g_value_get_boxed (value));
		break;
		case CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY:
		folks_birthday_details_set_calendar_event_id ((FolksBirthdayDetails*) self, g_value_get_string (value));
		break;
		case CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY:
		folks_im_details_set_im_addresses ((FolksImDetails*) self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY:
		folks_email_details_set_email_addresses ((FolksEmailDetails*) self, g_value_get_object (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
contacts_fake_individual_get_instance_private (ContactsFakeIndividual* self)
{
	return G_STRUCT_MEMBER_P (self, ContactsFakeIndividual_private_offset);
}

ContactsFakeIndividual*
contacts_fake_individual_construct (GType object_type,
                                    GeeSet* personas)
{
	ContactsFakeIndividual * self = NULL;
	self = (ContactsFakeIndividual*) folks_individual_construct (object_type, personas);
	{
		GeeIterator* _p_it = NULL;
		GeeIterator* _tmp0_;
		_tmp0_ = gee_iterable_iterator ((GeeIterable*) personas);
		_p_it = _tmp0_;
		while (TRUE) {
			GeeIterator* _tmp1_;
			ContactsFakePersona* p = NULL;
			GeeIterator* _tmp2_;
			gpointer _tmp3_;
			gboolean _tmp4_ = FALSE;
			ContactsFakePersona* _tmp5_;
			_tmp1_ = _p_it;
			if (!gee_iterator_next (_tmp1_)) {
				break;
			}
			_tmp2_ = _p_it;
			_tmp3_ = gee_iterator_get (_tmp2_);
			p = (ContactsFakePersona*) _tmp3_;
			_tmp5_ = p;
			if (contacts_utils_persona_is_main ((FolksPersona*) _tmp5_)) {
				_tmp4_ = TRUE;
			} else {
				gint _tmp6_;
				gint _tmp7_;
				_tmp6_ = gee_collection_get_size ((GeeCollection*) personas);
				_tmp7_ = _tmp6_;
				_tmp4_ = _tmp7_ == 1;
			}
			if (_tmp4_) {
				ContactsFakePersona* _tmp8_;
				_tmp8_ = p;
				contacts_fake_individual_set_primary_persona (self, _tmp8_);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	return self;
}

ContactsFakeIndividual*
contacts_fake_individual_new (GeeSet* personas)
{
	return contacts_fake_individual_construct (CONTACTS_TYPE_FAKE_INDIVIDUAL, personas);
}

ContactsFakeIndividual*
contacts_fake_individual_construct_from_real (GType object_type,
                                              FolksIndividual* individual)
{
	ContactsFakeIndividual * self = NULL;
	GeeHashSet* fake_personas = NULL;
	GeeHashSet* _tmp0_;
	GeeHashSet* _tmp11_;
	g_return_val_if_fail (individual != NULL, NULL);
	_tmp0_ = gee_hash_set_new (CONTACTS_TYPE_FAKE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
	fake_personas = _tmp0_;
	{
		GeeIterator* _p_it = NULL;
		GeeSet* _tmp1_;
		GeeSet* _tmp2_;
		GeeIterator* _tmp3_;
		_tmp1_ = folks_individual_get_personas (individual);
		_tmp2_ = _tmp1_;
		_tmp3_ = gee_iterable_iterator ((GeeIterable*) _tmp2_);
		_p_it = _tmp3_;
		while (TRUE) {
			GeeIterator* _tmp4_;
			FolksPersona* p = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			ContactsFakePersona* fake_p = NULL;
			FolksPersona* _tmp7_;
			ContactsFakePersona* _tmp8_;
			GeeHashSet* _tmp9_;
			ContactsFakePersona* _tmp10_;
			_tmp4_ = _p_it;
			if (!gee_iterator_next (_tmp4_)) {
				break;
			}
			_tmp5_ = _p_it;
			_tmp6_ = gee_iterator_get (_tmp5_);
			p = (FolksPersona*) _tmp6_;
			_tmp7_ = p;
			_tmp8_ = contacts_fake_persona_new_from_real (_tmp7_);
			fake_p = _tmp8_;
			_tmp9_ = fake_personas;
			_tmp10_ = fake_p;
			gee_abstract_collection_add ((GeeAbstractCollection*) _tmp9_, _tmp10_);
			_g_object_unref0 (fake_p);
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	_tmp11_ = fake_personas;
	self = (ContactsFakeIndividual*) contacts_fake_individual_construct (object_type, (GeeSet*) _tmp11_);
	contacts_fake_individual_set_real_individual (self, individual);
	_g_object_unref0 (fake_personas);
	return self;
}

ContactsFakeIndividual*
contacts_fake_individual_new_from_real (FolksIndividual* individual)
{
	return contacts_fake_individual_construct_from_real (CONTACTS_TYPE_FAKE_INDIVIDUAL, individual);
}

static void
contacts_fake_individual_apply_changes_to_real_data_free (gpointer _data)
{
	ContactsFakeIndividualApplyChangesToRealData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsFakeIndividualApplyChangesToRealData, _data_);
}

void
contacts_fake_individual_apply_changes_to_real (ContactsFakeIndividual* self,
                                                GAsyncReadyCallback _callback_,
                                                gpointer _user_data_)
{
	ContactsFakeIndividualApplyChangesToRealData* _data_;
	ContactsFakeIndividual* _tmp0_;
	g_return_if_fail (self != NULL);
	_data_ = g_slice_new0 (ContactsFakeIndividualApplyChangesToRealData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_fake_individual_apply_changes_to_real_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	contacts_fake_individual_apply_changes_to_real_co (_data_);
}

void
contacts_fake_individual_apply_changes_to_real_finish (ContactsFakeIndividual* self,
                                                       GAsyncResult* _res_)
{
	ContactsFakeIndividualApplyChangesToRealData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
}

static void
contacts_fake_individual_apply_changes_to_real_ready (GObject* source_object,
                                                      GAsyncResult* _res_,
                                                      gpointer _user_data_)
{
	ContactsFakeIndividualApplyChangesToRealData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	contacts_fake_individual_apply_changes_to_real_co (_data_);
}

static gboolean
contacts_fake_individual_apply_changes_to_real_co (ContactsFakeIndividualApplyChangesToRealData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->self->priv->_real_individual;
	if (_data_->_tmp0_ == NULL) {
		g_warning ("contacts-fake-persona-store.vala:559: No real individual to apply chan" \
"ges from fake individual");
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	{
		_data_->_tmp1_ = folks_individual_get_personas ((FolksIndividual*) _data_->self);
		_data_->_tmp2_ = _data_->_tmp1_;
		_data_->_tmp3_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp2_);
		_data_->_p_it = _data_->_tmp3_;
		while (TRUE) {
			_data_->_tmp4_ = _data_->_p_it;
			if (!gee_iterator_next (_data_->_tmp4_)) {
				break;
			}
			_data_->_tmp5_ = _data_->_p_it;
			_data_->_tmp6_ = gee_iterator_get (_data_->_tmp5_);
			_data_->p = (FolksPersona*) _data_->_tmp6_;
			_data_->_tmp7_ = _data_->p;
			_data_->_tmp8_ = _g_object_ref0 (CONTACTS_IS_FAKE_PERSONA (_data_->_tmp7_) ? ((ContactsFakePersona*) _data_->_tmp7_) : NULL);
			_data_->fake_persona = _data_->_tmp8_;
			_data_->_tmp9_ = _data_->fake_persona;
			if (_data_->_tmp9_ != NULL) {
				_data_->_tmp10_ = _data_->fake_persona;
				_data_->_state_ = 1;
				contacts_fake_persona_apply_changes_to_real (_data_->_tmp10_, contacts_fake_individual_apply_changes_to_real_ready, _data_);
				return FALSE;
				_state_1:
				contacts_fake_persona_apply_changes_to_real_finish (_data_->_tmp10_, _data_->_res_);
			}
			_g_object_unref0 (_data_->fake_persona);
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_it);
	}
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

FolksIndividual*
contacts_fake_individual_get_real_individual (ContactsFakeIndividual* self)
{
	FolksIndividual* result;
	FolksIndividual* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_real_individual;
	result = _tmp0_;
	return result;
}

void
contacts_fake_individual_set_real_individual (ContactsFakeIndividual* self,
                                              FolksIndividual* value)
{
	FolksIndividual* old_value;
	g_return_if_fail (self != NULL);
	old_value = contacts_fake_individual_get_real_individual (self);
	if (old_value != value) {
		self->priv->_real_individual = value;
		g_object_notify_by_pspec ((GObject *) self, contacts_fake_individual_properties[CONTACTS_FAKE_INDIVIDUAL_REAL_INDIVIDUAL_PROPERTY]);
	}
}

ContactsFakePersona*
contacts_fake_individual_get_primary_persona (ContactsFakeIndividual* self)
{
	ContactsFakePersona* result;
	ContactsFakePersona* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_primary_persona;
	result = _tmp0_;
	return result;
}

void
contacts_fake_individual_set_primary_persona (ContactsFakeIndividual* self,
                                              ContactsFakePersona* value)
{
	ContactsFakePersona* old_value;
	g_return_if_fail (self != NULL);
	old_value = contacts_fake_individual_get_primary_persona (self);
	if (old_value != value) {
		self->priv->_primary_persona = value;
		g_object_notify_by_pspec ((GObject *) self, contacts_fake_individual_properties[CONTACTS_FAKE_INDIVIDUAL_PRIMARY_PERSONA_PROPERTY]);
	}
}

static void
contacts_fake_individual_class_init (ContactsFakeIndividualClass * klass,
                                     gpointer klass_data)
{
	contacts_fake_individual_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ContactsFakeIndividual_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_individual_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_contacts_fake_individual_set_property;
	G_OBJECT_CLASS (klass)->finalize = contacts_fake_individual_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_INDIVIDUAL_REAL_INDIVIDUAL_PROPERTY, contacts_fake_individual_properties[CONTACTS_FAKE_INDIVIDUAL_REAL_INDIVIDUAL_PROPERTY] = g_param_spec_object ("real-individual", "real-individual", "real-individual", FOLKS_TYPE_INDIVIDUAL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_INDIVIDUAL_PRIMARY_PERSONA_PROPERTY, contacts_fake_individual_properties[CONTACTS_FAKE_INDIVIDUAL_PRIMARY_PERSONA_PROPERTY] = g_param_spec_object ("primary-persona", "primary-persona", "primary-persona", CONTACTS_TYPE_FAKE_PERSONA, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
contacts_fake_individual_instance_init (ContactsFakeIndividual * self,
                                        gpointer klass)
{
	self->priv = contacts_fake_individual_get_instance_private (self);
	self->priv->_real_individual = NULL;
	self->priv->_primary_persona = NULL;
}

static void
contacts_fake_individual_finalize (GObject * obj)
{
	ContactsFakeIndividual * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_FAKE_INDIVIDUAL, ContactsFakeIndividual);
	G_OBJECT_CLASS (contacts_fake_individual_parent_class)->finalize (obj);
}

/**
 * A FakeIndividual
 */
 G_GNUC_NO_INLINE static GType
contacts_fake_individual_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ContactsFakeIndividualClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_individual_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContactsFakeIndividual), 0, (GInstanceInitFunc) contacts_fake_individual_instance_init, NULL };
	GType contacts_fake_individual_type_id;
	contacts_fake_individual_type_id = g_type_register_static (FOLKS_TYPE_INDIVIDUAL, "ContactsFakeIndividual", &g_define_type_info, 0);
	ContactsFakeIndividual_private_offset = g_type_add_instance_private (contacts_fake_individual_type_id, sizeof (ContactsFakeIndividualPrivate));
	return contacts_fake_individual_type_id;
}

GType
contacts_fake_individual_get_type (void)
{
	static volatile gsize contacts_fake_individual_type_id__once = 0;
	if (g_once_init_enter (&contacts_fake_individual_type_id__once)) {
		GType contacts_fake_individual_type_id;
		contacts_fake_individual_type_id = contacts_fake_individual_get_type_once ();
		g_once_init_leave (&contacts_fake_individual_type_id__once, contacts_fake_individual_type_id);
	}
	return contacts_fake_individual_type_id__once;
}

static void
_vala_contacts_fake_individual_get_property (GObject * object,
                                             guint property_id,
                                             GValue * value,
                                             GParamSpec * pspec)
{
	ContactsFakeIndividual * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_INDIVIDUAL, ContactsFakeIndividual);
	switch (property_id) {
		case CONTACTS_FAKE_INDIVIDUAL_REAL_INDIVIDUAL_PROPERTY:
		g_value_set_object (value, contacts_fake_individual_get_real_individual (self));
		break;
		case CONTACTS_FAKE_INDIVIDUAL_PRIMARY_PERSONA_PROPERTY:
		g_value_set_object (value, contacts_fake_individual_get_primary_persona (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_contacts_fake_individual_set_property (GObject * object,
                                             guint property_id,
                                             const GValue * value,
                                             GParamSpec * pspec)
{
	ContactsFakeIndividual * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_INDIVIDUAL, ContactsFakeIndividual);
	switch (property_id) {
		case CONTACTS_FAKE_INDIVIDUAL_REAL_INDIVIDUAL_PROPERTY:
		contacts_fake_individual_set_real_individual (self, g_value_get_object (value));
		break;
		case CONTACTS_FAKE_INDIVIDUAL_PRIMARY_PERSONA_PROPERTY:
		contacts_fake_individual_set_primary_persona (self, g_value_get_object (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
contacts_fake_hash_set_get_instance_private (ContactsFakeHashSet* self)
{
	return G_STRUCT_MEMBER_P (self, ContactsFakeHashSet_private_offset);
}

ContactsFakeHashSet*
contacts_fake_hash_set_construct (GType object_type,
                                  GType t_type,
                                  GBoxedCopyFunc t_dup_func,
                                  GDestroyNotify t_destroy_func)
{
	ContactsFakeHashSet * self = NULL;
	self = (ContactsFakeHashSet*) gee_hash_set_construct (object_type, t_type, (GBoxedCopyFunc) t_dup_func, (GDestroyNotify) t_destroy_func, NULL, NULL, NULL, NULL, NULL, NULL);
	self->priv->t_type = t_type;
	self->priv->t_dup_func = t_dup_func;
	self->priv->t_destroy_func = t_destroy_func;
	return self;
}

ContactsFakeHashSet*
contacts_fake_hash_set_new (GType t_type,
                            GBoxedCopyFunc t_dup_func,
                            GDestroyNotify t_destroy_func)
{
	return contacts_fake_hash_set_construct (CONTACTS_TYPE_FAKE_HASH_SET, t_type, t_dup_func, t_destroy_func);
}

static gboolean
contacts_fake_hash_set_real_add (GeeAbstractCollection* base,
                                 gconstpointer element)
{
	ContactsFakeHashSet * self;
	gboolean res = FALSE;
	gboolean result;
	self = (ContactsFakeHashSet*) base;
	res = GEE_ABSTRACT_COLLECTION_CLASS (contacts_fake_hash_set_parent_class)->add ((GeeAbstractCollection*) G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_HASH_SET, GeeHashSet), element);
	if (res) {
		g_signal_emit (self, contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_ADDED_SIGNAL], 0);
		g_signal_emit (self, contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_CHANGED_SIGNAL], 0);
	}
	result = res;
	return result;
}

static gboolean
contacts_fake_hash_set_real_remove (GeeAbstractCollection* base,
                                    gconstpointer element)
{
	ContactsFakeHashSet * self;
	gboolean res = FALSE;
	gboolean result;
	self = (ContactsFakeHashSet*) base;
	res = GEE_ABSTRACT_COLLECTION_CLASS (contacts_fake_hash_set_parent_class)->remove ((GeeAbstractCollection*) G_TYPE_CHECK_INSTANCE_CAST (self, GEE_TYPE_HASH_SET, GeeHashSet), element);
	if (res) {
		g_signal_emit (self, contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_REMOVED_SIGNAL], 0);
		g_signal_emit (self, contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_CHANGED_SIGNAL], 0);
	}
	result = res;
	return result;
}

static void
contacts_fake_hash_set_class_init (ContactsFakeHashSetClass * klass,
                                   gpointer klass_data)
{
	contacts_fake_hash_set_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ContactsFakeHashSet_private_offset);
	((GeeAbstractCollectionClass *) klass)->add = (gboolean (*) (GeeAbstractCollection*, gconstpointer)) contacts_fake_hash_set_real_add;
	((GeeAbstractCollectionClass *) klass)->remove = (gboolean (*) (GeeAbstractCollection*, gconstpointer)) contacts_fake_hash_set_real_remove;
	G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_hash_set_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_contacts_fake_hash_set_set_property;
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_SET_T_TYPE, g_param_spec_gtype ("t-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_SET_T_DUP_FUNC, g_param_spec_pointer ("t-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_SET_T_DESTROY_FUNC, g_param_spec_pointer ("t-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_CHANGED_SIGNAL] = g_signal_new ("changed", CONTACTS_TYPE_FAKE_HASH_SET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
	contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_ADDED_SIGNAL] = g_signal_new ("added", CONTACTS_TYPE_FAKE_HASH_SET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
	contacts_fake_hash_set_signals[CONTACTS_FAKE_HASH_SET_REMOVED_SIGNAL] = g_signal_new ("removed", CONTACTS_TYPE_FAKE_HASH_SET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}

static void
contacts_fake_hash_set_instance_init (ContactsFakeHashSet * self,
                                      gpointer klass)
{
	self->priv = contacts_fake_hash_set_get_instance_private (self);
}

/**
 * This is the same as Gee.HashSet but adds a changed/added/removed signals
 */
 G_GNUC_NO_INLINE static GType
contacts_fake_hash_set_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ContactsFakeHashSetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_hash_set_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContactsFakeHashSet), 0, (GInstanceInitFunc) contacts_fake_hash_set_instance_init, NULL };
	GType contacts_fake_hash_set_type_id;
	contacts_fake_hash_set_type_id = g_type_register_static (GEE_TYPE_HASH_SET, "ContactsFakeHashSet", &g_define_type_info, 0);
	ContactsFakeHashSet_private_offset = g_type_add_instance_private (contacts_fake_hash_set_type_id, sizeof (ContactsFakeHashSetPrivate));
	return contacts_fake_hash_set_type_id;
}

GType
contacts_fake_hash_set_get_type (void)
{
	static volatile gsize contacts_fake_hash_set_type_id__once = 0;
	if (g_once_init_enter (&contacts_fake_hash_set_type_id__once)) {
		GType contacts_fake_hash_set_type_id;
		contacts_fake_hash_set_type_id = contacts_fake_hash_set_get_type_once ();
		g_once_init_leave (&contacts_fake_hash_set_type_id__once, contacts_fake_hash_set_type_id);
	}
	return contacts_fake_hash_set_type_id__once;
}

static void
_vala_contacts_fake_hash_set_get_property (GObject * object,
                                           guint property_id,
                                           GValue * value,
                                           GParamSpec * pspec)
{
	ContactsFakeHashSet * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_HASH_SET, ContactsFakeHashSet);
	switch (property_id) {
		case CONTACTS_FAKE_HASH_SET_T_TYPE:
		g_value_set_gtype (value, self->priv->t_type);
		break;
		case CONTACTS_FAKE_HASH_SET_T_DUP_FUNC:
		g_value_set_pointer (value, self->priv->t_dup_func);
		break;
		case CONTACTS_FAKE_HASH_SET_T_DESTROY_FUNC:
		g_value_set_pointer (value, self->priv->t_destroy_func);
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_contacts_fake_hash_set_set_property (GObject * object,
                                           guint property_id,
                                           const GValue * value,
                                           GParamSpec * pspec)
{
	ContactsFakeHashSet * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_HASH_SET, ContactsFakeHashSet);
	switch (property_id) {
		case CONTACTS_FAKE_HASH_SET_T_TYPE:
		self->priv->t_type = g_value_get_gtype (value);
		break;
		case CONTACTS_FAKE_HASH_SET_T_DUP_FUNC:
		self->priv->t_dup_func = g_value_get_pointer (value);
		break;
		case CONTACTS_FAKE_HASH_SET_T_DESTROY_FUNC:
		self->priv->t_destroy_func = g_value_get_pointer (value);
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
contacts_fake_hash_multi_map_get_instance_private (ContactsFakeHashMultiMap* self)
{
	return G_STRUCT_MEMBER_P (self, ContactsFakeHashMultiMap_private_offset);
}

ContactsFakeHashMultiMap*
contacts_fake_hash_multi_map_construct (GType object_type,
                                        GType k_type,
                                        GBoxedCopyFunc k_dup_func,
                                        GDestroyNotify k_destroy_func,
                                        GType t_type,
                                        GBoxedCopyFunc t_dup_func,
                                        GDestroyNotify t_destroy_func)
{
	ContactsFakeHashMultiMap * self = NULL;
	self = (ContactsFakeHashMultiMap*) gee_hash_multi_map_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, (GDestroyNotify) k_destroy_func, t_type, (GBoxedCopyFunc) t_dup_func, (GDestroyNotify) t_destroy_func, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	self->priv->k_type = k_type;
	self->priv->k_dup_func = k_dup_func;
	self->priv->k_destroy_func = k_destroy_func;
	self->priv->t_type = t_type;
	self->priv->t_dup_func = t_dup_func;
	self->priv->t_destroy_func = t_destroy_func;
	return self;
}

ContactsFakeHashMultiMap*
contacts_fake_hash_multi_map_new (GType k_type,
                                  GBoxedCopyFunc k_dup_func,
                                  GDestroyNotify k_destroy_func,
                                  GType t_type,
                                  GBoxedCopyFunc t_dup_func,
                                  GDestroyNotify t_destroy_func)
{
	return contacts_fake_hash_multi_map_construct (CONTACTS_TYPE_FAKE_HASH_MULTI_MAP, k_type, k_dup_func, k_destroy_func, t_type, t_dup_func, t_destroy_func);
}

static void
contacts_fake_hash_multi_map_class_init (ContactsFakeHashMultiMapClass * klass,
                                         gpointer klass_data)
{
	contacts_fake_hash_multi_map_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ContactsFakeHashMultiMap_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_hash_multi_map_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_contacts_fake_hash_multi_map_set_property;
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_MULTI_MAP_K_TYPE, g_param_spec_gtype ("k-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_MULTI_MAP_K_DUP_FUNC, g_param_spec_pointer ("k-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_MULTI_MAP_K_DESTROY_FUNC, g_param_spec_pointer ("k-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_MULTI_MAP_T_TYPE, g_param_spec_gtype ("t-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_MULTI_MAP_T_DUP_FUNC, g_param_spec_pointer ("t-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_HASH_MULTI_MAP_T_DESTROY_FUNC, g_param_spec_pointer ("t-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
	contacts_fake_hash_multi_map_signals[CONTACTS_FAKE_HASH_MULTI_MAP_CHANGED_SIGNAL] = g_signal_new ("changed", CONTACTS_TYPE_FAKE_HASH_MULTI_MAP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}

static void
contacts_fake_hash_multi_map_instance_init (ContactsFakeHashMultiMap * self,
                                            gpointer klass)
{
	self->priv = contacts_fake_hash_multi_map_get_instance_private (self);
}

/**
 * This is the same as Gee.HashMultiMap but adds a changed signal
 */
 G_GNUC_NO_INLINE static GType
contacts_fake_hash_multi_map_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ContactsFakeHashMultiMapClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_hash_multi_map_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContactsFakeHashMultiMap), 0, (GInstanceInitFunc) contacts_fake_hash_multi_map_instance_init, NULL };
	GType contacts_fake_hash_multi_map_type_id;
	contacts_fake_hash_multi_map_type_id = g_type_register_static (GEE_TYPE_HASH_MULTI_MAP, "ContactsFakeHashMultiMap", &g_define_type_info, 0);
	ContactsFakeHashMultiMap_private_offset = g_type_add_instance_private (contacts_fake_hash_multi_map_type_id, sizeof (ContactsFakeHashMultiMapPrivate));
	return contacts_fake_hash_multi_map_type_id;
}

GType
contacts_fake_hash_multi_map_get_type (void)
{
	static volatile gsize contacts_fake_hash_multi_map_type_id__once = 0;
	if (g_once_init_enter (&contacts_fake_hash_multi_map_type_id__once)) {
		GType contacts_fake_hash_multi_map_type_id;
		contacts_fake_hash_multi_map_type_id = contacts_fake_hash_multi_map_get_type_once ();
		g_once_init_leave (&contacts_fake_hash_multi_map_type_id__once, contacts_fake_hash_multi_map_type_id);
	}
	return contacts_fake_hash_multi_map_type_id__once;
}

static void
_vala_contacts_fake_hash_multi_map_get_property (GObject * object,
                                                 guint property_id,
                                                 GValue * value,
                                                 GParamSpec * pspec)
{
	ContactsFakeHashMultiMap * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_HASH_MULTI_MAP, ContactsFakeHashMultiMap);
	switch (property_id) {
		case CONTACTS_FAKE_HASH_MULTI_MAP_K_TYPE:
		g_value_set_gtype (value, self->priv->k_type);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_K_DUP_FUNC:
		g_value_set_pointer (value, self->priv->k_dup_func);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_K_DESTROY_FUNC:
		g_value_set_pointer (value, self->priv->k_destroy_func);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_T_TYPE:
		g_value_set_gtype (value, self->priv->t_type);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_T_DUP_FUNC:
		g_value_set_pointer (value, self->priv->t_dup_func);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_T_DESTROY_FUNC:
		g_value_set_pointer (value, self->priv->t_destroy_func);
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_contacts_fake_hash_multi_map_set_property (GObject * object,
                                                 guint property_id,
                                                 const GValue * value,
                                                 GParamSpec * pspec)
{
	ContactsFakeHashMultiMap * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_HASH_MULTI_MAP, ContactsFakeHashMultiMap);
	switch (property_id) {
		case CONTACTS_FAKE_HASH_MULTI_MAP_K_TYPE:
		self->priv->k_type = g_value_get_gtype (value);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_K_DUP_FUNC:
		self->priv->k_dup_func = g_value_get_pointer (value);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_K_DESTROY_FUNC:
		self->priv->k_destroy_func = g_value_get_pointer (value);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_T_TYPE:
		self->priv->t_type = g_value_get_gtype (value);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_T_DUP_FUNC:
		self->priv->t_dup_func = g_value_get_pointer (value);
		break;
		case CONTACTS_FAKE_HASH_MULTI_MAP_T_DESTROY_FUNC:
		self->priv->t_destroy_func = g_value_get_pointer (value);
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

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

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

