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

/*
 * Copyright (C) 2010 Collabora Ltd.
 *
 * This library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Authors:
 *       Travis Reitter <travis.reitter@collabora.co.uk>
 */

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


#define FOLKS_TYPE_TRUST_LEVEL (folks_trust_level_get_type ())

#define FOLKS_TYPE_ALIAS_DETAILS (folks_alias_details_get_type ())
#define FOLKS_ALIAS_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails))
#define FOLKS_IS_ALIAS_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_ALIAS_DETAILS))
#define FOLKS_ALIAS_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetailsIface))

typedef struct _FolksAliasDetails FolksAliasDetails;
typedef struct _FolksAliasDetailsIface FolksAliasDetailsIface;

#define FOLKS_TYPE_AVATAR_DETAILS (folks_avatar_details_get_type ())
#define FOLKS_AVATAR_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails))
#define FOLKS_IS_AVATAR_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_AVATAR_DETAILS))
#define FOLKS_AVATAR_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetailsIface))

typedef struct _FolksAvatarDetails FolksAvatarDetails;
typedef struct _FolksAvatarDetailsIface FolksAvatarDetailsIface;

#define FOLKS_TYPE_BIRTHDAY_DETAILS (folks_birthday_details_get_type ())
#define FOLKS_BIRTHDAY_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails))
#define FOLKS_IS_BIRTHDAY_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_BIRTHDAY_DETAILS))
#define FOLKS_BIRTHDAY_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetailsIface))

typedef struct _FolksBirthdayDetails FolksBirthdayDetails;
typedef struct _FolksBirthdayDetailsIface FolksBirthdayDetailsIface;

#define FOLKS_TYPE_EMAIL_DETAILS (folks_email_details_get_type ())
#define FOLKS_EMAIL_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetails))
#define FOLKS_IS_EMAIL_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_EMAIL_DETAILS))
#define FOLKS_EMAIL_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetailsIface))

typedef struct _FolksEmailDetails FolksEmailDetails;
typedef struct _FolksEmailDetailsIface FolksEmailDetailsIface;

#define FOLKS_TYPE_FIELD_DETAILS (folks_field_details_get_type ())
#define FOLKS_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_FIELD_DETAILS, FolksFieldDetails))
#define FOLKS_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_FIELD_DETAILS, FolksFieldDetailsClass))
#define FOLKS_IS_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_FIELD_DETAILS))
#define FOLKS_IS_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_FIELD_DETAILS))
#define FOLKS_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_FIELD_DETAILS, FolksFieldDetailsClass))

typedef struct _FolksFieldDetails FolksFieldDetails;
typedef struct _FolksFieldDetailsClass FolksFieldDetailsClass;

#define FOLKS_TYPE_FAVOURITE_DETAILS (folks_favourite_details_get_type ())
#define FOLKS_FAVOURITE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails))
#define FOLKS_IS_FAVOURITE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_FAVOURITE_DETAILS))
#define FOLKS_FAVOURITE_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetailsIface))

typedef struct _FolksFavouriteDetails FolksFavouriteDetails;
typedef struct _FolksFavouriteDetailsIface FolksFavouriteDetailsIface;

#define FOLKS_TYPE_GENDER_DETAILS (folks_gender_details_get_type ())
#define FOLKS_GENDER_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_GENDER_DETAILS, FolksGenderDetails))
#define FOLKS_IS_GENDER_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_GENDER_DETAILS))
#define FOLKS_GENDER_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_GENDER_DETAILS, FolksGenderDetailsIface))

typedef struct _FolksGenderDetails FolksGenderDetails;
typedef struct _FolksGenderDetailsIface FolksGenderDetailsIface;

#define FOLKS_TYPE_GENDER (folks_gender_get_type ())

#define FOLKS_TYPE_GROUP_DETAILS (folks_group_details_get_type ())
#define FOLKS_GROUP_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails))
#define FOLKS_IS_GROUP_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_GROUP_DETAILS))
#define FOLKS_GROUP_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetailsIface))

typedef struct _FolksGroupDetails FolksGroupDetails;
typedef struct _FolksGroupDetailsIface FolksGroupDetailsIface;

#define FOLKS_TYPE_IM_DETAILS (folks_im_details_get_type ())
#define FOLKS_IM_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_IM_DETAILS, FolksImDetails))
#define FOLKS_IS_IM_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_IM_DETAILS))
#define FOLKS_IM_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_IM_DETAILS, FolksImDetailsIface))

typedef struct _FolksImDetails FolksImDetails;
typedef struct _FolksImDetailsIface FolksImDetailsIface;

#define FOLKS_TYPE_LOCAL_ID_DETAILS (folks_local_id_details_get_type ())
#define FOLKS_LOCAL_ID_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_LOCAL_ID_DETAILS, FolksLocalIdDetails))
#define FOLKS_IS_LOCAL_ID_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_LOCAL_ID_DETAILS))
#define FOLKS_LOCAL_ID_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_LOCAL_ID_DETAILS, FolksLocalIdDetailsIface))

typedef struct _FolksLocalIdDetails FolksLocalIdDetails;
typedef struct _FolksLocalIdDetailsIface FolksLocalIdDetailsIface;

#define FOLKS_TYPE_NAME_DETAILS (folks_name_details_get_type ())
#define FOLKS_NAME_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_NAME_DETAILS, FolksNameDetails))
#define FOLKS_IS_NAME_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_NAME_DETAILS))
#define FOLKS_NAME_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_NAME_DETAILS, FolksNameDetailsIface))

typedef struct _FolksNameDetails FolksNameDetails;
typedef struct _FolksNameDetailsIface FolksNameDetailsIface;

#define FOLKS_TYPE_STRUCTURED_NAME (folks_structured_name_get_type ())
#define FOLKS_STRUCTURED_NAME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredName))
#define FOLKS_STRUCTURED_NAME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredNameClass))
#define FOLKS_IS_STRUCTURED_NAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_STRUCTURED_NAME))
#define FOLKS_IS_STRUCTURED_NAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_STRUCTURED_NAME))
#define FOLKS_STRUCTURED_NAME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredNameClass))

typedef struct _FolksStructuredName FolksStructuredName;
typedef struct _FolksStructuredNameClass FolksStructuredNameClass;

#define FOLKS_TYPE_NOTE_DETAILS (folks_note_details_get_type ())
#define FOLKS_NOTE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_NOTE_DETAILS, FolksNoteDetails))
#define FOLKS_IS_NOTE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_NOTE_DETAILS))
#define FOLKS_NOTE_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_NOTE_DETAILS, FolksNoteDetailsIface))

typedef struct _FolksNoteDetails FolksNoteDetails;
typedef struct _FolksNoteDetailsIface FolksNoteDetailsIface;

#define FOLKS_TYPE_NOTE (folks_note_get_type ())
#define FOLKS_NOTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_NOTE, FolksNote))
#define FOLKS_NOTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_NOTE, FolksNoteClass))
#define FOLKS_IS_NOTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_NOTE))
#define FOLKS_IS_NOTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_NOTE))
#define FOLKS_NOTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_NOTE, FolksNoteClass))

typedef struct _FolksNote FolksNote;
typedef struct _FolksNoteClass FolksNoteClass;

#define FOLKS_TYPE_PRESENCE_DETAILS (folks_presence_details_get_type ())
#define FOLKS_PRESENCE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails))
#define FOLKS_IS_PRESENCE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_PRESENCE_DETAILS))
#define FOLKS_PRESENCE_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetailsIface))

typedef struct _FolksPresenceDetails FolksPresenceDetails;
typedef struct _FolksPresenceDetailsIface FolksPresenceDetailsIface;

#define FOLKS_TYPE_PRESENCE_TYPE (folks_presence_type_get_type ())

#define FOLKS_TYPE_PHONE_DETAILS (folks_phone_details_get_type ())
#define FOLKS_PHONE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_PHONE_DETAILS, FolksPhoneDetails))
#define FOLKS_IS_PHONE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_PHONE_DETAILS))
#define FOLKS_PHONE_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_PHONE_DETAILS, FolksPhoneDetailsIface))

typedef struct _FolksPhoneDetails FolksPhoneDetails;
typedef struct _FolksPhoneDetailsIface FolksPhoneDetailsIface;

#define FOLKS_TYPE_POSTAL_ADDRESS_DETAILS (folks_postal_address_details_get_type ())
#define FOLKS_POSTAL_ADDRESS_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetails))
#define FOLKS_IS_POSTAL_ADDRESS_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_POSTAL_ADDRESS_DETAILS))
#define FOLKS_POSTAL_ADDRESS_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetailsIface))

typedef struct _FolksPostalAddressDetails FolksPostalAddressDetails;
typedef struct _FolksPostalAddressDetailsIface FolksPostalAddressDetailsIface;

#define FOLKS_TYPE_POSTAL_ADDRESS (folks_postal_address_get_type ())
#define FOLKS_POSTAL_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_POSTAL_ADDRESS, FolksPostalAddress))
#define FOLKS_POSTAL_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_POSTAL_ADDRESS, FolksPostalAddressClass))
#define FOLKS_IS_POSTAL_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_POSTAL_ADDRESS))
#define FOLKS_IS_POSTAL_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_POSTAL_ADDRESS))
#define FOLKS_POSTAL_ADDRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_POSTAL_ADDRESS, FolksPostalAddressClass))

typedef struct _FolksPostalAddress FolksPostalAddress;
typedef struct _FolksPostalAddressClass FolksPostalAddressClass;

#define FOLKS_TYPE_ROLE_DETAILS (folks_role_details_get_type ())
#define FOLKS_ROLE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ROLE_DETAILS, FolksRoleDetails))
#define FOLKS_IS_ROLE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_ROLE_DETAILS))
#define FOLKS_ROLE_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_ROLE_DETAILS, FolksRoleDetailsIface))

typedef struct _FolksRoleDetails FolksRoleDetails;
typedef struct _FolksRoleDetailsIface FolksRoleDetailsIface;

#define FOLKS_TYPE_ROLE (folks_role_get_type ())
#define FOLKS_ROLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ROLE, FolksRole))
#define FOLKS_ROLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_ROLE, FolksRoleClass))
#define FOLKS_IS_ROLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_ROLE))
#define FOLKS_IS_ROLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_ROLE))
#define FOLKS_ROLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_ROLE, FolksRoleClass))

typedef struct _FolksRole FolksRole;
typedef struct _FolksRoleClass FolksRoleClass;

#define FOLKS_TYPE_URL_DETAILS (folks_url_details_get_type ())
#define FOLKS_URL_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_URL_DETAILS, FolksUrlDetails))
#define FOLKS_IS_URL_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_URL_DETAILS))
#define FOLKS_URL_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_URL_DETAILS, FolksUrlDetailsIface))

typedef struct _FolksUrlDetails FolksUrlDetails;
typedef struct _FolksUrlDetailsIface FolksUrlDetailsIface;

#define FOLKS_TYPE_WEB_SERVICE_DETAILS (folks_web_service_details_get_type ())
#define FOLKS_WEB_SERVICE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_WEB_SERVICE_DETAILS, FolksWebServiceDetails))
#define FOLKS_IS_WEB_SERVICE_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_WEB_SERVICE_DETAILS))
#define FOLKS_WEB_SERVICE_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_WEB_SERVICE_DETAILS, FolksWebServiceDetailsIface))

typedef struct _FolksWebServiceDetails FolksWebServiceDetails;
typedef struct _FolksWebServiceDetailsIface FolksWebServiceDetailsIface;

#define FOLKS_TYPE_INDIVIDUAL (folks_individual_get_type ())
#define FOLKS_INDIVIDUAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_INDIVIDUAL, FolksIndividual))
#define FOLKS_INDIVIDUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_INDIVIDUAL, FolksIndividualClass))
#define FOLKS_IS_INDIVIDUAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_INDIVIDUAL))
#define FOLKS_IS_INDIVIDUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_INDIVIDUAL))
#define FOLKS_INDIVIDUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_INDIVIDUAL, FolksIndividualClass))

typedef struct _FolksIndividual FolksIndividual;
typedef struct _FolksIndividualClass FolksIndividualClass;
typedef struct _FolksIndividualPrivate FolksIndividualPrivate;

#define FOLKS_TYPE_PERSONA (folks_persona_get_type ())
#define FOLKS_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_PERSONA, FolksPersona))
#define FOLKS_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_PERSONA, FolksPersonaClass))
#define FOLKS_IS_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_PERSONA))
#define FOLKS_IS_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_PERSONA))
#define FOLKS_PERSONA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_PERSONA, FolksPersonaClass))

typedef struct _FolksPersona FolksPersona;
typedef struct _FolksPersonaClass FolksPersonaClass;

#define FOLKS_TYPE_PERSONA_STORE (folks_persona_store_get_type ())
#define FOLKS_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_PERSONA_STORE, FolksPersonaStore))
#define FOLKS_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_PERSONA_STORE, FolksPersonaStoreClass))
#define FOLKS_IS_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_PERSONA_STORE))
#define FOLKS_IS_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_PERSONA_STORE))
#define FOLKS_PERSONA_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_PERSONA_STORE, FolksPersonaStoreClass))

typedef struct _FolksPersonaStore FolksPersonaStore;
typedef struct _FolksPersonaStoreClass FolksPersonaStoreClass;
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))
typedef struct _FolksIndividualChangeGroupData FolksIndividualChangeGroupData;

#define FOLKS_GROUP_DETAILS_TYPE_CHANGE_REASON (folks_group_details_change_reason_get_type ())
#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))

#define FOLKS_TYPE_PERSONA_STORE_TRUST (folks_persona_store_trust_get_type ())

typedef enum  {
	FOLKS_TRUST_LEVEL_NONE,
	FOLKS_TRUST_LEVEL_PERSONAS
} FolksTrustLevel;

struct _FolksAliasDetailsIface {
	GTypeInterface parent_iface;
	const gchar* (*get_alias) (FolksAliasDetails* self);
	void (*set_alias) (FolksAliasDetails* self, const gchar* value);
};

struct _FolksAvatarDetailsIface {
	GTypeInterface parent_iface;
	GFile* (*get_avatar) (FolksAvatarDetails* self);
	void (*set_avatar) (FolksAvatarDetails* self, GFile* value);
};

struct _FolksBirthdayDetailsIface {
	GTypeInterface parent_iface;
	GDateTime* (*get_birthday) (FolksBirthdayDetails* self);
	void (*set_birthday) (FolksBirthdayDetails* self, GDateTime* value);
	const gchar* (*get_calendar_event_id) (FolksBirthdayDetails* self);
	void (*set_calendar_event_id) (FolksBirthdayDetails* self, const gchar* value);
};

struct _FolksEmailDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_email_addresses) (FolksEmailDetails* self);
	void (*set_email_addresses) (FolksEmailDetails* self, GeeSet* value);
};

struct _FolksFavouriteDetailsIface {
	GTypeInterface parent_iface;
	gboolean (*get_is_favourite) (FolksFavouriteDetails* self);
	void (*set_is_favourite) (FolksFavouriteDetails* self, gboolean value);
};

typedef enum  {
	FOLKS_GENDER_UNSPECIFIED,
	FOLKS_GENDER_MALE,
	FOLKS_GENDER_FEMALE
} FolksGender;

struct _FolksGenderDetailsIface {
	GTypeInterface parent_iface;
	FolksGender (*get_gender) (FolksGenderDetails* self);
	void (*set_gender) (FolksGenderDetails* self, FolksGender value);
};

struct _FolksGroupDetailsIface {
	GTypeInterface parent_iface;
	void (*change_group) (FolksGroupDetails* self, const gchar* group, gboolean is_member, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_group_finish) (FolksGroupDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_groups) (FolksGroupDetails* self);
	void (*set_groups) (FolksGroupDetails* self, GeeSet* value);
};

struct _FolksImDetailsIface {
	GTypeInterface parent_iface;
	GeeMultiMap* (*get_im_addresses) (FolksImDetails* self);
	void (*set_im_addresses) (FolksImDetails* self, GeeMultiMap* value);
};

struct _FolksLocalIdDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_local_ids) (FolksLocalIdDetails* self);
	void (*set_local_ids) (FolksLocalIdDetails* self, GeeSet* value);
};

struct _FolksNameDetailsIface {
	GTypeInterface parent_iface;
	FolksStructuredName* (*get_structured_name) (FolksNameDetails* self);
	void (*set_structured_name) (FolksNameDetails* self, FolksStructuredName* value);
	const gchar* (*get_full_name) (FolksNameDetails* self);
	void (*set_full_name) (FolksNameDetails* self, const gchar* value);
	const gchar* (*get_nickname) (FolksNameDetails* self);
};

struct _FolksNoteDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_notes) (FolksNoteDetails* self);
	void (*set_notes) (FolksNoteDetails* self, GeeSet* value);
};

typedef enum  {
	FOLKS_PRESENCE_TYPE_UNSET,
	FOLKS_PRESENCE_TYPE_OFFLINE,
	FOLKS_PRESENCE_TYPE_AVAILABLE,
	FOLKS_PRESENCE_TYPE_AWAY,
	FOLKS_PRESENCE_TYPE_EXTENDED_AWAY,
	FOLKS_PRESENCE_TYPE_HIDDEN,
	FOLKS_PRESENCE_TYPE_BUSY,
	FOLKS_PRESENCE_TYPE_UNKNOWN,
	FOLKS_PRESENCE_TYPE_ERROR
} FolksPresenceType;

struct _FolksPresenceDetailsIface {
	GTypeInterface parent_iface;
	FolksPresenceType (*get_presence_type) (FolksPresenceDetails* self);
	void (*set_presence_type) (FolksPresenceDetails* self, FolksPresenceType value);
	const gchar* (*get_presence_message) (FolksPresenceDetails* self);
	void (*set_presence_message) (FolksPresenceDetails* self, const gchar* value);
};

struct _FolksPhoneDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_phone_numbers) (FolksPhoneDetails* self);
	void (*set_phone_numbers) (FolksPhoneDetails* self, GeeSet* value);
};

struct _FolksPostalAddressDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_postal_addresses) (FolksPostalAddressDetails* self);
	void (*set_postal_addresses) (FolksPostalAddressDetails* self, GeeSet* value);
};

struct _FolksRoleDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_roles) (FolksRoleDetails* self);
	void (*set_roles) (FolksRoleDetails* self, GeeSet* value);
};

struct _FolksUrlDetailsIface {
	GTypeInterface parent_iface;
	GeeSet* (*get_urls) (FolksUrlDetails* self);
	void (*set_urls) (FolksUrlDetails* self, GeeSet* value);
};

struct _FolksWebServiceDetailsIface {
	GTypeInterface parent_iface;
	GeeMultiMap* (*get_web_service_addresses) (FolksWebServiceDetails* self);
	void (*set_web_service_addresses) (FolksWebServiceDetails* self, GeeMultiMap* value);
};

struct _FolksIndividual {
	GObject parent_instance;
	FolksIndividualPrivate * priv;
};

struct _FolksIndividualClass {
	GObjectClass parent_class;
};

struct _FolksIndividualPrivate {
	gboolean _is_favourite;
	gchar* _alias;
	GeeHashSet* _groups;
	GeeHashSet* _persona_set;
	GeeSet* _persona_set_ro;
	GeeHashMap* _stores;
	guint _persona_user_count;
	GeeHashMultiMap* _im_addresses;
	GeeHashMultiMap* _web_service_addresses;
	FolksTrustLevel _trust_level;
	GFile* _avatar;
	FolksPresenceType _presence_type;
	gchar* _presence_message;
	gboolean _is_user;
	gchar* _id;
	FolksStructuredName* _structured_name;
	gchar* _full_name;
	gchar* _nickname;
	FolksGender _gender;
	GeeHashSet* _urls;
	GeeHashSet* _phone_numbers;
	GeeHashSet* _email_addresses;
	GeeHashSet* _roles;
	GeeHashSet* _local_ids;
	GDateTime* _birthday;
	gchar* _calendar_event_id;
	GeeHashSet* _notes;
	GeeHashSet* _postal_addresses;
};

struct _FolksIndividualChangeGroupData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	FolksIndividual* self;
	gchar* group;
	gboolean is_member;
	GeeIterator* _tmp0_;
	GeeIterator* _p_it;
	gboolean _tmp1_;
	gpointer _tmp2_;
	FolksPersona* p;
};

typedef enum  {
	FOLKS_GROUP_DETAILS_CHANGE_REASON_NONE = 0,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_OFFLINE = 1,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_KICKED = 2,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_BUSY = 3,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_INVITED = 4,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_BANNED = 5,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_ERROR = 6,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_INVALID_MEMBER = 7,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_NO_ANSWER = 8,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_RENAMED = 9,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_PERMISSION_DENIED = 10,
	FOLKS_GROUP_DETAILS_CHANGE_REASON_SEPARATED = 11
} FolksGroupDetailsChangeReason;

typedef enum  {
	FOLKS_PERSONA_STORE_TRUST_NONE,
	FOLKS_PERSONA_STORE_TRUST_PARTIAL,
	FOLKS_PERSONA_STORE_TRUST_FULL
} FolksPersonaStoreTrust;


static gpointer folks_individual_parent_class = NULL;
static FolksAliasDetailsIface* folks_individual_folks_alias_details_parent_iface = NULL;
static FolksAvatarDetailsIface* folks_individual_folks_avatar_details_parent_iface = NULL;
static FolksBirthdayDetailsIface* folks_individual_folks_birthday_details_parent_iface = NULL;
static FolksEmailDetailsIface* folks_individual_folks_email_details_parent_iface = NULL;
static FolksFavouriteDetailsIface* folks_individual_folks_favourite_details_parent_iface = NULL;
static FolksGenderDetailsIface* folks_individual_folks_gender_details_parent_iface = NULL;
static FolksGroupDetailsIface* folks_individual_folks_group_details_parent_iface = NULL;
static FolksImDetailsIface* folks_individual_folks_im_details_parent_iface = NULL;
static FolksLocalIdDetailsIface* folks_individual_folks_local_id_details_parent_iface = NULL;
static FolksNameDetailsIface* folks_individual_folks_name_details_parent_iface = NULL;
static FolksNoteDetailsIface* folks_individual_folks_note_details_parent_iface = NULL;
static FolksPresenceDetailsIface* folks_individual_folks_presence_details_parent_iface = NULL;
static FolksPhoneDetailsIface* folks_individual_folks_phone_details_parent_iface = NULL;
static FolksPostalAddressDetailsIface* folks_individual_folks_postal_address_details_parent_iface = NULL;
static FolksRoleDetailsIface* folks_individual_folks_role_details_parent_iface = NULL;
static FolksUrlDetailsIface* folks_individual_folks_url_details_parent_iface = NULL;
static FolksWebServiceDetailsIface* folks_individual_folks_web_service_details_parent_iface = NULL;

GType folks_trust_level_get_type (void) G_GNUC_CONST;
GType folks_alias_details_get_type (void) G_GNUC_CONST;
GType folks_avatar_details_get_type (void) G_GNUC_CONST;
GType folks_birthday_details_get_type (void) G_GNUC_CONST;
GType folks_field_details_get_type (void) G_GNUC_CONST;
GType folks_email_details_get_type (void) G_GNUC_CONST;
GType folks_favourite_details_get_type (void) G_GNUC_CONST;
GType folks_gender_get_type (void) G_GNUC_CONST;
GType folks_gender_details_get_type (void) G_GNUC_CONST;
GType folks_group_details_get_type (void) G_GNUC_CONST;
GType folks_im_details_get_type (void) G_GNUC_CONST;
GType folks_local_id_details_get_type (void) G_GNUC_CONST;
GType folks_structured_name_get_type (void) G_GNUC_CONST;
GType folks_name_details_get_type (void) G_GNUC_CONST;
GType folks_note_get_type (void) G_GNUC_CONST;
GType folks_note_details_get_type (void) G_GNUC_CONST;
GType folks_presence_type_get_type (void) G_GNUC_CONST;
GType folks_presence_details_get_type (void) G_GNUC_CONST;
GType folks_phone_details_get_type (void) G_GNUC_CONST;
GType folks_postal_address_get_type (void) G_GNUC_CONST;
GType folks_postal_address_details_get_type (void) G_GNUC_CONST;
GType folks_role_get_type (void) G_GNUC_CONST;
GType folks_role_details_get_type (void) G_GNUC_CONST;
GType folks_url_details_get_type (void) G_GNUC_CONST;
GType folks_web_service_details_get_type (void) G_GNUC_CONST;
GType folks_individual_get_type (void) G_GNUC_CONST;
GType folks_persona_get_type (void) G_GNUC_CONST;
GType folks_persona_store_get_type (void) G_GNUC_CONST;
#define FOLKS_INDIVIDUAL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), FOLKS_TYPE_INDIVIDUAL, FolksIndividualPrivate))
enum  {
	FOLKS_INDIVIDUAL_DUMMY_PROPERTY,
	FOLKS_INDIVIDUAL_TRUST_LEVEL,
	FOLKS_INDIVIDUAL_AVATAR,
	FOLKS_INDIVIDUAL_PRESENCE_TYPE,
	FOLKS_INDIVIDUAL_PRESENCE_MESSAGE,
	FOLKS_INDIVIDUAL_IS_USER,
	FOLKS_INDIVIDUAL_ID,
	FOLKS_INDIVIDUAL_ALIAS,
	FOLKS_INDIVIDUAL_STRUCTURED_NAME,
	FOLKS_INDIVIDUAL_FULL_NAME,
	FOLKS_INDIVIDUAL_NICKNAME,
	FOLKS_INDIVIDUAL_GENDER,
	FOLKS_INDIVIDUAL_URLS,
	FOLKS_INDIVIDUAL_PHONE_NUMBERS,
	FOLKS_INDIVIDUAL_EMAIL_ADDRESSES,
	FOLKS_INDIVIDUAL_ROLES,
	FOLKS_INDIVIDUAL_LOCAL_IDS,
	FOLKS_INDIVIDUAL_BIRTHDAY,
	FOLKS_INDIVIDUAL_CALENDAR_EVENT_ID,
	FOLKS_INDIVIDUAL_NOTES,
	FOLKS_INDIVIDUAL_POSTAL_ADDRESSES,
	FOLKS_INDIVIDUAL_IS_FAVOURITE,
	FOLKS_INDIVIDUAL_GROUPS,
	FOLKS_INDIVIDUAL_IM_ADDRESSES,
	FOLKS_INDIVIDUAL_WEB_SERVICE_ADDRESSES,
	FOLKS_INDIVIDUAL_PERSONAS
};
static void _folks_individual_notify_alias_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
static void _folks_individual_update_alias (FolksIndividual* self);
static void _folks_individual_notify_avatar_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
static void _folks_individual_update_avatar (FolksIndividual* self);
static void _folks_individual_notify_full_name_cb (FolksIndividual* self);
static void _folks_individual_update_full_name (FolksIndividual* self);
static void _folks_individual_notify_structured_name_cb (FolksIndividual* self);
static void _folks_individual_update_structured_name (FolksIndividual* self);
static void _folks_individual_notify_nickname_cb (FolksIndividual* self);
static void _folks_individual_update_nickname (FolksIndividual* self);
static void _folks_individual_persona_group_changed_cb (FolksIndividual* self, const gchar* group, gboolean is_member);
static void _folks_individual_update_groups (FolksIndividual* self);
static void _folks_individual_notify_gender_cb (FolksIndividual* self);
static void _folks_individual_update_gender (FolksIndividual* self);
static void _folks_individual_notify_urls_cb (FolksIndividual* self);
static void _folks_individual_update_urls (FolksIndividual* self);
static void _folks_individual_notify_phone_numbers_cb (FolksIndividual* self);
static void _folks_individual_update_phone_numbers (FolksIndividual* self);
static void _folks_individual_notify_postal_addresses_cb (FolksIndividual* self);
static void _folks_individual_update_postal_addresses (FolksIndividual* self);
static void _folks_individual_notify_email_addresses_cb (FolksIndividual* self);
static void _folks_individual_update_email_addresses (FolksIndividual* self);
static void _folks_individual_notify_roles_cb (FolksIndividual* self);
static void _folks_individual_update_roles (FolksIndividual* self);
static void _folks_individual_notify_birthday_cb (FolksIndividual* self);
static void _folks_individual_update_birthday (FolksIndividual* self);
static void _folks_individual_notify_notes_cb (FolksIndividual* self);
static void _folks_individual_update_notes (FolksIndividual* self);
static void _folks_individual_notify_local_ids_cb (FolksIndividual* self);
static void _folks_individual_update_local_ids (FolksIndividual* self);
static void folks_individual_real_change_group_data_free (gpointer _data);
static void folks_individual_real_change_group (FolksGroupDetails* base, const gchar* group, gboolean is_member, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_group_co (FolksIndividualChangeGroupData* data);
void folks_group_details_change_group (FolksGroupDetails* self, const gchar* group, gboolean is_member, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_group_details_change_group_finish (FolksGroupDetails* self, GAsyncResult* _res_, GError** error);
static void _folks_individual_notify_presence_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
static void _folks_individual_update_presence (FolksIndividual* self);
static void _folks_individual_notify_im_addresses_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
static void _folks_individual_update_im_addresses (FolksIndividual* self);
static void _folks_individual_notify_web_service_addresses_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
static void _folks_individual_update_web_service_addresses (FolksIndividual* self);
static void _folks_individual_notify_is_favourite_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
static void _folks_individual_update_is_favourite (FolksIndividual* self);
FolksIndividual* folks_individual_new (GeeSet* personas);
FolksIndividual* folks_individual_construct (GType object_type, GeeSet* personas);
void folks_individual_set_personas (FolksIndividual* self, GeeSet* value);
static void _folks_individual_emit_personas_changed (FolksIndividual* self, GeeSet* added, GeeSet* removed);
static void _folks_individual_store_removed_cb (FolksIndividual* self, FolksPersonaStore* store);
static void _folks_individual_update_fields (FolksIndividual* self);
GType folks_group_details_change_reason_get_type (void) G_GNUC_CONST;
static void _folks_individual_store_personas_changed_cb (FolksIndividual* self, FolksPersonaStore* store, GeeSet* added, GeeSet* removed, const gchar* message, FolksPersona* actor, FolksGroupDetailsChangeReason reason);
static void _folks_individual_update_trust_level (FolksIndividual* self);
GeeSet* folks_group_details_get_groups (FolksGroupDetails* self);
static void _lambda1_ (const gchar* l, FolksIndividual* self);
static void __lambda1__gfunc (gconstpointer data, gpointer self);
static void _g_free0_ (gpointer var);
static void _g_list_free__g_free0_ (GList* self);
gint folks_presence_details_typecmp (FolksPresenceType type_a, FolksPresenceType type_b);
FolksPresenceType folks_presence_details_get_presence_type (FolksPresenceDetails* self);
const gchar* folks_presence_details_get_presence_message (FolksPresenceDetails* self);
void folks_presence_details_set_presence_message (FolksPresenceDetails* self, const gchar* value);
void folks_presence_details_set_presence_type (FolksPresenceDetails* self, FolksPresenceType value);
const gchar* folks_individual_get_id (FolksIndividual* self);
gboolean folks_favourite_details_get_is_favourite (FolksFavouriteDetails* self);
FolksPersonaStore* folks_persona_get_store (FolksPersona* self);
gboolean folks_persona_store_get_is_writeable (FolksPersonaStore* self);
const gchar* folks_alias_details_get_alias (FolksAliasDetails* self);
const gchar* folks_persona_get_display_id (FolksPersona* self);
GFile* folks_avatar_details_get_avatar (FolksAvatarDetails* self);
void folks_avatar_details_set_avatar (FolksAvatarDetails* self, GFile* value);
gboolean folks_persona_get_is_user (FolksPersona* self);
GType folks_persona_store_trust_get_type (void) G_GNUC_CONST;
FolksPersonaStoreTrust folks_persona_store_get_trust_level (FolksPersonaStore* self);
FolksTrustLevel folks_individual_get_trust_level (FolksIndividual* self);
static void folks_individual_set_trust_level (FolksIndividual* self, FolksTrustLevel value);
GeeMultiMap* folks_im_details_get_im_addresses (FolksImDetails* self);
GeeSet* folks_individual_get_personas (FolksIndividual* self);
GeeMultiMap* folks_web_service_details_get_web_service_addresses (FolksWebServiceDetails* self);
static void _folks_individual_connect_to_persona (FolksIndividual* self, FolksPersona* persona);
static void __folks_individual_notify_alias_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_avatar_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_presence_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_im_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_web_service_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_is_favourite_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_structured_name_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_full_name_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_nickname_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_gender_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_urls_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_phone_numbers_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_email_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_roles_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_birthday_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_notes_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_postal_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_notify_local_ids_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static void __folks_individual_persona_group_changed_cb_folks_group_details_group_changed (FolksGroupDetails* _sender, const gchar* group, gboolean is_member, gpointer self);
FolksStructuredName* folks_name_details_get_structured_name (FolksNameDetails* self);
gboolean folks_structured_name_is_empty (FolksStructuredName* self);
gboolean folks_structured_name_equal (FolksStructuredName* self, FolksStructuredName* other);
void folks_name_details_set_structured_name (FolksNameDetails* self, FolksStructuredName* value);
const gchar* folks_name_details_get_full_name (FolksNameDetails* self);
void folks_name_details_set_full_name (FolksNameDetails* self, const gchar* value);
const gchar* folks_name_details_get_nickname (FolksNameDetails* self);
static void _folks_individual_disconnect_from_persona (FolksIndividual* self, FolksPersona* persona);
FolksGender folks_gender_details_get_gender (FolksGenderDetails* self);
void folks_gender_details_set_gender (FolksGenderDetails* self, FolksGender value);
GeeSet* folks_url_details_get_urls (FolksUrlDetails* self);
const gchar* folks_field_details_get_value (FolksFieldDetails* self);
void folks_field_details_extend_parameters (FolksFieldDetails* self, GeeMultiMap* additional);
GeeMultiMap* folks_field_details_get_parameters (FolksFieldDetails* self);
FolksFieldDetails* folks_field_details_new (const gchar* value);
FolksFieldDetails* folks_field_details_construct (GType object_type, const gchar* value);
GeeSet* folks_phone_details_get_phone_numbers (FolksPhoneDetails* self);
GeeSet* folks_email_details_get_email_addresses (FolksEmailDetails* self);
guint folks_role_hash (FolksRole* r);
gboolean folks_role_equal (FolksRole* a, FolksRole* b);
GeeSet* folks_role_details_get_roles (FolksRoleDetails* self);
GeeSet* folks_local_id_details_get_local_ids (FolksLocalIdDetails* self);
GeeSet* folks_postal_address_details_get_postal_addresses (FolksPostalAddressDetails* self);
GDateTime* folks_birthday_details_get_birthday (FolksBirthdayDetails* self);
const gchar* folks_birthday_details_get_calendar_event_id (FolksBirthdayDetails* self);
void folks_birthday_details_set_birthday (FolksBirthdayDetails* self, GDateTime* value);
void folks_birthday_details_set_calendar_event_id (FolksBirthdayDetails* self, const gchar* value);
guint folks_note_hash (FolksNote* r);
gboolean folks_note_equal (FolksNote* a, FolksNote* b);
GeeSet* folks_note_details_get_notes (FolksNoteDetails* self);
static void _folks_individual_set_personas (FolksIndividual* self, GeeSet* personas, FolksIndividual* replacement_individual);
static void __folks_individual_store_removed_cb_folks_persona_store_removed (FolksPersonaStore* _sender, gpointer self);
static void __folks_individual_store_personas_changed_cb_folks_persona_store_personas_changed (FolksPersonaStore* _sender, GeeSet* added, GeeSet* removed, const gchar* message, FolksPersona* actor, FolksGroupDetailsChangeReason reason, gpointer self);
gboolean folks_individual_get_is_user (FolksIndividual* self);
static void folks_individual_set_is_user (FolksIndividual* self, gboolean value);
const gchar* folks_persona_get_uid (FolksPersona* self);
static void folks_individual_set_id (FolksIndividual* self, const gchar* value);
void folks_individual_replace (FolksIndividual* self, FolksIndividual* replacement_individual);
void folks_alias_details_set_alias (FolksAliasDetails* self, const gchar* value);
void folks_favourite_details_set_is_favourite (FolksFavouriteDetails* self, gboolean value);
void folks_group_details_set_groups (FolksGroupDetails* self, GeeSet* value);
static void g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
static void folks_individual_finalize (GObject* obj);
static void _vala_folks_individual_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
void folks_url_details_set_urls (FolksUrlDetails* self, GeeSet* value);
void folks_phone_details_set_phone_numbers (FolksPhoneDetails* self, GeeSet* value);
void folks_email_details_set_email_addresses (FolksEmailDetails* self, GeeSet* value);
void folks_role_details_set_roles (FolksRoleDetails* self, GeeSet* value);
void folks_local_id_details_set_local_ids (FolksLocalIdDetails* self, GeeSet* value);
void folks_note_details_set_notes (FolksNoteDetails* self, GeeSet* value);
void folks_postal_address_details_set_postal_addresses (FolksPostalAddressDetails* self, GeeSet* value);
void folks_im_details_set_im_addresses (FolksImDetails* self, GeeMultiMap* value);
void folks_web_service_details_set_web_service_addresses (FolksWebServiceDetails* self, GeeMultiMap* value);
static void _vala_folks_individual_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);


/**
 * Trust level for an {@link Individual} for use in the UI.
 *
 * @since 0.1.15
 */
GType folks_trust_level_get_type (void) {
	static volatile gsize folks_trust_level_type_id__volatile = 0;
	if (g_once_init_enter (&folks_trust_level_type_id__volatile)) {
		static const GEnumValue values[] = {{FOLKS_TRUST_LEVEL_NONE, "FOLKS_TRUST_LEVEL_NONE", "none"}, {FOLKS_TRUST_LEVEL_PERSONAS, "FOLKS_TRUST_LEVEL_PERSONAS", "personas"}, {0, NULL, NULL}};
		GType folks_trust_level_type_id;
		folks_trust_level_type_id = g_enum_register_static ("FolksTrustLevel", values);
		g_once_init_leave (&folks_trust_level_type_id__volatile, folks_trust_level_type_id);
	}
	return folks_trust_level_type_id__volatile;
}


static void _folks_individual_notify_alias_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_folks_individual_update_alias (self);
}


static void _folks_individual_notify_avatar_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_folks_individual_update_avatar (self);
}


static void _folks_individual_notify_full_name_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_full_name (self);
}


static void _folks_individual_notify_structured_name_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_structured_name (self);
}


static void _folks_individual_notify_nickname_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_nickname (self);
}


static void _folks_individual_persona_group_changed_cb (FolksIndividual* self, const gchar* group, gboolean is_member) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (group != NULL);
	_folks_individual_update_groups (self);
}


static void _folks_individual_notify_gender_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_gender (self);
}


static void _folks_individual_notify_urls_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_urls (self);
}


static void _folks_individual_notify_phone_numbers_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_phone_numbers (self);
}


static void _folks_individual_notify_postal_addresses_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_postal_addresses (self);
}


static void _folks_individual_notify_email_addresses_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_email_addresses (self);
}


static void _folks_individual_notify_roles_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_roles (self);
}


static void _folks_individual_notify_birthday_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_birthday (self);
}


static void _folks_individual_notify_notes_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_notes (self);
}


static void _folks_individual_notify_local_ids_cb (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_local_ids (self);
}


static void folks_individual_real_change_group_data_free (gpointer _data) {
	FolksIndividualChangeGroupData* data;
	data = _data;
	_g_free0 (data->group);
	_g_object_unref0 (data->self);
	g_slice_free (FolksIndividualChangeGroupData, data);
}


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


static void folks_individual_real_change_group (FolksGroupDetails* base, const gchar* group, gboolean is_member, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeGroupData* _data_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeGroupData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, folks_individual_real_change_group);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, folks_individual_real_change_group_data_free);
	_data_->self = _g_object_ref0 (self);
	_data_->group = g_strdup (group);
	_data_->is_member = is_member;
	folks_individual_real_change_group_co (_data_);
}


static void folks_individual_real_change_group_finish (FolksGroupDetails* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualChangeGroupData* _data_;
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


/**
   * Add or remove the Individual from the specified group.
   *
   * If `is_member` is `true`, the Individual will be added to the `group`. If
   * it is `false`, they will be removed from the `group`.
   *
   * The group membership change will propagate to every {@link Persona} in
   * the Individual.
   *
   * @param group a freeform group identifier
   * @param is_member whether the Individual should be a member of the group
   * @since 0.1.11
   */
static gboolean folks_individual_real_change_group_co (FolksIndividualChangeGroupData* data) {
	switch (data->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	{
		data->_tmp0_ = NULL;
		data->_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) data->self->priv->_persona_set);
		data->_p_it = data->_tmp0_;
		while (TRUE) {
			data->_tmp1_ = gee_iterator_next (data->_p_it);
			if (!data->_tmp1_) {
				break;
			}
			data->_tmp2_ = NULL;
			data->_tmp2_ = gee_iterator_get (data->_p_it);
			data->p = (FolksPersona*) data->_tmp2_;
			if (FOLKS_IS_GROUP_DETAILS (data->p)) {
				folks_group_details_change_group (FOLKS_GROUP_DETAILS (data->p), data->group, data->is_member, NULL, NULL);
			}
			_g_object_unref0 (data->p);
		}
		_g_object_unref0 (data->_p_it);
	}
	if (data->_state_ == 0) {
		g_simple_async_result_complete_in_idle (data->_async_result);
	} else {
		g_simple_async_result_complete (data->_async_result);
	}
	g_object_unref (data->_async_result);
	return FALSE;
}


static void _folks_individual_notify_presence_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_folks_individual_update_presence (self);
}


static void _folks_individual_notify_im_addresses_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_folks_individual_update_im_addresses (self);
}


static void _folks_individual_notify_web_service_addresses_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_folks_individual_update_web_service_addresses (self);
}


static void _folks_individual_notify_is_favourite_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_folks_individual_update_is_favourite (self);
}


/**
   * Create a new Individual.
   *
   * The Individual can optionally be seeded with the {@link Persona}s in
   * `personas`. Otherwise, it will have to have personas added using the
   * {@link Folks.Individual.personas} property after construction.
   *
   * @param personas a list of {@link Persona}s to initialise the
   * {@link Individual} with, or `null`
   * @return a new Individual
   *
   * @since 0.5.1
   */
FolksIndividual* folks_individual_construct (GType object_type, GeeSet* personas) {
	FolksIndividual * self = NULL;
	GeeHashMultiMap* _tmp0_ = NULL;
	GeeHashMultiMap* _tmp1_ = NULL;
	GeeHashSet* _tmp2_ = NULL;
	GeeSet* _tmp3_ = NULL;
	GeeHashMap* _tmp4_ = NULL;
	self = (FolksIndividual*) g_object_new (object_type, NULL);
	_tmp0_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->_im_addresses);
	self->priv->_im_addresses = _tmp0_;
	_tmp1_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->_web_service_addresses);
	self->priv->_web_service_addresses = _tmp1_;
	_tmp2_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, g_direct_hash, g_direct_equal);
	_g_object_unref0 (self->priv->_persona_set);
	self->priv->_persona_set = _tmp2_;
	_tmp3_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) self->priv->_persona_set);
	_g_object_unref0 (self->priv->_persona_set_ro);
	self->priv->_persona_set_ro = _tmp3_;
	_tmp4_ = gee_hash_map_new (FOLKS_TYPE_PERSONA_STORE, (GBoxedCopyFunc) g_object_ref, g_object_unref, G_TYPE_UINT, NULL, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->_stores);
	self->priv->_stores = _tmp4_;
	self->priv->_gender = FOLKS_GENDER_UNSPECIFIED;
	folks_individual_set_personas (self, personas);
	return self;
}


FolksIndividual* folks_individual_new (GeeSet* personas) {
	return folks_individual_construct (FOLKS_TYPE_INDIVIDUAL, personas);
}


static void _folks_individual_emit_personas_changed (FolksIndividual* self, GeeSet* added, GeeSet* removed) {
	GeeSet* _tmp0_;
	GeeSet* _added;
	GeeSet* _tmp1_;
	GeeSet* _removed;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	GeeSet* _tmp9_ = NULL;
	GeeSet* _tmp10_;
	GeeSet* _tmp11_ = NULL;
	GeeSet* _tmp12_;
	g_return_if_fail (self != NULL);
	_tmp0_ = _g_object_ref0 (added);
	_added = _tmp0_;
	_tmp1_ = _g_object_ref0 (removed);
	_removed = _tmp1_;
	if (added == NULL) {
		_tmp3_ = TRUE;
	} else {
		gint _tmp4_;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) added);
		_tmp3_ = _tmp4_ == 0;
	}
	if (_tmp3_) {
		gboolean _tmp5_ = FALSE;
		if (removed == NULL) {
			_tmp5_ = TRUE;
		} else {
			gint _tmp6_;
			_tmp6_ = gee_collection_get_size ((GeeCollection*) removed);
			_tmp5_ = _tmp6_ == 0;
		}
		_tmp2_ = _tmp5_;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		_g_object_unref0 (_removed);
		_g_object_unref0 (_added);
		return;
	} else {
		if (added == NULL) {
			GeeHashSet* _tmp7_ = NULL;
			_tmp7_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
			_g_object_unref0 (_added);
			_added = (GeeSet*) _tmp7_;
		} else {
			if (removed == NULL) {
				GeeHashSet* _tmp8_ = NULL;
				_tmp8_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
				_g_object_unref0 (_removed);
				_removed = (GeeSet*) _tmp8_;
			}
		}
	}
	_tmp9_ = gee_set_get_read_only_view (_added);
	_tmp10_ = _tmp9_;
	_tmp11_ = gee_set_get_read_only_view (_removed);
	_tmp12_ = _tmp11_;
	g_signal_emit_by_name (self, "personas-changed", _tmp10_, _tmp12_);
	_g_object_unref0 (_tmp12_);
	_g_object_unref0 (_tmp10_);
	_g_object_unref0 (_removed);
	_g_object_unref0 (_added);
}


static void _folks_individual_store_removed_cb (FolksIndividual* self, FolksPersonaStore* store) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* removed_personas;
	GeeIterator* _tmp1_ = NULL;
	GeeIterator* iter;
	gint _tmp4_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (store != NULL);
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	removed_personas = _tmp0_;
	_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
	iter = _tmp1_;
	while (TRUE) {
		gboolean _tmp2_;
		gpointer _tmp3_ = NULL;
		FolksPersona* persona;
		_tmp2_ = gee_iterator_next (iter);
		if (!_tmp2_) {
			break;
		}
		_tmp3_ = gee_iterator_get (iter);
		persona = (FolksPersona*) _tmp3_;
		gee_abstract_collection_add ((GeeAbstractCollection*) removed_personas, persona);
		gee_iterator_remove (iter);
		_g_object_unref0 (persona);
	}
	if (removed_personas != NULL) {
		_folks_individual_emit_personas_changed (self, NULL, (GeeSet*) removed_personas);
	}
	if (store != NULL) {
		gee_abstract_map_unset ((GeeAbstractMap*) self->priv->_stores, store, NULL);
	}
	_tmp4_ = gee_collection_get_size ((GeeCollection*) self->priv->_persona_set);
	if (_tmp4_ < 1) {
		g_signal_emit_by_name (self, "removed", NULL);
		_g_object_unref0 (iter);
		_g_object_unref0 (removed_personas);
		return;
	}
	_folks_individual_update_fields (self);
	_g_object_unref0 (iter);
	_g_object_unref0 (removed_personas);
}


static void _folks_individual_store_personas_changed_cb (FolksIndividual* self, FolksPersonaStore* store, GeeSet* added, GeeSet* removed, const gchar* message, FolksPersona* actor, FolksGroupDetailsChangeReason reason) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* removed_personas;
	gint _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (store != NULL);
	g_return_if_fail (added != NULL);
	g_return_if_fail (removed != NULL);
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	removed_personas = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _p_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) removed);
		_p_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* p;
			gboolean _tmp4_;
			_tmp2_ = gee_iterator_next (_p_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp3_;
			_tmp4_ = gee_abstract_collection_remove ((GeeAbstractCollection*) self->priv->_persona_set, p);
			if (_tmp4_) {
				gee_abstract_collection_add ((GeeAbstractCollection*) removed_personas, p);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	if (removed_personas != NULL) {
		_folks_individual_emit_personas_changed (self, NULL, (GeeSet*) removed_personas);
	}
	_tmp5_ = gee_collection_get_size ((GeeCollection*) self->priv->_persona_set);
	if (_tmp5_ < 1) {
		g_signal_emit_by_name (self, "removed", NULL);
		_g_object_unref0 (removed_personas);
		return;
	}
	_folks_individual_update_fields (self);
	_g_object_unref0 (removed_personas);
}


static void _folks_individual_update_fields (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_groups (self);
	_folks_individual_update_presence (self);
	_folks_individual_update_is_favourite (self);
	_folks_individual_update_avatar (self);
	_folks_individual_update_alias (self);
	_folks_individual_update_trust_level (self);
	_folks_individual_update_im_addresses (self);
	_folks_individual_update_web_service_addresses (self);
	_folks_individual_update_structured_name (self);
	_folks_individual_update_full_name (self);
	_folks_individual_update_nickname (self);
	_folks_individual_update_gender (self);
	_folks_individual_update_urls (self);
	_folks_individual_update_phone_numbers (self);
	_folks_individual_update_email_addresses (self);
	_folks_individual_update_roles (self);
	_folks_individual_update_birthday (self);
	_folks_individual_update_notes (self);
	_folks_individual_update_postal_addresses (self);
	_folks_individual_update_local_ids (self);
}


static void _lambda1_ (const gchar* l, FolksIndividual* self) {
	const gchar* group;
	g_return_if_fail (l != NULL);
	group = (const gchar*) l;
	gee_abstract_collection_remove ((GeeAbstractCollection*) self->priv->_groups, group);
	g_signal_emit_by_name ((FolksGroupDetails*) self, "group-changed", group, FALSE);
}


static void __lambda1__gfunc (gconstpointer data, gpointer self) {
	_lambda1_ (data, self);
}


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


static void _g_list_free__g_free0_ (GList* self) {
	g_list_foreach (self, (GFunc) _g_free0_, NULL);
	g_list_free (self);
}


static void _folks_individual_update_groups (FolksIndividual* self) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* new_groups;
	GList* removes;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL);
	new_groups = _tmp0_;
	if (self->priv->_groups == NULL) {
		GeeHashSet* _tmp1_ = NULL;
		_tmp1_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL);
		_g_object_unref0 (self->priv->_groups);
		self->priv->_groups = _tmp1_;
	}
	{
		GeeIterator* _tmp2_ = NULL;
		GeeIterator* _p_it;
		_tmp2_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp2_;
		while (TRUE) {
			gboolean _tmp3_;
			gpointer _tmp4_ = NULL;
			FolksPersona* p;
			_tmp3_ = gee_iterator_next (_p_it);
			if (!_tmp3_) {
				break;
			}
			_tmp4_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp4_;
			if (FOLKS_IS_GROUP_DETAILS (p)) {
				FolksGroupDetails* _tmp5_;
				FolksGroupDetails* persona;
				_tmp5_ = _g_object_ref0 (FOLKS_GROUP_DETAILS (p));
				persona = _tmp5_;
				{
					GeeSet* _tmp6_ = NULL;
					GeeIterator* _tmp7_ = NULL;
					GeeIterator* _group_it;
					_tmp6_ = folks_group_details_get_groups (persona);
					_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
					_group_it = _tmp7_;
					while (TRUE) {
						gboolean _tmp8_;
						gpointer _tmp9_ = NULL;
						gchar* group;
						_tmp8_ = gee_iterator_next (_group_it);
						if (!_tmp8_) {
							break;
						}
						_tmp9_ = gee_iterator_get (_group_it);
						group = (gchar*) _tmp9_;
						gee_abstract_collection_add ((GeeAbstractCollection*) new_groups, group);
						_g_free0 (group);
					}
					_g_object_unref0 (_group_it);
				}
				_g_object_unref0 (persona);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	{
		GeeIterator* _tmp10_ = NULL;
		GeeIterator* _group_it;
		_tmp10_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) new_groups);
		_group_it = _tmp10_;
		while (TRUE) {
			gboolean _tmp11_;
			gpointer _tmp12_ = NULL;
			gchar* group;
			gboolean _tmp13_;
			_tmp11_ = gee_iterator_next (_group_it);
			if (!_tmp11_) {
				break;
			}
			_tmp12_ = gee_iterator_get (_group_it);
			group = (gchar*) _tmp12_;
			_tmp13_ = gee_abstract_collection_contains ((GeeAbstractCollection*) self->priv->_groups, group);
			if (!_tmp13_) {
				gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_groups, group);
				{
					GeeIterator* _tmp14_ = NULL;
					GeeIterator* _g_it;
					_tmp14_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_groups);
					_g_it = _tmp14_;
					while (TRUE) {
						gboolean _tmp15_;
						gpointer _tmp16_ = NULL;
						gchar* g;
						_tmp15_ = gee_iterator_next (_g_it);
						if (!_tmp15_) {
							break;
						}
						_tmp16_ = gee_iterator_get (_g_it);
						g = (gchar*) _tmp16_;
						g_debug ("individual.vala:761:    %s", g);
						_g_free0 (g);
					}
					_g_object_unref0 (_g_it);
				}
				g_signal_emit_by_name ((FolksGroupDetails*) self, "group-changed", group, TRUE);
			}
			_g_free0 (group);
		}
		_g_object_unref0 (_group_it);
	}
	removes = NULL;
	{
		GeeIterator* _tmp17_ = NULL;
		GeeIterator* _group_it;
		_tmp17_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_groups);
		_group_it = _tmp17_;
		while (TRUE) {
			gboolean _tmp18_;
			gpointer _tmp19_ = NULL;
			gchar* group;
			gboolean _tmp20_;
			_tmp18_ = gee_iterator_next (_group_it);
			if (!_tmp18_) {
				break;
			}
			_tmp19_ = gee_iterator_get (_group_it);
			group = (gchar*) _tmp19_;
			_tmp20_ = gee_abstract_collection_contains ((GeeAbstractCollection*) new_groups, group);
			if (!_tmp20_) {
				gchar* _tmp21_;
				_tmp21_ = g_strdup (group);
				removes = g_list_prepend (removes, _tmp21_);
			}
			_g_free0 (group);
		}
		_g_object_unref0 (_group_it);
	}
	g_list_foreach (removes, __lambda1__gfunc, self);
	__g_list_free__g_free0_0 (removes);
	_g_object_unref0 (new_groups);
}


static void _folks_individual_update_presence (FolksIndividual* self) {
	gchar* _tmp0_;
	gchar* presence_message;
	FolksPresenceType presence_type;
	const gchar* _tmp10_ = NULL;
	FolksPresenceType _tmp11_;
	g_return_if_fail (self != NULL);
	_tmp0_ = g_strdup ("");
	presence_message = _tmp0_;
	presence_type = FOLKS_PRESENCE_TYPE_UNSET;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _p_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* p;
			_tmp2_ = gee_iterator_next (_p_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp3_;
			if (FOLKS_IS_PRESENCE_DETAILS (p)) {
				FolksPresenceDetails* presence;
				FolksPresenceType _tmp4_;
				gint _tmp5_;
				presence = FOLKS_PRESENCE_DETAILS (p);
				_tmp4_ = folks_presence_details_get_presence_type (presence);
				_tmp5_ = folks_presence_details_typecmp (_tmp4_, presence_type);
				if (_tmp5_ > 0) {
					FolksPresenceType _tmp6_;
					const gchar* _tmp7_ = NULL;
					gchar* _tmp8_;
					_tmp6_ = folks_presence_details_get_presence_type (presence);
					presence_type = _tmp6_;
					_tmp7_ = folks_presence_details_get_presence_message (presence);
					_tmp8_ = g_strdup (_tmp7_);
					_g_free0 (presence_message);
					presence_message = _tmp8_;
				}
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	if (presence_message == NULL) {
		gchar* _tmp9_;
		_tmp9_ = g_strdup ("");
		_g_free0 (presence_message);
		presence_message = _tmp9_;
	}
	_tmp10_ = folks_presence_details_get_presence_message ((FolksPresenceDetails*) self);
	if (g_strcmp0 (_tmp10_, presence_message) != 0) {
		folks_presence_details_set_presence_message ((FolksPresenceDetails*) self, presence_message);
	}
	_tmp11_ = folks_presence_details_get_presence_type ((FolksPresenceDetails*) self);
	if (_tmp11_ != presence_type) {
		folks_presence_details_set_presence_type ((FolksPresenceDetails*) self, presence_type);
	}
	_g_free0 (presence_message);
}


static void _folks_individual_update_is_favourite (FolksIndividual* self) {
	gboolean favourite;
	g_return_if_fail (self != NULL);
	favourite = FALSE;
	g_debug ("individual.vala:820: Running _update_is_favourite() on '%s'", self->priv->_id);
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _p_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* p;
			gboolean _tmp3_ = FALSE;
			_tmp1_ = gee_iterator_next (_p_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp2_;
			if (favourite == FALSE) {
				_tmp3_ = FOLKS_IS_FAVOURITE_DETAILS (p);
			} else {
				_tmp3_ = FALSE;
			}
			if (_tmp3_) {
				gboolean _tmp4_;
				_tmp4_ = folks_favourite_details_get_is_favourite (FOLKS_FAVOURITE_DETAILS (p));
				favourite = _tmp4_;
				if (favourite == TRUE) {
					_g_object_unref0 (p);
					break;
				}
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	if (self->priv->_is_favourite != favourite) {
		self->priv->_is_favourite = favourite;
		g_object_notify ((GObject*) self, "is-favourite");
	}
}


static gchar* string_strip (const gchar* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
	gchar* _result_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_strdup (self);
	_result_ = _tmp0_;
	g_strstrip (_result_);
	result = _result_;
	return result;
}


static void _folks_individual_update_alias (FolksIndividual* self) {
	gchar* alias;
	gboolean alias_is_display_id;
	g_return_if_fail (self != NULL);
	alias = NULL;
	alias_is_display_id = FALSE;
	g_debug ("individual.vala:847: Updating alias for individual '%s'", self->priv->_id);
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _p_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* p;
			gboolean _tmp3_ = FALSE;
			_tmp1_ = gee_iterator_next (_p_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp2_;
			if (FOLKS_IS_ALIAS_DETAILS (p)) {
				FolksPersonaStore* _tmp4_ = NULL;
				gboolean _tmp5_;
				_tmp4_ = folks_persona_get_store (p);
				_tmp5_ = folks_persona_store_get_is_writeable (_tmp4_);
				_tmp3_ = _tmp5_ == TRUE;
			} else {
				_tmp3_ = FALSE;
			}
			if (_tmp3_) {
				FolksAliasDetails* _tmp6_;
				FolksAliasDetails* a;
				gboolean _tmp7_ = FALSE;
				const gchar* _tmp8_ = NULL;
				_tmp6_ = _g_object_ref0 (FOLKS_ALIAS_DETAILS (p));
				a = _tmp6_;
				_tmp8_ = folks_alias_details_get_alias (a);
				if (_tmp8_ != NULL) {
					const gchar* _tmp9_ = NULL;
					gchar* _tmp10_ = NULL;
					gchar* _tmp11_;
					_tmp9_ = folks_alias_details_get_alias (a);
					_tmp10_ = string_strip (_tmp9_);
					_tmp11_ = _tmp10_;
					_tmp7_ = g_strcmp0 (_tmp11_, "") != 0;
					_g_free0 (_tmp11_);
				} else {
					_tmp7_ = FALSE;
				}
				if (_tmp7_) {
					const gchar* _tmp12_ = NULL;
					gchar* _tmp13_;
					_tmp12_ = folks_alias_details_get_alias (a);
					_tmp13_ = g_strdup (_tmp12_);
					_g_free0 (alias);
					alias = _tmp13_;
					_g_object_unref0 (a);
					_g_object_unref0 (p);
					break;
				}
				_g_object_unref0 (a);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	g_debug ("individual.vala:866:     got alias '%s' from writeable personas", alias);
	if (alias == NULL) {
		{
			GeeIterator* _tmp14_ = NULL;
			GeeIterator* _p_it;
			_tmp14_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
			_p_it = _tmp14_;
			while (TRUE) {
				gboolean _tmp15_;
				gpointer _tmp16_ = NULL;
				FolksPersona* p;
				_tmp15_ = gee_iterator_next (_p_it);
				if (!_tmp15_) {
					break;
				}
				_tmp16_ = gee_iterator_get (_p_it);
				p = (FolksPersona*) _tmp16_;
				if (FOLKS_IS_ALIAS_DETAILS (p)) {
					FolksAliasDetails* _tmp17_;
					FolksAliasDetails* a;
					gboolean _tmp18_ = FALSE;
					const gchar* _tmp19_ = NULL;
					gboolean _tmp23_ = FALSE;
					_tmp17_ = _g_object_ref0 (FOLKS_ALIAS_DETAILS (p));
					a = _tmp17_;
					_tmp19_ = folks_alias_details_get_alias (a);
					if (_tmp19_ == NULL) {
						_tmp18_ = TRUE;
					} else {
						const gchar* _tmp20_ = NULL;
						gchar* _tmp21_ = NULL;
						gchar* _tmp22_;
						_tmp20_ = folks_alias_details_get_alias (a);
						_tmp21_ = string_strip (_tmp20_);
						_tmp22_ = _tmp21_;
						_tmp18_ = g_strcmp0 (_tmp22_, "") == 0;
						_g_free0 (_tmp22_);
					}
					if (_tmp18_) {
						_g_object_unref0 (a);
						_g_object_unref0 (p);
						continue;
					}
					if (alias == NULL) {
						_tmp23_ = TRUE;
					} else {
						_tmp23_ = alias_is_display_id == TRUE;
					}
					if (_tmp23_) {
						const gchar* _tmp24_ = NULL;
						gchar* _tmp25_;
						const gchar* _tmp26_ = NULL;
						const gchar* _tmp27_ = NULL;
						_tmp24_ = folks_alias_details_get_alias (a);
						_tmp25_ = g_strdup (_tmp24_);
						_g_free0 (alias);
						alias = _tmp25_;
						_tmp26_ = folks_alias_details_get_alias (a);
						_tmp27_ = folks_persona_get_display_id (p);
						if (g_strcmp0 (_tmp26_, _tmp27_) == 0) {
							alias_is_display_id = TRUE;
						} else {
							if (alias != NULL) {
								_g_object_unref0 (a);
								_g_object_unref0 (p);
								break;
							}
						}
					}
					_g_object_unref0 (a);
				}
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_it);
		}
	}
	g_debug ("individual.vala:901:     got alias '%s' from non-writeable personas", alias);
	if (alias == NULL) {
		{
			GeeIterator* _tmp28_ = NULL;
			GeeIterator* _persona_it;
			_tmp28_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
			_persona_it = _tmp28_;
			while (TRUE) {
				gboolean _tmp29_;
				gpointer _tmp30_ = NULL;
				FolksPersona* persona;
				const gchar* _tmp31_ = NULL;
				gchar* _tmp32_;
				_tmp29_ = gee_iterator_next (_persona_it);
				if (!_tmp29_) {
					break;
				}
				_tmp30_ = gee_iterator_get (_persona_it);
				persona = (FolksPersona*) _tmp30_;
				_tmp31_ = folks_persona_get_display_id (persona);
				_tmp32_ = g_strdup (_tmp31_);
				_g_free0 (alias);
				alias = _tmp32_;
				g_debug ("No aliases available for individual; using display ID " "instead: %s", alias);
				_g_object_unref0 (persona);
				break;
			}
			_g_object_unref0 (_persona_it);
		}
	}
	if (g_strcmp0 (self->priv->_alias, alias) != 0) {
		gchar* _tmp33_;
		g_debug ("individual.vala:923: Changing alias of individual '%s' from '%s' to '%" \
"s'.", self->priv->_id, self->priv->_alias, alias);
		_tmp33_ = g_strdup (alias);
		_g_free0 (self->priv->_alias);
		self->priv->_alias = _tmp33_;
		g_object_notify ((GObject*) self, "alias");
	}
	_g_free0 (alias);
}


static void _folks_individual_update_avatar (FolksIndividual* self) {
	GFile* avatar;
	GFile* _tmp5_ = NULL;
	g_return_if_fail (self != NULL);
	avatar = NULL;
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _p_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* p;
			_tmp1_ = gee_iterator_next (_p_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp2_;
			if (FOLKS_IS_AVATAR_DETAILS (p)) {
				GFile* _tmp3_ = NULL;
				GFile* _tmp4_;
				_tmp3_ = folks_avatar_details_get_avatar (FOLKS_AVATAR_DETAILS (p));
				_tmp4_ = _g_object_ref0 (_tmp3_);
				_g_object_unref0 (avatar);
				avatar = _tmp4_;
				if (avatar != NULL) {
					_g_object_unref0 (p);
					break;
				}
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	_tmp5_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) self);
	if (_tmp5_ != avatar) {
		folks_avatar_details_set_avatar ((FolksAvatarDetails*) self, avatar);
	}
	_g_object_unref0 (avatar);
}


static void _folks_individual_update_trust_level (FolksIndividual* self) {
	FolksTrustLevel trust_level;
	g_return_if_fail (self != NULL);
	trust_level = FOLKS_TRUST_LEVEL_PERSONAS;
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _p_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* p;
			gboolean _tmp3_ = FALSE;
			gboolean _tmp4_;
			_tmp1_ = gee_iterator_next (_p_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp2_;
			_tmp4_ = folks_persona_get_is_user (p);
			if (_tmp4_ == FALSE) {
				FolksPersonaStore* _tmp5_ = NULL;
				FolksPersonaStoreTrust _tmp6_;
				_tmp5_ = folks_persona_get_store (p);
				_tmp6_ = folks_persona_store_get_trust_level (_tmp5_);
				_tmp3_ = _tmp6_ == FOLKS_PERSONA_STORE_TRUST_NONE;
			} else {
				_tmp3_ = FALSE;
			}
			if (_tmp3_) {
				trust_level = FOLKS_TRUST_LEVEL_NONE;
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	if (self->priv->_trust_level != trust_level) {
		folks_individual_set_trust_level (self, trust_level);
	}
}


static void _folks_individual_update_im_addresses (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	gee_multi_map_clear ((GeeMultiMap*) self->priv->_im_addresses);
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* persona;
			_tmp1_ = gee_iterator_next (_persona_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp2_;
			if (FOLKS_IS_IM_DETAILS (persona)) {
				FolksImDetails* _tmp3_;
				FolksImDetails* im_details;
				_tmp3_ = _g_object_ref0 (FOLKS_IM_DETAILS (persona));
				im_details = _tmp3_;
				{
					GeeMultiMap* _tmp4_ = NULL;
					GeeSet* _tmp5_ = NULL;
					GeeSet* _tmp6_;
					GeeIterator* _tmp7_ = NULL;
					GeeIterator* _tmp8_;
					GeeIterator* _cur_protocol_it;
					_tmp4_ = folks_im_details_get_im_addresses (im_details);
					_tmp5_ = gee_multi_map_get_keys (_tmp4_);
					_tmp6_ = _tmp5_;
					_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
					_tmp8_ = _tmp7_;
					_g_object_unref0 (_tmp6_);
					_cur_protocol_it = _tmp8_;
					while (TRUE) {
						gboolean _tmp9_;
						gpointer _tmp10_ = NULL;
						gchar* cur_protocol;
						GeeMultiMap* _tmp11_ = NULL;
						GeeCollection* _tmp12_ = NULL;
						GeeCollection* cur_addresses;
						_tmp9_ = gee_iterator_next (_cur_protocol_it);
						if (!_tmp9_) {
							break;
						}
						_tmp10_ = gee_iterator_get (_cur_protocol_it);
						cur_protocol = (gchar*) _tmp10_;
						_tmp11_ = folks_im_details_get_im_addresses (im_details);
						_tmp12_ = gee_multi_map_get (_tmp11_, cur_protocol);
						cur_addresses = _tmp12_;
						{
							GeeIterator* _tmp13_ = NULL;
							GeeIterator* _address_it;
							_tmp13_ = gee_iterable_iterator ((GeeIterable*) cur_addresses);
							_address_it = _tmp13_;
							while (TRUE) {
								gboolean _tmp14_;
								gpointer _tmp15_ = NULL;
								gchar* address;
								_tmp14_ = gee_iterator_next (_address_it);
								if (!_tmp14_) {
									break;
								}
								_tmp15_ = gee_iterator_get (_address_it);
								address = (gchar*) _tmp15_;
								gee_multi_map_set ((GeeMultiMap*) self->priv->_im_addresses, cur_protocol, address);
								_g_free0 (address);
							}
							_g_object_unref0 (_address_it);
						}
						_g_object_unref0 (cur_addresses);
						_g_free0 (cur_protocol);
					}
					_g_object_unref0 (_cur_protocol_it);
				}
				_g_object_unref0 (im_details);
			}
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	g_object_notify ((GObject*) self, "im-addresses");
}


static void _folks_individual_update_web_service_addresses (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	gee_multi_map_clear ((GeeMultiMap*) self->priv->_web_service_addresses);
	{
		GeeSet* _tmp0_ = NULL;
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = folks_individual_get_personas (self);
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) _tmp0_);
		_persona_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* persona;
			_tmp2_ = gee_iterator_next (_persona_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp3_;
			if (FOLKS_IS_WEB_SERVICE_DETAILS (persona)) {
				FolksWebServiceDetails* _tmp4_;
				FolksWebServiceDetails* web_service_details;
				_tmp4_ = _g_object_ref0 (FOLKS_WEB_SERVICE_DETAILS (persona));
				web_service_details = _tmp4_;
				{
					GeeMultiMap* _tmp5_ = NULL;
					GeeSet* _tmp6_ = NULL;
					GeeSet* _tmp7_;
					GeeIterator* _tmp8_ = NULL;
					GeeIterator* _tmp9_;
					GeeIterator* _cur_web_service_it;
					_tmp5_ = folks_web_service_details_get_web_service_addresses (web_service_details);
					_tmp6_ = gee_multi_map_get_keys (_tmp5_);
					_tmp7_ = _tmp6_;
					_tmp8_ = gee_iterable_iterator ((GeeIterable*) _tmp7_);
					_tmp9_ = _tmp8_;
					_g_object_unref0 (_tmp7_);
					_cur_web_service_it = _tmp9_;
					while (TRUE) {
						gboolean _tmp10_;
						gpointer _tmp11_ = NULL;
						gchar* cur_web_service;
						GeeMultiMap* _tmp12_ = NULL;
						GeeCollection* _tmp13_ = NULL;
						GeeCollection* cur_addresses;
						_tmp10_ = gee_iterator_next (_cur_web_service_it);
						if (!_tmp10_) {
							break;
						}
						_tmp11_ = gee_iterator_get (_cur_web_service_it);
						cur_web_service = (gchar*) _tmp11_;
						_tmp12_ = folks_web_service_details_get_web_service_addresses (web_service_details);
						_tmp13_ = gee_multi_map_get (_tmp12_, cur_web_service);
						cur_addresses = _tmp13_;
						{
							GeeIterator* _tmp14_ = NULL;
							GeeIterator* _address_it;
							_tmp14_ = gee_iterable_iterator ((GeeIterable*) cur_addresses);
							_address_it = _tmp14_;
							while (TRUE) {
								gboolean _tmp15_;
								gpointer _tmp16_ = NULL;
								gchar* address;
								_tmp15_ = gee_iterator_next (_address_it);
								if (!_tmp15_) {
									break;
								}
								_tmp16_ = gee_iterator_get (_address_it);
								address = (gchar*) _tmp16_;
								gee_multi_map_set ((GeeMultiMap*) self->priv->_web_service_addresses, cur_web_service, address);
								_g_free0 (address);
							}
							_g_object_unref0 (_address_it);
						}
						_g_object_unref0 (cur_addresses);
						_g_free0 (cur_web_service);
					}
					_g_object_unref0 (_cur_web_service_it);
				}
				_g_object_unref0 (web_service_details);
			}
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	g_object_notify ((GObject*) self, "web-service-addresses");
}


static void __folks_individual_notify_alias_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_alias_cb (self, _sender, pspec);
}


static void __folks_individual_notify_avatar_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_avatar_cb (self, _sender, pspec);
}


static void __folks_individual_notify_presence_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_presence_cb (self, _sender, pspec);
}


static void __folks_individual_notify_im_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_im_addresses_cb (self, _sender, pspec);
}


static void __folks_individual_notify_web_service_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_web_service_addresses_cb (self, _sender, pspec);
}


static void __folks_individual_notify_is_favourite_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_is_favourite_cb (self, _sender, pspec);
}


static void __folks_individual_notify_structured_name_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_structured_name_cb (self);
}


static void __folks_individual_notify_full_name_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_full_name_cb (self);
}


static void __folks_individual_notify_nickname_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_nickname_cb (self);
}


static void __folks_individual_notify_gender_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_gender_cb (self);
}


static void __folks_individual_notify_urls_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_urls_cb (self);
}


static void __folks_individual_notify_phone_numbers_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_phone_numbers_cb (self);
}


static void __folks_individual_notify_email_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_email_addresses_cb (self);
}


static void __folks_individual_notify_roles_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_roles_cb (self);
}


static void __folks_individual_notify_birthday_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_birthday_cb (self);
}


static void __folks_individual_notify_notes_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_notes_cb (self);
}


static void __folks_individual_notify_postal_addresses_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_postal_addresses_cb (self);
}


static void __folks_individual_notify_local_ids_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_notify_local_ids_cb (self);
}


static void __folks_individual_persona_group_changed_cb_folks_group_details_group_changed (FolksGroupDetails* _sender, const gchar* group, gboolean is_member, gpointer self) {
	_folks_individual_persona_group_changed_cb (self, group, is_member);
}


static void _folks_individual_connect_to_persona (FolksIndividual* self, FolksPersona* persona) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (persona != NULL);
	g_signal_connect_object ((GObject*) persona, "notify::alias", (GCallback) __folks_individual_notify_alias_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::avatar", (GCallback) __folks_individual_notify_avatar_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::presence-message", (GCallback) __folks_individual_notify_presence_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::presence-type", (GCallback) __folks_individual_notify_presence_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::im-addresses", (GCallback) __folks_individual_notify_im_addresses_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::web-service-addresses", (GCallback) __folks_individual_notify_web_service_addresses_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::is-favourite", (GCallback) __folks_individual_notify_is_favourite_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::structured-name", (GCallback) __folks_individual_notify_structured_name_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::full-name", (GCallback) __folks_individual_notify_full_name_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::nickname", (GCallback) __folks_individual_notify_nickname_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::gender", (GCallback) __folks_individual_notify_gender_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::urls", (GCallback) __folks_individual_notify_urls_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::phone-numbers", (GCallback) __folks_individual_notify_phone_numbers_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::email-addresses", (GCallback) __folks_individual_notify_email_addresses_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::roles", (GCallback) __folks_individual_notify_roles_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::birthday", (GCallback) __folks_individual_notify_birthday_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::notes", (GCallback) __folks_individual_notify_notes_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::postal-addresses", (GCallback) __folks_individual_notify_postal_addresses_cb_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) persona, "notify::local-ids", (GCallback) __folks_individual_notify_local_ids_cb_g_object_notify, self, 0);
	if (FOLKS_IS_GROUP_DETAILS (persona)) {
		g_signal_connect_object (FOLKS_GROUP_DETAILS (persona), "group-changed", (GCallback) __folks_individual_persona_group_changed_cb_folks_group_details_group_changed, self, 0);
	}
}


static void _folks_individual_update_structured_name (FolksIndividual* self) {
	gboolean name_found;
	g_return_if_fail (self != NULL);
	name_found = FALSE;
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp3_;
			FolksNameDetails* _tmp4_;
			FolksNameDetails* name_details;
			_tmp1_ = gee_iterator_next (_persona_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp2_;
			_tmp3_ = persona;
			_tmp4_ = _g_object_ref0 (FOLKS_IS_NAME_DETAILS (_tmp3_) ? ((FolksNameDetails*) _tmp3_) : NULL);
			name_details = _tmp4_;
			if (name_details != NULL) {
				FolksStructuredName* _tmp5_ = NULL;
				FolksStructuredName* _tmp6_;
				FolksStructuredName* new_value;
				gboolean _tmp7_ = FALSE;
				_tmp5_ = folks_name_details_get_structured_name (name_details);
				_tmp6_ = _g_object_ref0 (_tmp5_);
				new_value = _tmp6_;
				if (new_value != NULL) {
					gboolean _tmp8_;
					_tmp8_ = folks_structured_name_is_empty (new_value);
					_tmp7_ = !_tmp8_;
				} else {
					_tmp7_ = FALSE;
				}
				if (_tmp7_) {
					gboolean _tmp9_ = FALSE;
					FolksStructuredName* _tmp10_ = NULL;
					name_found = TRUE;
					_tmp10_ = folks_name_details_get_structured_name ((FolksNameDetails*) self);
					if (_tmp10_ == NULL) {
						_tmp9_ = TRUE;
					} else {
						FolksStructuredName* _tmp11_ = NULL;
						gboolean _tmp12_;
						_tmp11_ = folks_name_details_get_structured_name ((FolksNameDetails*) self);
						_tmp12_ = folks_structured_name_equal (_tmp11_, new_value);
						_tmp9_ = !_tmp12_;
					}
					if (_tmp9_) {
						folks_name_details_set_structured_name ((FolksNameDetails*) self, new_value);
						_g_object_unref0 (new_value);
						_g_object_unref0 (name_details);
						_g_object_unref0 (persona);
						_g_object_unref0 (_persona_it);
						return;
					}
				}
				_g_object_unref0 (new_value);
			}
			_g_object_unref0 (name_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	if (name_found == FALSE) {
		folks_name_details_set_structured_name ((FolksNameDetails*) self, NULL);
	}
}


static void _folks_individual_update_full_name (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp3_;
			FolksNameDetails* _tmp4_;
			FolksNameDetails* name_details;
			_tmp1_ = gee_iterator_next (_persona_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp2_;
			_tmp3_ = persona;
			_tmp4_ = _g_object_ref0 (FOLKS_IS_NAME_DETAILS (_tmp3_) ? ((FolksNameDetails*) _tmp3_) : NULL);
			name_details = _tmp4_;
			if (name_details != NULL) {
				const gchar* _tmp5_ = NULL;
				gchar* _tmp6_;
				gchar* new_value;
				_tmp5_ = folks_name_details_get_full_name (name_details);
				_tmp6_ = g_strdup (_tmp5_);
				new_value = _tmp6_;
				if (new_value != NULL) {
					const gchar* _tmp7_ = NULL;
					_tmp7_ = folks_name_details_get_full_name ((FolksNameDetails*) self);
					if (g_strcmp0 (new_value, _tmp7_) != 0) {
						folks_name_details_set_full_name ((FolksNameDetails*) self, new_value);
					}
					_g_free0 (new_value);
					_g_object_unref0 (name_details);
					_g_object_unref0 (persona);
					break;
				}
				_g_free0 (new_value);
			}
			_g_object_unref0 (name_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
}


static void _folks_individual_update_nickname (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp3_;
			FolksNameDetails* _tmp4_;
			FolksNameDetails* name_details;
			_tmp1_ = gee_iterator_next (_persona_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp2_;
			_tmp3_ = persona;
			_tmp4_ = _g_object_ref0 (FOLKS_IS_NAME_DETAILS (_tmp3_) ? ((FolksNameDetails*) _tmp3_) : NULL);
			name_details = _tmp4_;
			if (name_details != NULL) {
				const gchar* _tmp5_ = NULL;
				gchar* _tmp6_;
				gchar* new_value;
				_tmp5_ = folks_name_details_get_nickname (name_details);
				_tmp6_ = g_strdup (_tmp5_);
				new_value = _tmp6_;
				if (new_value != NULL) {
					if (g_strcmp0 (new_value, self->priv->_nickname) != 0) {
						gchar* _tmp7_;
						_tmp7_ = g_strdup (new_value);
						_g_free0 (self->priv->_nickname);
						self->priv->_nickname = _tmp7_;
						g_object_notify ((GObject*) self, "nickname");
					}
					_g_free0 (new_value);
					_g_object_unref0 (name_details);
					_g_object_unref0 (persona);
					break;
				}
				_g_free0 (new_value);
			}
			_g_object_unref0 (name_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
}


static void _folks_individual_disconnect_from_persona (FolksIndividual* self, FolksPersona* persona) {
	guint _tmp0_;
	GQuark _tmp1_;
	guint _tmp2_;
	GQuark _tmp3_;
	guint _tmp4_;
	GQuark _tmp5_;
	guint _tmp6_;
	GQuark _tmp7_;
	guint _tmp8_;
	GQuark _tmp9_;
	guint _tmp10_;
	GQuark _tmp11_;
	guint _tmp12_;
	GQuark _tmp13_;
	guint _tmp14_;
	GQuark _tmp15_;
	guint _tmp16_;
	GQuark _tmp17_;
	guint _tmp18_;
	GQuark _tmp19_;
	guint _tmp20_;
	GQuark _tmp21_;
	guint _tmp22_;
	GQuark _tmp23_;
	guint _tmp24_;
	GQuark _tmp25_;
	guint _tmp26_;
	GQuark _tmp27_;
	guint _tmp28_;
	GQuark _tmp29_;
	guint _tmp30_;
	GQuark _tmp31_;
	guint _tmp32_;
	GQuark _tmp33_;
	guint _tmp34_;
	GQuark _tmp35_;
	guint _tmp36_;
	GQuark _tmp37_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (persona != NULL);
	g_signal_parse_name ("notify::alias", G_TYPE_OBJECT, &_tmp0_, &_tmp1_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, _tmp1_, NULL, (GCallback) __folks_individual_notify_alias_cb_g_object_notify, self);
	g_signal_parse_name ("notify::avatar", G_TYPE_OBJECT, &_tmp2_, &_tmp3_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, _tmp3_, NULL, (GCallback) __folks_individual_notify_avatar_cb_g_object_notify, self);
	g_signal_parse_name ("notify::presence-message", G_TYPE_OBJECT, &_tmp4_, &_tmp5_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp4_, _tmp5_, NULL, (GCallback) __folks_individual_notify_presence_cb_g_object_notify, self);
	g_signal_parse_name ("notify::presence-type", G_TYPE_OBJECT, &_tmp6_, &_tmp7_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp6_, _tmp7_, NULL, (GCallback) __folks_individual_notify_presence_cb_g_object_notify, self);
	g_signal_parse_name ("notify::im-addresses", G_TYPE_OBJECT, &_tmp8_, &_tmp9_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp8_, _tmp9_, NULL, (GCallback) __folks_individual_notify_im_addresses_cb_g_object_notify, self);
	g_signal_parse_name ("notify::web-service-addresses", G_TYPE_OBJECT, &_tmp10_, &_tmp11_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp10_, _tmp11_, NULL, (GCallback) __folks_individual_notify_web_service_addresses_cb_g_object_notify, self);
	g_signal_parse_name ("notify::is-favourite", G_TYPE_OBJECT, &_tmp12_, &_tmp13_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp12_, _tmp13_, NULL, (GCallback) __folks_individual_notify_is_favourite_cb_g_object_notify, self);
	g_signal_parse_name ("notify::structured-name", G_TYPE_OBJECT, &_tmp14_, &_tmp15_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp14_, _tmp15_, NULL, (GCallback) __folks_individual_notify_structured_name_cb_g_object_notify, self);
	g_signal_parse_name ("notify::full-name", G_TYPE_OBJECT, &_tmp16_, &_tmp17_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp16_, _tmp17_, NULL, (GCallback) __folks_individual_notify_full_name_cb_g_object_notify, self);
	g_signal_parse_name ("notify::nickname", G_TYPE_OBJECT, &_tmp18_, &_tmp19_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp18_, _tmp19_, NULL, (GCallback) __folks_individual_notify_nickname_cb_g_object_notify, self);
	g_signal_parse_name ("notify::gender", G_TYPE_OBJECT, &_tmp20_, &_tmp21_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp20_, _tmp21_, NULL, (GCallback) __folks_individual_notify_gender_cb_g_object_notify, self);
	g_signal_parse_name ("notify::urls", G_TYPE_OBJECT, &_tmp22_, &_tmp23_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp22_, _tmp23_, NULL, (GCallback) __folks_individual_notify_urls_cb_g_object_notify, self);
	g_signal_parse_name ("notify::phone-numbers", G_TYPE_OBJECT, &_tmp24_, &_tmp25_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp24_, _tmp25_, NULL, (GCallback) __folks_individual_notify_phone_numbers_cb_g_object_notify, self);
	g_signal_parse_name ("notify::email-addresses", G_TYPE_OBJECT, &_tmp26_, &_tmp27_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp26_, _tmp27_, NULL, (GCallback) __folks_individual_notify_email_addresses_cb_g_object_notify, self);
	g_signal_parse_name ("notify::roles", G_TYPE_OBJECT, &_tmp28_, &_tmp29_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp28_, _tmp29_, NULL, (GCallback) __folks_individual_notify_roles_cb_g_object_notify, self);
	g_signal_parse_name ("notify::birthday", G_TYPE_OBJECT, &_tmp30_, &_tmp31_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp30_, _tmp31_, NULL, (GCallback) __folks_individual_notify_birthday_cb_g_object_notify, self);
	g_signal_parse_name ("notify::notes", G_TYPE_OBJECT, &_tmp32_, &_tmp33_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp32_, _tmp33_, NULL, (GCallback) __folks_individual_notify_notes_cb_g_object_notify, self);
	g_signal_parse_name ("notify::postal-addresses", G_TYPE_OBJECT, &_tmp34_, &_tmp35_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp34_, _tmp35_, NULL, (GCallback) __folks_individual_notify_postal_addresses_cb_g_object_notify, self);
	g_signal_parse_name ("notify::local-ids", G_TYPE_OBJECT, &_tmp36_, &_tmp37_, TRUE);
	g_signal_handlers_disconnect_matched ((GObject*) persona, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp36_, _tmp37_, NULL, (GCallback) __folks_individual_notify_local_ids_cb_g_object_notify, self);
	if (FOLKS_IS_GROUP_DETAILS (persona)) {
		guint _tmp38_;
		g_signal_parse_name ("group-changed", FOLKS_TYPE_GROUP_DETAILS, &_tmp38_, NULL, FALSE);
		g_signal_handlers_disconnect_matched (FOLKS_GROUP_DETAILS (persona), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp38_, 0, NULL, (GCallback) __folks_individual_persona_group_changed_cb_folks_group_details_group_changed, self);
	}
}


static void _folks_individual_update_gender (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp3_;
			FolksGenderDetails* _tmp4_;
			FolksGenderDetails* gender_details;
			_tmp1_ = gee_iterator_next (_persona_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp2_;
			_tmp3_ = persona;
			_tmp4_ = _g_object_ref0 (FOLKS_IS_GENDER_DETAILS (_tmp3_) ? ((FolksGenderDetails*) _tmp3_) : NULL);
			gender_details = _tmp4_;
			if (gender_details != NULL) {
				FolksGender _tmp5_;
				FolksGender new_value;
				_tmp5_ = folks_gender_details_get_gender (gender_details);
				new_value = _tmp5_;
				if (new_value != FOLKS_GENDER_UNSPECIFIED) {
					FolksGender _tmp6_;
					_tmp6_ = folks_gender_details_get_gender ((FolksGenderDetails*) self);
					if (new_value != _tmp6_) {
						folks_gender_details_set_gender ((FolksGenderDetails*) self, new_value);
					}
					_g_object_unref0 (gender_details);
					_g_object_unref0 (persona);
					break;
				}
			}
			_g_object_unref0 (gender_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
}


static void _folks_individual_update_urls (FolksIndividual* self) {
	GeeHashMap* _tmp0_ = NULL;
	GeeHashMap* urls_set;
	GeeHashSet* _tmp1_ = NULL;
	GeeHashSet* urls;
	GeeHashSet* _tmp20_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_map_new (G_TYPE_STRING, NULL, NULL, FOLKS_TYPE_FIELD_DETAILS, NULL, NULL, NULL, NULL, NULL);
	urls_set = _tmp0_;
	_tmp1_ = gee_hash_set_new (FOLKS_TYPE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	urls = _tmp1_;
	{
		GeeIterator* _tmp2_ = NULL;
		GeeIterator* _persona_it;
		_tmp2_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp2_;
		while (TRUE) {
			gboolean _tmp3_;
			gpointer _tmp4_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp5_;
			FolksUrlDetails* _tmp6_;
			FolksUrlDetails* url_details;
			_tmp3_ = gee_iterator_next (_persona_it);
			if (!_tmp3_) {
				break;
			}
			_tmp4_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp4_;
			_tmp5_ = persona;
			_tmp6_ = _g_object_ref0 (FOLKS_IS_URL_DETAILS (_tmp5_) ? ((FolksUrlDetails*) _tmp5_) : NULL);
			url_details = _tmp6_;
			if (url_details != NULL) {
				{
					GeeSet* _tmp7_ = NULL;
					GeeIterator* _tmp8_ = NULL;
					GeeIterator* _ps_it;
					_tmp7_ = folks_url_details_get_urls (url_details);
					_tmp8_ = gee_iterable_iterator ((GeeIterable*) _tmp7_);
					_ps_it = _tmp8_;
					while (TRUE) {
						gboolean _tmp9_;
						gpointer _tmp10_ = NULL;
						FolksFieldDetails* ps;
						const gchar* _tmp11_ = NULL;
						const gchar* _tmp12_ = NULL;
						gpointer _tmp13_ = NULL;
						FolksFieldDetails* _tmp14_;
						FolksFieldDetails* existing;
						_tmp9_ = gee_iterator_next (_ps_it);
						if (!_tmp9_) {
							break;
						}
						_tmp10_ = gee_iterator_get (_ps_it);
						ps = (FolksFieldDetails*) _tmp10_;
						_tmp11_ = folks_field_details_get_value (ps);
						if (_tmp11_ == NULL) {
							_g_object_unref0 (ps);
							continue;
						}
						_tmp12_ = folks_field_details_get_value (ps);
						_tmp13_ = gee_abstract_map_get ((GeeAbstractMap*) urls_set, _tmp12_);
						_tmp14_ = _g_object_ref0 ((FolksFieldDetails*) _tmp13_);
						existing = _tmp14_;
						if (existing != NULL) {
							GeeMultiMap* _tmp15_ = NULL;
							_tmp15_ = folks_field_details_get_parameters (ps);
							folks_field_details_extend_parameters (existing, _tmp15_);
						} else {
							const gchar* _tmp16_ = NULL;
							FolksFieldDetails* _tmp17_ = NULL;
							FolksFieldDetails* new_ps;
							GeeMultiMap* _tmp18_ = NULL;
							const gchar* _tmp19_ = NULL;
							_tmp16_ = folks_field_details_get_value (ps);
							_tmp17_ = folks_field_details_new (_tmp16_);
							new_ps = _tmp17_;
							_tmp18_ = folks_field_details_get_parameters (ps);
							folks_field_details_extend_parameters (new_ps, _tmp18_);
							_tmp19_ = folks_field_details_get_value (ps);
							gee_abstract_map_set ((GeeAbstractMap*) urls_set, _tmp19_, new_ps);
							gee_abstract_collection_add ((GeeAbstractCollection*) urls, new_ps);
							_g_object_unref0 (new_ps);
						}
						_g_object_unref0 (existing);
						_g_object_unref0 (ps);
					}
					_g_object_unref0 (_ps_it);
				}
			}
			_g_object_unref0 (url_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp20_ = _g_object_ref0 (urls);
	_g_object_unref0 (self->priv->_urls);
	self->priv->_urls = _tmp20_;
	g_object_notify ((GObject*) self, "urls");
	_g_object_unref0 (urls);
	_g_object_unref0 (urls_set);
}


static void _folks_individual_update_phone_numbers (FolksIndividual* self) {
	GeeHashMap* _tmp0_ = NULL;
	GeeHashMap* phone_numbers_set;
	GeeHashSet* _tmp1_ = NULL;
	GeeHashSet* phones;
	GeeHashSet* _tmp20_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_map_new (G_TYPE_STRING, NULL, NULL, FOLKS_TYPE_FIELD_DETAILS, NULL, NULL, NULL, NULL, NULL);
	phone_numbers_set = _tmp0_;
	_tmp1_ = gee_hash_set_new (FOLKS_TYPE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	phones = _tmp1_;
	{
		GeeIterator* _tmp2_ = NULL;
		GeeIterator* _persona_it;
		_tmp2_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp2_;
		while (TRUE) {
			gboolean _tmp3_;
			gpointer _tmp4_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp5_;
			FolksPhoneDetails* _tmp6_;
			FolksPhoneDetails* phone_details;
			_tmp3_ = gee_iterator_next (_persona_it);
			if (!_tmp3_) {
				break;
			}
			_tmp4_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp4_;
			_tmp5_ = persona;
			_tmp6_ = _g_object_ref0 (FOLKS_IS_PHONE_DETAILS (_tmp5_) ? ((FolksPhoneDetails*) _tmp5_) : NULL);
			phone_details = _tmp6_;
			if (phone_details != NULL) {
				{
					GeeSet* _tmp7_ = NULL;
					GeeIterator* _tmp8_ = NULL;
					GeeIterator* _fd_it;
					_tmp7_ = folks_phone_details_get_phone_numbers (phone_details);
					_tmp8_ = gee_iterable_iterator ((GeeIterable*) _tmp7_);
					_fd_it = _tmp8_;
					while (TRUE) {
						gboolean _tmp9_;
						gpointer _tmp10_ = NULL;
						FolksFieldDetails* fd;
						const gchar* _tmp11_ = NULL;
						const gchar* _tmp12_ = NULL;
						gpointer _tmp13_ = NULL;
						FolksFieldDetails* _tmp14_;
						FolksFieldDetails* existing;
						_tmp9_ = gee_iterator_next (_fd_it);
						if (!_tmp9_) {
							break;
						}
						_tmp10_ = gee_iterator_get (_fd_it);
						fd = (FolksFieldDetails*) _tmp10_;
						_tmp11_ = folks_field_details_get_value (fd);
						if (_tmp11_ == NULL) {
							_g_object_unref0 (fd);
							continue;
						}
						_tmp12_ = folks_field_details_get_value (fd);
						_tmp13_ = gee_abstract_map_get ((GeeAbstractMap*) phone_numbers_set, _tmp12_);
						_tmp14_ = _g_object_ref0 ((FolksFieldDetails*) _tmp13_);
						existing = _tmp14_;
						if (existing != NULL) {
							GeeMultiMap* _tmp15_ = NULL;
							_tmp15_ = folks_field_details_get_parameters (fd);
							folks_field_details_extend_parameters (existing, _tmp15_);
						} else {
							const gchar* _tmp16_ = NULL;
							FolksFieldDetails* _tmp17_ = NULL;
							FolksFieldDetails* new_fd;
							GeeMultiMap* _tmp18_ = NULL;
							const gchar* _tmp19_ = NULL;
							_tmp16_ = folks_field_details_get_value (fd);
							_tmp17_ = folks_field_details_new (_tmp16_);
							new_fd = _tmp17_;
							_tmp18_ = folks_field_details_get_parameters (fd);
							folks_field_details_extend_parameters (new_fd, _tmp18_);
							_tmp19_ = folks_field_details_get_value (fd);
							gee_abstract_map_set ((GeeAbstractMap*) phone_numbers_set, _tmp19_, new_fd);
							gee_abstract_collection_add ((GeeAbstractCollection*) phones, new_fd);
							_g_object_unref0 (new_fd);
						}
						_g_object_unref0 (existing);
						_g_object_unref0 (fd);
					}
					_g_object_unref0 (_fd_it);
				}
			}
			_g_object_unref0 (phone_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp20_ = _g_object_ref0 (phones);
	_g_object_unref0 (self->priv->_phone_numbers);
	self->priv->_phone_numbers = _tmp20_;
	g_object_notify ((GObject*) self, "phone-numbers");
	_g_object_unref0 (phones);
	_g_object_unref0 (phone_numbers_set);
}


static void _folks_individual_update_email_addresses (FolksIndividual* self) {
	GeeHashMap* _tmp0_ = NULL;
	GeeHashMap* emails_set;
	GeeHashSet* _tmp1_ = NULL;
	GeeHashSet* emails;
	GeeHashSet* _tmp20_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_map_new (G_TYPE_STRING, NULL, NULL, FOLKS_TYPE_FIELD_DETAILS, NULL, NULL, NULL, NULL, NULL);
	emails_set = _tmp0_;
	_tmp1_ = gee_hash_set_new (FOLKS_TYPE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	emails = _tmp1_;
	{
		GeeIterator* _tmp2_ = NULL;
		GeeIterator* _persona_it;
		_tmp2_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp2_;
		while (TRUE) {
			gboolean _tmp3_;
			gpointer _tmp4_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp5_;
			FolksEmailDetails* _tmp6_;
			FolksEmailDetails* email_details;
			_tmp3_ = gee_iterator_next (_persona_it);
			if (!_tmp3_) {
				break;
			}
			_tmp4_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp4_;
			_tmp5_ = persona;
			_tmp6_ = _g_object_ref0 (FOLKS_IS_EMAIL_DETAILS (_tmp5_) ? ((FolksEmailDetails*) _tmp5_) : NULL);
			email_details = _tmp6_;
			if (email_details != NULL) {
				{
					GeeSet* _tmp7_ = NULL;
					GeeIterator* _tmp8_ = NULL;
					GeeIterator* _fd_it;
					_tmp7_ = folks_email_details_get_email_addresses (email_details);
					_tmp8_ = gee_iterable_iterator ((GeeIterable*) _tmp7_);
					_fd_it = _tmp8_;
					while (TRUE) {
						gboolean _tmp9_;
						gpointer _tmp10_ = NULL;
						FolksFieldDetails* fd;
						const gchar* _tmp11_ = NULL;
						const gchar* _tmp12_ = NULL;
						gpointer _tmp13_ = NULL;
						FolksFieldDetails* _tmp14_;
						FolksFieldDetails* existing;
						_tmp9_ = gee_iterator_next (_fd_it);
						if (!_tmp9_) {
							break;
						}
						_tmp10_ = gee_iterator_get (_fd_it);
						fd = (FolksFieldDetails*) _tmp10_;
						_tmp11_ = folks_field_details_get_value (fd);
						if (_tmp11_ == NULL) {
							_g_object_unref0 (fd);
							continue;
						}
						_tmp12_ = folks_field_details_get_value (fd);
						_tmp13_ = gee_abstract_map_get ((GeeAbstractMap*) emails_set, _tmp12_);
						_tmp14_ = _g_object_ref0 ((FolksFieldDetails*) _tmp13_);
						existing = _tmp14_;
						if (existing != NULL) {
							GeeMultiMap* _tmp15_ = NULL;
							_tmp15_ = folks_field_details_get_parameters (fd);
							folks_field_details_extend_parameters (existing, _tmp15_);
						} else {
							const gchar* _tmp16_ = NULL;
							FolksFieldDetails* _tmp17_ = NULL;
							FolksFieldDetails* new_fd;
							GeeMultiMap* _tmp18_ = NULL;
							const gchar* _tmp19_ = NULL;
							_tmp16_ = folks_field_details_get_value (fd);
							_tmp17_ = folks_field_details_new (_tmp16_);
							new_fd = _tmp17_;
							_tmp18_ = folks_field_details_get_parameters (fd);
							folks_field_details_extend_parameters (new_fd, _tmp18_);
							_tmp19_ = folks_field_details_get_value (fd);
							gee_abstract_map_set ((GeeAbstractMap*) emails_set, _tmp19_, new_fd);
							gee_abstract_collection_add ((GeeAbstractCollection*) emails, new_fd);
							_g_object_unref0 (new_fd);
						}
						_g_object_unref0 (existing);
						_g_object_unref0 (fd);
					}
					_g_object_unref0 (_fd_it);
				}
			}
			_g_object_unref0 (email_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp20_ = _g_object_ref0 (emails);
	_g_object_unref0 (self->priv->_email_addresses);
	self->priv->_email_addresses = _tmp20_;
	g_object_notify ((GObject*) self, "email-addresses");
	_g_object_unref0 (emails);
	_g_object_unref0 (emails_set);
}


static void _folks_individual_update_roles (FolksIndividual* self) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* roles;
	GeeHashSet* _tmp11_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_ROLE, (GBoxedCopyFunc) g_object_ref, g_object_unref, (GHashFunc) folks_role_hash, (GEqualFunc) folks_role_equal);
	roles = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _persona_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp4_;
			FolksRoleDetails* _tmp5_;
			FolksRoleDetails* role_details;
			_tmp2_ = gee_iterator_next (_persona_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp3_;
			_tmp4_ = persona;
			_tmp5_ = _g_object_ref0 (FOLKS_IS_ROLE_DETAILS (_tmp4_) ? ((FolksRoleDetails*) _tmp4_) : NULL);
			role_details = _tmp5_;
			if (role_details != NULL) {
				{
					GeeSet* _tmp6_ = NULL;
					GeeIterator* _tmp7_ = NULL;
					GeeIterator* _r_it;
					_tmp6_ = folks_role_details_get_roles (role_details);
					_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
					_r_it = _tmp7_;
					while (TRUE) {
						gboolean _tmp8_;
						gpointer _tmp9_ = NULL;
						FolksRole* r;
						gboolean _tmp10_;
						_tmp8_ = gee_iterator_next (_r_it);
						if (!_tmp8_) {
							break;
						}
						_tmp9_ = gee_iterator_get (_r_it);
						r = (FolksRole*) _tmp9_;
						_tmp10_ = gee_abstract_collection_contains ((GeeAbstractCollection*) roles, r);
						if (_tmp10_ == FALSE) {
							gee_abstract_collection_add ((GeeAbstractCollection*) roles, r);
						}
						_g_object_unref0 (r);
					}
					_g_object_unref0 (_r_it);
				}
			}
			_g_object_unref0 (role_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp11_ = roles;
	roles = NULL;
	_g_object_unref0 (self->priv->_roles);
	self->priv->_roles = _tmp11_;
	g_object_notify ((GObject*) self, "roles");
	_g_object_unref0 (roles);
}


static void _folks_individual_update_local_ids (FolksIndividual* self) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* _local_ids;
	GeeHashSet* _tmp10_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL);
	_local_ids = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _persona_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp4_;
			FolksLocalIdDetails* _tmp5_;
			FolksLocalIdDetails* local_ids_details;
			_tmp2_ = gee_iterator_next (_persona_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp3_;
			_tmp4_ = persona;
			_tmp5_ = _g_object_ref0 (FOLKS_IS_LOCAL_ID_DETAILS (_tmp4_) ? ((FolksLocalIdDetails*) _tmp4_) : NULL);
			local_ids_details = _tmp5_;
			if (local_ids_details != NULL) {
				{
					GeeSet* _tmp6_ = NULL;
					GeeIterator* _tmp7_ = NULL;
					GeeIterator* _id_it;
					_tmp6_ = folks_local_id_details_get_local_ids (local_ids_details);
					_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
					_id_it = _tmp7_;
					while (TRUE) {
						gboolean _tmp8_;
						gpointer _tmp9_ = NULL;
						gchar* id;
						_tmp8_ = gee_iterator_next (_id_it);
						if (!_tmp8_) {
							break;
						}
						_tmp9_ = gee_iterator_get (_id_it);
						id = (gchar*) _tmp9_;
						gee_abstract_collection_add ((GeeAbstractCollection*) _local_ids, id);
						_g_free0 (id);
					}
					_g_object_unref0 (_id_it);
				}
			}
			_g_object_unref0 (local_ids_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp10_ = _local_ids;
	_local_ids = NULL;
	_g_object_unref0 (self->priv->_local_ids);
	self->priv->_local_ids = _tmp10_;
	g_object_notify ((GObject*) self, "local-ids");
	_g_object_unref0 (_local_ids);
}


static void _folks_individual_update_postal_addresses (FolksIndividual* self) {
	GeeHashSet* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_POSTAL_ADDRESS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_postal_addresses);
	self->priv->_postal_addresses = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _persona_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp4_;
			FolksPostalAddressDetails* _tmp5_;
			FolksPostalAddressDetails* address_details;
			_tmp2_ = gee_iterator_next (_persona_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp3_;
			_tmp4_ = persona;
			_tmp5_ = _g_object_ref0 (FOLKS_IS_POSTAL_ADDRESS_DETAILS (_tmp4_) ? ((FolksPostalAddressDetails*) _tmp4_) : NULL);
			address_details = _tmp5_;
			if (address_details != NULL) {
				{
					GeeSet* _tmp6_ = NULL;
					GeeIterator* _tmp7_ = NULL;
					GeeIterator* _pa_it;
					_tmp6_ = folks_postal_address_details_get_postal_addresses (address_details);
					_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
					_pa_it = _tmp7_;
					while (TRUE) {
						gboolean _tmp8_;
						gpointer _tmp9_ = NULL;
						FolksPostalAddress* pa;
						_tmp8_ = gee_iterator_next (_pa_it);
						if (!_tmp8_) {
							break;
						}
						_tmp9_ = gee_iterator_get (_pa_it);
						pa = (FolksPostalAddress*) _tmp9_;
						gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_postal_addresses, pa);
						_g_object_unref0 (pa);
					}
					_g_object_unref0 (_pa_it);
				}
			}
			_g_object_unref0 (address_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	g_object_notify ((GObject*) self, "postal-addresses");
}


static void _folks_individual_update_birthday (FolksIndividual* self) {
	GDateTime* bday;
	const gchar* calendar_event_id;
	gboolean _tmp13_ = FALSE;
	GDateTime* _tmp14_ = NULL;
	g_return_if_fail (self != NULL);
	bday = NULL;
	calendar_event_id = "";
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _persona_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp3_;
			FolksBirthdayDetails* _tmp4_;
			FolksBirthdayDetails* bday_owner;
			_tmp1_ = gee_iterator_next (_persona_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp2_;
			_tmp3_ = persona;
			_tmp4_ = _g_object_ref0 (FOLKS_IS_BIRTHDAY_DETAILS (_tmp3_) ? ((FolksBirthdayDetails*) _tmp3_) : NULL);
			bday_owner = _tmp4_;
			if (bday_owner != NULL) {
				GDateTime* _tmp5_ = NULL;
				_tmp5_ = folks_birthday_details_get_birthday (bday_owner);
				if (_tmp5_ != NULL) {
					gboolean _tmp6_ = FALSE;
					GDateTime* _tmp7_ = NULL;
					_tmp7_ = folks_birthday_details_get_birthday ((FolksBirthdayDetails*) self);
					if (_tmp7_ == NULL) {
						_tmp6_ = TRUE;
					} else {
						GDateTime* _tmp8_ = NULL;
						GDateTime* _tmp9_ = NULL;
						gint _tmp10_;
						_tmp8_ = folks_birthday_details_get_birthday (bday_owner);
						_tmp9_ = folks_birthday_details_get_birthday ((FolksBirthdayDetails*) self);
						_tmp10_ = g_date_time_compare (_tmp8_, _tmp9_);
						_tmp6_ = _tmp10_ != 0;
					}
					if (_tmp6_) {
						GDateTime* _tmp11_ = NULL;
						const gchar* _tmp12_ = NULL;
						_tmp11_ = folks_birthday_details_get_birthday (bday_owner);
						bday = _tmp11_;
						_tmp12_ = folks_birthday_details_get_calendar_event_id (bday_owner);
						calendar_event_id = _tmp12_;
						_g_object_unref0 (bday_owner);
						_g_object_unref0 (persona);
						break;
					}
				}
			}
			_g_object_unref0 (bday_owner);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp14_ = folks_birthday_details_get_birthday ((FolksBirthdayDetails*) self);
	if (_tmp14_ != NULL) {
		_tmp13_ = bday == NULL;
	} else {
		_tmp13_ = FALSE;
	}
	if (_tmp13_) {
		folks_birthday_details_set_birthday ((FolksBirthdayDetails*) self, NULL);
		folks_birthday_details_set_calendar_event_id ((FolksBirthdayDetails*) self, NULL);
	} else {
		if (bday != NULL) {
			folks_birthday_details_set_birthday ((FolksBirthdayDetails*) self, bday);
			folks_birthday_details_set_calendar_event_id ((FolksBirthdayDetails*) self, calendar_event_id);
		}
	}
}


static void _folks_individual_update_notes (FolksIndividual* self) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* notes;
	GeeHashSet* _tmp10_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_NOTE, (GBoxedCopyFunc) g_object_ref, g_object_unref, (GHashFunc) folks_note_hash, (GEqualFunc) folks_note_equal);
	notes = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _persona_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_persona_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* persona;
			FolksPersona* _tmp4_;
			FolksNoteDetails* _tmp5_;
			FolksNoteDetails* note_details;
			_tmp2_ = gee_iterator_next (_persona_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_persona_it);
			persona = (FolksPersona*) _tmp3_;
			_tmp4_ = persona;
			_tmp5_ = _g_object_ref0 (FOLKS_IS_NOTE_DETAILS (_tmp4_) ? ((FolksNoteDetails*) _tmp4_) : NULL);
			note_details = _tmp5_;
			if (note_details != NULL) {
				{
					GeeSet* _tmp6_ = NULL;
					GeeIterator* _tmp7_ = NULL;
					GeeIterator* _n_it;
					_tmp6_ = folks_note_details_get_notes (note_details);
					_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
					_n_it = _tmp7_;
					while (TRUE) {
						gboolean _tmp8_;
						gpointer _tmp9_ = NULL;
						FolksNote* n;
						_tmp8_ = gee_iterator_next (_n_it);
						if (!_tmp8_) {
							break;
						}
						_tmp9_ = gee_iterator_get (_n_it);
						n = (FolksNote*) _tmp9_;
						gee_abstract_collection_add ((GeeAbstractCollection*) notes, n);
						_g_object_unref0 (n);
					}
					_g_object_unref0 (_n_it);
				}
			}
			_g_object_unref0 (note_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_it);
	}
	_tmp10_ = notes;
	notes = NULL;
	_g_object_unref0 (self->priv->_notes);
	self->priv->_notes = _tmp10_;
	g_object_notify ((GObject*) self, "notes");
	_g_object_unref0 (notes);
}


static void __folks_individual_store_removed_cb_folks_persona_store_removed (FolksPersonaStore* _sender, gpointer self) {
	_folks_individual_store_removed_cb (self, _sender);
}


static void __folks_individual_store_personas_changed_cb_folks_persona_store_personas_changed (FolksPersonaStore* _sender, GeeSet* added, GeeSet* removed, const gchar* message, FolksPersona* actor, FolksGroupDetailsChangeReason reason, gpointer self) {
	_folks_individual_store_personas_changed_cb (self, _sender, added, removed, message, actor, reason);
}


static void _folks_individual_set_personas (FolksIndividual* self, GeeSet* personas, FolksIndividual* replacement_individual) {
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* added;
	GeeHashSet* _tmp1_ = NULL;
	GeeHashSet* removed;
	GeeIterator* _tmp10_ = NULL;
	GeeIterator* iter;
	gboolean _tmp21_ = FALSE;
	gboolean new_is_user;
	gint _tmp22_;
	gboolean _tmp23_ = FALSE;
	g_return_if_fail (self != NULL);
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	added = _tmp0_;
	_tmp1_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	removed = _tmp1_;
	if (personas != NULL) {
		{
			GeeIterator* _tmp2_ = NULL;
			GeeIterator* _p_it;
			_tmp2_ = gee_iterable_iterator ((GeeIterable*) personas);
			_p_it = _tmp2_;
			while (TRUE) {
				gboolean _tmp3_;
				gpointer _tmp4_ = NULL;
				FolksPersona* p;
				gboolean _tmp5_;
				_tmp3_ = gee_iterator_next (_p_it);
				if (!_tmp3_) {
					break;
				}
				_tmp4_ = gee_iterator_get (_p_it);
				p = (FolksPersona*) _tmp4_;
				_tmp5_ = gee_abstract_collection_contains ((GeeAbstractCollection*) self->priv->_persona_set, p);
				if (!_tmp5_) {
					gboolean _tmp6_;
					FolksPersonaStore* _tmp7_ = NULL;
					FolksPersonaStore* _tmp8_;
					FolksPersonaStore* store;
					gpointer _tmp9_ = NULL;
					guint num_from_store;
					_tmp6_ = folks_persona_get_is_user (p);
					if (_tmp6_) {
						self->priv->_persona_user_count++;
					}
					gee_abstract_collection_add ((GeeAbstractCollection*) added, p);
					gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_persona_set, p);
					_folks_individual_connect_to_persona (self, p);
					_tmp7_ = folks_persona_get_store (p);
					_tmp8_ = _g_object_ref0 (_tmp7_);
					store = _tmp8_;
					_tmp9_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->_stores, store);
					num_from_store = GPOINTER_TO_UINT (_tmp9_);
					if (num_from_store == 0) {
						gee_abstract_map_set ((GeeAbstractMap*) self->priv->_stores, store, GUINT_TO_POINTER (num_from_store + 1));
					} else {
						gee_abstract_map_set ((GeeAbstractMap*) self->priv->_stores, store, GUINT_TO_POINTER ((guint) 1));
						g_signal_connect_object (store, "removed", (GCallback) __folks_individual_store_removed_cb_folks_persona_store_removed, self, 0);
						g_signal_connect_object (store, "personas-changed", (GCallback) __folks_individual_store_personas_changed_cb_folks_persona_store_personas_changed, self, 0);
					}
					_g_object_unref0 (store);
				}
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_it);
		}
	}
	_tmp10_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
	iter = _tmp10_;
	while (TRUE) {
		gboolean _tmp11_;
		gpointer _tmp12_ = NULL;
		FolksPersona* p;
		gboolean _tmp13_ = FALSE;
		_tmp11_ = gee_iterator_next (iter);
		if (!_tmp11_) {
			break;
		}
		_tmp12_ = gee_iterator_get (iter);
		p = (FolksPersona*) _tmp12_;
		if (personas == NULL) {
			_tmp13_ = TRUE;
		} else {
			gboolean _tmp14_;
			_tmp14_ = gee_collection_contains ((GeeCollection*) personas, p);
			_tmp13_ = !_tmp14_;
		}
		if (_tmp13_) {
			gboolean _tmp15_;
			FolksPersonaStore* _tmp16_ = NULL;
			FolksPersonaStore* _tmp17_;
			FolksPersonaStore* store;
			gpointer _tmp18_ = NULL;
			guint num_from_store;
			_tmp15_ = folks_persona_get_is_user (p);
			if (_tmp15_) {
				self->priv->_persona_user_count--;
			}
			gee_abstract_collection_add ((GeeAbstractCollection*) removed, p);
			_tmp16_ = folks_persona_get_store (p);
			_tmp17_ = _g_object_ref0 (_tmp16_);
			store = _tmp17_;
			_tmp18_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->_stores, store);
			num_from_store = GPOINTER_TO_UINT (_tmp18_);
			if (num_from_store > 1) {
				gee_abstract_map_set ((GeeAbstractMap*) self->priv->_stores, store, GUINT_TO_POINTER (num_from_store - 1));
			} else {
				guint _tmp19_;
				guint _tmp20_;
				g_signal_parse_name ("removed", FOLKS_TYPE_PERSONA_STORE, &_tmp19_, NULL, FALSE);
				g_signal_handlers_disconnect_matched (store, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp19_, 0, NULL, (GCallback) __folks_individual_store_removed_cb_folks_persona_store_removed, self);
				g_signal_parse_name ("personas-changed", FOLKS_TYPE_PERSONA_STORE, &_tmp20_, NULL, FALSE);
				g_signal_handlers_disconnect_matched (store, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp20_, 0, NULL, (GCallback) __folks_individual_store_personas_changed_cb_folks_persona_store_personas_changed, self);
				gee_abstract_map_unset ((GeeAbstractMap*) self->priv->_stores, store, NULL);
			}
			_folks_individual_disconnect_from_persona (self, p);
			gee_iterator_remove (iter);
			_g_object_unref0 (store);
		}
		_g_object_unref0 (p);
	}
	_folks_individual_emit_personas_changed (self, (GeeSet*) added, (GeeSet*) removed);
	if (self->priv->_persona_user_count > 0) {
		_tmp21_ = TRUE;
	} else {
		_tmp21_ = FALSE;
	}
	new_is_user = _tmp21_;
	if (new_is_user != self->priv->_is_user) {
		folks_individual_set_is_user (self, new_is_user);
	}
	_tmp22_ = gee_collection_get_size ((GeeCollection*) self->priv->_persona_set);
	if (_tmp22_ < 1) {
		g_signal_emit_by_name (self, "removed", replacement_individual);
		_g_object_unref0 (iter);
		_g_object_unref0 (removed);
		_g_object_unref0 (added);
		return;
	}
	if (self->priv->_id == NULL) {
		gint _tmp24_;
		_tmp24_ = gee_collection_get_size ((GeeCollection*) self->priv->_persona_set);
		_tmp23_ = _tmp24_ > 0;
	} else {
		_tmp23_ = FALSE;
	}
	if (_tmp23_) {
		{
			GeeIterator* _tmp25_ = NULL;
			GeeIterator* _persona_it;
			_tmp25_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
			_persona_it = _tmp25_;
			while (TRUE) {
				gboolean _tmp26_;
				gpointer _tmp27_ = NULL;
				FolksPersona* persona;
				const gchar* _tmp28_ = NULL;
				_tmp26_ = gee_iterator_next (_persona_it);
				if (!_tmp26_) {
					break;
				}
				_tmp27_ = gee_iterator_get (_persona_it);
				persona = (FolksPersona*) _tmp27_;
				_tmp28_ = folks_persona_get_uid (persona);
				folks_individual_set_id (self, _tmp28_);
				_g_object_unref0 (persona);
				break;
			}
			_g_object_unref0 (_persona_it);
		}
	}
	_folks_individual_update_fields (self);
	_g_object_unref0 (iter);
	_g_object_unref0 (removed);
	_g_object_unref0 (added);
}


void folks_individual_replace (FolksIndividual* self, FolksIndividual* replacement_individual) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (replacement_individual != NULL);
	_folks_individual_set_personas (self, NULL, replacement_individual);
}


FolksTrustLevel folks_individual_get_trust_level (FolksIndividual* self) {
	FolksTrustLevel result;
	g_return_val_if_fail (self != NULL, 0);
	result = self->priv->_trust_level;
	return result;
}


static void folks_individual_set_trust_level (FolksIndividual* self, FolksTrustLevel value) {
	g_return_if_fail (self != NULL);
	self->priv->_trust_level = value;
	g_object_notify ((GObject *) self, "trust-level");
}


static GFile* folks_individual_real_get_avatar (FolksAvatarDetails* base) {
	GFile* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_avatar;
	return result;
}


static void folks_individual_real_set_avatar (FolksAvatarDetails* base, GFile* value) {
	FolksIndividual* self;
	GFile* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = _g_object_ref0 (value);
	_g_object_unref0 (self->priv->_avatar);
	self->priv->_avatar = _tmp0_;
	g_object_notify ((GObject *) self, "avatar");
}


static FolksPresenceType folks_individual_real_get_presence_type (FolksPresenceDetails* base) {
	FolksPresenceType result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_presence_type;
	return result;
}


static void folks_individual_real_set_presence_type (FolksPresenceDetails* base, FolksPresenceType value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	self->priv->_presence_type = value;
	g_object_notify ((GObject *) self, "presence-type");
}


static const gchar* folks_individual_real_get_presence_message (FolksPresenceDetails* base) {
	const gchar* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_presence_message;
	return result;
}


static void folks_individual_real_set_presence_message (FolksPresenceDetails* base, const gchar* value) {
	FolksIndividual* self;
	gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = g_strdup (value);
	_g_free0 (self->priv->_presence_message);
	self->priv->_presence_message = _tmp0_;
	g_object_notify ((GObject *) self, "presence-message");
}


gboolean folks_individual_get_is_user (FolksIndividual* self) {
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_is_user;
	return result;
}


static void folks_individual_set_is_user (FolksIndividual* self, gboolean value) {
	g_return_if_fail (self != NULL);
	self->priv->_is_user = value;
	g_object_notify ((GObject *) self, "is-user");
}


const gchar* folks_individual_get_id (FolksIndividual* self) {
	const gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	result = self->priv->_id;
	return result;
}


static void folks_individual_set_id (FolksIndividual* self, const gchar* value) {
	gchar* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = g_strdup (value);
	_g_free0 (self->priv->_id);
	self->priv->_id = _tmp0_;
	g_object_notify ((GObject *) self, "id");
}


static const gchar* folks_individual_real_get_alias (FolksAliasDetails* base) {
	const gchar* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_alias;
	return result;
}


static void folks_individual_real_set_alias (FolksAliasDetails* base, const gchar* value) {
	FolksIndividual* self;
	gchar* _tmp0_;
	gboolean alias_changed;
	self = (FolksIndividual*) base;
	if (g_strcmp0 (self->priv->_alias, value) == 0) {
		return;
	}
	_tmp0_ = g_strdup (value);
	_g_free0 (self->priv->_alias);
	self->priv->_alias = _tmp0_;
	g_debug ("individual.vala:192: Setting alias of individual '%s' to '%s'…", self->priv->_id, value);
	alias_changed = FALSE;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _p_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* p;
			gboolean _tmp4_ = FALSE;
			_tmp2_ = gee_iterator_next (_p_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp3_;
			if (FOLKS_IS_ALIAS_DETAILS (p)) {
				FolksPersonaStore* _tmp5_ = NULL;
				gboolean _tmp6_;
				_tmp5_ = folks_persona_get_store (FOLKS_PERSONA (p));
				_tmp6_ = folks_persona_store_get_is_writeable (_tmp5_);
				_tmp4_ = _tmp6_ == TRUE;
			} else {
				_tmp4_ = FALSE;
			}
			if (_tmp4_) {
				const gchar* _tmp7_ = NULL;
				_tmp7_ = folks_persona_get_uid (FOLKS_PERSONA (p));
				g_debug ("individual.vala:201:     written to writeable persona '%s'", _tmp7_);
				folks_alias_details_set_alias (FOLKS_ALIAS_DETAILS (p), value);
				alias_changed = TRUE;
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	if (alias_changed == FALSE) {
		{
			GeeIterator* _tmp8_ = NULL;
			GeeIterator* _p_it;
			_tmp8_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
			_p_it = _tmp8_;
			while (TRUE) {
				gboolean _tmp9_;
				gpointer _tmp10_ = NULL;
				FolksPersona* p;
				_tmp9_ = gee_iterator_next (_p_it);
				if (!_tmp9_) {
					break;
				}
				_tmp10_ = gee_iterator_get (_p_it);
				p = (FolksPersona*) _tmp10_;
				if (FOLKS_IS_ALIAS_DETAILS (p)) {
					const gchar* _tmp11_ = NULL;
					_tmp11_ = folks_persona_get_uid (FOLKS_PERSONA (p));
					g_debug ("individual.vala:216:     written to non-writeable persona '%s'", _tmp11_);
					folks_alias_details_set_alias (FOLKS_ALIAS_DETAILS (p), value);
				}
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_it);
		}
	}
	g_object_notify ((GObject *) self, "alias");
}


static FolksStructuredName* folks_individual_real_get_structured_name (FolksNameDetails* base) {
	FolksStructuredName* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_structured_name;
	return result;
}


static void folks_individual_real_set_structured_name (FolksNameDetails* base, FolksStructuredName* value) {
	FolksIndividual* self;
	FolksStructuredName* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = _g_object_ref0 (value);
	_g_object_unref0 (self->priv->_structured_name);
	self->priv->_structured_name = _tmp0_;
	g_object_notify ((GObject *) self, "structured-name");
}


static const gchar* folks_individual_real_get_full_name (FolksNameDetails* base) {
	const gchar* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_full_name;
	return result;
}


static void folks_individual_real_set_full_name (FolksNameDetails* base, const gchar* value) {
	FolksIndividual* self;
	gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = g_strdup (value);
	_g_free0 (self->priv->_full_name);
	self->priv->_full_name = _tmp0_;
	g_object_notify ((GObject *) self, "full-name");
}


static const gchar* folks_individual_real_get_nickname (FolksNameDetails* base) {
	const gchar* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_nickname;
	return result;
}


static FolksGender folks_individual_real_get_gender (FolksGenderDetails* base) {
	FolksGender result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_gender;
	return result;
}


static void folks_individual_real_set_gender (FolksGenderDetails* base, FolksGender value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	self->priv->_gender = value;
	g_object_notify ((GObject*) self, "gender");
	g_object_notify ((GObject *) self, "gender");
}


static GeeSet* folks_individual_real_get_urls (FolksUrlDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_urls;
	return result;
}


static void folks_individual_real_set_urls (FolksUrlDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_urls);
	self->priv->_urls = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _ps_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_ps_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksFieldDetails* ps;
			_tmp2_ = gee_iterator_next (_ps_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_ps_it);
			ps = (FolksFieldDetails*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_urls, ps);
			_g_object_unref0 (ps);
		}
		_g_object_unref0 (_ps_it);
	}
	g_object_notify ((GObject *) self, "urls");
}


static GeeSet* folks_individual_real_get_phone_numbers (FolksPhoneDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_phone_numbers;
	return result;
}


static void folks_individual_real_set_phone_numbers (FolksPhoneDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_phone_numbers);
	self->priv->_phone_numbers = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _fd_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_fd_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksFieldDetails* fd;
			_tmp2_ = gee_iterator_next (_fd_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_fd_it);
			fd = (FolksFieldDetails*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_phone_numbers, fd);
			_g_object_unref0 (fd);
		}
		_g_object_unref0 (_fd_it);
	}
	g_object_notify ((GObject *) self, "phone-numbers");
}


static GeeSet* folks_individual_real_get_email_addresses (FolksEmailDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_email_addresses;
	return result;
}


static void folks_individual_real_set_email_addresses (FolksEmailDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_email_addresses);
	self->priv->_email_addresses = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _fd_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_fd_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksFieldDetails* fd;
			_tmp2_ = gee_iterator_next (_fd_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_fd_it);
			fd = (FolksFieldDetails*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_email_addresses, fd);
			_g_object_unref0 (fd);
		}
		_g_object_unref0 (_fd_it);
	}
	g_object_notify ((GObject *) self, "email-addresses");
}


static GeeSet* folks_individual_real_get_roles (FolksRoleDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_roles;
	return result;
}


static void folks_individual_real_set_roles (FolksRoleDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_ROLE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_roles);
	self->priv->_roles = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _role_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_role_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksRole* role;
			_tmp2_ = gee_iterator_next (_role_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_role_it);
			role = (FolksRole*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_roles, role);
			_g_object_unref0 (role);
		}
		_g_object_unref0 (_role_it);
	}
	g_object_notify ((GObject*) self, "roles");
	g_object_notify ((GObject *) self, "roles");
}


static GeeSet* folks_individual_real_get_local_ids (FolksLocalIdDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_local_ids;
	return result;
}


static void folks_individual_real_set_local_ids (FolksLocalIdDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL);
	_g_object_unref0 (self->priv->_local_ids);
	self->priv->_local_ids = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _id_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_id_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			gchar* id;
			_tmp2_ = gee_iterator_next (_id_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_id_it);
			id = (gchar*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_local_ids, id);
			_g_free0 (id);
		}
		_g_object_unref0 (_id_it);
	}
	g_object_notify ((GObject*) self, "local-ids");
	g_object_notify ((GObject *) self, "local-ids");
}


static GDateTime* folks_individual_real_get_birthday (FolksBirthdayDetails* base) {
	GDateTime* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_birthday;
	return result;
}


static gpointer _g_date_time_ref0 (gpointer self) {
	return self ? g_date_time_ref (self) : NULL;
}


static void folks_individual_real_set_birthday (FolksBirthdayDetails* base, GDateTime* value) {
	FolksIndividual* self;
	GDateTime* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = _g_date_time_ref0 (value);
	_g_date_time_unref0 (self->priv->_birthday);
	self->priv->_birthday = _tmp0_;
	g_object_notify ((GObject *) self, "birthday");
}


static const gchar* folks_individual_real_get_calendar_event_id (FolksBirthdayDetails* base) {
	const gchar* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_calendar_event_id;
	return result;
}


static void folks_individual_real_set_calendar_event_id (FolksBirthdayDetails* base, const gchar* value) {
	FolksIndividual* self;
	gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = g_strdup (value);
	_g_free0 (self->priv->_calendar_event_id);
	self->priv->_calendar_event_id = _tmp0_;
	g_object_notify ((GObject *) self, "calendar-event-id");
}


static GeeSet* folks_individual_real_get_notes (FolksNoteDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_notes;
	return result;
}


static void folks_individual_real_set_notes (FolksNoteDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_NOTE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_notes);
	self->priv->_notes = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _note_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_note_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksNote* note;
			_tmp2_ = gee_iterator_next (_note_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_note_it);
			note = (FolksNote*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_notes, note);
			_g_object_unref0 (note);
		}
		_g_object_unref0 (_note_it);
	}
	g_object_notify ((GObject*) self, "notes");
	g_object_notify ((GObject *) self, "notes");
}


static GeeSet* folks_individual_real_get_postal_addresses (FolksPostalAddressDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_postal_addresses;
	return result;
}


static void folks_individual_real_set_postal_addresses (FolksPostalAddressDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeHashSet* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	_tmp0_ = gee_hash_set_new (FOLKS_TYPE_POSTAL_ADDRESS, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
	_g_object_unref0 (self->priv->_postal_addresses);
	self->priv->_postal_addresses = _tmp0_;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _pa_it;
		_tmp1_ = gee_iterable_iterator ((GeeIterable*) value);
		_pa_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPostalAddress* pa;
			_tmp2_ = gee_iterator_next (_pa_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_pa_it);
			pa = (FolksPostalAddress*) _tmp3_;
			gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->_postal_addresses, pa);
			_g_object_unref0 (pa);
		}
		_g_object_unref0 (_pa_it);
	}
	g_object_notify ((GObject *) self, "postal-addresses");
}


static gboolean folks_individual_real_get_is_favourite (FolksFavouriteDetails* base) {
	gboolean result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = self->priv->_is_favourite;
	return result;
}


static void folks_individual_real_set_is_favourite (FolksFavouriteDetails* base, gboolean value) {
	FolksIndividual* self;
	const gchar* _tmp0_ = NULL;
	self = (FolksIndividual*) base;
	if (self->priv->_is_favourite == value) {
		return;
	}
	if (value) {
		_tmp0_ = "TRUE";
	} else {
		_tmp0_ = "FALSE";
	}
	g_debug ("individual.vala:386: Setting '%s' favourite status to %s", self->priv->_id, _tmp0_);
	self->priv->_is_favourite = value;
	{
		GeeIterator* _tmp1_ = NULL;
		GeeIterator* _p_it;
		_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp1_;
		while (TRUE) {
			gboolean _tmp2_;
			gpointer _tmp3_ = NULL;
			FolksPersona* p;
			_tmp2_ = gee_iterator_next (_p_it);
			if (!_tmp2_) {
				break;
			}
			_tmp3_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp3_;
			if (FOLKS_IS_FAVOURITE_DETAILS (p)) {
				g_signal_handlers_block_by_func (p, (void*) _folks_individual_notify_is_favourite_cb, self);
				folks_favourite_details_set_is_favourite (FOLKS_FAVOURITE_DETAILS (p), value);
				g_signal_handlers_unblock_by_func (p, (void*) _folks_individual_notify_is_favourite_cb, self);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	g_object_notify ((GObject *) self, "is-favourite");
}


static GeeSet* folks_individual_real_get_groups (FolksGroupDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeSet*) self->priv->_groups;
	return result;
}


static void folks_individual_real_set_groups (FolksGroupDetails* base, GeeSet* value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	{
		GeeIterator* _tmp0_ = NULL;
		GeeIterator* _p_it;
		_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->_persona_set);
		_p_it = _tmp0_;
		while (TRUE) {
			gboolean _tmp1_;
			gpointer _tmp2_ = NULL;
			FolksPersona* p;
			gboolean _tmp3_ = FALSE;
			_tmp1_ = gee_iterator_next (_p_it);
			if (!_tmp1_) {
				break;
			}
			_tmp2_ = gee_iterator_get (_p_it);
			p = (FolksPersona*) _tmp2_;
			if (FOLKS_IS_GROUP_DETAILS (p)) {
				FolksPersonaStore* _tmp4_ = NULL;
				gboolean _tmp5_;
				_tmp4_ = folks_persona_get_store (FOLKS_PERSONA (p));
				_tmp5_ = folks_persona_store_get_is_writeable (_tmp4_);
				_tmp3_ = _tmp5_ == TRUE;
			} else {
				_tmp3_ = FALSE;
			}
			if (_tmp3_) {
				folks_group_details_set_groups (FOLKS_GROUP_DETAILS (p), value);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	_folks_individual_update_groups (self);
	g_object_notify ((GObject *) self, "groups");
}


static GeeMultiMap* folks_individual_real_get_im_addresses (FolksImDetails* base) {
	GeeMultiMap* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeMultiMap*) self->priv->_im_addresses;
	return result;
}


static void folks_individual_real_set_im_addresses (FolksImDetails* base, GeeMultiMap* value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	g_object_notify ((GObject *) self, "im-addresses");
}


static GeeMultiMap* folks_individual_real_get_web_service_addresses (FolksWebServiceDetails* base) {
	GeeMultiMap* result;
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	result = (GeeMultiMap*) self->priv->_web_service_addresses;
	return result;
}


static void folks_individual_real_set_web_service_addresses (FolksWebServiceDetails* base, GeeMultiMap* value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	g_object_notify ((GObject *) self, "web-service-addresses");
}


GeeSet* folks_individual_get_personas (FolksIndividual* self) {
	GeeSet* result;
	g_return_val_if_fail (self != NULL, NULL);
	result = self->priv->_persona_set_ro;
	return result;
}


void folks_individual_set_personas (FolksIndividual* self, GeeSet* value) {
	g_return_if_fail (self != NULL);
	_folks_individual_set_personas (self, value, NULL);
	g_object_notify ((GObject *) self, "personas");
}


static void g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
	typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer data2);
	register GMarshalFunc_VOID__OBJECT_OBJECT callback;
	register GCClosure * cc;
	register gpointer data1, data2;
	cc = (GCClosure *) closure;
	g_return_if_fail (n_param_values == 3);
	if (G_CCLOSURE_SWAP_DATA (closure)) {
		data1 = closure->data;
		data2 = param_values->data[0].v_pointer;
	} else {
		data1 = param_values->data[0].v_pointer;
		data2 = closure->data;
	}
	callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
	callback (data1, g_value_get_object (param_values + 1), g_value_get_object (param_values + 2), data2);
}


static void folks_individual_class_init (FolksIndividualClass * klass) {
	folks_individual_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (FolksIndividualPrivate));
	G_OBJECT_CLASS (klass)->get_property = _vala_folks_individual_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_folks_individual_set_property;
	G_OBJECT_CLASS (klass)->finalize = folks_individual_finalize;
	/**
	   * The trust level of the Individual.
	   *
	   * This specifies how far the Individual can be trusted to be who it claims
	   * to be. See the descriptions for the elements of {@link TrustLevel}.
	   *
	   * Clients should ''not'' allow linking of Individuals who have a trust level
	   * of {@link TrustLevel.NONE}.
	   *
	   * @since 0.1.15
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_TRUST_LEVEL, g_param_spec_enum ("trust-level", "trust-level", "trust-level", FOLKS_TYPE_TRUST_LEVEL, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_AVATAR, "avatar");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PRESENCE_TYPE, "presence-type");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PRESENCE_MESSAGE, "presence-message");
	/**
	   * Whether the Individual is the user.
	   *
	   * Iff the Individual represents the user (the person who owns the
	   * account in the backend for each {@link Persona} in the Individual)
	   * this is `true`.
	   *
	   * It is //not// guaranteed that every {@link Persona} in the Individual has
	   * its {@link Persona.is_user} set to the same value as the Individual. For
	   * example, the user could own two Telepathy accounts, and have added the
	   * other account as a contact in each account. The accounts will expose a
	   * {@link Persona} for the user (which will have {@link Persona.is_user} set
	   * to `true`) //and// a {@link Persona} for the contact for the other account
	   * (which will have {@link Persona.is_user} set to `false`).
	   *
	   * It is guaranteed that iff this property is set to `true` on an Individual,
	   * there will be at least one {@link Persona} in the Individual with its
	   * {@link Persona.is_user} set to `true`.
	   *
	   * It is guaranteed that there will only ever be one Individual with this
	   * property set to `true`.
	   *
	   * @since 0.3.0
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_IS_USER, g_param_spec_boolean ("is-user", "is-user", "is-user", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	   * A unique identifier for the Individual.
	   *
	   * This uniquely identifies the Individual, and persists across
	   * {@link IndividualAggregator} instances.
	   *
	   * FIXME: Will this.id actually be the persistent ID for storage?
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_ID, g_param_spec_string ("id", "id", "id", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_ALIAS, "alias");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_STRUCTURED_NAME, "structured-name");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_FULL_NAME, "full-name");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_NICKNAME, "nickname");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_GENDER, "gender");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_URLS, "urls");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PHONE_NUMBERS, "phone-numbers");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_EMAIL_ADDRESSES, "email-addresses");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_ROLES, "roles");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_LOCAL_IDS, "local-ids");
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_BIRTHDAY, "birthday");
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_CALENDAR_EVENT_ID, "calendar-event-id");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_NOTES, "notes");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_POSTAL_ADDRESSES, "postal-addresses");
	/**
	   * Whether this Individual is a user-defined favourite.
	   *
	   * This property is `true` if any of this Individual's {@link Persona}s are
	   * favourites).
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_IS_FAVOURITE, "is-favourite");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_GROUPS, "groups");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_IM_ADDRESSES, "im-addresses");
	/**
	   * {@inheritDoc}
	   */
	g_object_class_override_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_WEB_SERVICE_ADDRESSES, "web-service-addresses");
	/**
	   * The set of {@link Persona}s encapsulated by this Individual.
	   *
	   * No order is specified over the set of personas, as such an order may be
	   * different across each of the properties implemented by the personas (e.g.
	   * should they be ordered by presence, name, star sign, etc.?).
	   *
	   * Changing the set of personas may cause updates to the aggregated properties
	   * provided by the Individual, resulting in property notifications for them.
	   *
	   * Changing the set of personas will not cause permanent linking/unlinking of
	   * the added/removed personas to/from this Individual. To do that, call
	   * {@link IndividualAggregator.link_personas} or
	   * {@link IndividualAggregator.unlink_individual}, which will ensure the link
	   * changes are written to the appropriate backend.
	   *
	   * @since 0.5.1
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PERSONAS, g_param_spec_object ("personas", "personas", "personas", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * Emitted when the last of the Individual's {@link Persona}s has been
	   * removed.
	   *
	   * At this point, the Individual is invalid, so any client referencing it
	   * should unreference it and remove it from their UI.
	   *
	   * @param replacement_individual the individual which has replaced this one
	   * due to linking, or `null` if this individual was removed for another reason
	   * @since 0.1.13
	   */
	g_signal_new ("removed", FOLKS_TYPE_INDIVIDUAL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, FOLKS_TYPE_INDIVIDUAL);
	/**
	   * Emitted when one or more {@link Persona}s are added to or removed from
	   * the Individual. As the parameters are (unordered) sets, the orders of their
	   * elements are undefined.
	   *
	   * @param added a set of {@link Persona}s which have been added
	   * @param removed a set of {@link Persona}s which have been removed
	   *
	   * @since 0.5.1
	   */
	g_signal_new ("personas_changed", FOLKS_TYPE_INDIVIDUAL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 2, GEE_TYPE_SET, GEE_TYPE_SET);
}


static void folks_individual_folks_alias_details_interface_init (FolksAliasDetailsIface * iface) {
	folks_individual_folks_alias_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_alias = folks_individual_real_get_alias;
	iface->set_alias = folks_individual_real_set_alias;
}


static void folks_individual_folks_avatar_details_interface_init (FolksAvatarDetailsIface * iface) {
	folks_individual_folks_avatar_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_avatar = folks_individual_real_get_avatar;
	iface->set_avatar = folks_individual_real_set_avatar;
}


static void folks_individual_folks_birthday_details_interface_init (FolksBirthdayDetailsIface * iface) {
	folks_individual_folks_birthday_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_birthday = folks_individual_real_get_birthday;
	iface->set_birthday = folks_individual_real_set_birthday;
	iface->get_calendar_event_id = folks_individual_real_get_calendar_event_id;
	iface->set_calendar_event_id = folks_individual_real_set_calendar_event_id;
}


static void folks_individual_folks_email_details_interface_init (FolksEmailDetailsIface * iface) {
	folks_individual_folks_email_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_email_addresses = folks_individual_real_get_email_addresses;
	iface->set_email_addresses = folks_individual_real_set_email_addresses;
}


static void folks_individual_folks_favourite_details_interface_init (FolksFavouriteDetailsIface * iface) {
	folks_individual_folks_favourite_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_is_favourite = folks_individual_real_get_is_favourite;
	iface->set_is_favourite = folks_individual_real_set_is_favourite;
}


static void folks_individual_folks_gender_details_interface_init (FolksGenderDetailsIface * iface) {
	folks_individual_folks_gender_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_gender = folks_individual_real_get_gender;
	iface->set_gender = folks_individual_real_set_gender;
}


static void folks_individual_folks_group_details_interface_init (FolksGroupDetailsIface * iface) {
	folks_individual_folks_group_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->change_group = (void (*)(FolksGroupDetails* ,const gchar* ,gboolean ,GError**)) folks_individual_real_change_group;
	iface->change_group_finish = folks_individual_real_change_group_finish;
	iface->get_groups = folks_individual_real_get_groups;
	iface->set_groups = folks_individual_real_set_groups;
}


static void folks_individual_folks_im_details_interface_init (FolksImDetailsIface * iface) {
	folks_individual_folks_im_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_im_addresses = folks_individual_real_get_im_addresses;
	iface->set_im_addresses = folks_individual_real_set_im_addresses;
}


static void folks_individual_folks_local_id_details_interface_init (FolksLocalIdDetailsIface * iface) {
	folks_individual_folks_local_id_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_local_ids = folks_individual_real_get_local_ids;
	iface->set_local_ids = folks_individual_real_set_local_ids;
}


static void folks_individual_folks_name_details_interface_init (FolksNameDetailsIface * iface) {
	folks_individual_folks_name_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_structured_name = folks_individual_real_get_structured_name;
	iface->set_structured_name = folks_individual_real_set_structured_name;
	iface->get_full_name = folks_individual_real_get_full_name;
	iface->set_full_name = folks_individual_real_set_full_name;
	iface->get_nickname = folks_individual_real_get_nickname;
}


static void folks_individual_folks_note_details_interface_init (FolksNoteDetailsIface * iface) {
	folks_individual_folks_note_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_notes = folks_individual_real_get_notes;
	iface->set_notes = folks_individual_real_set_notes;
}


static void folks_individual_folks_presence_details_interface_init (FolksPresenceDetailsIface * iface) {
	folks_individual_folks_presence_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_presence_type = folks_individual_real_get_presence_type;
	iface->set_presence_type = folks_individual_real_set_presence_type;
	iface->get_presence_message = folks_individual_real_get_presence_message;
	iface->set_presence_message = folks_individual_real_set_presence_message;
}


static void folks_individual_folks_phone_details_interface_init (FolksPhoneDetailsIface * iface) {
	folks_individual_folks_phone_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_phone_numbers = folks_individual_real_get_phone_numbers;
	iface->set_phone_numbers = folks_individual_real_set_phone_numbers;
}


static void folks_individual_folks_postal_address_details_interface_init (FolksPostalAddressDetailsIface * iface) {
	folks_individual_folks_postal_address_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_postal_addresses = folks_individual_real_get_postal_addresses;
	iface->set_postal_addresses = folks_individual_real_set_postal_addresses;
}


static void folks_individual_folks_role_details_interface_init (FolksRoleDetailsIface * iface) {
	folks_individual_folks_role_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_roles = folks_individual_real_get_roles;
	iface->set_roles = folks_individual_real_set_roles;
}


static void folks_individual_folks_url_details_interface_init (FolksUrlDetailsIface * iface) {
	folks_individual_folks_url_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_urls = folks_individual_real_get_urls;
	iface->set_urls = folks_individual_real_set_urls;
}


static void folks_individual_folks_web_service_details_interface_init (FolksWebServiceDetailsIface * iface) {
	folks_individual_folks_web_service_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_web_service_addresses = folks_individual_real_get_web_service_addresses;
	iface->set_web_service_addresses = folks_individual_real_set_web_service_addresses;
}


static void folks_individual_instance_init (FolksIndividual * self) {
	self->priv = FOLKS_INDIVIDUAL_GET_PRIVATE (self);
	self->priv->_persona_user_count = (guint) 0;
}


static void folks_individual_finalize (GObject* obj) {
	FolksIndividual * self;
	self = FOLKS_INDIVIDUAL (obj);
	_g_free0 (self->priv->_alias);
	_g_object_unref0 (self->priv->_groups);
	_g_object_unref0 (self->priv->_persona_set);
	_g_object_unref0 (self->priv->_persona_set_ro);
	_g_object_unref0 (self->priv->_stores);
	_g_object_unref0 (self->priv->_im_addresses);
	_g_object_unref0 (self->priv->_web_service_addresses);
	_g_object_unref0 (self->priv->_avatar);
	_g_free0 (self->priv->_presence_message);
	_g_free0 (self->priv->_id);
	_g_object_unref0 (self->priv->_structured_name);
	_g_free0 (self->priv->_full_name);
	_g_free0 (self->priv->_nickname);
	_g_object_unref0 (self->priv->_urls);
	_g_object_unref0 (self->priv->_phone_numbers);
	_g_object_unref0 (self->priv->_email_addresses);
	_g_object_unref0 (self->priv->_roles);
	_g_object_unref0 (self->priv->_local_ids);
	_g_date_time_unref0 (self->priv->_birthday);
	_g_free0 (self->priv->_calendar_event_id);
	_g_object_unref0 (self->priv->_notes);
	_g_object_unref0 (self->priv->_postal_addresses);
	G_OBJECT_CLASS (folks_individual_parent_class)->finalize (obj);
}


/**
 * A physical person, aggregated from the various {@link Persona}s the person
 * might have, such as their different IM addresses or vCard entries.
 */
GType folks_individual_get_type (void) {
	static volatile gsize folks_individual_type_id__volatile = 0;
	if (g_once_init_enter (&folks_individual_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (FolksIndividualClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) folks_individual_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FolksIndividual), 0, (GInstanceInitFunc) folks_individual_instance_init, NULL };
		static const GInterfaceInfo folks_alias_details_info = { (GInterfaceInitFunc) folks_individual_folks_alias_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_avatar_details_info = { (GInterfaceInitFunc) folks_individual_folks_avatar_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_birthday_details_info = { (GInterfaceInitFunc) folks_individual_folks_birthday_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_email_details_info = { (GInterfaceInitFunc) folks_individual_folks_email_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_favourite_details_info = { (GInterfaceInitFunc) folks_individual_folks_favourite_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_gender_details_info = { (GInterfaceInitFunc) folks_individual_folks_gender_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_group_details_info = { (GInterfaceInitFunc) folks_individual_folks_group_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_im_details_info = { (GInterfaceInitFunc) folks_individual_folks_im_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_local_id_details_info = { (GInterfaceInitFunc) folks_individual_folks_local_id_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_name_details_info = { (GInterfaceInitFunc) folks_individual_folks_name_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_note_details_info = { (GInterfaceInitFunc) folks_individual_folks_note_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_presence_details_info = { (GInterfaceInitFunc) folks_individual_folks_presence_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_phone_details_info = { (GInterfaceInitFunc) folks_individual_folks_phone_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_postal_address_details_info = { (GInterfaceInitFunc) folks_individual_folks_postal_address_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_role_details_info = { (GInterfaceInitFunc) folks_individual_folks_role_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_url_details_info = { (GInterfaceInitFunc) folks_individual_folks_url_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo folks_web_service_details_info = { (GInterfaceInitFunc) folks_individual_folks_web_service_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType folks_individual_type_id;
		folks_individual_type_id = g_type_register_static (G_TYPE_OBJECT, "FolksIndividual", &g_define_type_info, 0);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_ALIAS_DETAILS, &folks_alias_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_AVATAR_DETAILS, &folks_avatar_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_BIRTHDAY_DETAILS, &folks_birthday_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_EMAIL_DETAILS, &folks_email_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_FAVOURITE_DETAILS, &folks_favourite_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_GENDER_DETAILS, &folks_gender_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_GROUP_DETAILS, &folks_group_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_IM_DETAILS, &folks_im_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_LOCAL_ID_DETAILS, &folks_local_id_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_NAME_DETAILS, &folks_name_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_NOTE_DETAILS, &folks_note_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_PRESENCE_DETAILS, &folks_presence_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_PHONE_DETAILS, &folks_phone_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, &folks_postal_address_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_ROLE_DETAILS, &folks_role_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_URL_DETAILS, &folks_url_details_info);
		g_type_add_interface_static (folks_individual_type_id, FOLKS_TYPE_WEB_SERVICE_DETAILS, &folks_web_service_details_info);
		g_once_init_leave (&folks_individual_type_id__volatile, folks_individual_type_id);
	}
	return folks_individual_type_id__volatile;
}


static void _vala_folks_individual_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	FolksIndividual * self;
	self = FOLKS_INDIVIDUAL (object);
	switch (property_id) {
		case FOLKS_INDIVIDUAL_TRUST_LEVEL:
		g_value_set_enum (value, folks_individual_get_trust_level (self));
		break;
		case FOLKS_INDIVIDUAL_AVATAR:
		g_value_set_object (value, folks_avatar_details_get_avatar ((FolksAvatarDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_PRESENCE_TYPE:
		g_value_set_enum (value, folks_presence_details_get_presence_type ((FolksPresenceDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_PRESENCE_MESSAGE:
		g_value_set_string (value, folks_presence_details_get_presence_message ((FolksPresenceDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_IS_USER:
		g_value_set_boolean (value, folks_individual_get_is_user (self));
		break;
		case FOLKS_INDIVIDUAL_ID:
		g_value_set_string (value, folks_individual_get_id (self));
		break;
		case FOLKS_INDIVIDUAL_ALIAS:
		g_value_set_string (value, folks_alias_details_get_alias ((FolksAliasDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_STRUCTURED_NAME:
		g_value_set_object (value, folks_name_details_get_structured_name ((FolksNameDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_FULL_NAME:
		g_value_set_string (value, folks_name_details_get_full_name ((FolksNameDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_NICKNAME:
		g_value_set_string (value, folks_name_details_get_nickname ((FolksNameDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_GENDER:
		g_value_set_enum (value, folks_gender_details_get_gender ((FolksGenderDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_URLS:
		g_value_set_object (value, folks_url_details_get_urls ((FolksUrlDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_PHONE_NUMBERS:
		g_value_set_object (value, folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_EMAIL_ADDRESSES:
		g_value_set_object (value, folks_email_details_get_email_addresses ((FolksEmailDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_ROLES:
		g_value_set_object (value, folks_role_details_get_roles ((FolksRoleDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_LOCAL_IDS:
		g_value_set_object (value, folks_local_id_details_get_local_ids ((FolksLocalIdDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_BIRTHDAY:
		g_value_set_boxed (value, folks_birthday_details_get_birthday ((FolksBirthdayDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_CALENDAR_EVENT_ID:
		g_value_set_string (value, folks_birthday_details_get_calendar_event_id ((FolksBirthdayDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_NOTES:
		g_value_set_object (value, folks_note_details_get_notes ((FolksNoteDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_POSTAL_ADDRESSES:
		g_value_set_object (value, folks_postal_address_details_get_postal_addresses ((FolksPostalAddressDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_IS_FAVOURITE:
		g_value_set_boolean (value, folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_GROUPS:
		g_value_set_object (value, folks_group_details_get_groups ((FolksGroupDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_IM_ADDRESSES:
		g_value_set_object (value, folks_im_details_get_im_addresses ((FolksImDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_WEB_SERVICE_ADDRESSES:
		g_value_set_object (value, folks_web_service_details_get_web_service_addresses ((FolksWebServiceDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_PERSONAS:
		g_value_set_object (value, folks_individual_get_personas (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_folks_individual_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	FolksIndividual * self;
	self = FOLKS_INDIVIDUAL (object);
	switch (property_id) {
		case FOLKS_INDIVIDUAL_TRUST_LEVEL:
		folks_individual_set_trust_level (self, g_value_get_enum (value));
		break;
		case FOLKS_INDIVIDUAL_AVATAR:
		folks_avatar_details_set_avatar ((FolksAvatarDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_PRESENCE_TYPE:
		folks_presence_details_set_presence_type ((FolksPresenceDetails*) self, g_value_get_enum (value));
		break;
		case FOLKS_INDIVIDUAL_PRESENCE_MESSAGE:
		folks_presence_details_set_presence_message ((FolksPresenceDetails*) self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_IS_USER:
		folks_individual_set_is_user (self, g_value_get_boolean (value));
		break;
		case FOLKS_INDIVIDUAL_ID:
		folks_individual_set_id (self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_ALIAS:
		folks_alias_details_set_alias ((FolksAliasDetails*) self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_STRUCTURED_NAME:
		folks_name_details_set_structured_name ((FolksNameDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_FULL_NAME:
		folks_name_details_set_full_name ((FolksNameDetails*) self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_GENDER:
		folks_gender_details_set_gender ((FolksGenderDetails*) self, g_value_get_enum (value));
		break;
		case FOLKS_INDIVIDUAL_URLS:
		folks_url_details_set_urls ((FolksUrlDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_PHONE_NUMBERS:
		folks_phone_details_set_phone_numbers ((FolksPhoneDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_EMAIL_ADDRESSES:
		folks_email_details_set_email_addresses ((FolksEmailDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_ROLES:
		folks_role_details_set_roles ((FolksRoleDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_LOCAL_IDS:
		folks_local_id_details_set_local_ids ((FolksLocalIdDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_BIRTHDAY:
		folks_birthday_details_set_birthday ((FolksBirthdayDetails*) self, g_value_get_boxed (value));
		break;
		case FOLKS_INDIVIDUAL_CALENDAR_EVENT_ID:
		folks_birthday_details_set_calendar_event_id ((FolksBirthdayDetails*) self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_NOTES:
		folks_note_details_set_notes ((FolksNoteDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_POSTAL_ADDRESSES:
		folks_postal_address_details_set_postal_addresses ((FolksPostalAddressDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_IS_FAVOURITE:
		folks_favourite_details_set_is_favourite ((FolksFavouriteDetails*) self, g_value_get_boolean (value));
		break;
		case FOLKS_INDIVIDUAL_GROUPS:
		folks_group_details_set_groups ((FolksGroupDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_IM_ADDRESSES:
		folks_im_details_set_im_addresses ((FolksImDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_WEB_SERVICE_ADDRESSES:
		folks_web_service_details_set_web_service_addresses ((FolksWebServiceDetails*) self, g_value_get_object (value));
		break;
		case FOLKS_INDIVIDUAL_PERSONAS:
		folks_individual_set_personas (self, g_value_get_object (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}



