/* individual.c generated by valac 0.36.1.697-2b74, the Vala compiler
 * generated from individual.vala, do not modify */

/*
 * Copyright (C) 2010, 2015 Collabora Ltd.
 * Copyright (C) 2011, 2013 Philip Withnall
 *
 * 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>
 *       Philip Withnall <philip@tecnocode.co.uk>
 */

#include <glib.h>
#include <glib-object.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>
#include <folks/small-set.h>
#include <folks/small-set-internal.h>
#include <glib/gi18n-lib.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_ABSTRACT_FIELD_DETAILS (folks_abstract_field_details_get_type ())
#define FOLKS_ABSTRACT_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ABSTRACT_FIELD_DETAILS, FolksAbstractFieldDetails))
#define FOLKS_ABSTRACT_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_ABSTRACT_FIELD_DETAILS, FolksAbstractFieldDetailsClass))
#define FOLKS_IS_ABSTRACT_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_ABSTRACT_FIELD_DETAILS))
#define FOLKS_IS_ABSTRACT_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_ABSTRACT_FIELD_DETAILS))
#define FOLKS_ABSTRACT_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_ABSTRACT_FIELD_DETAILS, FolksAbstractFieldDetailsClass))

typedef struct _FolksAbstractFieldDetails FolksAbstractFieldDetails;
typedef struct _FolksAbstractFieldDetailsClass FolksAbstractFieldDetailsClass;

#define FOLKS_TYPE_EMAIL_FIELD_DETAILS (folks_email_field_details_get_type ())
#define FOLKS_EMAIL_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_EMAIL_FIELD_DETAILS, FolksEmailFieldDetails))
#define FOLKS_EMAIL_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_EMAIL_FIELD_DETAILS, FolksEmailFieldDetailsClass))
#define FOLKS_IS_EMAIL_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_EMAIL_FIELD_DETAILS))
#define FOLKS_IS_EMAIL_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_EMAIL_FIELD_DETAILS))
#define FOLKS_EMAIL_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_EMAIL_FIELD_DETAILS, FolksEmailFieldDetailsClass))

typedef struct _FolksEmailFieldDetails FolksEmailFieldDetails;
typedef struct _FolksEmailFieldDetailsClass FolksEmailFieldDetailsClass;

#define FOLKS_TYPE_EXTENDED_INFO (folks_extended_info_get_type ())
#define FOLKS_EXTENDED_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_EXTENDED_INFO, FolksExtendedInfo))
#define FOLKS_IS_EXTENDED_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_EXTENDED_INFO))
#define FOLKS_EXTENDED_INFO_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_EXTENDED_INFO, FolksExtendedInfoIface))

typedef struct _FolksExtendedInfo FolksExtendedInfo;
typedef struct _FolksExtendedInfoIface FolksExtendedInfoIface;

#define FOLKS_TYPE_EXTENDED_FIELD_DETAILS (folks_extended_field_details_get_type ())
#define FOLKS_EXTENDED_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_EXTENDED_FIELD_DETAILS, FolksExtendedFieldDetails))
#define FOLKS_EXTENDED_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_EXTENDED_FIELD_DETAILS, FolksExtendedFieldDetailsClass))
#define FOLKS_IS_EXTENDED_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_EXTENDED_FIELD_DETAILS))
#define FOLKS_IS_EXTENDED_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_EXTENDED_FIELD_DETAILS))
#define FOLKS_EXTENDED_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_EXTENDED_FIELD_DETAILS, FolksExtendedFieldDetailsClass))

typedef struct _FolksExtendedFieldDetails FolksExtendedFieldDetails;
typedef struct _FolksExtendedFieldDetailsClass FolksExtendedFieldDetailsClass;

#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_IM_FIELD_DETAILS (folks_im_field_details_get_type ())
#define FOLKS_IM_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_IM_FIELD_DETAILS, FolksImFieldDetails))
#define FOLKS_IM_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_IM_FIELD_DETAILS, FolksImFieldDetailsClass))
#define FOLKS_IS_IM_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_IM_FIELD_DETAILS))
#define FOLKS_IS_IM_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_IM_FIELD_DETAILS))
#define FOLKS_IM_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_IM_FIELD_DETAILS, FolksImFieldDetailsClass))

typedef struct _FolksImFieldDetails FolksImFieldDetails;
typedef struct _FolksImFieldDetailsClass FolksImFieldDetailsClass;

#define FOLKS_TYPE_INTERACTION_DETAILS (folks_interaction_details_get_type ())
#define FOLKS_INTERACTION_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_INTERACTION_DETAILS, FolksInteractionDetails))
#define FOLKS_IS_INTERACTION_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_INTERACTION_DETAILS))
#define FOLKS_INTERACTION_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_INTERACTION_DETAILS, FolksInteractionDetailsIface))

typedef struct _FolksInteractionDetails FolksInteractionDetails;
typedef struct _FolksInteractionDetailsIface FolksInteractionDetailsIface;

#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_LOCATION_DETAILS (folks_location_details_get_type ())
#define FOLKS_LOCATION_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_LOCATION_DETAILS, FolksLocationDetails))
#define FOLKS_IS_LOCATION_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_LOCATION_DETAILS))
#define FOLKS_LOCATION_DETAILS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_LOCATION_DETAILS, FolksLocationDetailsIface))

typedef struct _FolksLocationDetails FolksLocationDetails;
typedef struct _FolksLocationDetailsIface FolksLocationDetailsIface;

#define FOLKS_TYPE_LOCATION (folks_location_get_type ())
#define FOLKS_LOCATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_LOCATION, FolksLocation))
#define FOLKS_LOCATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_LOCATION, FolksLocationClass))
#define FOLKS_IS_LOCATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_LOCATION))
#define FOLKS_IS_LOCATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_LOCATION))
#define FOLKS_LOCATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_LOCATION, FolksLocationClass))

typedef struct _FolksLocation FolksLocation;
typedef struct _FolksLocationClass FolksLocationClass;

#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_FIELD_DETAILS (folks_note_field_details_get_type ())
#define FOLKS_NOTE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_NOTE_FIELD_DETAILS, FolksNoteFieldDetails))
#define FOLKS_NOTE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_NOTE_FIELD_DETAILS, FolksNoteFieldDetailsClass))
#define FOLKS_IS_NOTE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_NOTE_FIELD_DETAILS))
#define FOLKS_IS_NOTE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_NOTE_FIELD_DETAILS))
#define FOLKS_NOTE_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_NOTE_FIELD_DETAILS, FolksNoteFieldDetailsClass))

typedef struct _FolksNoteFieldDetails FolksNoteFieldDetails;
typedef struct _FolksNoteFieldDetailsClass FolksNoteFieldDetailsClass;

#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_PHONE_FIELD_DETAILS (folks_phone_field_details_get_type ())
#define FOLKS_PHONE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_PHONE_FIELD_DETAILS, FolksPhoneFieldDetails))
#define FOLKS_PHONE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_PHONE_FIELD_DETAILS, FolksPhoneFieldDetailsClass))
#define FOLKS_IS_PHONE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_PHONE_FIELD_DETAILS))
#define FOLKS_IS_PHONE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_PHONE_FIELD_DETAILS))
#define FOLKS_PHONE_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_PHONE_FIELD_DETAILS, FolksPhoneFieldDetailsClass))

typedef struct _FolksPhoneFieldDetails FolksPhoneFieldDetails;
typedef struct _FolksPhoneFieldDetailsClass FolksPhoneFieldDetailsClass;

#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_FIELD_DETAILS (folks_postal_address_field_details_get_type ())
#define FOLKS_POSTAL_ADDRESS_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, FolksPostalAddressFieldDetails))
#define FOLKS_POSTAL_ADDRESS_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, FolksPostalAddressFieldDetailsClass))
#define FOLKS_IS_POSTAL_ADDRESS_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS))
#define FOLKS_IS_POSTAL_ADDRESS_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS))
#define FOLKS_POSTAL_ADDRESS_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, FolksPostalAddressFieldDetailsClass))

typedef struct _FolksPostalAddressFieldDetails FolksPostalAddressFieldDetails;
typedef struct _FolksPostalAddressFieldDetailsClass FolksPostalAddressFieldDetailsClass;

#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_FIELD_DETAILS (folks_role_field_details_get_type ())
#define FOLKS_ROLE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ROLE_FIELD_DETAILS, FolksRoleFieldDetails))
#define FOLKS_ROLE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_ROLE_FIELD_DETAILS, FolksRoleFieldDetailsClass))
#define FOLKS_IS_ROLE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_ROLE_FIELD_DETAILS))
#define FOLKS_IS_ROLE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_ROLE_FIELD_DETAILS))
#define FOLKS_ROLE_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_ROLE_FIELD_DETAILS, FolksRoleFieldDetailsClass))

typedef struct _FolksRoleFieldDetails FolksRoleFieldDetails;
typedef struct _FolksRoleFieldDetailsClass FolksRoleFieldDetailsClass;

#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_URL_FIELD_DETAILS (folks_url_field_details_get_type ())
#define FOLKS_URL_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_URL_FIELD_DETAILS, FolksUrlFieldDetails))
#define FOLKS_URL_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_URL_FIELD_DETAILS, FolksUrlFieldDetailsClass))
#define FOLKS_IS_URL_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_URL_FIELD_DETAILS))
#define FOLKS_IS_URL_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_URL_FIELD_DETAILS))
#define FOLKS_URL_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_URL_FIELD_DETAILS, FolksUrlFieldDetailsClass))

typedef struct _FolksUrlFieldDetails FolksUrlFieldDetails;
typedef struct _FolksUrlFieldDetailsClass FolksUrlFieldDetailsClass;

#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_WEB_SERVICE_FIELD_DETAILS (folks_web_service_field_details_get_type ())
#define FOLKS_WEB_SERVICE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, FolksWebServiceFieldDetails))
#define FOLKS_WEB_SERVICE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, FolksWebServiceFieldDetailsClass))
#define FOLKS_IS_WEB_SERVICE_FIELD_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS))
#define FOLKS_IS_WEB_SERVICE_FIELD_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS))
#define FOLKS_WEB_SERVICE_FIELD_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, FolksWebServiceFieldDetailsClass))

typedef struct _FolksWebServiceFieldDetails FolksWebServiceFieldDetails;
typedef struct _FolksWebServiceFieldDetailsClass FolksWebServiceFieldDetailsClass;

#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;
enum  {
	FOLKS_INDIVIDUAL_DUMMY_PROPERTY,
	FOLKS_INDIVIDUAL_TRUST_LEVEL,
	FOLKS_INDIVIDUAL_AVATAR,
	FOLKS_INDIVIDUAL_PRESENCE_TYPE,
	FOLKS_INDIVIDUAL_PRESENCE_STATUS,
	FOLKS_INDIVIDUAL_PRESENCE_MESSAGE,
	FOLKS_INDIVIDUAL_CLIENT_TYPES,
	FOLKS_INDIVIDUAL_IS_USER,
	FOLKS_INDIVIDUAL_ID,
	FOLKS_INDIVIDUAL_DISPLAY_NAME,
	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_LOCATION,
	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_IM_INTERACTION_COUNT,
	FOLKS_INDIVIDUAL_LAST_IM_INTERACTION_DATETIME,
	FOLKS_INDIVIDUAL_CALL_INTERACTION_COUNT,
	FOLKS_INDIVIDUAL_LAST_CALL_INTERACTION_DATETIME,
	FOLKS_INDIVIDUAL_PERSONAS,
	FOLKS_INDIVIDUAL_LAST_PROPERTY
};
static GParamSpec* folks_individual_properties[FOLKS_INDIVIDUAL_LAST_PROPERTY];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))

#define FOLKS_INDIVIDUAL_TYPE__NOTIFIER (folks_individual__notifier_get_type ())
typedef struct _FolksIndividual_Notifier FolksIndividual_Notifier;
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
typedef struct _FolksIndividualChangeAvatarData FolksIndividualChangeAvatarData;
typedef struct _FolksIndividualChangeAliasData FolksIndividualChangeAliasData;
typedef struct _FolksIndividualChangeNicknameData FolksIndividualChangeNicknameData;
typedef struct _FolksIndividualChangeIsFavouriteData FolksIndividualChangeIsFavouriteData;
typedef struct _FolksIndividualChangeGroupsData FolksIndividualChangeGroupsData;
typedef struct _FolksIndividualChangeExtendedFieldData FolksIndividualChangeExtendedFieldData;
typedef struct _FolksIndividualRemoveExtendedFieldData FolksIndividualRemoveExtendedFieldData;
typedef struct _FolksIndividualChangeGroupData FolksIndividualChangeGroupData;

#define FOLKS_GROUP_DETAILS_TYPE_CHANGE_REASON (folks_group_details_change_reason_get_type ())
typedef struct _Block2Data Block2Data;
typedef struct _Block3Data Block3Data;
#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))

#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_PERSONA_STORE_TRUST (folks_persona_store_trust_get_type ())

#define FOLKS_TYPE_ANTI_LINKABLE (folks_anti_linkable_get_type ())
#define FOLKS_ANTI_LINKABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ANTI_LINKABLE, FolksAntiLinkable))
#define FOLKS_IS_ANTI_LINKABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOLKS_TYPE_ANTI_LINKABLE))
#define FOLKS_ANTI_LINKABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FOLKS_TYPE_ANTI_LINKABLE, FolksAntiLinkableIface))

typedef struct _FolksAntiLinkable FolksAntiLinkable;
typedef struct _FolksAntiLinkableIface FolksAntiLinkableIface;
enum  {
	FOLKS_INDIVIDUAL_REMOVED_SIGNAL,
	FOLKS_INDIVIDUAL_PERSONAS_CHANGED_SIGNAL,
	FOLKS_INDIVIDUAL_LAST_SIGNAL
};
static guint folks_individual_signals[FOLKS_INDIVIDUAL_LAST_SIGNAL] = {0};
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

typedef enum  {
	FOLKS_TRUST_LEVEL_NONE,
	FOLKS_TRUST_LEVEL_PERSONAS
} FolksTrustLevel;

typedef enum  {
	FOLKS_PROPERTY_ERROR_NOT_WRITEABLE,
	FOLKS_PROPERTY_ERROR_INVALID_VALUE,
	FOLKS_PROPERTY_ERROR_UNKNOWN_ERROR,
	FOLKS_PROPERTY_ERROR_UNAVAILABLE
} FolksPropertyError;
#define FOLKS_PROPERTY_ERROR folks_property_error_quark ()
struct _FolksAliasDetailsIface {
	GTypeInterface parent_iface;
	void (*change_alias) (FolksAliasDetails* self, const gchar* alias, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_alias_finish) (FolksAliasDetails* self, GAsyncResult* _res_, GError** error);
	const gchar* (*get_alias) (FolksAliasDetails* self);
	void (*set_alias) (FolksAliasDetails* self, const gchar* value);
};

struct _FolksAvatarDetailsIface {
	GTypeInterface parent_iface;
	void (*change_avatar) (FolksAvatarDetails* self, GLoadableIcon* avatar, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_avatar_finish) (FolksAvatarDetails* self, GAsyncResult* _res_, GError** error);
	GLoadableIcon* (*get_avatar) (FolksAvatarDetails* self);
	void (*set_avatar) (FolksAvatarDetails* self, GLoadableIcon* value);
};

struct _FolksBirthdayDetailsIface {
	GTypeInterface parent_iface;
	void (*change_birthday) (FolksBirthdayDetails* self, GDateTime* birthday, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_birthday_finish) (FolksBirthdayDetails* self, GAsyncResult* _res_, GError** error);
	void (*change_calendar_event_id) (FolksBirthdayDetails* self, const gchar* event_id, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_calendar_event_id_finish) (FolksBirthdayDetails* self, GAsyncResult* _res_, GError** error);
	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;
	void (*change_email_addresses) (FolksEmailDetails* self, GeeSet* email_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_email_addresses_finish) (FolksEmailDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_email_addresses) (FolksEmailDetails* self);
	void (*set_email_addresses) (FolksEmailDetails* self, GeeSet* value);
};

struct _FolksExtendedInfoIface {
	GTypeInterface parent_iface;
	FolksExtendedFieldDetails* (*get_extended_field) (FolksExtendedInfo* self, const gchar* name);
	void (*change_extended_field) (FolksExtendedInfo* self, const gchar* name, FolksExtendedFieldDetails* value, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_extended_field_finish) (FolksExtendedInfo* self, GAsyncResult* _res_, GError** error);
	void (*remove_extended_field) (FolksExtendedInfo* self, const gchar* name, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*remove_extended_field_finish) (FolksExtendedInfo* self, GAsyncResult* _res_, GError** error);
};

struct _FolksFavouriteDetailsIface {
	GTypeInterface parent_iface;
	void (*change_is_favourite) (FolksFavouriteDetails* self, gboolean is_favourite, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_is_favourite_finish) (FolksFavouriteDetails* self, GAsyncResult* _res_, GError** error);
	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;
	void (*change_gender) (FolksGenderDetails* self, FolksGender gender, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_gender_finish) (FolksGenderDetails* self, GAsyncResult* _res_, GError** error);
	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);
	void (*change_groups) (FolksGroupDetails* self, GeeSet* groups, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_groups_finish) (FolksGroupDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_groups) (FolksGroupDetails* self);
	void (*set_groups) (FolksGroupDetails* self, GeeSet* value);
};

struct _FolksImDetailsIface {
	GTypeInterface parent_iface;
	void (*change_im_addresses) (FolksImDetails* self, GeeMultiMap* im_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_im_addresses_finish) (FolksImDetails* self, GAsyncResult* _res_, GError** error);
	GeeMultiMap* (*get_im_addresses) (FolksImDetails* self);
	void (*set_im_addresses) (FolksImDetails* self, GeeMultiMap* value);
};

struct _FolksInteractionDetailsIface {
	GTypeInterface parent_iface;
	guint (*get_im_interaction_count) (FolksInteractionDetails* self);
	GDateTime* (*get_last_im_interaction_datetime) (FolksInteractionDetails* self);
	guint (*get_call_interaction_count) (FolksInteractionDetails* self);
	GDateTime* (*get_last_call_interaction_datetime) (FolksInteractionDetails* self);
};

struct _FolksLocalIdDetailsIface {
	GTypeInterface parent_iface;
	void (*change_local_ids) (FolksLocalIdDetails* self, GeeSet* local_ids, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_local_ids_finish) (FolksLocalIdDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_local_ids) (FolksLocalIdDetails* self);
	void (*set_local_ids) (FolksLocalIdDetails* self, GeeSet* value);
};

struct _FolksLocationDetailsIface {
	GTypeInterface parent_iface;
	void (*change_location) (FolksLocationDetails* self, FolksLocation* location, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_location_finish) (FolksLocationDetails* self, GAsyncResult* _res_, GError** error);
	FolksLocation* (*get_location) (FolksLocationDetails* self);
	void (*set_location) (FolksLocationDetails* self, FolksLocation* value);
};

struct _FolksNameDetailsIface {
	GTypeInterface parent_iface;
	void (*change_structured_name) (FolksNameDetails* self, FolksStructuredName* name, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_structured_name_finish) (FolksNameDetails* self, GAsyncResult* _res_, GError** error);
	void (*change_full_name) (FolksNameDetails* self, const gchar* full_name, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_full_name_finish) (FolksNameDetails* self, GAsyncResult* _res_, GError** error);
	void (*change_nickname) (FolksNameDetails* self, const gchar* nickname, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_nickname_finish) (FolksNameDetails* self, GAsyncResult* _res_, GError** error);
	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);
	void (*set_nickname) (FolksNameDetails* self, const gchar* value);
};

struct _FolksNoteDetailsIface {
	GTypeInterface parent_iface;
	void (*change_notes) (FolksNoteDetails* self, GeeSet* notes, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_notes_finish) (FolksNoteDetails* self, GAsyncResult* _res_, GError** error);
	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);
	gchar** (*get_client_types) (FolksPresenceDetails* self, int* result_length1);
	void (*set_client_types) (FolksPresenceDetails* self, gchar** value, int value_length1);
	const gchar* (*get_presence_status) (FolksPresenceDetails* self);
	void (*set_presence_status) (FolksPresenceDetails* self, const gchar* value);
};

struct _FolksPhoneDetailsIface {
	GTypeInterface parent_iface;
	void (*change_phone_numbers) (FolksPhoneDetails* self, GeeSet* phone_numbers, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_phone_numbers_finish) (FolksPhoneDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_phone_numbers) (FolksPhoneDetails* self);
	void (*set_phone_numbers) (FolksPhoneDetails* self, GeeSet* value);
};

struct _FolksPostalAddressDetailsIface {
	GTypeInterface parent_iface;
	void (*change_postal_addresses) (FolksPostalAddressDetails* self, GeeSet* postal_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_postal_addresses_finish) (FolksPostalAddressDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_postal_addresses) (FolksPostalAddressDetails* self);
	void (*set_postal_addresses) (FolksPostalAddressDetails* self, GeeSet* value);
};

struct _FolksRoleDetailsIface {
	GTypeInterface parent_iface;
	void (*change_roles) (FolksRoleDetails* self, GeeSet* roles, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_roles_finish) (FolksRoleDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_roles) (FolksRoleDetails* self);
	void (*set_roles) (FolksRoleDetails* self, GeeSet* value);
};

struct _FolksUrlDetailsIface {
	GTypeInterface parent_iface;
	void (*change_urls) (FolksUrlDetails* self, GeeSet* urls, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_urls_finish) (FolksUrlDetails* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_urls) (FolksUrlDetails* self);
	void (*set_urls) (FolksUrlDetails* self, GeeSet* value);
};

struct _FolksWebServiceDetailsIface {
	GTypeInterface parent_iface;
	void (*change_web_service_addresses) (FolksWebServiceDetails* self, GeeMultiMap* web_service_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_web_service_addresses_finish) (FolksWebServiceDetails* self, GAsyncResult* _res_, GError** error);
	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 {
	FolksSmallSet* _persona_set;
	GeeSet* _persona_set_ro;
	GeeHashMap* _stores;
	guint _persona_user_count;
	FolksTrustLevel _trust_level;
	GLoadableIcon* _avatar;
	FolksPresenceType _presence_type;
	gchar* _presence_status;
	gchar* _presence_message;
	gchar** _client_types;
	gint _client_types_length1;
	gint __client_types_size_;
	gboolean _is_user;
	gchar* _id;
	gchar* _display_name;
	gchar* _alias;
	FolksStructuredName* _structured_name;
	gchar* _full_name;
	gchar* _nickname;
	FolksGender _gender;
	FolksSmallSet* _urls;
	GeeSet* _urls_ro;
	FolksSmallSet* _phone_numbers;
	GeeSet* _phone_numbers_ro;
	FolksSmallSet* _email_addresses;
	GeeSet* _email_addresses_ro;
	FolksSmallSet* _roles;
	GeeSet* _roles_ro;
	FolksSmallSet* _local_ids;
	GeeSet* _local_ids_ro;
	FolksLocation* _location;
	GDateTime* _birthday;
	gchar* _calendar_event_id;
	FolksSmallSet* _notes;
	GeeSet* _notes_ro;
	FolksSmallSet* _postal_addresses;
	GeeSet* _postal_addresses_ro;
	gboolean _is_favourite;
	FolksSmallSet* _groups;
	GeeSet* _groups_ro;
	GeeHashMultiMap* _im_addresses;
	GeeHashMultiMap* _web_service_addresses;
	GDateTime* _last_im_interaction_datetime;
	GDateTime* _last_call_interaction_datetime;
};

typedef void (*FolksIndividual_UnboundNotifier) (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
struct _FolksIndividual_Notifier {
	const gchar* property;
	FolksIndividual_UnboundNotifier notify;
};

struct _FolksIndividualChangeAvatarData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	GLoadableIcon* avatar;
	gboolean _tmp0_;
	gboolean _tmp1_;
	GLoadableIcon* _tmp2_;
	GLoadableIcon* _tmp3_;
	GLoadableIcon* _tmp4_;
	gboolean _tmp5_;
	gboolean _tmp6_;
	GLoadableIcon* _tmp7_;
	GLoadableIcon* _tmp8_;
	const gchar* _tmp9_;
	GLoadableIcon* _tmp10_;
	GError* persona_error;
	gboolean prop_changed;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp11_;
	FolksSmallSet* _tmp12_;
	gint _p_size;
	FolksSmallSet* _tmp13_;
	gint _tmp14_;
	gint _tmp15_;
	gint _p_index;
	gint _tmp16_;
	gint _tmp17_;
	gint _tmp18_;
	FolksPersona* p;
	FolksSmallSet* _tmp19_;
	gint _tmp20_;
	gconstpointer _tmp21_;
	FolksPersona* _tmp22_;
	FolksAvatarDetails* _a;
	FolksPersona* _tmp23_;
	FolksAvatarDetails* _tmp24_;
	FolksAvatarDetails* _tmp25_;
	FolksAvatarDetails* a;
	FolksAvatarDetails* _tmp26_;
	FolksAvatarDetails* _tmp27_;
	FolksPersona* _tmp28_;
	gchar** _tmp29_;
	gint _tmp29__length1;
	gchar** _tmp30_;
	gint _tmp30__length1;
	FolksAvatarDetails* _tmp31_;
	GLoadableIcon* _tmp32_;
	FolksPersona* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	GError* e;
	GError* _tmp36_;
	GError* _tmp37_;
	GError* _tmp38_;
	gboolean _tmp39_;
	GError* _tmp40_;
	GError* _tmp41_;
	GError* _tmp42_;
	GError* _tmp43_;
	GError * _inner_error_;
};

struct _FolksIndividualChangeAliasData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	gchar* alias;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	GError* persona_error;
	gboolean prop_changed;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp4_;
	FolksSmallSet* _tmp5_;
	gint _p_size;
	FolksSmallSet* _tmp6_;
	gint _tmp7_;
	gint _tmp8_;
	gint _p_index;
	gint _tmp9_;
	gint _tmp10_;
	gint _tmp11_;
	FolksPersona* p;
	FolksSmallSet* _tmp12_;
	gint _tmp13_;
	gconstpointer _tmp14_;
	FolksPersona* _tmp15_;
	FolksAliasDetails* _a;
	FolksPersona* _tmp16_;
	FolksAliasDetails* _tmp17_;
	FolksAliasDetails* _tmp18_;
	FolksAliasDetails* a;
	FolksAliasDetails* _tmp19_;
	FolksAliasDetails* _tmp20_;
	FolksPersona* _tmp21_;
	gchar** _tmp22_;
	gint _tmp22__length1;
	gchar** _tmp23_;
	gint _tmp23__length1;
	FolksAliasDetails* _tmp24_;
	const gchar* _tmp25_;
	FolksPersona* _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	GError* e;
	GError* _tmp29_;
	GError* _tmp30_;
	GError* _tmp31_;
	gboolean _tmp32_;
	GError* _tmp33_;
	GError* _tmp34_;
	GError* _tmp35_;
	GError* _tmp36_;
	GError * _inner_error_;
};

struct _FolksIndividualChangeNicknameData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	gchar* nickname;
	const gchar* _tmp0_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	GError* persona_error;
	gboolean prop_changed;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp6_;
	FolksSmallSet* _tmp7_;
	gint _p_size;
	FolksSmallSet* _tmp8_;
	gint _tmp9_;
	gint _tmp10_;
	gint _p_index;
	gint _tmp11_;
	gint _tmp12_;
	gint _tmp13_;
	FolksPersona* p;
	FolksSmallSet* _tmp14_;
	gint _tmp15_;
	gconstpointer _tmp16_;
	FolksPersona* _tmp17_;
	FolksNameDetails* _n;
	FolksPersona* _tmp18_;
	FolksNameDetails* _tmp19_;
	FolksNameDetails* _tmp20_;
	FolksNameDetails* n;
	FolksNameDetails* _tmp21_;
	FolksNameDetails* _tmp22_;
	FolksPersona* _tmp23_;
	gchar** _tmp24_;
	gint _tmp24__length1;
	gchar** _tmp25_;
	gint _tmp25__length1;
	FolksNameDetails* _tmp26_;
	const gchar* _tmp27_;
	FolksPersona* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	GError* e;
	GError* _tmp31_;
	GError* _tmp32_;
	GError* _tmp33_;
	gboolean _tmp34_;
	GError* _tmp35_;
	GError* _tmp36_;
	GError* _tmp37_;
	GError* _tmp38_;
	GError * _inner_error_;
};

struct _FolksIndividualChangeIsFavouriteData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	gboolean is_favourite;
	gboolean _tmp0_;
	gboolean _tmp1_;
	const gchar* _tmp2_;
	gboolean _tmp3_;
	const gchar* _tmp4_;
	GError* persona_error;
	gboolean prop_changed;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp5_;
	FolksSmallSet* _tmp6_;
	gint _p_size;
	FolksSmallSet* _tmp7_;
	gint _tmp8_;
	gint _tmp9_;
	gint _p_index;
	gint _tmp10_;
	gint _tmp11_;
	gint _tmp12_;
	FolksPersona* p;
	FolksSmallSet* _tmp13_;
	gint _tmp14_;
	gconstpointer _tmp15_;
	FolksPersona* _tmp16_;
	FolksFavouriteDetails* _a;
	FolksPersona* _tmp17_;
	FolksFavouriteDetails* _tmp18_;
	FolksFavouriteDetails* _tmp19_;
	FolksFavouriteDetails* a;
	FolksFavouriteDetails* _tmp20_;
	FolksFavouriteDetails* _tmp21_;
	FolksPersona* _tmp22_;
	gchar** _tmp23_;
	gint _tmp23__length1;
	gchar** _tmp24_;
	gint _tmp24__length1;
	FolksFavouriteDetails* _tmp25_;
	gboolean _tmp26_;
	FolksPersona* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	GError* e;
	GError* _tmp30_;
	GError* _tmp31_;
	GError* _tmp32_;
	gboolean _tmp33_;
	GError* _tmp34_;
	GError* _tmp35_;
	GError* _tmp36_;
	GError* _tmp37_;
	GError * _inner_error_;
};

struct _FolksIndividualChangeGroupsData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	GeeSet* groups;
	const gchar* _tmp0_;
	GError* persona_error;
	gboolean prop_changed;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp1_;
	FolksSmallSet* _tmp2_;
	gint _p_size;
	FolksSmallSet* _tmp3_;
	gint _tmp4_;
	gint _tmp5_;
	gint _p_index;
	gint _tmp6_;
	gint _tmp7_;
	gint _tmp8_;
	FolksPersona* p;
	FolksSmallSet* _tmp9_;
	gint _tmp10_;
	gconstpointer _tmp11_;
	FolksPersona* _tmp12_;
	FolksGroupDetails* _g;
	FolksPersona* _tmp13_;
	FolksGroupDetails* _tmp14_;
	FolksGroupDetails* _tmp15_;
	FolksGroupDetails* g;
	FolksGroupDetails* _tmp16_;
	FolksGroupDetails* _tmp17_;
	FolksPersona* _tmp18_;
	gchar** _tmp19_;
	gint _tmp19__length1;
	gchar** _tmp20_;
	gint _tmp20__length1;
	FolksGroupDetails* _tmp21_;
	GeeSet* _tmp22_;
	FolksPersona* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	GError* e;
	GError* _tmp26_;
	GError* _tmp27_;
	GError* _tmp28_;
	gboolean _tmp29_;
	GError* _tmp30_;
	GError* _tmp31_;
	GError* _tmp32_;
	GError* _tmp33_;
	GError * _inner_error_;
};

struct _FolksIndividualChangeExtendedFieldData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	gchar* name;
	FolksExtendedFieldDetails* value;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	GError* persona_error;
	gboolean prop_changed;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp2_;
	FolksSmallSet* _tmp3_;
	gint _p_size;
	FolksSmallSet* _tmp4_;
	gint _tmp5_;
	gint _tmp6_;
	gint _p_index;
	gint _tmp7_;
	gint _tmp8_;
	gint _tmp9_;
	FolksPersona* p;
	FolksSmallSet* _tmp10_;
	gint _tmp11_;
	gconstpointer _tmp12_;
	FolksPersona* _tmp13_;
	FolksPersona* _tmp14_;
	gchar** _tmp15_;
	gint _tmp15__length1;
	gchar** _tmp16_;
	gint _tmp16__length1;
	FolksExtendedInfo* e;
	FolksPersona* _tmp17_;
	FolksExtendedInfo* _tmp18_;
	FolksExtendedInfo* _tmp19_;
	const gchar* _tmp20_;
	FolksExtendedFieldDetails* _tmp21_;
	FolksPersona* _tmp22_;
	const gchar* _tmp23_;
	const gchar* _tmp24_;
	GError* _vala1_e;
	GError* _tmp25_;
	GError* _tmp26_;
	GError* _tmp27_;
	gboolean _tmp28_;
	GError* _tmp29_;
	GError* _tmp30_;
	GError* _tmp31_;
	GError* _tmp32_;
	GError * _inner_error_;
};

struct _FolksIndividualRemoveExtendedFieldData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	gchar* name;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	GError* persona_error;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp2_;
	FolksSmallSet* _tmp3_;
	gint _p_size;
	FolksSmallSet* _tmp4_;
	gint _tmp5_;
	gint _tmp6_;
	gint _p_index;
	gint _tmp7_;
	gint _tmp8_;
	gint _tmp9_;
	FolksPersona* p;
	FolksSmallSet* _tmp10_;
	gint _tmp11_;
	gconstpointer _tmp12_;
	FolksPersona* _tmp13_;
	FolksPersona* _tmp14_;
	gchar** _tmp15_;
	gint _tmp15__length1;
	gchar** _tmp16_;
	gint _tmp16__length1;
	FolksExtendedInfo* e;
	FolksPersona* _tmp17_;
	FolksExtendedInfo* _tmp18_;
	FolksExtendedInfo* _tmp19_;
	const gchar* _tmp20_;
	FolksPersona* _tmp21_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	GError* _vala1_e;
	GError* _tmp24_;
	GError* _tmp25_;
	GError* _tmp26_;
	GError* _tmp27_;
	GError* _tmp28_;
	GError* _tmp29_;
	GError * _inner_error_;
};

struct _FolksIndividualChangeGroupData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GAsyncReadyCallback _callback_;
	gboolean _task_complete_;
	FolksIndividual* self;
	gchar* group;
	gboolean is_member;
	FolksSmallSet* _p_list;
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	gint _p_size;
	FolksSmallSet* _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	gint _p_index;
	gint _tmp5_;
	gint _tmp6_;
	gint _tmp7_;
	FolksPersona* p;
	FolksSmallSet* _tmp8_;
	gint _tmp9_;
	gconstpointer _tmp10_;
	FolksPersona* _tmp11_;
	FolksPersona* _tmp12_;
	FolksPersona* _tmp13_;
	const gchar* _tmp14_;
	gboolean _tmp15_;
};

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 gboolean (*FolksIndividualPropertyFilter) (FolksPersona* persona, void* user_data);
typedef void (*FolksIndividualSingleValuedPropertySetter) (FolksPersona* chosen_persona, void* user_data);
struct _Block2Data {
	int _ref_count_;
	FolksIndividual* self;
	FolksIndividualPropertyFilter filter_func;
	gpointer filter_func_target;
	GCompareFunc compare_func;
	gchar* prop_name;
};

typedef gboolean (*FolksIndividualPropertyIsNull) (void* user_data);
typedef void (*FolksIndividualCollectionCreator) (void* user_data);
typedef gboolean (*FolksIndividualMultiValuedPropertySetter) (void* user_data);
struct _Block3Data {
	int _ref_count_;
	FolksIndividual* self;
	gboolean emit_notification;
};

typedef enum  {
	FOLKS_PERSONA_STORE_TRUST_NONE,
	FOLKS_PERSONA_STORE_TRUST_PARTIAL,
	FOLKS_PERSONA_STORE_TRUST_FULL
} FolksPersonaStoreTrust;

struct _FolksAntiLinkableIface {
	GTypeInterface parent_iface;
	void (*change_anti_links) (FolksAntiLinkable* self, GeeSet* anti_links, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*change_anti_links_finish) (FolksAntiLinkable* self, GAsyncResult* _res_, GError** error);
	GeeSet* (*get_anti_links) (FolksAntiLinkable* self);
	void (*set_anti_links) (FolksAntiLinkable* self, GeeSet* value);
};


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 FolksExtendedInfoIface * folks_individual_folks_extended_info_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 FolksInteractionDetailsIface * folks_individual_folks_interaction_details_parent_iface = NULL;
static FolksLocalIdDetailsIface * folks_individual_folks_local_id_details_parent_iface = NULL;
static FolksLocationDetailsIface * folks_individual_folks_location_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;
GQuark folks_property_error_quark (void);
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_abstract_field_details_get_type (void) G_GNUC_CONST;
GType folks_email_field_details_get_type (void) G_GNUC_CONST;
GType folks_email_details_get_type (void) G_GNUC_CONST;
GType folks_extended_field_details_get_type (void) G_GNUC_CONST;
GType folks_extended_info_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_field_details_get_type (void) G_GNUC_CONST;
GType folks_im_details_get_type (void) G_GNUC_CONST;
GType folks_interaction_details_get_type (void) G_GNUC_CONST;
GType folks_local_id_details_get_type (void) G_GNUC_CONST;
GType folks_location_get_type (void) G_GNUC_CONST;
GType folks_location_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_field_details_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_field_details_get_type (void) G_GNUC_CONST;
GType folks_phone_details_get_type (void) G_GNUC_CONST;
GType folks_postal_address_field_details_get_type (void) G_GNUC_CONST;
GType folks_postal_address_details_get_type (void) G_GNUC_CONST;
GType folks_role_field_details_get_type (void) G_GNUC_CONST;
GType folks_role_details_get_type (void) G_GNUC_CONST;
GType folks_url_field_details_get_type (void) G_GNUC_CONST;
GType folks_url_details_get_type (void) G_GNUC_CONST;
GType folks_web_service_field_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))
const gchar* folks_individual_get_id (FolksIndividual* self);
static GType folks_individual__notifier_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static FolksIndividual_Notifier* folks_individual__notifier_dup (const FolksIndividual_Notifier* self);
static void folks_individual__notifier_free (FolksIndividual_Notifier* self);
static void _folks_individual_notify_alias_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_alias_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_avatar_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_avatar_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_presence_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_presence_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_im_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_im_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_web_service_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_web_service_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_is_favourite_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_is_favourite_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_structured_name_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_structured_name_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_full_name_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_full_name_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_nickname_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_nickname_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_gender_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_gender_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_urls_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_urls_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_phone_numbers_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_phone_numbers_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_email_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_email_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_roles_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_roles_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_birthday_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_birthday_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_notes_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_notes_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_postal_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_postal_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_local_ids_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_local_ids_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_location_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_location_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_im_interaction_count_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_im_interaction_count_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_call_interaction_count_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_call_interaction_count_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_last_im_interaction_datetime_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_last_im_interaction_datetime_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void _folks_individual_notify_last_call_interaction_datetime_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps);
static void __folks_individual_notify_last_call_interaction_datetime_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps);
static void folks_individual_real_change_avatar_data_free (gpointer _data);
static void folks_individual_real_change_avatar_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_change_avatar (FolksAvatarDetails* base, GLoadableIcon* avatar, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_avatar_co (FolksIndividualChangeAvatarData* _data_);
gchar** folks_persona_get_writeable_properties (FolksPersona* self, int* result_length1);
static gboolean _vala_string_array_contains (gchar* * stack, int stack_length, gchar* needle);
void folks_avatar_details_change_avatar (FolksAvatarDetails* self, GLoadableIcon* avatar, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_avatar_details_change_avatar_finish (FolksAvatarDetails* self, GAsyncResult* _res_, GError** error);
static void folks_individual_change_avatar_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
const gchar* folks_persona_get_uid (FolksPersona* self);
static void folks_individual_real_change_alias_data_free (gpointer _data);
static void folks_individual_real_change_alias_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_change_alias (FolksAliasDetails* base, const gchar* alias, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_alias_co (FolksIndividualChangeAliasData* _data_);
void folks_alias_details_change_alias (FolksAliasDetails* self, const gchar* alias, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_alias_details_change_alias_finish (FolksAliasDetails* self, GAsyncResult* _res_, GError** error);
static void folks_individual_change_alias_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static void folks_individual_real_change_nickname_data_free (gpointer _data);
static void folks_individual_real_change_nickname_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_change_nickname (FolksNameDetails* base, const gchar* nickname, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_nickname_co (FolksIndividualChangeNicknameData* _data_);
void folks_name_details_change_nickname (FolksNameDetails* self, const gchar* nickname, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_name_details_change_nickname_finish (FolksNameDetails* self, GAsyncResult* _res_, GError** error);
static void folks_individual_change_nickname_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static void folks_individual_real_change_is_favourite_data_free (gpointer _data);
static void folks_individual_real_change_is_favourite_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_change_is_favourite (FolksFavouriteDetails* base, gboolean is_favourite, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_is_favourite_co (FolksIndividualChangeIsFavouriteData* _data_);
void folks_favourite_details_change_is_favourite (FolksFavouriteDetails* self, gboolean is_favourite, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_favourite_details_change_is_favourite_finish (FolksFavouriteDetails* self, GAsyncResult* _res_, GError** error);
static void folks_individual_change_is_favourite_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static void folks_individual_real_change_groups_data_free (gpointer _data);
static void folks_individual_real_change_groups_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_change_groups (FolksGroupDetails* base, GeeSet* groups, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_groups_co (FolksIndividualChangeGroupsData* _data_);
void folks_group_details_change_groups (FolksGroupDetails* self, GeeSet* groups, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_group_details_change_groups_finish (FolksGroupDetails* self, GAsyncResult* _res_, GError** error);
static void folks_individual_change_groups_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static FolksExtendedFieldDetails* folks_individual_real_get_extended_field (FolksExtendedInfo* base, const gchar* name);
FolksExtendedFieldDetails* folks_extended_info_get_extended_field (FolksExtendedInfo* self, const gchar* name);
static void folks_individual_real_change_extended_field_data_free (gpointer _data);
static void folks_individual_real_change_extended_field_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_change_extended_field (FolksExtendedInfo* base, const gchar* name, FolksExtendedFieldDetails* value, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_change_extended_field_co (FolksIndividualChangeExtendedFieldData* _data_);
void folks_extended_info_change_extended_field (FolksExtendedInfo* self, const gchar* name, FolksExtendedFieldDetails* value, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_extended_info_change_extended_field_finish (FolksExtendedInfo* self, GAsyncResult* _res_, GError** error);
static void folks_individual_change_extended_field_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static void folks_individual_real_remove_extended_field_data_free (gpointer _data);
static void folks_individual_real_remove_extended_field_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data);
static void folks_individual_real_remove_extended_field (FolksExtendedInfo* base, const gchar* name, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean folks_individual_real_remove_extended_field_co (FolksIndividualRemoveExtendedFieldData* _data_);
void folks_extended_info_remove_extended_field (FolksExtendedInfo* self, const gchar* name, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_extended_info_remove_extended_field_finish (FolksExtendedInfo* self, GAsyncResult* _res_, GError** error);
static void folks_individual_remove_extended_field_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static void _folks_individual_update_alias (FolksIndividual* self);
static void _folks_individual_update_avatar (FolksIndividual* self);
static void _folks_individual_update_full_name (FolksIndividual* self);
static void _folks_individual_update_structured_name (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, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_gender (FolksIndividual* self);
static void _folks_individual_update_urls (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_phone_numbers (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_postal_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_email_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_roles (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_birthday (FolksIndividual* self);
static void _folks_individual_update_notes (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_local_ids (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_location (FolksIndividual* self);
static void folks_individual_real_change_group_data_free (gpointer _data);
static void folks_individual_real_change_group_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_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_update_presence (FolksIndividual* self);
static void _folks_individual_update_im_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_web_service_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update);
static void _folks_individual_update_is_favourite (FolksIndividual* self);
static void _folks_individual_persona_notify_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps);
FolksIndividual* folks_persona_get_individual (FolksPersona* self);
static void _folks_individual_set_personas (FolksIndividual* self, GeeSet* personas, FolksIndividual* replacement_individual);
FolksIndividual* folks_individual_new (GeeSet* personas);
FolksIndividual* folks_individual_construct (GType object_type, GeeSet* personas);
static void _folks_individual_emit_personas_changed (FolksIndividual* self, GeeSet* added, GeeSet* removed);
static void _folks_individual_store_removed_cb (FolksIndividual* self, FolksPersonaStore* store);
FolksPersonaStore* folks_persona_get_store (FolksPersona* 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_fields (FolksIndividual* self);
static void _folks_individual_update_trust_level (FolksIndividual* self);
static void _folks_individual_update_display_name (FolksIndividual* self);
static void _folks_individual_update_single_valued_property (FolksIndividual* self, GType interface_type, FolksIndividualPropertyFilter filter_func, void* filter_func_target, GCompareFunc compare_func, const gchar* prop_name, FolksIndividualSingleValuedPropertySetter setter, void* setter_target);
static Block2Data* block2_data_ref (Block2Data* _data2_);
static void block2_data_unref (void * _userdata_);
static gint __lambda6_ (Block2Data* _data2_, FolksPersona* a, FolksPersona* b);
gboolean folks_persona_store_get_is_primary_store (FolksPersonaStore* self);
static gint ___lambda6__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self);
static void _folks_individual_update_multi_valued_property (FolksIndividual* self, const gchar* prop_name, gboolean create_if_not_exist, FolksIndividualPropertyIsNull prop_is_null, void* prop_is_null_target, FolksIndividualCollectionCreator create_collection, void* create_collection_target, FolksIndividualMultiValuedPropertySetter setter, void* setter_target, gboolean emit_notification, gboolean force_update);
static Block3Data* block3_data_ref (Block3Data* _data3_);
static void block3_data_unref (void * _userdata_);
GeeSet* folks_group_details_get_groups (FolksGroupDetails* self);
static void __lambda64_ (Block3Data* _data3_, const gchar* l);
static void ___lambda64__gfunc (gconstpointer data, gpointer self);
static void _g_free0_ (gpointer var);
static inline void _g_list_free__g_free0_ (GList* self);
static gboolean __lambda13_ (FolksIndividual* self, FolksPersona* p);
FolksPresenceType folks_presence_details_get_presence_type (FolksPresenceDetails* self);
static gboolean ___lambda13__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda14_ (FolksPersona* a, FolksPersona* b);
gint folks_presence_details_typecmp (FolksPresenceType type_a, FolksPresenceType type_b);
static gint ___lambda14__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda15_ (FolksIndividual* self, FolksPersona* p);
const gchar* folks_presence_details_get_presence_message (FolksPresenceDetails* self);
const gchar* folks_presence_details_get_presence_status (FolksPresenceDetails* self);
gchar** folks_presence_details_get_client_types (FolksPresenceDetails* self, int* result_length1);
static gchar** _vala_array_dup1 (gchar** self, int length);
void folks_presence_details_set_presence_message (FolksPresenceDetails* self, const gchar* value);
void folks_presence_details_set_presence_type (FolksPresenceDetails* self, FolksPresenceType value);
void folks_presence_details_set_presence_status (FolksPresenceDetails* self, const gchar* value);
void folks_presence_details_set_client_types (FolksPresenceDetails* self, gchar** value, int value_length1);
static void ___lambda15__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda22_ (FolksIndividual* self, FolksPersona* p);
gboolean folks_favourite_details_get_is_favourite (FolksFavouriteDetails* self);
static gboolean ___lambda22__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda23_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda23__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda24_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda24__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gchar* _folks_individual_look_up_alias_for_display_name (FolksIndividual* self, FolksPersona* p);
const gchar* folks_alias_details_get_alias (FolksAliasDetails* self);
static gchar* _folks_individual_look_up_name_details_for_display_name (FolksIndividual* self, FolksPersona* p);
const gchar* folks_name_details_get_full_name (FolksNameDetails* self);
FolksStructuredName* folks_name_details_get_structured_name (FolksNameDetails* self);
gchar* folks_structured_name_to_string (FolksStructuredName* self);
const gchar* folks_name_details_get_nickname (FolksNameDetails* self);
static gchar* _folks_individual_look_up_email_address_for_display_name (FolksIndividual* self, FolksPersona* p);
GeeSet* folks_email_details_get_email_addresses (FolksEmailDetails* self);
gconstpointer folks_abstract_field_details_get_value (FolksAbstractFieldDetails* self);
static gchar* _folks_individual_look_up_display_id_for_display_name (FolksIndividual* self, FolksPersona* p);
const gchar* folks_persona_get_display_id (FolksPersona* self);
static gchar* _folks_individual_look_up_postal_address_for_display_name (FolksIndividual* self, FolksPersona* p);
GeeSet* folks_postal_address_details_get_postal_addresses (FolksPostalAddressDetails* self);
GType folks_postal_address_get_type (void) G_GNUC_CONST;
gchar* folks_postal_address_to_string (FolksPostalAddress* self);
static gboolean __lambda7_ (FolksIndividual* self, FolksPersona* p);
static gboolean ___lambda7__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda8_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda8__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda9_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda9__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda10_ (FolksIndividual* self, FolksPersona* p);
GLoadableIcon* folks_avatar_details_get_avatar (FolksAvatarDetails* self);
static gboolean ___lambda10__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda11_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda11__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda12_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda12__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
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);
static gboolean __lambda16_ (FolksIndividual* self);
static gboolean ___lambda16__folks_individual_property_is_null (gpointer self);
static void __lambda17_ (FolksIndividual* self);
guint folks_abstract_field_details_hash_static (FolksAbstractFieldDetails* value);
static guint _folks_abstract_field_details_hash_static_gee_hash_data_func (gconstpointer v, gpointer self);
gboolean folks_abstract_field_details_equal_static (FolksAbstractFieldDetails* left, FolksAbstractFieldDetails* right);
static gboolean _folks_abstract_field_details_equal_static_gee_equal_data_func (gconstpointer a, gconstpointer b, gpointer self);
static void ___lambda17__folks_individual_collection_creator (gpointer self);
static gboolean __lambda18_ (FolksIndividual* self);
GeeMultiMap* folks_im_details_get_im_addresses (FolksImDetails* self);
gboolean folks_utils_multi_map_str_afd_equal (GeeMultiMap* a, GeeMultiMap* b);
static gboolean ___lambda18__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda19_ (FolksIndividual* self);
static gboolean ___lambda19__folks_individual_property_is_null (gpointer self);
static void __lambda20_ (FolksIndividual* self);
static void ___lambda20__folks_individual_collection_creator (gpointer self);
static gboolean __lambda21_ (FolksIndividual* self);
GeeMultiMap* folks_web_service_details_get_web_service_addresses (FolksWebServiceDetails* self);
static gboolean ___lambda21__folks_individual_multi_valued_property_setter (gpointer self);
static void _folks_individual_connect_to_persona (FolksIndividual* self, FolksPersona* persona);
static void _folks_individual_disconnect_from_persona (FolksIndividual* self, FolksPersona* persona, FolksIndividual* replacement_individual);
void folks_persona_set_individual (FolksPersona* self, FolksIndividual* value);
static void __folks_individual_persona_notify_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);
static gboolean __lambda25_ (FolksIndividual* self, FolksPersona* p);
gboolean folks_structured_name_is_empty (FolksStructuredName* self);
static gboolean ___lambda25__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda26_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda26__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda27_ (FolksIndividual* self, FolksPersona* p);
gboolean folks_structured_name_equal (FolksStructuredName* self, FolksStructuredName* other);
static void ___lambda27__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda28_ (FolksIndividual* self, FolksPersona* p);
static gboolean ___lambda28__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda29_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda29__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda30_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda30__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda31_ (FolksIndividual* self, FolksPersona* p);
static gboolean ___lambda31__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda32_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda32__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda33_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda33__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
GeeSet* folks_individual_get_personas (FolksIndividual* self);
static gboolean __lambda34_ (FolksIndividual* self, FolksPersona* p);
FolksGender folks_gender_details_get_gender (FolksGenderDetails* self);
static gboolean ___lambda34__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda35_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda35__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda36_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda36__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda37_ (FolksIndividual* self);
static gboolean ___lambda37__folks_individual_property_is_null (gpointer self);
static void __lambda38_ (FolksIndividual* self);
static void ___lambda38__folks_individual_collection_creator (gpointer self);
static gboolean __lambda39_ (FolksIndividual* self);
GeeSet* folks_url_details_get_urls (FolksUrlDetails* self);
void folks_abstract_field_details_extend_parameters (FolksAbstractFieldDetails* self, GeeMultiMap* additional);
GeeMultiMap* folks_abstract_field_details_get_parameters (FolksAbstractFieldDetails* self);
FolksUrlFieldDetails* folks_url_field_details_new (const gchar* value, GeeMultiMap* parameters);
FolksUrlFieldDetails* folks_url_field_details_construct (GType object_type, const gchar* value, GeeMultiMap* parameters);
gboolean folks_utils_set_afd_equal (GeeSet* a, GeeSet* b);
static gboolean ___lambda39__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda40_ (FolksIndividual* self);
static gboolean ___lambda40__folks_individual_property_is_null (gpointer self);
static void __lambda41_ (FolksIndividual* self);
static void ___lambda41__folks_individual_collection_creator (gpointer self);
static gboolean __lambda42_ (FolksIndividual* self);
GeeSet* folks_phone_details_get_phone_numbers (FolksPhoneDetails* self);
FolksPhoneFieldDetails* folks_phone_field_details_new (const gchar* value, GeeMultiMap* parameters);
FolksPhoneFieldDetails* folks_phone_field_details_construct (GType object_type, const gchar* value, GeeMultiMap* parameters);
gboolean folks_utils_set_string_afd_equal (GeeSet* a, GeeSet* b);
static gboolean ___lambda42__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda43_ (FolksIndividual* self);
static gboolean ___lambda43__folks_individual_property_is_null (gpointer self);
static void __lambda44_ (FolksIndividual* self);
static void ___lambda44__folks_individual_collection_creator (gpointer self);
static gboolean __lambda45_ (FolksIndividual* self);
FolksEmailFieldDetails* folks_email_field_details_new (const gchar* value, GeeMultiMap* parameters);
FolksEmailFieldDetails* folks_email_field_details_construct (GType object_type, const gchar* value, GeeMultiMap* parameters);
static gboolean ___lambda45__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda46_ (FolksIndividual* self);
static gboolean ___lambda46__folks_individual_property_is_null (gpointer self);
static void __lambda47_ (FolksIndividual* self);
static void ___lambda47__folks_individual_collection_creator (gpointer self);
static gboolean __lambda48_ (FolksIndividual* self);
GeeSet* folks_role_details_get_roles (FolksRoleDetails* self);
static gboolean ___lambda48__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda58_ (FolksIndividual* self);
static gboolean ___lambda58__folks_individual_property_is_null (gpointer self);
static void __lambda59_ (FolksIndividual* self);
static void ___lambda59__folks_individual_collection_creator (gpointer self);
static gboolean __lambda60_ (FolksIndividual* self);
GeeSet* folks_local_id_details_get_local_ids (FolksLocalIdDetails* self);
static gboolean ___lambda60__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda61_ (FolksIndividual* self, FolksPersona* p);
FolksLocation* folks_location_details_get_location (FolksLocationDetails* self);
static gboolean ___lambda61__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda62_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda62__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda63_ (FolksIndividual* self, FolksPersona* p);
gboolean folks_location_equal (FolksLocation* self, FolksLocation* other);
static void ___lambda63__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda55_ (FolksIndividual* self);
static gboolean ___lambda55__folks_individual_property_is_null (gpointer self);
static void __lambda56_ (FolksIndividual* self);
static void ___lambda56__folks_individual_collection_creator (gpointer self);
static gboolean __lambda57_ (FolksIndividual* self);
static gboolean ___lambda57__folks_individual_multi_valued_property_setter (gpointer self);
static gboolean __lambda49_ (FolksIndividual* self, FolksPersona* p);
GDateTime* folks_birthday_details_get_birthday (FolksBirthdayDetails* self);
const gchar* folks_birthday_details_get_calendar_event_id (FolksBirthdayDetails* self);
static gboolean ___lambda49__folks_individual_property_filter (FolksPersona* persona, gpointer self);
static gint __lambda50_ (FolksPersona* a, FolksPersona* b);
static gint ___lambda50__gcompare_func (gconstpointer a, gconstpointer b);
static void __lambda51_ (FolksIndividual* self, FolksPersona* p);
static void ___lambda51__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self);
static gboolean __lambda52_ (FolksIndividual* self);
static gboolean ___lambda52__folks_individual_property_is_null (gpointer self);
static void __lambda53_ (FolksIndividual* self);
static void ___lambda53__folks_individual_collection_creator (gpointer self);
static gboolean __lambda54_ (FolksIndividual* self);
GeeSet* folks_note_details_get_notes (FolksNoteDetails* self);
static gboolean ___lambda54__folks_individual_multi_valued_property_setter (gpointer self);
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_store_get_id (FolksPersonaStore* self);
static void folks_individual_set_id (FolksIndividual* self, const gchar* value);
void folks_individual_replace (FolksIndividual* self, FolksIndividual* replacement_individual);
gboolean folks_individual_has_anti_link_with_persona (FolksIndividual* self, FolksPersona* p);
GType folks_anti_linkable_get_type (void) G_GNUC_CONST;
gboolean folks_anti_linkable_has_anti_link_with_persona (FolksAntiLinkable* self, FolksPersona* other_persona);
gboolean folks_individual_has_anti_link_with_individual (FolksIndividual* self, FolksIndividual* i);
static gchar** _vala_array_dup2 (gchar** self, int length);
const gchar* folks_individual_get_display_name (FolksIndividual* self);
void folks_name_details_change_structured_name (FolksNameDetails* self, FolksStructuredName* name, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_name_details_change_structured_name_finish (FolksNameDetails* self, GAsyncResult* _res_, GError** error);
void folks_name_details_change_full_name (FolksNameDetails* self, const gchar* full_name, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_name_details_change_full_name_finish (FolksNameDetails* self, GAsyncResult* _res_, GError** error);
void folks_gender_details_change_gender (FolksGenderDetails* self, FolksGender gender, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_gender_details_change_gender_finish (FolksGenderDetails* self, GAsyncResult* _res_, GError** error);
void folks_url_details_change_urls (FolksUrlDetails* self, GeeSet* urls, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_url_details_change_urls_finish (FolksUrlDetails* self, GAsyncResult* _res_, GError** error);
void folks_phone_details_change_phone_numbers (FolksPhoneDetails* self, GeeSet* phone_numbers, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_phone_details_change_phone_numbers_finish (FolksPhoneDetails* self, GAsyncResult* _res_, GError** error);
void folks_email_details_change_email_addresses (FolksEmailDetails* self, GeeSet* email_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_email_details_change_email_addresses_finish (FolksEmailDetails* self, GAsyncResult* _res_, GError** error);
void folks_role_details_change_roles (FolksRoleDetails* self, GeeSet* roles, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_role_details_change_roles_finish (FolksRoleDetails* self, GAsyncResult* _res_, GError** error);
void folks_local_id_details_change_local_ids (FolksLocalIdDetails* self, GeeSet* local_ids, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_local_id_details_change_local_ids_finish (FolksLocalIdDetails* self, GAsyncResult* _res_, GError** error);
void folks_location_details_change_location (FolksLocationDetails* self, FolksLocation* location, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_location_details_change_location_finish (FolksLocationDetails* self, GAsyncResult* _res_, GError** error);
void folks_birthday_details_change_birthday (FolksBirthdayDetails* self, GDateTime* birthday, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_birthday_details_change_birthday_finish (FolksBirthdayDetails* self, GAsyncResult* _res_, GError** error);
void folks_birthday_details_change_calendar_event_id (FolksBirthdayDetails* self, const gchar* event_id, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_birthday_details_change_calendar_event_id_finish (FolksBirthdayDetails* self, GAsyncResult* _res_, GError** error);
void folks_note_details_change_notes (FolksNoteDetails* self, GeeSet* notes, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_note_details_change_notes_finish (FolksNoteDetails* self, GAsyncResult* _res_, GError** error);
void folks_postal_address_details_change_postal_addresses (FolksPostalAddressDetails* self, GeeSet* postal_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_postal_address_details_change_postal_addresses_finish (FolksPostalAddressDetails* self, GAsyncResult* _res_, GError** error);
void folks_im_details_change_im_addresses (FolksImDetails* self, GeeMultiMap* im_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_im_details_change_im_addresses_finish (FolksImDetails* self, GAsyncResult* _res_, GError** error);
void folks_web_service_details_change_web_service_addresses (FolksWebServiceDetails* self, GeeMultiMap* web_service_addresses, GAsyncReadyCallback _callback_, gpointer _user_data_);
void folks_web_service_details_change_web_service_addresses_finish (FolksWebServiceDetails* self, GAsyncResult* _res_, GError** error);
guint folks_interaction_details_get_im_interaction_count (FolksInteractionDetails* self);
GDateTime* folks_interaction_details_get_last_im_interaction_datetime (FolksInteractionDetails* self);
guint folks_interaction_details_get_call_interaction_count (FolksInteractionDetails* self);
GDateTime* folks_interaction_details_get_last_call_interaction_datetime (FolksInteractionDetails* self);
void folks_individual_set_personas (FolksIndividual* 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 GObject * folks_individual_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
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_avatar_details_set_avatar (FolksAvatarDetails* self, GLoadableIcon* value);
void folks_alias_details_set_alias (FolksAliasDetails* self, const gchar* value);
void folks_name_details_set_structured_name (FolksNameDetails* self, FolksStructuredName* value);
void folks_name_details_set_full_name (FolksNameDetails* self, const gchar* value);
void folks_name_details_set_nickname (FolksNameDetails* self, const gchar* value);
void folks_gender_details_set_gender (FolksGenderDetails* self, FolksGender value);
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_location_details_set_location (FolksLocationDetails* self, FolksLocation* value);
void folks_birthday_details_set_birthday (FolksBirthdayDetails* self, GDateTime* value);
void folks_birthday_details_set_calendar_event_id (FolksBirthdayDetails* self, const gchar* 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_favourite_details_set_is_favourite (FolksFavouriteDetails* self, gboolean value);
void folks_group_details_set_groups (FolksGroupDetails* 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);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);

static const FolksIndividual_Notifier FOLKS_INDIVIDUAL__notifiers[25] = {{"alias", __folks_individual_notify_alias_cb_folksindividual_unboundnotifier}, {"avatar", __folks_individual_notify_avatar_cb_folksindividual_unboundnotifier}, {"presence-message", __folks_individual_notify_presence_cb_folksindividual_unboundnotifier}, {"client-types", __folks_individual_notify_presence_cb_folksindividual_unboundnotifier}, {"presence-type", __folks_individual_notify_presence_cb_folksindividual_unboundnotifier}, {"im-addresses", __folks_individual_notify_im_addresses_cb_folksindividual_unboundnotifier}, {"web-service-addresses", __folks_individual_notify_web_service_addresses_cb_folksindividual_unboundnotifier}, {"is-favourite", __folks_individual_notify_is_favourite_cb_folksindividual_unboundnotifier}, {"structured-name", __folks_individual_notify_structured_name_cb_folksindividual_unboundnotifier}, {"full-name", __folks_individual_notify_full_name_cb_folksindividual_unboundnotifier}, {"nickname", __folks_individual_notify_nickname_cb_folksindividual_unboundnotifier}, {"gender", __folks_individual_notify_gender_cb_folksindividual_unboundnotifier}, {"urls", __folks_individual_notify_urls_cb_folksindividual_unboundnotifier}, {"phone-numbers", __folks_individual_notify_phone_numbers_cb_folksindividual_unboundnotifier}, {"email-addresses", __folks_individual_notify_email_addresses_cb_folksindividual_unboundnotifier}, {"roles", __folks_individual_notify_roles_cb_folksindividual_unboundnotifier}, {"birthday", __folks_individual_notify_birthday_cb_folksindividual_unboundnotifier}, {"notes", __folks_individual_notify_notes_cb_folksindividual_unboundnotifier}, {"postal-addresses", __folks_individual_notify_postal_addresses_cb_folksindividual_unboundnotifier}, {"local-ids", __folks_individual_notify_local_ids_cb_folksindividual_unboundnotifier}, {"location", __folks_individual_notify_location_cb_folksindividual_unboundnotifier}, {"im-interaction-count", __folks_individual_notify_im_interaction_count_cb_folksindividual_unboundnotifier}, {"call-interaction-count", __folks_individual_notify_call_interaction_count_cb_folksindividual_unboundnotifier}, {"last-im-interaction-datetime", __folks_individual_notify_last_im_interaction_datetime_cb_folksindividual_unboundnotifier}, {"last-call-interaction-datetime", __folks_individual_notify_last_call_interaction_datetime_cb_folksindividual_unboundnotifier}};

/**
 * 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_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_alias_cb (_self_, persona, ps);
}


static void __folks_individual_notify_avatar_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_avatar_cb (_self_, persona, ps);
}


static void __folks_individual_notify_presence_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_presence_cb (_self_, persona, ps);
}


static void __folks_individual_notify_im_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_im_addresses_cb (_self_, persona, ps);
}


static void __folks_individual_notify_web_service_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_web_service_addresses_cb (_self_, persona, ps);
}


static void __folks_individual_notify_is_favourite_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_is_favourite_cb (_self_, persona, ps);
}


static void __folks_individual_notify_structured_name_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_structured_name_cb (_self_, persona, ps);
}


static void __folks_individual_notify_full_name_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_full_name_cb (_self_, persona, ps);
}


static void __folks_individual_notify_nickname_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_nickname_cb (_self_, persona, ps);
}


static void __folks_individual_notify_gender_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_gender_cb (_self_, persona, ps);
}


static void __folks_individual_notify_urls_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_urls_cb (_self_, persona, ps);
}


static void __folks_individual_notify_phone_numbers_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_phone_numbers_cb (_self_, persona, ps);
}


static void __folks_individual_notify_email_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_email_addresses_cb (_self_, persona, ps);
}


static void __folks_individual_notify_roles_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_roles_cb (_self_, persona, ps);
}


static void __folks_individual_notify_birthday_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_birthday_cb (_self_, persona, ps);
}


static void __folks_individual_notify_notes_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_notes_cb (_self_, persona, ps);
}


static void __folks_individual_notify_postal_addresses_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_postal_addresses_cb (_self_, persona, ps);
}


static void __folks_individual_notify_local_ids_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_local_ids_cb (_self_, persona, ps);
}


static void __folks_individual_notify_location_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_location_cb (_self_, persona, ps);
}


static void __folks_individual_notify_im_interaction_count_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_im_interaction_count_cb (_self_, persona, ps);
}


static void __folks_individual_notify_call_interaction_count_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_call_interaction_count_cb (_self_, persona, ps);
}


static void __folks_individual_notify_last_im_interaction_datetime_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_last_im_interaction_datetime_cb (_self_, persona, ps);
}


static void __folks_individual_notify_last_call_interaction_datetime_cb_folksindividual_unboundnotifier (FolksIndividual* _self_, FolksPersona* persona, GParamSpec* ps) {
	_folks_individual_notify_last_call_interaction_datetime_cb (_self_, persona, ps);
}


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


static void folks_individual_real_change_avatar_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeAvatarData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


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


static void folks_individual_real_change_avatar (FolksAvatarDetails* base, GLoadableIcon* avatar, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeAvatarData* _data_;
	FolksIndividual* _tmp0_;
	GLoadableIcon* _tmp1_;
	GLoadableIcon* _tmp2_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeAvatarData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_avatar_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_avatar_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = avatar;
	_tmp2_ = _g_object_ref0 (_tmp1_);
	_g_object_unref0 (_data_->avatar);
	_data_->avatar = _tmp2_;
	folks_individual_real_change_avatar_co (_data_);
}


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


static gboolean _vala_string_array_contains (gchar* * stack, int stack_length, gchar* needle) {
	int i;
	for (i = 0; i < stack_length; i++) {
		if (g_strcmp0 (stack[i], needle) == 0) {
			return TRUE;
		}
	}
	return FALSE;
}


static void folks_individual_change_avatar_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualChangeAvatarData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_change_avatar_co (_data_);
}


static gpointer _g_error_copy0 (gpointer self) {
	return self ? g_error_copy (self) : NULL;
}


static gboolean folks_individual_real_change_avatar_co (FolksIndividualChangeAvatarData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp2_ = _data_->self->priv->_avatar;
	if (_data_->_tmp2_ != NULL) {
		_data_->_tmp3_ = _data_->self->priv->_avatar;
		_data_->_tmp4_ = _data_->avatar;
		_data_->_tmp5_ = g_icon_equal ((GIcon*) G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp3_, g_loadable_icon_get_type (), GLoadableIcon), (GIcon*) _data_->_tmp4_);
		_data_->_tmp1_ = _data_->_tmp5_;
	} else {
		_data_->_tmp1_ = FALSE;
	}
	if (_data_->_tmp1_) {
		_data_->_tmp0_ = TRUE;
	} else {
		_data_->_tmp7_ = _data_->self->priv->_avatar;
		if (_data_->_tmp7_ == NULL) {
			_data_->_tmp8_ = _data_->avatar;
			_data_->_tmp6_ = _data_->_tmp8_ == NULL;
		} else {
			_data_->_tmp6_ = FALSE;
		}
		_data_->_tmp0_ = _data_->_tmp6_;
	}
	if (_data_->_tmp0_) {
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (_data_->_task_complete_ != TRUE) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp9_ = _data_->self->priv->_id;
	_data_->_tmp10_ = _data_->avatar;
	g_debug ("individual.vala:174: Setting avatar of individual '%s' to '%p'…", _data_->_tmp9_, _data_->_tmp10_);
	_data_->persona_error = NULL;
	_data_->prop_changed = FALSE;
	{
		_data_->_tmp11_ = _data_->self->priv->_persona_set;
		_data_->_tmp12_ = _g_object_ref0 (_data_->_tmp11_);
		_data_->_p_list = _data_->_tmp12_;
		_data_->_tmp13_ = _data_->_p_list;
		_data_->_tmp14_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp13_);
		_data_->_tmp15_ = _data_->_tmp14_;
		_data_->_p_size = _data_->_tmp15_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp16_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp16_ + 1;
			_data_->_tmp17_ = _data_->_p_index;
			_data_->_tmp18_ = _data_->_p_size;
			if (!(_data_->_tmp17_ < _data_->_tmp18_)) {
				break;
			}
			_data_->_tmp19_ = _data_->_p_list;
			_data_->_tmp20_ = _data_->_p_index;
			_data_->_tmp21_ = folks_small_set_get (_data_->_tmp19_, _data_->_tmp20_);
			_data_->_tmp22_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp21_);
			_data_->p = _data_->_tmp22_;
			_data_->_tmp23_ = _data_->p;
			_data_->_tmp24_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp23_, FOLKS_TYPE_AVATAR_DETAILS) ? ((FolksAvatarDetails*) _data_->_tmp23_) : NULL);
			_data_->_a = _data_->_tmp24_;
			_data_->_tmp25_ = _data_->_a;
			if (_data_->_tmp25_ == NULL) {
				_g_object_unref0 (_data_->_a);
				_g_object_unref0 (_data_->p);
				continue;
			}
			_data_->_tmp26_ = _data_->_a;
			_data_->_tmp27_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp26_, FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails));
			_data_->a = _data_->_tmp27_;
			_data_->_tmp28_ = _data_->p;
			_data_->_tmp29_ = folks_persona_get_writeable_properties (_data_->_tmp28_, &_data_->_tmp29__length1);
			_data_->_tmp30_ = _data_->_tmp29_;
			_data_->_tmp30__length1 = _data_->_tmp29__length1;
			if (_vala_string_array_contains (_data_->_tmp30_, _data_->_tmp30__length1, "avatar")) {
				{
					_data_->_tmp31_ = _data_->a;
					_data_->_tmp32_ = _data_->avatar;
					_data_->_state_ = 1;
					folks_avatar_details_change_avatar (_data_->_tmp31_, _data_->_tmp32_, folks_individual_change_avatar_ready, _data_);
					return FALSE;
					_state_1:
					folks_avatar_details_change_avatar_finish (_data_->_tmp31_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch10_folks_property_error;
						}
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp33_ = _data_->p;
					_data_->_tmp34_ = folks_persona_get_uid (_data_->_tmp33_);
					_data_->_tmp35_ = _data_->_tmp34_;
					g_debug ("individual.vala:195:     written to writeable persona '%s'", _data_->_tmp35_);
					_data_->prop_changed = TRUE;
				}
				goto __finally10;
				__catch10_folks_property_error:
				{
					_data_->e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp36_ = _data_->persona_error;
					if (_data_->_tmp36_ == NULL) {
						_data_->_tmp37_ = _data_->e;
						_data_->_tmp38_ = _g_error_copy0 (_data_->_tmp37_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp38_;
					}
					_g_error_free0 (_data_->e);
				}
				__finally10:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
			}
			_g_object_unref0 (_data_->a);
			_g_object_unref0 (_data_->_a);
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp39_ = _data_->prop_changed;
	if (_data_->_tmp39_ == FALSE) {
		_data_->_tmp40_ = _data_->persona_error;
		if (_data_->_tmp40_ == NULL) {
			_data_->_tmp41_ = g_error_new (FOLKS_PROPERTY_ERROR, FOLKS_PROPERTY_ERROR_NOT_WRITEABLE, _ ("Failed to change property ‘%s’: No suitable personas were found."), "avatar");
			_g_error_free0 (_data_->persona_error);
			_data_->persona_error = _data_->_tmp41_;
		}
		_data_->_tmp42_ = _data_->persona_error;
		_data_->_tmp43_ = _g_error_copy0 (_data_->_tmp42_);
		_data_->_inner_error_ = _data_->_tmp43_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static void folks_individual_real_change_alias_data_free (gpointer _data) {
	FolksIndividualChangeAliasData* _data_;
	_data_ = _data;
	_g_free0 (_data_->alias);
	_g_object_unref0 (_data_->self);
	g_slice_free (FolksIndividualChangeAliasData, _data_);
}


static void folks_individual_real_change_alias_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeAliasData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_change_alias (FolksAliasDetails* base, const gchar* alias, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeAliasData* _data_;
	FolksIndividual* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeAliasData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_alias_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_alias_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = alias;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->alias);
	_data_->alias = _tmp2_;
	folks_individual_real_change_alias_co (_data_);
}


static void folks_individual_real_change_alias_finish (FolksAliasDetails* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualChangeAliasData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}


/**
   * {@inheritDoc}
   *
   * @since 0.6.2
   */
static void folks_individual_change_alias_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualChangeAliasData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_change_alias_co (_data_);
}


static gboolean folks_individual_real_change_alias_co (FolksIndividualChangeAliasData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->self->priv->_alias;
	_data_->_tmp1_ = _data_->alias;
	if (g_strcmp0 (_data_->_tmp0_, _data_->_tmp1_) == 0) {
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (_data_->_task_complete_ != TRUE) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp2_ = _data_->self->priv->_id;
	_data_->_tmp3_ = _data_->alias;
	g_debug ("individual.vala:360: Setting alias of individual '%s' to '%s'…", _data_->_tmp2_, _data_->_tmp3_);
	_data_->persona_error = NULL;
	_data_->prop_changed = FALSE;
	{
		_data_->_tmp4_ = _data_->self->priv->_persona_set;
		_data_->_tmp5_ = _g_object_ref0 (_data_->_tmp4_);
		_data_->_p_list = _data_->_tmp5_;
		_data_->_tmp6_ = _data_->_p_list;
		_data_->_tmp7_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp6_);
		_data_->_tmp8_ = _data_->_tmp7_;
		_data_->_p_size = _data_->_tmp8_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp9_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp9_ + 1;
			_data_->_tmp10_ = _data_->_p_index;
			_data_->_tmp11_ = _data_->_p_size;
			if (!(_data_->_tmp10_ < _data_->_tmp11_)) {
				break;
			}
			_data_->_tmp12_ = _data_->_p_list;
			_data_->_tmp13_ = _data_->_p_index;
			_data_->_tmp14_ = folks_small_set_get (_data_->_tmp12_, _data_->_tmp13_);
			_data_->_tmp15_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp14_);
			_data_->p = _data_->_tmp15_;
			_data_->_tmp16_ = _data_->p;
			_data_->_tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp16_, FOLKS_TYPE_ALIAS_DETAILS) ? ((FolksAliasDetails*) _data_->_tmp16_) : NULL);
			_data_->_a = _data_->_tmp17_;
			_data_->_tmp18_ = _data_->_a;
			if (_data_->_tmp18_ == NULL) {
				_g_object_unref0 (_data_->_a);
				_g_object_unref0 (_data_->p);
				continue;
			}
			_data_->_tmp19_ = _data_->_a;
			_data_->_tmp20_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp19_, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails));
			_data_->a = _data_->_tmp20_;
			_data_->_tmp21_ = _data_->p;
			_data_->_tmp22_ = folks_persona_get_writeable_properties (_data_->_tmp21_, &_data_->_tmp22__length1);
			_data_->_tmp23_ = _data_->_tmp22_;
			_data_->_tmp23__length1 = _data_->_tmp22__length1;
			if (_vala_string_array_contains (_data_->_tmp23_, _data_->_tmp23__length1, "alias")) {
				{
					_data_->_tmp24_ = _data_->a;
					_data_->_tmp25_ = _data_->alias;
					_data_->_state_ = 1;
					folks_alias_details_change_alias (_data_->_tmp24_, _data_->_tmp25_, folks_individual_change_alias_ready, _data_);
					return FALSE;
					_state_1:
					folks_alias_details_change_alias_finish (_data_->_tmp24_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch11_folks_property_error;
						}
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp26_ = _data_->p;
					_data_->_tmp27_ = folks_persona_get_uid (_data_->_tmp26_);
					_data_->_tmp28_ = _data_->_tmp27_;
					g_debug ("individual.vala:381:     written to writeable persona '%s'", _data_->_tmp28_);
					_data_->prop_changed = TRUE;
				}
				goto __finally11;
				__catch11_folks_property_error:
				{
					_data_->e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp29_ = _data_->persona_error;
					if (_data_->_tmp29_ == NULL) {
						_data_->_tmp30_ = _data_->e;
						_data_->_tmp31_ = _g_error_copy0 (_data_->_tmp30_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp31_;
					}
					_g_error_free0 (_data_->e);
				}
				__finally11:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
			}
			_g_object_unref0 (_data_->a);
			_g_object_unref0 (_data_->_a);
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp32_ = _data_->prop_changed;
	if (_data_->_tmp32_ == FALSE) {
		_data_->_tmp33_ = _data_->persona_error;
		if (_data_->_tmp33_ == NULL) {
			_data_->_tmp34_ = g_error_new (FOLKS_PROPERTY_ERROR, FOLKS_PROPERTY_ERROR_NOT_WRITEABLE, _ ("Failed to change property ‘%s’: No suitable personas were found."), "alias");
			_g_error_free0 (_data_->persona_error);
			_data_->persona_error = _data_->_tmp34_;
		}
		_data_->_tmp35_ = _data_->persona_error;
		_data_->_tmp36_ = _g_error_copy0 (_data_->_tmp35_);
		_data_->_inner_error_ = _data_->_tmp36_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static void folks_individual_real_change_nickname_data_free (gpointer _data) {
	FolksIndividualChangeNicknameData* _data_;
	_data_ = _data;
	_g_free0 (_data_->nickname);
	_g_object_unref0 (_data_->self);
	g_slice_free (FolksIndividualChangeNicknameData, _data_);
}


static void folks_individual_real_change_nickname_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeNicknameData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_change_nickname (FolksNameDetails* base, const gchar* nickname, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeNicknameData* _data_;
	FolksIndividual* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeNicknameData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_nickname_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_nickname_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = nickname;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->nickname);
	_data_->nickname = _tmp2_;
	folks_individual_real_change_nickname_co (_data_);
}


static void folks_individual_real_change_nickname_finish (FolksNameDetails* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualChangeNicknameData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}


/**
   * {@inheritDoc}
   *
   * @since 0.6.2
   */
static void folks_individual_change_nickname_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualChangeNicknameData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_change_nickname_co (_data_);
}


static gboolean folks_individual_real_change_nickname_co (FolksIndividualChangeNicknameData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->nickname;
	if (_data_->_tmp0_ == NULL) {
		gchar* _tmp1_;
		_tmp1_ = g_strdup ("");
		_g_free0 (_data_->nickname);
		_data_->nickname = _tmp1_;
	}
	_data_->_tmp2_ = _data_->self->priv->_nickname;
	_data_->_tmp3_ = _data_->nickname;
	if (g_strcmp0 (_data_->_tmp2_, _data_->_tmp3_) == 0) {
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (_data_->_task_complete_ != TRUE) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp4_ = _data_->self->priv->_id;
	_data_->_tmp5_ = _data_->nickname;
	g_debug ("individual.vala:469: Setting nickname of individual '%s' to '%s'…", _data_->_tmp4_, _data_->_tmp5_);
	_data_->persona_error = NULL;
	_data_->prop_changed = FALSE;
	{
		_data_->_tmp6_ = _data_->self->priv->_persona_set;
		_data_->_tmp7_ = _g_object_ref0 (_data_->_tmp6_);
		_data_->_p_list = _data_->_tmp7_;
		_data_->_tmp8_ = _data_->_p_list;
		_data_->_tmp9_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp8_);
		_data_->_tmp10_ = _data_->_tmp9_;
		_data_->_p_size = _data_->_tmp10_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp11_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp11_ + 1;
			_data_->_tmp12_ = _data_->_p_index;
			_data_->_tmp13_ = _data_->_p_size;
			if (!(_data_->_tmp12_ < _data_->_tmp13_)) {
				break;
			}
			_data_->_tmp14_ = _data_->_p_list;
			_data_->_tmp15_ = _data_->_p_index;
			_data_->_tmp16_ = folks_small_set_get (_data_->_tmp14_, _data_->_tmp15_);
			_data_->_tmp17_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp16_);
			_data_->p = _data_->_tmp17_;
			_data_->_tmp18_ = _data_->p;
			_data_->_tmp19_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp18_, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->_tmp18_) : NULL);
			_data_->_n = _data_->_tmp19_;
			_data_->_tmp20_ = _data_->_n;
			if (_data_->_tmp20_ == NULL) {
				_g_object_unref0 (_data_->_n);
				_g_object_unref0 (_data_->p);
				continue;
			}
			_data_->_tmp21_ = _data_->_n;
			_data_->_tmp22_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp21_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
			_data_->n = _data_->_tmp22_;
			_data_->_tmp23_ = _data_->p;
			_data_->_tmp24_ = folks_persona_get_writeable_properties (_data_->_tmp23_, &_data_->_tmp24__length1);
			_data_->_tmp25_ = _data_->_tmp24_;
			_data_->_tmp25__length1 = _data_->_tmp24__length1;
			if (_vala_string_array_contains (_data_->_tmp25_, _data_->_tmp25__length1, "nickname")) {
				{
					_data_->_tmp26_ = _data_->n;
					_data_->_tmp27_ = _data_->nickname;
					_data_->_state_ = 1;
					folks_name_details_change_nickname (_data_->_tmp26_, _data_->_tmp27_, folks_individual_change_nickname_ready, _data_);
					return FALSE;
					_state_1:
					folks_name_details_change_nickname_finish (_data_->_tmp26_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch12_folks_property_error;
						}
						_g_object_unref0 (_data_->n);
						_g_object_unref0 (_data_->_n);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp28_ = _data_->p;
					_data_->_tmp29_ = folks_persona_get_uid (_data_->_tmp28_);
					_data_->_tmp30_ = _data_->_tmp29_;
					g_debug ("individual.vala:490:     written to writeable persona '%s'", _data_->_tmp30_);
					_data_->prop_changed = TRUE;
				}
				goto __finally12;
				__catch12_folks_property_error:
				{
					_data_->e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp31_ = _data_->persona_error;
					if (_data_->_tmp31_ == NULL) {
						_data_->_tmp32_ = _data_->e;
						_data_->_tmp33_ = _g_error_copy0 (_data_->_tmp32_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp33_;
					}
					_g_error_free0 (_data_->e);
				}
				__finally12:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->n);
						_g_object_unref0 (_data_->_n);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->n);
						_g_object_unref0 (_data_->_n);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
			}
			_g_object_unref0 (_data_->n);
			_g_object_unref0 (_data_->_n);
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp34_ = _data_->prop_changed;
	if (_data_->_tmp34_ == FALSE) {
		_data_->_tmp35_ = _data_->persona_error;
		if (_data_->_tmp35_ == NULL) {
			_data_->_tmp36_ = g_error_new (FOLKS_PROPERTY_ERROR, FOLKS_PROPERTY_ERROR_NOT_WRITEABLE, _ ("Failed to change property ‘%s’: No suitable personas were found."), "nickname");
			_g_error_free0 (_data_->persona_error);
			_data_->persona_error = _data_->_tmp36_;
		}
		_data_->_tmp37_ = _data_->persona_error;
		_data_->_tmp38_ = _g_error_copy0 (_data_->_tmp37_);
		_data_->_inner_error_ = _data_->_tmp38_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


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


static void folks_individual_real_change_is_favourite_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeIsFavouriteData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_change_is_favourite (FolksFavouriteDetails* base, gboolean is_favourite, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeIsFavouriteData* _data_;
	FolksIndividual* _tmp0_;
	gboolean _tmp1_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeIsFavouriteData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_is_favourite_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_is_favourite_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = is_favourite;
	_data_->is_favourite = _tmp1_;
	folks_individual_real_change_is_favourite_co (_data_);
}


static void folks_individual_real_change_is_favourite_finish (FolksFavouriteDetails* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualChangeIsFavouriteData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}


/**
   * {@inheritDoc}
   *
   * @since 0.6.2
   */
static void folks_individual_change_is_favourite_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualChangeIsFavouriteData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_change_is_favourite_co (_data_);
}


static gboolean folks_individual_real_change_is_favourite_co (FolksIndividualChangeIsFavouriteData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->self->priv->_is_favourite;
	_data_->_tmp1_ = _data_->is_favourite;
	if (_data_->_tmp0_ == _data_->_tmp1_) {
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (_data_->_task_complete_ != TRUE) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp3_ = _data_->is_favourite;
	if (_data_->_tmp3_) {
		_data_->_tmp2_ = "TRUE";
	} else {
		_data_->_tmp2_ = "FALSE";
	}
	_data_->_tmp4_ = _data_->self->priv->_id;
	g_debug ("individual.vala:715: Setting '%s' favourite status to %s…", _data_->_tmp4_, _data_->_tmp2_);
	_data_->persona_error = NULL;
	_data_->prop_changed = FALSE;
	{
		_data_->_tmp5_ = _data_->self->priv->_persona_set;
		_data_->_tmp6_ = _g_object_ref0 (_data_->_tmp5_);
		_data_->_p_list = _data_->_tmp6_;
		_data_->_tmp7_ = _data_->_p_list;
		_data_->_tmp8_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp7_);
		_data_->_tmp9_ = _data_->_tmp8_;
		_data_->_p_size = _data_->_tmp9_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp10_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp10_ + 1;
			_data_->_tmp11_ = _data_->_p_index;
			_data_->_tmp12_ = _data_->_p_size;
			if (!(_data_->_tmp11_ < _data_->_tmp12_)) {
				break;
			}
			_data_->_tmp13_ = _data_->_p_list;
			_data_->_tmp14_ = _data_->_p_index;
			_data_->_tmp15_ = folks_small_set_get (_data_->_tmp13_, _data_->_tmp14_);
			_data_->_tmp16_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp15_);
			_data_->p = _data_->_tmp16_;
			_data_->_tmp17_ = _data_->p;
			_data_->_tmp18_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp17_, FOLKS_TYPE_FAVOURITE_DETAILS) ? ((FolksFavouriteDetails*) _data_->_tmp17_) : NULL);
			_data_->_a = _data_->_tmp18_;
			_data_->_tmp19_ = _data_->_a;
			if (_data_->_tmp19_ == NULL) {
				_g_object_unref0 (_data_->_a);
				_g_object_unref0 (_data_->p);
				continue;
			}
			_data_->_tmp20_ = _data_->_a;
			_data_->_tmp21_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp20_, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails));
			_data_->a = _data_->_tmp21_;
			_data_->_tmp22_ = _data_->p;
			_data_->_tmp23_ = folks_persona_get_writeable_properties (_data_->_tmp22_, &_data_->_tmp23__length1);
			_data_->_tmp24_ = _data_->_tmp23_;
			_data_->_tmp24__length1 = _data_->_tmp23__length1;
			if (_vala_string_array_contains (_data_->_tmp24_, _data_->_tmp24__length1, "is-favourite")) {
				{
					_data_->_tmp25_ = _data_->a;
					_data_->_tmp26_ = _data_->is_favourite;
					_data_->_state_ = 1;
					folks_favourite_details_change_is_favourite (_data_->_tmp25_, _data_->_tmp26_, folks_individual_change_is_favourite_ready, _data_);
					return FALSE;
					_state_1:
					folks_favourite_details_change_is_favourite_finish (_data_->_tmp25_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch13_folks_property_error;
						}
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp27_ = _data_->p;
					_data_->_tmp28_ = folks_persona_get_uid (_data_->_tmp27_);
					_data_->_tmp29_ = _data_->_tmp28_;
					g_debug ("individual.vala:741:     written to persona '%s'", _data_->_tmp29_);
					_data_->prop_changed = TRUE;
				}
				goto __finally13;
				__catch13_folks_property_error:
				{
					_data_->e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp30_ = _data_->persona_error;
					if (_data_->_tmp30_ == NULL) {
						_data_->_tmp31_ = _data_->e;
						_data_->_tmp32_ = _g_error_copy0 (_data_->_tmp31_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp32_;
					}
					_g_error_free0 (_data_->e);
				}
				__finally13:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->a);
						_g_object_unref0 (_data_->_a);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
			}
			_g_object_unref0 (_data_->a);
			_g_object_unref0 (_data_->_a);
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp33_ = _data_->prop_changed;
	if (_data_->_tmp33_ == FALSE) {
		_data_->_tmp34_ = _data_->persona_error;
		if (_data_->_tmp34_ == NULL) {
			_data_->_tmp35_ = g_error_new (FOLKS_PROPERTY_ERROR, FOLKS_PROPERTY_ERROR_NOT_WRITEABLE, _ ("Failed to change property ‘%s’: No suitable personas were found."), "is-favourite");
			_g_error_free0 (_data_->persona_error);
			_data_->persona_error = _data_->_tmp35_;
		}
		_data_->_tmp36_ = _data_->persona_error;
		_data_->_tmp37_ = _g_error_copy0 (_data_->_tmp36_);
		_data_->_inner_error_ = _data_->_tmp37_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static void folks_individual_real_change_groups_data_free (gpointer _data) {
	FolksIndividualChangeGroupsData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->groups);
	_g_object_unref0 (_data_->self);
	g_slice_free (FolksIndividualChangeGroupsData, _data_);
}


static void folks_individual_real_change_groups_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeGroupsData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_change_groups (FolksGroupDetails* base, GeeSet* groups, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeGroupsData* _data_;
	FolksIndividual* _tmp0_;
	GeeSet* _tmp1_;
	GeeSet* _tmp2_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeGroupsData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_groups_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_groups_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = groups;
	_tmp2_ = _g_object_ref0 (_tmp1_);
	_g_object_unref0 (_data_->groups);
	_data_->groups = _tmp2_;
	folks_individual_real_change_groups_co (_data_);
}


static void folks_individual_real_change_groups_finish (FolksGroupDetails* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualChangeGroupsData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}


/**
   * {@inheritDoc}
   *
   * @since 0.6.2
   */
static void folks_individual_change_groups_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualChangeGroupsData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_change_groups_co (_data_);
}


static gboolean folks_individual_real_change_groups_co (FolksIndividualChangeGroupsData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->self->priv->_id;
	g_debug ("individual.vala:798: Setting '%s' groups…", _data_->_tmp0_);
	_data_->persona_error = NULL;
	_data_->prop_changed = FALSE;
	{
		_data_->_tmp1_ = _data_->self->priv->_persona_set;
		_data_->_tmp2_ = _g_object_ref0 (_data_->_tmp1_);
		_data_->_p_list = _data_->_tmp2_;
		_data_->_tmp3_ = _data_->_p_list;
		_data_->_tmp4_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp3_);
		_data_->_tmp5_ = _data_->_tmp4_;
		_data_->_p_size = _data_->_tmp5_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp6_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp6_ + 1;
			_data_->_tmp7_ = _data_->_p_index;
			_data_->_tmp8_ = _data_->_p_size;
			if (!(_data_->_tmp7_ < _data_->_tmp8_)) {
				break;
			}
			_data_->_tmp9_ = _data_->_p_list;
			_data_->_tmp10_ = _data_->_p_index;
			_data_->_tmp11_ = folks_small_set_get (_data_->_tmp9_, _data_->_tmp10_);
			_data_->_tmp12_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp11_);
			_data_->p = _data_->_tmp12_;
			_data_->_tmp13_ = _data_->p;
			_data_->_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp13_, FOLKS_TYPE_GROUP_DETAILS) ? ((FolksGroupDetails*) _data_->_tmp13_) : NULL);
			_data_->_g = _data_->_tmp14_;
			_data_->_tmp15_ = _data_->_g;
			if (_data_->_tmp15_ == NULL) {
				_g_object_unref0 (_data_->_g);
				_g_object_unref0 (_data_->p);
				continue;
			}
			_data_->_tmp16_ = _data_->_g;
			_data_->_tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp16_, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails));
			_data_->g = _data_->_tmp17_;
			_data_->_tmp18_ = _data_->p;
			_data_->_tmp19_ = folks_persona_get_writeable_properties (_data_->_tmp18_, &_data_->_tmp19__length1);
			_data_->_tmp20_ = _data_->_tmp19_;
			_data_->_tmp20__length1 = _data_->_tmp19__length1;
			if (_vala_string_array_contains (_data_->_tmp20_, _data_->_tmp20__length1, "groups")) {
				{
					_data_->_tmp21_ = _data_->g;
					_data_->_tmp22_ = _data_->groups;
					_data_->_state_ = 1;
					folks_group_details_change_groups (_data_->_tmp21_, _data_->_tmp22_, folks_individual_change_groups_ready, _data_);
					return FALSE;
					_state_1:
					folks_group_details_change_groups_finish (_data_->_tmp21_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch14_folks_property_error;
						}
						_g_object_unref0 (_data_->g);
						_g_object_unref0 (_data_->_g);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp23_ = _data_->p;
					_data_->_tmp24_ = folks_persona_get_uid (_data_->_tmp23_);
					_data_->_tmp25_ = _data_->_tmp24_;
					g_debug ("individual.vala:819:     written to persona '%s'", _data_->_tmp25_);
					_data_->prop_changed = TRUE;
				}
				goto __finally14;
				__catch14_folks_property_error:
				{
					_data_->e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp26_ = _data_->persona_error;
					if (_data_->_tmp26_ == NULL) {
						_data_->_tmp27_ = _data_->e;
						_data_->_tmp28_ = _g_error_copy0 (_data_->_tmp27_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp28_;
					}
					_g_error_free0 (_data_->e);
				}
				__finally14:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->g);
						_g_object_unref0 (_data_->_g);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->g);
						_g_object_unref0 (_data_->_g);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
			}
			_g_object_unref0 (_data_->g);
			_g_object_unref0 (_data_->_g);
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp29_ = _data_->prop_changed;
	if (_data_->_tmp29_ == FALSE) {
		_data_->_tmp30_ = _data_->persona_error;
		if (_data_->_tmp30_ == NULL) {
			_data_->_tmp31_ = g_error_new (FOLKS_PROPERTY_ERROR, FOLKS_PROPERTY_ERROR_NOT_WRITEABLE, _ ("Failed to change property ‘%s’: No suitable personas were found."), "groups");
			_g_error_free0 (_data_->persona_error);
			_data_->persona_error = _data_->_tmp31_;
		}
		_data_->_tmp32_ = _data_->persona_error;
		_data_->_tmp33_ = _g_error_copy0 (_data_->_tmp32_);
		_data_->_inner_error_ = _data_->_tmp33_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


/**
   * {@inheritDoc}
   *
   * @since 0.11.0
   */
static FolksExtendedFieldDetails* folks_individual_real_get_extended_field (FolksExtendedInfo* base, const gchar* name) {
	FolksIndividual * self;
	FolksExtendedFieldDetails* result = NULL;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	self = (FolksIndividual*) base;
	g_return_val_if_fail (name != NULL, NULL);
	_tmp0_ = name;
	_tmp1_ = self->priv->_id;
	g_debug ("individual.vala:994: Getting extended field '%s' on '%s'…", _tmp0_, _tmp1_);
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp2_;
		FolksSmallSet* _tmp3_;
		gint _p_size = 0;
		FolksSmallSet* _tmp4_;
		gint _tmp5_;
		gint _tmp6_;
		gint _p_index = 0;
		_tmp2_ = self->priv->_persona_set;
		_tmp3_ = _g_object_ref0 (_tmp2_);
		_p_list = _tmp3_;
		_tmp4_ = _p_list;
		_tmp5_ = gee_collection_get_size ((GeeCollection*) _tmp4_);
		_tmp6_ = _tmp5_;
		_p_size = _tmp6_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp7_;
			gint _tmp8_;
			gint _tmp9_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp10_;
			gint _tmp11_;
			gconstpointer _tmp12_;
			FolksPersona* _tmp13_;
			FolksPersona* _tmp14_;
			gchar** _tmp15_;
			gint _tmp15__length1;
			gchar** _tmp16_;
			gint _tmp16__length1;
			_tmp7_ = _p_index;
			_p_index = _tmp7_ + 1;
			_tmp8_ = _p_index;
			_tmp9_ = _p_size;
			if (!(_tmp8_ < _tmp9_)) {
				break;
			}
			_tmp10_ = _p_list;
			_tmp11_ = _p_index;
			_tmp12_ = folks_small_set_get (_tmp10_, _tmp11_);
			_tmp13_ = _g_object_ref0 ((FolksPersona*) _tmp12_);
			p = _tmp13_;
			_tmp14_ = p;
			_tmp15_ = folks_persona_get_writeable_properties (_tmp14_, &_tmp15__length1);
			_tmp16_ = _tmp15_;
			_tmp16__length1 = _tmp15__length1;
			if (_vala_string_array_contains (_tmp16_, _tmp16__length1, "extended-info")) {
				FolksExtendedInfo* e = NULL;
				FolksPersona* _tmp17_;
				FolksExtendedInfo* _tmp18_;
				FolksExtendedFieldDetails* details = NULL;
				FolksExtendedInfo* _tmp19_;
				const gchar* _tmp20_;
				FolksExtendedFieldDetails* _tmp21_;
				FolksExtendedFieldDetails* _tmp22_;
				_tmp17_ = p;
				_tmp18_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, FOLKS_TYPE_EXTENDED_INFO) ? ((FolksExtendedInfo*) _tmp17_) : NULL);
				e = _tmp18_;
				_tmp19_ = e;
				_tmp20_ = name;
				_tmp21_ = folks_extended_info_get_extended_field (_tmp19_, _tmp20_);
				details = _tmp21_;
				_tmp22_ = details;
				if (_tmp22_ != NULL) {
					result = details;
					_g_object_unref0 (e);
					_g_object_unref0 (p);
					_g_object_unref0 (_p_list);
					return result;
				}
				_g_object_unref0 (details);
				_g_object_unref0 (e);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	result = NULL;
	return result;
}


static void folks_individual_real_change_extended_field_data_free (gpointer _data) {
	FolksIndividualChangeExtendedFieldData* _data_;
	_data_ = _data;
	_g_free0 (_data_->name);
	_g_object_unref0 (_data_->value);
	_g_object_unref0 (_data_->self);
	g_slice_free (FolksIndividualChangeExtendedFieldData, _data_);
}


static void folks_individual_real_change_extended_field_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeExtendedFieldData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_change_extended_field (FolksExtendedInfo* base, const gchar* name, FolksExtendedFieldDetails* value, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeExtendedFieldData* _data_;
	FolksIndividual* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	FolksExtendedFieldDetails* _tmp3_;
	FolksExtendedFieldDetails* _tmp4_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeExtendedFieldData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_extended_field_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_extended_field_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = name;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->name);
	_data_->name = _tmp2_;
	_tmp3_ = value;
	_tmp4_ = _g_object_ref0 (_tmp3_);
	_g_object_unref0 (_data_->value);
	_data_->value = _tmp4_;
	folks_individual_real_change_extended_field_co (_data_);
}


static void folks_individual_real_change_extended_field_finish (FolksExtendedInfo* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualChangeExtendedFieldData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}


/**
   * {@inheritDoc}
   *
   * @since 0.11.0
   */
static void folks_individual_change_extended_field_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualChangeExtendedFieldData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_change_extended_field_co (_data_);
}


static gboolean folks_individual_real_change_extended_field_co (FolksIndividualChangeExtendedFieldData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->name;
	_data_->_tmp1_ = _data_->self->priv->_id;
	g_debug ("individual.vala:1022: Setting extended field '%s' on '%s'…", _data_->_tmp0_, _data_->_tmp1_);
	_data_->persona_error = NULL;
	_data_->prop_changed = FALSE;
	{
		_data_->_tmp2_ = _data_->self->priv->_persona_set;
		_data_->_tmp3_ = _g_object_ref0 (_data_->_tmp2_);
		_data_->_p_list = _data_->_tmp3_;
		_data_->_tmp4_ = _data_->_p_list;
		_data_->_tmp5_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp4_);
		_data_->_tmp6_ = _data_->_tmp5_;
		_data_->_p_size = _data_->_tmp6_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp7_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp7_ + 1;
			_data_->_tmp8_ = _data_->_p_index;
			_data_->_tmp9_ = _data_->_p_size;
			if (!(_data_->_tmp8_ < _data_->_tmp9_)) {
				break;
			}
			_data_->_tmp10_ = _data_->_p_list;
			_data_->_tmp11_ = _data_->_p_index;
			_data_->_tmp12_ = folks_small_set_get (_data_->_tmp10_, _data_->_tmp11_);
			_data_->_tmp13_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp12_);
			_data_->p = _data_->_tmp13_;
			_data_->_tmp14_ = _data_->p;
			_data_->_tmp15_ = folks_persona_get_writeable_properties (_data_->_tmp14_, &_data_->_tmp15__length1);
			_data_->_tmp16_ = _data_->_tmp15_;
			_data_->_tmp16__length1 = _data_->_tmp15__length1;
			if (_vala_string_array_contains (_data_->_tmp16_, _data_->_tmp16__length1, "extended-info")) {
				_data_->_tmp17_ = _data_->p;
				_data_->_tmp18_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp17_, FOLKS_TYPE_EXTENDED_INFO) ? ((FolksExtendedInfo*) _data_->_tmp17_) : NULL);
				_data_->e = _data_->_tmp18_;
				{
					_data_->_tmp19_ = _data_->e;
					_data_->_tmp20_ = _data_->name;
					_data_->_tmp21_ = _data_->value;
					_data_->_state_ = 1;
					folks_extended_info_change_extended_field (_data_->_tmp19_, _data_->_tmp20_, _data_->_tmp21_, folks_individual_change_extended_field_ready, _data_);
					return FALSE;
					_state_1:
					folks_extended_info_change_extended_field_finish (_data_->_tmp19_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch15_folks_property_error;
						}
						_g_object_unref0 (_data_->e);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp22_ = _data_->p;
					_data_->_tmp23_ = folks_persona_get_uid (_data_->_tmp22_);
					_data_->_tmp24_ = _data_->_tmp23_;
					g_debug ("individual.vala:1037:     written to writeable persona '%s'", _data_->_tmp24_);
					_data_->prop_changed = TRUE;
				}
				goto __finally15;
				__catch15_folks_property_error:
				{
					_data_->_vala1_e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp25_ = _data_->persona_error;
					if (_data_->_tmp25_ == NULL) {
						_data_->_tmp26_ = _data_->_vala1_e;
						_data_->_tmp27_ = _g_error_copy0 (_data_->_tmp26_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp27_;
					}
					_g_error_free0 (_data_->_vala1_e);
				}
				__finally15:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->e);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->e);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->e);
			}
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp28_ = _data_->prop_changed;
	if (_data_->_tmp28_ == FALSE) {
		_data_->_tmp29_ = _data_->persona_error;
		if (_data_->_tmp29_ == NULL) {
			_data_->_tmp30_ = g_error_new (FOLKS_PROPERTY_ERROR, FOLKS_PROPERTY_ERROR_NOT_WRITEABLE, _ ("Failed to change property ‘%s’: No suitable personas were found."), "extended-info");
			_g_error_free0 (_data_->persona_error);
			_data_->persona_error = _data_->_tmp30_;
		}
		_data_->_tmp31_ = _data_->persona_error;
		_data_->_tmp32_ = _g_error_copy0 (_data_->_tmp31_);
		_data_->_inner_error_ = _data_->_tmp32_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static void folks_individual_real_remove_extended_field_data_free (gpointer _data) {
	FolksIndividualRemoveExtendedFieldData* _data_;
	_data_ = _data;
	_g_free0 (_data_->name);
	_g_object_unref0 (_data_->self);
	g_slice_free (FolksIndividualRemoveExtendedFieldData, _data_);
}


static void folks_individual_real_remove_extended_field_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualRemoveExtendedFieldData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_remove_extended_field (FolksExtendedInfo* base, const gchar* name, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualRemoveExtendedFieldData* _data_;
	FolksIndividual* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualRemoveExtendedFieldData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_remove_extended_field_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_remove_extended_field_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = name;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->name);
	_data_->name = _tmp2_;
	folks_individual_real_remove_extended_field_co (_data_);
}


static void folks_individual_real_remove_extended_field_finish (FolksExtendedInfo* base, GAsyncResult* _res_, GError** error) {
	FolksIndividualRemoveExtendedFieldData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), error);
	if (NULL == _data_) {
		return;
	}
}


/**
   * {@inheritDoc}
   *
   * @since 0.11.0
   */
static void folks_individual_remove_extended_field_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	FolksIndividualRemoveExtendedFieldData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	_data_->_task_complete_ = TRUE;
	folks_individual_real_remove_extended_field_co (_data_);
}


static gboolean folks_individual_real_remove_extended_field_co (FolksIndividualRemoveExtendedFieldData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->name;
	_data_->_tmp1_ = _data_->self->priv->_id;
	g_debug ("individual.vala:1074: Removing extended field '%s' on '%s'…", _data_->_tmp0_, _data_->_tmp1_);
	_data_->persona_error = NULL;
	{
		_data_->_tmp2_ = _data_->self->priv->_persona_set;
		_data_->_tmp3_ = _g_object_ref0 (_data_->_tmp2_);
		_data_->_p_list = _data_->_tmp3_;
		_data_->_tmp4_ = _data_->_p_list;
		_data_->_tmp5_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp4_);
		_data_->_tmp6_ = _data_->_tmp5_;
		_data_->_p_size = _data_->_tmp6_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp7_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp7_ + 1;
			_data_->_tmp8_ = _data_->_p_index;
			_data_->_tmp9_ = _data_->_p_size;
			if (!(_data_->_tmp8_ < _data_->_tmp9_)) {
				break;
			}
			_data_->_tmp10_ = _data_->_p_list;
			_data_->_tmp11_ = _data_->_p_index;
			_data_->_tmp12_ = folks_small_set_get (_data_->_tmp10_, _data_->_tmp11_);
			_data_->_tmp13_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp12_);
			_data_->p = _data_->_tmp13_;
			_data_->_tmp14_ = _data_->p;
			_data_->_tmp15_ = folks_persona_get_writeable_properties (_data_->_tmp14_, &_data_->_tmp15__length1);
			_data_->_tmp16_ = _data_->_tmp15_;
			_data_->_tmp16__length1 = _data_->_tmp15__length1;
			if (_vala_string_array_contains (_data_->_tmp16_, _data_->_tmp16__length1, "extended-info")) {
				_data_->_tmp17_ = _data_->p;
				_data_->_tmp18_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp17_, FOLKS_TYPE_EXTENDED_INFO) ? ((FolksExtendedInfo*) _data_->_tmp17_) : NULL);
				_data_->e = _data_->_tmp18_;
				{
					_data_->_tmp19_ = _data_->e;
					_data_->_tmp20_ = _data_->name;
					_data_->_state_ = 1;
					folks_extended_info_remove_extended_field (_data_->_tmp19_, _data_->_tmp20_, folks_individual_remove_extended_field_ready, _data_);
					return FALSE;
					_state_1:
					folks_extended_info_remove_extended_field_finish (_data_->_tmp19_, _data_->_res_, &_data_->_inner_error_);
					if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
						if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
							goto __catch16_folks_property_error;
						}
						_g_object_unref0 (_data_->e);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp21_ = _data_->p;
					_data_->_tmp22_ = folks_persona_get_uid (_data_->_tmp21_);
					_data_->_tmp23_ = _data_->_tmp22_;
					g_debug ("individual.vala:1087:     removed from writeable persona '%s'", _data_->_tmp23_);
				}
				goto __finally16;
				__catch16_folks_property_error:
				{
					_data_->_vala1_e = _data_->_inner_error_;
					_data_->_inner_error_ = NULL;
					_data_->_tmp24_ = _data_->persona_error;
					if (_data_->_tmp24_ == NULL) {
						_data_->_tmp25_ = _data_->_vala1_e;
						_data_->_tmp26_ = _g_error_copy0 (_data_->_tmp25_);
						_g_error_free0 (_data_->persona_error);
						_data_->persona_error = _data_->_tmp26_;
					}
					_g_error_free0 (_data_->_vala1_e);
				}
				__finally16:
				if (G_UNLIKELY (_data_->_inner_error_ != NULL)) {
					if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
						g_task_return_error (_data_->_async_result, _data_->_inner_error_);
						_g_object_unref0 (_data_->e);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_object_unref (_data_->_async_result);
						return FALSE;
					} else {
						_g_object_unref0 (_data_->e);
						_g_object_unref0 (_data_->p);
						_g_object_unref0 (_data_->_p_list);
						_g_error_free0 (_data_->persona_error);
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
						g_clear_error (&_data_->_inner_error_);
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
				}
				_g_object_unref0 (_data_->e);
			}
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	_data_->_tmp27_ = _data_->persona_error;
	if (_data_->_tmp27_ != NULL) {
		_data_->_tmp28_ = _data_->persona_error;
		_data_->_tmp29_ = _g_error_copy0 (_data_->_tmp28_);
		_data_->_inner_error_ = _data_->_tmp29_;
		if (_data_->_inner_error_->domain == FOLKS_PROPERTY_ERROR) {
			g_task_return_error (_data_->_async_result, _data_->_inner_error_);
			_g_error_free0 (_data_->persona_error);
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_g_error_free0 (_data_->persona_error);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_g_error_free0 (_data_->persona_error);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static void _folks_individual_notify_alias_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_alias (_tmp0_);
}


static void _folks_individual_notify_avatar_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_avatar (_tmp0_);
}


static void _folks_individual_notify_full_name_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_full_name (_tmp0_);
}


static void _folks_individual_notify_structured_name_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_structured_name (_tmp0_);
}


static void _folks_individual_notify_nickname_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_nickname (_tmp0_);
}


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, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_gender_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_gender (_tmp0_);
}


static void _folks_individual_notify_urls_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_urls (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_phone_numbers_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_phone_numbers (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_postal_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_postal_addresses (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_email_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_email_addresses (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_roles_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_roles (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_birthday_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_birthday (_tmp0_);
}


static void _folks_individual_notify_notes_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_notes (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_local_ids_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_local_ids (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_location_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_location (_tmp0_);
}


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 void folks_individual_real_change_group_async_ready_wrapper (GObject *source_object, GAsyncResult *res, void *user_data) {
	FolksIndividualChangeGroupData* _task_data_;
	_task_data_ = g_task_get_task_data (G_TASK (res));
	if (_task_data_->_callback_ != NULL) {
		_task_data_->_callback_ (source_object, res, user_data);
	}
	_task_data_->_task_complete_ = TRUE;
}


static void folks_individual_real_change_group (FolksGroupDetails* base, const gchar* group, gboolean is_member, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	FolksIndividual * self;
	FolksIndividualChangeGroupData* _data_;
	FolksIndividual* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	gboolean _tmp3_;
	self = (FolksIndividual*) base;
	_data_ = g_slice_new0 (FolksIndividualChangeGroupData);
	_data_->_callback_ = _callback_;
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, folks_individual_real_change_group_async_ready_wrapper, _user_data_);
	if (_callback_ == NULL) {
		_data_->_task_complete_ = TRUE;
	}
	g_task_set_task_data (_data_->_async_result, _data_, folks_individual_real_change_group_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = group;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->group);
	_data_->group = _tmp2_;
	_tmp3_ = is_member;
	_data_->is_member = _tmp3_;
	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_task_propagate_pointer (G_TASK (_res_), NULL);
}


/**
   * 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_ = _data_->self->priv->_persona_set;
		_data_->_tmp1_ = _g_object_ref0 (_data_->_tmp0_);
		_data_->_p_list = _data_->_tmp1_;
		_data_->_tmp2_ = _data_->_p_list;
		_data_->_tmp3_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp2_);
		_data_->_tmp4_ = _data_->_tmp3_;
		_data_->_p_size = _data_->_tmp4_;
		_data_->_p_index = -1;
		while (TRUE) {
			_data_->_tmp5_ = _data_->_p_index;
			_data_->_p_index = _data_->_tmp5_ + 1;
			_data_->_tmp6_ = _data_->_p_index;
			_data_->_tmp7_ = _data_->_p_size;
			if (!(_data_->_tmp6_ < _data_->_tmp7_)) {
				break;
			}
			_data_->_tmp8_ = _data_->_p_list;
			_data_->_tmp9_ = _data_->_p_index;
			_data_->_tmp10_ = folks_small_set_get (_data_->_tmp8_, _data_->_tmp9_);
			_data_->_tmp11_ = _g_object_ref0 ((FolksPersona*) _data_->_tmp10_);
			_data_->p = _data_->_tmp11_;
			_data_->_tmp12_ = _data_->p;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp12_, FOLKS_TYPE_GROUP_DETAILS)) {
				_data_->_tmp13_ = _data_->p;
				_data_->_tmp14_ = _data_->group;
				_data_->_tmp15_ = _data_->is_member;
				folks_group_details_change_group (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp13_, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails), _data_->_tmp14_, _data_->_tmp15_, NULL, NULL);
			}
			_g_object_unref0 (_data_->p);
		}
		_g_object_unref0 (_data_->_p_list);
	}
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (_data_->_task_complete_ != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static void _folks_individual_notify_presence_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_presence (_tmp0_);
}


static void _folks_individual_notify_im_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_im_addresses (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_web_service_addresses_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_web_service_addresses (_tmp0_, FALSE, TRUE, TRUE);
}


static void _folks_individual_notify_is_favourite_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_folks_individual_update_is_favourite (_tmp0_);
}


static void _folks_individual_notify_im_interaction_count_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	g_object_notify ((GObject*) _tmp0_, "im-interaction-count");
}


static void _folks_individual_notify_call_interaction_count_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	g_object_notify ((GObject*) _tmp0_, "call-interaction-count");
}


static void _folks_individual_notify_last_im_interaction_datetime_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	FolksIndividual* _tmp1_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_g_date_time_unref0 (_tmp0_->priv->_last_im_interaction_datetime);
	_tmp0_->priv->_last_im_interaction_datetime = NULL;
	_tmp1_ = _self_;
	g_object_notify ((GObject*) _tmp1_, "last-im-interaction-datetime");
}


static void _folks_individual_notify_last_call_interaction_datetime_cb (FolksIndividual* _self_, FolksPersona* p, GParamSpec* ps) {
	FolksIndividual* _tmp0_;
	FolksIndividual* _tmp1_;
	g_return_if_fail (_self_ != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = _self_;
	_g_date_time_unref0 (_tmp0_->priv->_last_call_interaction_datetime);
	_tmp0_->priv->_last_call_interaction_datetime = NULL;
	_tmp1_ = _self_;
	g_object_notify ((GObject*) _tmp1_, "last-call-interaction-datetime");
}


static void _folks_individual_persona_notify_cb (FolksIndividual* self, GObject* obj, GParamSpec* ps) {
	FolksPersona* persona = NULL;
	GObject* _tmp0_;
	FolksPersona* _tmp1_;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	GParamSpec* _tmp4_;
	const gchar* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (obj != NULL);
	g_return_if_fail (ps != NULL);
	_tmp0_ = obj;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_PERSONA, FolksPersona));
	persona = _tmp1_;
	_tmp4_ = ps;
	_tmp5_ = _tmp4_->name;
	if (g_strcmp0 (_tmp5_, "individual") != 0) {
		FolksPersona* _tmp6_;
		FolksIndividual* _tmp7_;
		FolksIndividual* _tmp8_;
		_tmp6_ = persona;
		_tmp7_ = folks_persona_get_individual (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp3_ = _tmp8_ != self;
	} else {
		_tmp3_ = FALSE;
	}
	if (_tmp3_) {
		FolksPersona* _tmp9_;
		FolksIndividual* _tmp10_;
		FolksIndividual* _tmp11_;
		_tmp9_ = persona;
		_tmp10_ = folks_persona_get_individual (_tmp9_);
		_tmp11_ = _tmp10_;
		_tmp2_ = _tmp11_ != NULL;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		GParamSpec* _tmp12_;
		const gchar* _tmp13_;
		FolksPersona* _tmp14_;
		FolksPersona* _tmp15_;
		const gchar* _tmp16_;
		const gchar* _tmp17_;
		FolksPersona* _tmp18_;
		FolksIndividual* _tmp19_;
		FolksIndividual* _tmp20_;
		_tmp12_ = ps;
		_tmp13_ = _tmp12_->name;
		_tmp14_ = persona;
		_tmp15_ = persona;
		_tmp16_ = folks_persona_get_uid (_tmp15_);
		_tmp17_ = _tmp16_;
		_tmp18_ = persona;
		_tmp19_ = folks_persona_get_individual (_tmp18_);
		_tmp20_ = _tmp19_;
		g_warning ("Notification on property ‘%s’ of Persona %p (‘%s’) where " "Persona.individual is %p but was expected to be %p.", _tmp13_, _tmp14_, _tmp17_, _tmp20_, self);
		_g_object_unref0 (persona);
		return;
	} else {
		GParamSpec* _tmp21_;
		const gchar* _tmp22_;
		_tmp21_ = ps;
		_tmp22_ = _tmp21_->name;
		if (g_strcmp0 (_tmp22_, "individual") == 0) {
			FolksPersona* _tmp23_;
			FolksIndividual* _tmp24_;
			FolksIndividual* _tmp25_;
			_tmp23_ = persona;
			_tmp24_ = folks_persona_get_individual (_tmp23_);
			_tmp25_ = _tmp24_;
			if (_tmp25_ != self) {
				FolksSmallSet* remaining_personas = NULL;
				FolksSmallSet* _tmp26_;
				FolksSmallSet* _tmp27_;
				FolksSmallSet* _tmp28_;
				FolksSmallSet* _tmp29_;
				FolksPersona* _tmp30_;
				FolksSmallSet* _tmp31_;
				_tmp26_ = folks_small_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
				remaining_personas = _tmp26_;
				_tmp27_ = remaining_personas;
				_tmp28_ = self->priv->_persona_set;
				gee_collection_add_all ((GeeCollection*) _tmp27_, (GeeCollection*) _tmp28_);
				_tmp29_ = remaining_personas;
				_tmp30_ = persona;
				gee_abstract_collection_remove ((GeeAbstractCollection*) _tmp29_, _tmp30_);
				_tmp31_ = remaining_personas;
				_folks_individual_set_personas (self, (GeeSet*) _tmp31_, NULL);
				_g_object_unref0 (remaining_personas);
			}
			_g_object_unref0 (persona);
			return;
		}
	}
	{
		FolksIndividual_Notifier* notifier_collection = NULL;
		gint notifier_collection_length1 = 0;
		gint _notifier_collection_size_ = 0;
		gint notifier_it = 0;
		notifier_collection = FOLKS_INDIVIDUAL__notifiers;
		notifier_collection_length1 = G_N_ELEMENTS (FOLKS_INDIVIDUAL__notifiers);
		for (notifier_it = 0; notifier_it < G_N_ELEMENTS (FOLKS_INDIVIDUAL__notifiers); notifier_it = notifier_it + 1) {
			FolksIndividual_Notifier notifier = {0};
			notifier = notifier_collection[notifier_it];
			{
				GParamSpec* _tmp32_;
				const gchar* _tmp33_;
				FolksIndividual_Notifier _tmp34_;
				const gchar* _tmp35_;
				_tmp32_ = ps;
				_tmp33_ = _tmp32_->name;
				_tmp34_ = notifier;
				_tmp35_ = _tmp34_.property;
				if (g_strcmp0 (_tmp33_, _tmp35_) == 0) {
					FolksIndividual_Notifier _tmp36_;
					FolksIndividual_UnboundNotifier _tmp37_;
					FolksPersona* _tmp38_;
					GParamSpec* _tmp39_;
					_tmp36_ = notifier;
					_tmp37_ = _tmp36_.notify;
					_tmp38_ = persona;
					_tmp39_ = ps;
					_tmp37_ (self, _tmp38_, _tmp39_);
					break;
				}
			}
		}
	}
	_g_object_unref0 (persona);
}


/**
   * 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 Folks.Individual} with, or ``null``
   * @return a new Individual
   *
   * @since 0.5.1
   */
FolksIndividual* folks_individual_construct (GType object_type, GeeSet* personas) {
	FolksIndividual * self = NULL;
	GeeSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	_tmp0_ = personas;
	self = (FolksIndividual*) g_object_new (object_type, "personas", _tmp0_, NULL);
	_tmp1_ = self->priv->_persona_set;
	_tmp2_ = gee_collection_get_size ((GeeCollection*) _tmp1_);
	_tmp3_ = _tmp2_;
	g_debug ("individual.vala:1412: Creating new Individual with %u Personas: %p", (guint) _tmp3_, self);
	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* _added = NULL;
	GeeSet* _tmp0_;
	GeeSet* _tmp1_;
	GeeSet* _removed = NULL;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	GeeSet* _tmp6_;
	GeeSet* _tmp19_;
	GeeSet* _tmp20_;
	GeeSet* _tmp21_;
	GeeSet* _tmp22_;
	GeeSet* _tmp23_;
	GeeSet* _tmp24_;
	GeeSet* _tmp25_;
	GeeSet* _tmp26_;
	g_return_if_fail (self != NULL);
	_tmp0_ = added;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	_added = _tmp1_;
	_tmp2_ = removed;
	_tmp3_ = _g_object_ref0 (_tmp2_);
	_removed = _tmp3_;
	_tmp6_ = added;
	if (_tmp6_ == NULL) {
		_tmp5_ = TRUE;
	} else {
		GeeSet* _tmp7_;
		gint _tmp8_;
		gint _tmp9_;
		_tmp7_ = added;
		_tmp8_ = gee_collection_get_size ((GeeCollection*) G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_SET, GeeSet));
		_tmp9_ = _tmp8_;
		_tmp5_ = _tmp9_ == 0;
	}
	if (_tmp5_) {
		gboolean _tmp10_ = FALSE;
		GeeSet* _tmp11_;
		_tmp11_ = removed;
		if (_tmp11_ == NULL) {
			_tmp10_ = TRUE;
		} else {
			GeeSet* _tmp12_;
			gint _tmp13_;
			gint _tmp14_;
			_tmp12_ = removed;
			_tmp13_ = gee_collection_get_size ((GeeCollection*) G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_SET, GeeSet));
			_tmp14_ = _tmp13_;
			_tmp10_ = _tmp14_ == 0;
		}
		_tmp4_ = _tmp10_;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		_g_object_unref0 (_removed);
		_g_object_unref0 (_added);
		return;
	} else {
		GeeSet* _tmp15_;
		_tmp15_ = added;
		if (_tmp15_ == NULL) {
			FolksSmallSet* _tmp16_;
			_tmp16_ = folks_small_set_empty (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
			_g_object_unref0 (_added);
			_added = (GeeSet*) _tmp16_;
		} else {
			GeeSet* _tmp17_;
			_tmp17_ = removed;
			if (_tmp17_ == NULL) {
				FolksSmallSet* _tmp18_;
				_tmp18_ = folks_small_set_empty (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref);
				_g_object_unref0 (_removed);
				_removed = (GeeSet*) _tmp18_;
			}
		}
	}
	_tmp19_ = _added;
	_tmp20_ = gee_set_get_read_only_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_SET, GeeSet));
	_tmp21_ = _tmp20_;
	_tmp22_ = _tmp21_;
	_tmp23_ = _removed;
	_tmp24_ = gee_set_get_read_only_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, GEE_TYPE_SET, GeeSet));
	_tmp25_ = _tmp24_;
	_tmp26_ = _tmp25_;
	g_signal_emit (self, folks_individual_signals[FOLKS_INDIVIDUAL_PERSONAS_CHANGED_SIGNAL], 0, _tmp22_, _tmp26_);
	_g_object_unref0 (_tmp26_);
	_g_object_unref0 (_tmp22_);
	_g_object_unref0 (_removed);
	_g_object_unref0 (_added);
}


static void _folks_individual_store_removed_cb (FolksIndividual* self, FolksPersonaStore* store) {
	FolksSmallSet* remaining_personas = NULL;
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp19_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (store != NULL);
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
	remaining_personas = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksPersona* _tmp13_;
			FolksPersonaStore* _tmp14_;
			FolksPersonaStore* _tmp15_;
			FolksPersonaStore* _tmp16_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = folks_persona_get_store (_tmp13_);
			_tmp15_ = _tmp14_;
			_tmp16_ = store;
			if (_tmp15_ != _tmp16_) {
				FolksSmallSet* _tmp17_;
				FolksPersona* _tmp18_;
				_tmp17_ = remaining_personas;
				_tmp18_ = persona;
				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp17_, _tmp18_);
			}
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp19_ = remaining_personas;
	_folks_individual_set_personas (self, (GeeSet*) _tmp19_, NULL);
	_g_object_unref0 (remaining_personas);
}


static void _folks_individual_store_personas_changed_cb (FolksIndividual* self, FolksPersonaStore* store, GeeSet* added, GeeSet* removed, const gchar* message, FolksPersona* actor, FolksGroupDetailsChangeReason reason) {
	FolksSmallSet* remaining_personas = NULL;
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp18_;
	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_ = folks_small_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
	remaining_personas = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			GeeSet* _tmp13_;
			FolksPersona* _tmp14_;
			gboolean _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = removed;
			_tmp14_ = persona;
			_tmp15_ = gee_collection_contains ((GeeCollection*) _tmp13_, _tmp14_);
			if (!_tmp15_) {
				FolksSmallSet* _tmp16_;
				FolksPersona* _tmp17_;
				_tmp16_ = remaining_personas;
				_tmp17_ = persona;
				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp16_, _tmp17_);
			}
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp18_ = remaining_personas;
	_folks_individual_set_personas (self, (GeeSet*) _tmp18_, NULL);
	_g_object_unref0 (remaining_personas);
}


static void _folks_individual_update_fields (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_groups (self, FALSE, TRUE, TRUE);
	_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, FALSE, TRUE, TRUE);
	_folks_individual_update_web_service_addresses (self, FALSE, TRUE, TRUE);
	_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, FALSE, TRUE, TRUE);
	_folks_individual_update_phone_numbers (self, FALSE, TRUE, TRUE);
	_folks_individual_update_email_addresses (self, FALSE, TRUE, TRUE);
	_folks_individual_update_roles (self, FALSE, TRUE, TRUE);
	_folks_individual_update_birthday (self);
	_folks_individual_update_notes (self, FALSE, TRUE, TRUE);
	_folks_individual_update_postal_addresses (self, FALSE, TRUE, TRUE);
	_folks_individual_update_local_ids (self, FALSE, TRUE, TRUE);
	_folks_individual_update_location (self);
	_folks_individual_update_display_name (self);
}


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


static void block2_data_unref (void * _userdata_) {
	Block2Data* _data2_;
	_data2_ = (Block2Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
		FolksIndividual* self;
		self = _data2_->self;
		_g_free0 (_data2_->prop_name);
		_g_object_unref0 (self);
		g_slice_free (Block2Data, _data2_);
	}
}


static gint __lambda6_ (Block2Data* _data2_, FolksPersona* a, FolksPersona* b) {
	FolksIndividual* self;
	gint result = 0;
	FolksPersona* _tmp0_;
	FolksPersona* _tmp1_;
	gboolean a_is_set = FALSE;
	FolksIndividualPropertyFilter _tmp2_;
	void* _tmp2__target;
	FolksPersona* _tmp3_;
	gboolean _tmp4_;
	gboolean b_is_set = FALSE;
	FolksIndividualPropertyFilter _tmp5_;
	void* _tmp5__target;
	FolksPersona* _tmp6_;
	gboolean _tmp7_;
	gboolean _tmp8_;
	gboolean _tmp9_;
	gboolean a_is_primary = FALSE;
	FolksPersona* _tmp14_;
	FolksPersonaStore* _tmp15_;
	FolksPersonaStore* _tmp16_;
	gboolean _tmp17_;
	gboolean _tmp18_;
	gboolean b_is_primary = FALSE;
	FolksPersona* _tmp19_;
	FolksPersonaStore* _tmp20_;
	FolksPersonaStore* _tmp21_;
	gboolean _tmp22_;
	gboolean _tmp23_;
	gboolean _tmp24_;
	gboolean _tmp25_;
	gboolean a_is_writeable = FALSE;
	const gchar* _tmp30_;
	FolksPersona* _tmp31_;
	gchar** _tmp32_;
	gint _tmp32__length1;
	gchar** _tmp33_;
	gint _tmp33__length1;
	gboolean b_is_writeable = FALSE;
	const gchar* _tmp34_;
	FolksPersona* _tmp35_;
	gchar** _tmp36_;
	gint _tmp36__length1;
	gchar** _tmp37_;
	gint _tmp37__length1;
	gboolean _tmp38_;
	gboolean _tmp39_;
	gint order = 0;
	GCompareFunc _tmp44_;
	FolksPersona* _tmp45_;
	FolksPersona* _tmp46_;
	gint _tmp47_;
	gint _tmp48_;
	self = _data2_->self;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	g_return_val_if_fail (_tmp0_ != NULL, 0);
	_tmp1_ = b;
	g_return_val_if_fail (_tmp1_ != NULL, 0);
	_tmp2_ = _data2_->filter_func;
	_tmp2__target = _data2_->filter_func_target;
	_tmp3_ = a;
	_tmp4_ = _tmp2_ (_tmp3_, _tmp2__target);
	a_is_set = _tmp4_;
	_tmp5_ = _data2_->filter_func;
	_tmp5__target = _data2_->filter_func_target;
	_tmp6_ = b;
	_tmp7_ = _tmp5_ (_tmp6_, _tmp5__target);
	b_is_set = _tmp7_;
	_tmp8_ = a_is_set;
	_tmp9_ = b_is_set;
	if (_tmp8_ != _tmp9_) {
		gint _tmp10_ = 0;
		gboolean _tmp11_;
		gint _tmp12_ = 0;
		gboolean _tmp13_;
		_tmp11_ = a_is_set;
		if (_tmp11_) {
			_tmp10_ = 1;
		} else {
			_tmp10_ = 0;
		}
		_tmp13_ = b_is_set;
		if (_tmp13_) {
			_tmp12_ = 1;
		} else {
			_tmp12_ = 0;
		}
		result = _tmp10_ - _tmp12_;
		return result;
	}
	_tmp14_ = a;
	_tmp15_ = folks_persona_get_store (_tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = folks_persona_store_get_is_primary_store (_tmp16_);
	_tmp18_ = _tmp17_;
	a_is_primary = _tmp18_;
	_tmp19_ = b;
	_tmp20_ = folks_persona_get_store (_tmp19_);
	_tmp21_ = _tmp20_;
	_tmp22_ = folks_persona_store_get_is_primary_store (_tmp21_);
	_tmp23_ = _tmp22_;
	b_is_primary = _tmp23_;
	_tmp24_ = a_is_primary;
	_tmp25_ = b_is_primary;
	if (_tmp24_ != _tmp25_) {
		gint _tmp26_ = 0;
		gboolean _tmp27_;
		gint _tmp28_ = 0;
		gboolean _tmp29_;
		_tmp27_ = a_is_primary;
		if (_tmp27_) {
			_tmp26_ = 1;
		} else {
			_tmp26_ = 0;
		}
		_tmp29_ = b_is_primary;
		if (_tmp29_) {
			_tmp28_ = 1;
		} else {
			_tmp28_ = 0;
		}
		result = _tmp26_ - _tmp28_;
		return result;
	}
	_tmp30_ = _data2_->prop_name;
	_tmp31_ = a;
	_tmp32_ = folks_persona_get_writeable_properties (_tmp31_, &_tmp32__length1);
	_tmp33_ = _tmp32_;
	_tmp33__length1 = _tmp32__length1;
	a_is_writeable = _vala_string_array_contains (_tmp33_, _tmp33__length1, _tmp30_);
	_tmp34_ = _data2_->prop_name;
	_tmp35_ = b;
	_tmp36_ = folks_persona_get_writeable_properties (_tmp35_, &_tmp36__length1);
	_tmp37_ = _tmp36_;
	_tmp37__length1 = _tmp36__length1;
	b_is_writeable = _vala_string_array_contains (_tmp37_, _tmp37__length1, _tmp34_);
	_tmp38_ = a_is_writeable;
	_tmp39_ = b_is_writeable;
	if (_tmp38_ != _tmp39_) {
		gint _tmp40_ = 0;
		gboolean _tmp41_;
		gint _tmp42_ = 0;
		gboolean _tmp43_;
		_tmp41_ = a_is_writeable;
		if (_tmp41_) {
			_tmp40_ = 1;
		} else {
			_tmp40_ = 0;
		}
		_tmp43_ = b_is_writeable;
		if (_tmp43_) {
			_tmp42_ = 1;
		} else {
			_tmp42_ = 0;
		}
		result = _tmp40_ - _tmp42_;
		return result;
	}
	_tmp44_ = _data2_->compare_func;
	_tmp45_ = a;
	_tmp46_ = b;
	_tmp47_ = _tmp44_ (_tmp45_, _tmp46_);
	order = _tmp47_;
	_tmp48_ = order;
	if (_tmp48_ == 0) {
		GCompareFunc _tmp49_;
		FolksPersona* _tmp50_;
		const gchar* _tmp51_;
		const gchar* _tmp52_;
		FolksPersona* _tmp53_;
		const gchar* _tmp54_;
		const gchar* _tmp55_;
		gint _tmp56_;
		_tmp49_ = g_strcmp0;
		_tmp50_ = a;
		_tmp51_ = folks_persona_get_uid (_tmp50_);
		_tmp52_ = _tmp51_;
		_tmp53_ = b;
		_tmp54_ = folks_persona_get_uid (_tmp53_);
		_tmp55_ = _tmp54_;
		_tmp56_ = _tmp49_ (_tmp52_, _tmp55_);
		order = _tmp56_;
	}
	result = order;
	return result;
}


static gint ___lambda6__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self) {
	gint result;
	result = __lambda6_ (self, (FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void _folks_individual_update_single_valued_property (FolksIndividual* self, GType interface_type, FolksIndividualPropertyFilter filter_func, void* filter_func_target, GCompareFunc compare_func, const gchar* prop_name, FolksIndividualSingleValuedPropertySetter setter, void* setter_target) {
	Block2Data* _data2_;
	FolksIndividualPropertyFilter _tmp0_;
	void* _tmp0__target;
	GCompareFunc _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	GCompareDataFunc primary_compare_func = NULL;
	void* primary_compare_func_target;
	GDestroyNotify primary_compare_func_target_destroy_notify;
	FolksPersona* candidate_p = NULL;
	FolksIndividualSingleValuedPropertySetter _tmp28_;
	void* _tmp28__target;
	FolksPersona* _tmp29_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prop_name != NULL);
	_data2_ = g_slice_new0 (Block2Data);
	_data2_->_ref_count_ = 1;
	_data2_->self = g_object_ref (self);
	_tmp0_ = filter_func;
	_tmp0__target = filter_func_target;
	_data2_->filter_func = _tmp0_;
	_data2_->filter_func_target = _tmp0__target;
	_tmp1_ = compare_func;
	_data2_->compare_func = _tmp1_;
	_tmp2_ = prop_name;
	_tmp3_ = g_strdup (_tmp2_);
	_g_free0 (_data2_->prop_name);
	_data2_->prop_name = _tmp3_;
	primary_compare_func = ___lambda6__gcompare_data_func;
	primary_compare_func_target = block2_data_ref (_data2_);
	primary_compare_func_target_destroy_notify = block2_data_unref;
	candidate_p = NULL;
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp4_;
		FolksSmallSet* _tmp5_;
		gint _p_size = 0;
		FolksSmallSet* _tmp6_;
		gint _tmp7_;
		gint _tmp8_;
		gint _p_index = 0;
		_tmp4_ = self->priv->_persona_set;
		_tmp5_ = _g_object_ref0 (_tmp4_);
		_p_list = _tmp5_;
		_tmp6_ = _p_list;
		_tmp7_ = gee_collection_get_size ((GeeCollection*) _tmp6_);
		_tmp8_ = _tmp7_;
		_p_size = _tmp8_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp9_;
			gint _tmp10_;
			gint _tmp11_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp12_;
			gint _tmp13_;
			gconstpointer _tmp14_;
			FolksPersona* _tmp15_;
			FolksPersona* _tmp16_;
			GType _tmp17_;
			GType _tmp18_;
			gboolean _tmp19_;
			_tmp9_ = _p_index;
			_p_index = _tmp9_ + 1;
			_tmp10_ = _p_index;
			_tmp11_ = _p_size;
			if (!(_tmp10_ < _tmp11_)) {
				break;
			}
			_tmp12_ = _p_list;
			_tmp13_ = _p_index;
			_tmp14_ = folks_small_set_get (_tmp12_, _tmp13_);
			_tmp15_ = _g_object_ref0 ((FolksPersona*) _tmp14_);
			p = _tmp15_;
			_tmp16_ = p;
			_tmp17_ = G_TYPE_FROM_INSTANCE ((GObject*) _tmp16_);
			_tmp18_ = interface_type;
			_tmp19_ = g_type_is_a (_tmp17_, _tmp18_);
			if (_tmp19_) {
				gboolean _tmp20_ = FALSE;
				FolksPersona* _tmp21_;
				_tmp21_ = candidate_p;
				if (_tmp21_ == NULL) {
					_tmp20_ = TRUE;
				} else {
					GCompareDataFunc _tmp22_;
					void* _tmp22__target;
					FolksPersona* _tmp23_;
					FolksPersona* _tmp24_;
					gint _tmp25_;
					_tmp22_ = primary_compare_func;
					_tmp22__target = primary_compare_func_target;
					_tmp23_ = p;
					_tmp24_ = candidate_p;
					_tmp25_ = _tmp22_ (_tmp23_, G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, FOLKS_TYPE_PERSONA, FolksPersona), _tmp22__target);
					_tmp20_ = _tmp25_ > 0;
				}
				if (_tmp20_) {
					FolksPersona* _tmp26_;
					FolksPersona* _tmp27_;
					_tmp26_ = p;
					_tmp27_ = _g_object_ref0 (_tmp26_);
					_g_object_unref0 (candidate_p);
					candidate_p = _tmp27_;
				}
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	_tmp28_ = setter;
	_tmp28__target = setter_target;
	_tmp29_ = candidate_p;
	_tmp28_ (_tmp29_, _tmp28__target);
	_g_object_unref0 (candidate_p);
	(primary_compare_func_target_destroy_notify == NULL) ? NULL : (primary_compare_func_target_destroy_notify (primary_compare_func_target), NULL);
	primary_compare_func = NULL;
	primary_compare_func_target = NULL;
	primary_compare_func_target_destroy_notify = NULL;
	block2_data_unref (_data2_);
	_data2_ = NULL;
}


static void _folks_individual_update_multi_valued_property (FolksIndividual* self, const gchar* prop_name, gboolean create_if_not_exist, FolksIndividualPropertyIsNull prop_is_null, void* prop_is_null_target, FolksIndividualCollectionCreator create_collection, void* create_collection_target, FolksIndividualMultiValuedPropertySetter setter, void* setter_target, gboolean emit_notification, gboolean force_update) {
	gboolean created = FALSE;
	FolksIndividualPropertyIsNull _tmp0_;
	void* _tmp0__target;
	gboolean _tmp1_;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prop_name != NULL);
	created = FALSE;
	_tmp0_ = prop_is_null;
	_tmp0__target = prop_is_null_target;
	_tmp1_ = _tmp0_ (_tmp0__target);
	if (_tmp1_) {
		gboolean _tmp2_;
		FolksIndividualCollectionCreator _tmp5_;
		void* _tmp5__target;
		_tmp2_ = create_if_not_exist;
		if (_tmp2_ == FALSE) {
			gboolean _tmp3_;
			_tmp3_ = emit_notification;
			if (_tmp3_) {
				const gchar* _tmp4_;
				_tmp4_ = prop_name;
				g_object_notify ((GObject*) self, _tmp4_);
			}
			return;
		}
		_tmp5_ = create_collection;
		_tmp5__target = create_collection_target;
		_tmp5_ (_tmp5__target);
		created = TRUE;
	}
	_tmp9_ = created;
	if (_tmp9_) {
		_tmp8_ = TRUE;
	} else {
		gboolean _tmp10_;
		_tmp10_ = force_update;
		_tmp8_ = _tmp10_;
	}
	if (_tmp8_) {
		FolksIndividualMultiValuedPropertySetter _tmp11_;
		void* _tmp11__target;
		gboolean _tmp12_;
		_tmp11_ = setter;
		_tmp11__target = setter_target;
		_tmp12_ = _tmp11_ (_tmp11__target);
		_tmp7_ = _tmp12_ == TRUE;
	} else {
		_tmp7_ = FALSE;
	}
	if (_tmp7_) {
		gboolean _tmp13_;
		_tmp13_ = emit_notification;
		_tmp6_ = _tmp13_;
	} else {
		_tmp6_ = FALSE;
	}
	if (_tmp6_) {
		const gchar* _tmp14_;
		_tmp14_ = prop_name;
		g_object_notify ((GObject*) self, _tmp14_);
	}
}


static Block3Data* block3_data_ref (Block3Data* _data3_) {
	g_atomic_int_inc (&_data3_->_ref_count_);
	return _data3_;
}


static void block3_data_unref (void * _userdata_) {
	Block3Data* _data3_;
	_data3_ = (Block3Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
		FolksIndividual* self;
		self = _data3_->self;
		_g_object_unref0 (self);
		g_slice_free (Block3Data, _data3_);
	}
}


static void __lambda64_ (Block3Data* _data3_, const gchar* l) {
	FolksIndividual* self;
	const gchar* group = NULL;
	const gchar* _tmp0_;
	FolksSmallSet* _tmp1_;
	const gchar* _tmp2_;
	gboolean _tmp3_;
	self = _data3_->self;
	g_return_if_fail (l != NULL);
	_tmp0_ = l;
	group = (const gchar*) _tmp0_;
	_tmp1_ = self->priv->_groups;
	_tmp2_ = group;
	gee_abstract_collection_remove ((GeeAbstractCollection*) _tmp1_, _tmp2_);
	_tmp3_ = _data3_->emit_notification;
	if (_tmp3_) {
		const gchar* _tmp4_;
		_tmp4_ = group;
		g_signal_emit_by_name ((FolksGroupDetails*) self, "group-changed", _tmp4_, FALSE);
	}
}


static void ___lambda64__gfunc (gconstpointer data, gpointer self) {
	__lambda64_ (self, (const gchar*) data);
}


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


static inline void _g_list_free__g_free0_ (GList* self) {
	g_list_free_full (self, (GDestroyNotify) _g_free0_);
}


static void _folks_individual_update_groups (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	Block3Data* _data3_;
	gboolean _tmp0_;
	gboolean created = FALSE;
	gboolean _tmp1_ = FALSE;
	FolksSmallSet* _tmp2_;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_;
	FolksSmallSet* new_groups = NULL;
	FolksSmallSet* _tmp13_;
	GList* removes = NULL;
	GList* _tmp74_;
	g_return_if_fail (self != NULL);
	_data3_ = g_slice_new0 (Block3Data);
	_data3_->_ref_count_ = 1;
	_data3_->self = g_object_ref (self);
	_tmp0_ = emit_notification;
	_data3_->emit_notification = _tmp0_;
	created = FALSE;
	_tmp2_ = self->priv->_groups;
	if (_tmp2_ == NULL) {
		gboolean _tmp3_;
		_tmp3_ = create_if_not_exist;
		_tmp1_ = _tmp3_ == FALSE;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		gboolean _tmp4_;
		_tmp4_ = _data3_->emit_notification;
		if (_tmp4_) {
			g_object_notify ((GObject*) self, "groups");
		}
		block3_data_unref (_data3_);
		_data3_ = NULL;
		return;
	} else {
		FolksSmallSet* _tmp5_;
		_tmp5_ = self->priv->_groups;
		if (_tmp5_ == NULL) {
			FolksSmallSet* _tmp6_;
			FolksSmallSet* _tmp7_;
			GeeSet* _tmp8_;
			GeeSet* _tmp9_;
			_tmp6_ = folks_small_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
			_g_object_unref0 (self->priv->_groups);
			self->priv->_groups = _tmp6_;
			_tmp7_ = self->priv->_groups;
			_tmp8_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp7_);
			_tmp9_ = _tmp8_;
			_g_object_unref0 (self->priv->_groups_ro);
			self->priv->_groups_ro = _tmp9_;
			created = TRUE;
		}
	}
	_tmp11_ = created;
	if (!_tmp11_) {
		gboolean _tmp12_;
		_tmp12_ = force_update;
		_tmp10_ = !_tmp12_;
	} else {
		_tmp10_ = FALSE;
	}
	if (_tmp10_) {
		block3_data_unref (_data3_);
		_data3_ = NULL;
		return;
	}
	_tmp13_ = folks_small_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
	new_groups = _tmp13_;
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp14_;
		FolksSmallSet* _tmp15_;
		gint _p_size = 0;
		FolksSmallSet* _tmp16_;
		gint _tmp17_;
		gint _tmp18_;
		gint _p_index = 0;
		_tmp14_ = self->priv->_persona_set;
		_tmp15_ = _g_object_ref0 (_tmp14_);
		_p_list = _tmp15_;
		_tmp16_ = _p_list;
		_tmp17_ = gee_collection_get_size ((GeeCollection*) _tmp16_);
		_tmp18_ = _tmp17_;
		_p_size = _tmp18_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp19_;
			gint _tmp20_;
			gint _tmp21_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp22_;
			gint _tmp23_;
			gconstpointer _tmp24_;
			FolksPersona* _tmp25_;
			FolksPersona* _tmp26_;
			_tmp19_ = _p_index;
			_p_index = _tmp19_ + 1;
			_tmp20_ = _p_index;
			_tmp21_ = _p_size;
			if (!(_tmp20_ < _tmp21_)) {
				break;
			}
			_tmp22_ = _p_list;
			_tmp23_ = _p_index;
			_tmp24_ = folks_small_set_get (_tmp22_, _tmp23_);
			_tmp25_ = _g_object_ref0 ((FolksPersona*) _tmp24_);
			p = _tmp25_;
			_tmp26_ = p;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, FOLKS_TYPE_GROUP_DETAILS)) {
				FolksGroupDetails* persona = NULL;
				FolksPersona* _tmp27_;
				FolksGroupDetails* _tmp28_;
				_tmp27_ = p;
				_tmp28_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails));
				persona = _tmp28_;
				{
					GeeIterator* _group_it = NULL;
					FolksGroupDetails* _tmp29_;
					GeeSet* _tmp30_;
					GeeSet* _tmp31_;
					GeeIterator* _tmp32_;
					_tmp29_ = persona;
					_tmp30_ = folks_group_details_get_groups (_tmp29_);
					_tmp31_ = _tmp30_;
					_tmp32_ = gee_iterable_iterator ((GeeIterable*) _tmp31_);
					_group_it = _tmp32_;
					while (TRUE) {
						GeeIterator* _tmp33_;
						gboolean _tmp34_;
						gchar* group = NULL;
						GeeIterator* _tmp35_;
						gpointer _tmp36_;
						FolksSmallSet* _tmp37_;
						const gchar* _tmp38_;
						_tmp33_ = _group_it;
						_tmp34_ = gee_iterator_next (_tmp33_);
						if (!_tmp34_) {
							break;
						}
						_tmp35_ = _group_it;
						_tmp36_ = gee_iterator_get (_tmp35_);
						group = (gchar*) _tmp36_;
						_tmp37_ = new_groups;
						_tmp38_ = group;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp37_, _tmp38_);
						_g_free0 (group);
					}
					_g_object_unref0 (_group_it);
				}
				_g_object_unref0 (persona);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	{
		FolksSmallSet* _group_list = NULL;
		FolksSmallSet* _tmp39_;
		FolksSmallSet* _tmp40_;
		gint _group_size = 0;
		FolksSmallSet* _tmp41_;
		gint _tmp42_;
		gint _tmp43_;
		gint _group_index = 0;
		_tmp39_ = new_groups;
		_tmp40_ = _g_object_ref0 (_tmp39_);
		_group_list = _tmp40_;
		_tmp41_ = _group_list;
		_tmp42_ = gee_collection_get_size ((GeeCollection*) _tmp41_);
		_tmp43_ = _tmp42_;
		_group_size = _tmp43_;
		_group_index = -1;
		while (TRUE) {
			gint _tmp44_;
			gint _tmp45_;
			gint _tmp46_;
			gchar* group = NULL;
			FolksSmallSet* _tmp47_;
			gint _tmp48_;
			gconstpointer _tmp49_;
			gchar* _tmp50_;
			gboolean _tmp51_ = FALSE;
			FolksSmallSet* _tmp52_;
			const gchar* _tmp53_;
			gboolean _tmp54_;
			_tmp44_ = _group_index;
			_group_index = _tmp44_ + 1;
			_tmp45_ = _group_index;
			_tmp46_ = _group_size;
			if (!(_tmp45_ < _tmp46_)) {
				break;
			}
			_tmp47_ = _group_list;
			_tmp48_ = _group_index;
			_tmp49_ = folks_small_set_get (_tmp47_, _tmp48_);
			_tmp50_ = g_strdup ((const gchar*) _tmp49_);
			group = _tmp50_;
			_tmp52_ = self->priv->_groups;
			_tmp53_ = group;
			_tmp54_ = gee_abstract_collection_add ((GeeAbstractCollection*) _tmp52_, _tmp53_);
			if (_tmp54_) {
				gboolean _tmp55_;
				_tmp55_ = _data3_->emit_notification;
				_tmp51_ = _tmp55_;
			} else {
				_tmp51_ = FALSE;
			}
			if (_tmp51_) {
				const gchar* _tmp56_;
				_tmp56_ = group;
				g_signal_emit_by_name ((FolksGroupDetails*) self, "group-changed", _tmp56_, TRUE);
			}
			_g_free0 (group);
		}
		_g_object_unref0 (_group_list);
	}
	removes = NULL;
	{
		FolksSmallSet* _group_list = NULL;
		FolksSmallSet* _tmp57_;
		FolksSmallSet* _tmp58_;
		gint _group_size = 0;
		FolksSmallSet* _tmp59_;
		gint _tmp60_;
		gint _tmp61_;
		gint _group_index = 0;
		_tmp57_ = self->priv->_groups;
		_tmp58_ = _g_object_ref0 (_tmp57_);
		_group_list = _tmp58_;
		_tmp59_ = _group_list;
		_tmp60_ = gee_collection_get_size ((GeeCollection*) _tmp59_);
		_tmp61_ = _tmp60_;
		_group_size = _tmp61_;
		_group_index = -1;
		while (TRUE) {
			gint _tmp62_;
			gint _tmp63_;
			gint _tmp64_;
			gchar* group = NULL;
			FolksSmallSet* _tmp65_;
			gint _tmp66_;
			gconstpointer _tmp67_;
			gchar* _tmp68_;
			FolksSmallSet* _tmp69_;
			const gchar* _tmp70_;
			gboolean _tmp71_;
			_tmp62_ = _group_index;
			_group_index = _tmp62_ + 1;
			_tmp63_ = _group_index;
			_tmp64_ = _group_size;
			if (!(_tmp63_ < _tmp64_)) {
				break;
			}
			_tmp65_ = _group_list;
			_tmp66_ = _group_index;
			_tmp67_ = folks_small_set_get (_tmp65_, _tmp66_);
			_tmp68_ = g_strdup ((const gchar*) _tmp67_);
			group = _tmp68_;
			_tmp69_ = new_groups;
			_tmp70_ = group;
			_tmp71_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp69_, _tmp70_);
			if (!_tmp71_) {
				const gchar* _tmp72_;
				gchar* _tmp73_;
				_tmp72_ = group;
				_tmp73_ = g_strdup (_tmp72_);
				removes = g_list_prepend (removes, _tmp73_);
			}
			_g_free0 (group);
		}
		_g_object_unref0 (_group_list);
	}
	_tmp74_ = removes;
	g_list_foreach (_tmp74_, ___lambda64__gfunc, _data3_);
	__g_list_free__g_free0_0 (removes);
	_g_object_unref0 (new_groups);
	block3_data_unref (_data3_);
	_data3_ = NULL;
}


static gboolean __lambda13_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksPersona* _tmp0_;
	FolksPresenceType _tmp1_;
	FolksPresenceType _tmp2_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_presence_details_get_presence_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails));
	_tmp2_ = _tmp1_;
	result = _tmp2_ != FOLKS_PRESENCE_TYPE_UNSET;
	return result;
}


static gboolean ___lambda13__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda13_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda14_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	FolksPresenceType a_presence = 0;
	FolksPersona* _tmp0_;
	FolksPresenceType _tmp1_;
	FolksPresenceType _tmp2_;
	FolksPresenceType b_presence = 0;
	FolksPersona* _tmp3_;
	FolksPresenceType _tmp4_;
	FolksPresenceType _tmp5_;
	gint _tmp6_;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = folks_presence_details_get_presence_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails));
	_tmp2_ = _tmp1_;
	a_presence = _tmp2_;
	_tmp3_ = b;
	_tmp4_ = folks_presence_details_get_presence_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails));
	_tmp5_ = _tmp4_;
	b_presence = _tmp5_;
	_tmp6_ = folks_presence_details_typecmp (a_presence, b_presence);
	result = _tmp6_;
	return result;
}


static gint ___lambda14__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda14_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


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


static void __lambda15_ (FolksIndividual* self, FolksPersona* p) {
	gchar* presence_message = NULL;
	gchar* _tmp0_;
	gchar* presence_status = NULL;
	gchar* _tmp1_;
	gchar** client_types = NULL;
	gchar** _tmp2_;
	gint client_types_length1;
	gint _client_types_size_;
	FolksPresenceType presence_type = 0;
	FolksPersona* _tmp3_;
	gboolean _tmp19_ = FALSE;
	gboolean _tmp20_ = FALSE;
	gboolean _tmp21_ = FALSE;
	FolksPresenceType _tmp22_;
	FolksPresenceType _tmp23_;
	FolksPresenceType _tmp24_;
	_tmp0_ = g_strdup ("");
	presence_message = _tmp0_;
	_tmp1_ = g_strdup ("");
	presence_status = _tmp1_;
	_tmp2_ = g_new0 (gchar*, 0 + 1);
	client_types = _tmp2_;
	client_types_length1 = 0;
	_client_types_size_ = client_types_length1;
	presence_type = FOLKS_PRESENCE_TYPE_UNSET;
	_tmp3_ = p;
	if (_tmp3_ != NULL) {
		FolksPersona* _tmp4_;
		FolksPresenceType _tmp5_;
		FolksPresenceType _tmp6_;
		FolksPersona* _tmp7_;
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		gchar* _tmp10_;
		FolksPersona* _tmp11_;
		const gchar* _tmp12_;
		const gchar* _tmp13_;
		gchar* _tmp14_;
		FolksPersona* _tmp15_;
		gchar** _tmp16_;
		gint _tmp16__length1;
		gchar** _tmp17_;
		gint _tmp17__length1;
		gchar** _tmp18_;
		gint _tmp18__length1;
		_tmp4_ = p;
		_tmp5_ = folks_presence_details_get_presence_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails));
		_tmp6_ = _tmp5_;
		presence_type = _tmp6_;
		_tmp7_ = p;
		_tmp8_ = folks_presence_details_get_presence_message (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails));
		_tmp9_ = _tmp8_;
		_tmp10_ = g_strdup (_tmp9_);
		_g_free0 (presence_message);
		presence_message = _tmp10_;
		_tmp11_ = p;
		_tmp12_ = folks_presence_details_get_presence_status (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails));
		_tmp13_ = _tmp12_;
		_tmp14_ = g_strdup (_tmp13_);
		_g_free0 (presence_status);
		presence_status = _tmp14_;
		_tmp15_ = p;
		_tmp16_ = folks_presence_details_get_client_types (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, FOLKS_TYPE_PRESENCE_DETAILS, FolksPresenceDetails), &_tmp16__length1);
		_tmp17_ = _tmp16_;
		_tmp17__length1 = _tmp16__length1;
		_tmp18_ = (_tmp17_ != NULL) ? _vala_array_dup1 (_tmp17_, _tmp17__length1) : ((gpointer) _tmp17_);
		_tmp18__length1 = _tmp17__length1;
		client_types = (_vala_array_free (client_types, client_types_length1, (GDestroyNotify) g_free), NULL);
		client_types = _tmp18_;
		client_types_length1 = _tmp18__length1;
		_client_types_size_ = client_types_length1;
	}
	_tmp22_ = folks_presence_details_get_presence_type ((FolksPresenceDetails*) self);
	_tmp23_ = _tmp22_;
	_tmp24_ = presence_type;
	if (_tmp23_ != _tmp24_) {
		_tmp21_ = TRUE;
	} else {
		const gchar* _tmp25_;
		const gchar* _tmp26_;
		const gchar* _tmp27_;
		_tmp25_ = folks_presence_details_get_presence_message ((FolksPresenceDetails*) self);
		_tmp26_ = _tmp25_;
		_tmp27_ = presence_message;
		_tmp21_ = g_strcmp0 (_tmp26_, _tmp27_) != 0;
	}
	if (_tmp21_) {
		_tmp20_ = TRUE;
	} else {
		const gchar* _tmp28_;
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		_tmp28_ = folks_presence_details_get_presence_status ((FolksPresenceDetails*) self);
		_tmp29_ = _tmp28_;
		_tmp30_ = presence_status;
		_tmp20_ = g_strcmp0 (_tmp29_, _tmp30_) != 0;
	}
	if (_tmp20_) {
		_tmp19_ = TRUE;
	} else {
		gchar** _tmp31_;
		gint _tmp31__length1;
		gchar** _tmp32_;
		gint _tmp32__length1;
		gchar** _tmp33_;
		gint _tmp33__length1;
		_tmp31_ = folks_presence_details_get_client_types ((FolksPresenceDetails*) self, &_tmp31__length1);
		_tmp32_ = _tmp31_;
		_tmp32__length1 = _tmp31__length1;
		_tmp33_ = client_types;
		_tmp33__length1 = client_types_length1;
		_tmp19_ = _tmp32_ != _tmp33_;
	}
	if (_tmp19_) {
		const gchar* _tmp34_;
		FolksPresenceType _tmp35_;
		const gchar* _tmp36_;
		gchar** _tmp37_;
		gint _tmp37__length1;
		g_object_freeze_notify ((GObject*) self);
		_tmp34_ = presence_message;
		folks_presence_details_set_presence_message ((FolksPresenceDetails*) self, _tmp34_);
		_tmp35_ = presence_type;
		folks_presence_details_set_presence_type ((FolksPresenceDetails*) self, _tmp35_);
		_tmp36_ = presence_status;
		folks_presence_details_set_presence_status ((FolksPresenceDetails*) self, _tmp36_);
		_tmp37_ = client_types;
		_tmp37__length1 = client_types_length1;
		folks_presence_details_set_client_types ((FolksPresenceDetails*) self, _tmp37_, _tmp37__length1);
		g_object_thaw_notify ((GObject*) self);
	}
	client_types = (_vala_array_free (client_types, client_types_length1, (GDestroyNotify) g_free), NULL);
	_g_free0 (presence_status);
	_g_free0 (presence_message);
}


static void ___lambda15__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda15_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_presence (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_PRESENCE_DETAILS, ___lambda13__folks_individual_property_filter, self, ___lambda14__gcompare_func, "presence", ___lambda15__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda22_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksPersona* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_favourite_details_get_is_favourite (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails));
	_tmp2_ = _tmp1_;
	result = _tmp2_;
	return result;
}


static gboolean ___lambda22__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda22_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda23_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	gboolean a_is_favourite = FALSE;
	FolksPersona* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	gboolean b_is_favourite = FALSE;
	FolksPersona* _tmp3_;
	gboolean _tmp4_;
	gboolean _tmp5_;
	gint _tmp6_ = 0;
	gboolean _tmp7_;
	gint _tmp8_ = 0;
	gboolean _tmp9_;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = folks_favourite_details_get_is_favourite (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails));
	_tmp2_ = _tmp1_;
	a_is_favourite = _tmp2_;
	_tmp3_ = b;
	_tmp4_ = folks_favourite_details_get_is_favourite (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails));
	_tmp5_ = _tmp4_;
	b_is_favourite = _tmp5_;
	_tmp7_ = a_is_favourite;
	if (_tmp7_ == TRUE) {
		_tmp6_ = 1;
	} else {
		_tmp6_ = 0;
	}
	_tmp9_ = b_is_favourite;
	if (_tmp9_ == TRUE) {
		_tmp8_ = 1;
	} else {
		_tmp8_ = 0;
	}
	result = _tmp6_ - _tmp8_;
	return result;
}


static gint ___lambda23__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda23_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda24_ (FolksIndividual* self, FolksPersona* p) {
	gboolean favourite = FALSE;
	FolksPersona* _tmp0_;
	gboolean _tmp4_;
	gboolean _tmp5_;
	favourite = FALSE;
	_tmp0_ = p;
	if (_tmp0_ != NULL) {
		FolksPersona* _tmp1_;
		gboolean _tmp2_;
		gboolean _tmp3_;
		_tmp1_ = p;
		_tmp2_ = folks_favourite_details_get_is_favourite (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, FOLKS_TYPE_FAVOURITE_DETAILS, FolksFavouriteDetails));
		_tmp3_ = _tmp2_;
		favourite = _tmp3_;
	}
	_tmp4_ = self->priv->_is_favourite;
	_tmp5_ = favourite;
	if (_tmp4_ != _tmp5_) {
		gboolean _tmp6_;
		_tmp6_ = favourite;
		self->priv->_is_favourite = _tmp6_;
		g_object_notify ((GObject*) self, "is-favourite");
	}
}


static void ___lambda24__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda24_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_is_favourite (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_FAVOURITE_DETAILS, ___lambda22__folks_individual_property_filter, self, ___lambda23__gcompare_func, "is-favourite", ___lambda24__folks_individual_single_valued_property_setter, self);
}


static gchar* _folks_individual_look_up_alias_for_display_name (FolksIndividual* self, FolksPersona* p) {
	gchar* result = NULL;
	FolksAliasDetails* a = NULL;
	FolksPersona* _tmp0_;
	FolksAliasDetails* _tmp1_;
	gboolean _tmp2_ = FALSE;
	FolksAliasDetails* _tmp3_;
	gchar* _tmp11_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = p;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, FOLKS_TYPE_ALIAS_DETAILS) ? ((FolksAliasDetails*) _tmp0_) : NULL);
	a = _tmp1_;
	_tmp3_ = a;
	if (_tmp3_ != NULL) {
		FolksAliasDetails* _tmp4_;
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		_tmp4_ = a;
		_tmp5_ = folks_alias_details_get_alias (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp2_ = _tmp6_ != NULL;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		FolksAliasDetails* _tmp7_;
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		gchar* _tmp10_;
		_tmp7_ = a;
		_tmp8_ = folks_alias_details_get_alias (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = g_strdup (_tmp9_);
		result = _tmp10_;
		_g_object_unref0 (a);
		return result;
	}
	_tmp11_ = g_strdup ("");
	result = _tmp11_;
	_g_object_unref0 (a);
	return result;
}


static gchar* _folks_individual_look_up_name_details_for_display_name (FolksIndividual* self, FolksPersona* p) {
	gchar* result = NULL;
	FolksNameDetails* n = NULL;
	FolksPersona* _tmp0_;
	FolksNameDetails* _tmp1_;
	FolksNameDetails* _tmp2_;
	gchar* _tmp24_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = p;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _tmp0_) : NULL);
	n = _tmp1_;
	_tmp2_ = n;
	if (_tmp2_ != NULL) {
		FolksNameDetails* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		_tmp3_ = n;
		_tmp4_ = folks_name_details_get_full_name (_tmp3_);
		_tmp5_ = _tmp4_;
		if (g_strcmp0 (_tmp5_, "") != 0) {
			FolksNameDetails* _tmp6_;
			const gchar* _tmp7_;
			const gchar* _tmp8_;
			gchar* _tmp9_;
			_tmp6_ = n;
			_tmp7_ = folks_name_details_get_full_name (_tmp6_);
			_tmp8_ = _tmp7_;
			_tmp9_ = g_strdup (_tmp8_);
			result = _tmp9_;
			_g_object_unref0 (n);
			return result;
		} else {
			FolksNameDetails* _tmp10_;
			FolksStructuredName* _tmp11_;
			FolksStructuredName* _tmp12_;
			_tmp10_ = n;
			_tmp11_ = folks_name_details_get_structured_name (_tmp10_);
			_tmp12_ = _tmp11_;
			if (_tmp12_ != NULL) {
				FolksNameDetails* _tmp13_;
				FolksStructuredName* _tmp14_;
				FolksStructuredName* _tmp15_;
				gchar* _tmp16_;
				_tmp13_ = n;
				_tmp14_ = folks_name_details_get_structured_name (_tmp13_);
				_tmp15_ = _tmp14_;
				_tmp16_ = folks_structured_name_to_string (_tmp15_);
				result = _tmp16_;
				_g_object_unref0 (n);
				return result;
			} else {
				FolksNameDetails* _tmp17_;
				const gchar* _tmp18_;
				const gchar* _tmp19_;
				_tmp17_ = n;
				_tmp18_ = folks_name_details_get_nickname (_tmp17_);
				_tmp19_ = _tmp18_;
				if (g_strcmp0 (_tmp19_, "") != 0) {
					FolksNameDetails* _tmp20_;
					const gchar* _tmp21_;
					const gchar* _tmp22_;
					gchar* _tmp23_;
					_tmp20_ = n;
					_tmp21_ = folks_name_details_get_nickname (_tmp20_);
					_tmp22_ = _tmp21_;
					_tmp23_ = g_strdup (_tmp22_);
					result = _tmp23_;
					_g_object_unref0 (n);
					return result;
				}
			}
		}
	}
	_tmp24_ = g_strdup ("");
	result = _tmp24_;
	_g_object_unref0 (n);
	return result;
}


static gchar* _folks_individual_look_up_email_address_for_display_name (FolksIndividual* self, FolksPersona* p) {
	gchar* result = NULL;
	FolksEmailDetails* e = NULL;
	FolksPersona* _tmp0_;
	FolksEmailDetails* _tmp1_;
	FolksEmailDetails* _tmp2_;
	gchar* _tmp18_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = p;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, FOLKS_TYPE_EMAIL_DETAILS) ? ((FolksEmailDetails*) _tmp0_) : NULL);
	e = _tmp1_;
	_tmp2_ = e;
	if (_tmp2_ != NULL) {
		{
			GeeIterator* _email_fd_it = NULL;
			FolksEmailDetails* _tmp3_;
			GeeSet* _tmp4_;
			GeeSet* _tmp5_;
			GeeIterator* _tmp6_;
			_tmp3_ = e;
			_tmp4_ = folks_email_details_get_email_addresses (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetails));
			_tmp5_ = _tmp4_;
			_tmp6_ = gee_iterable_iterator ((GeeIterable*) _tmp5_);
			_email_fd_it = _tmp6_;
			while (TRUE) {
				GeeIterator* _tmp7_;
				gboolean _tmp8_;
				FolksEmailFieldDetails* email_fd = NULL;
				GeeIterator* _tmp9_;
				gpointer _tmp10_;
				FolksEmailFieldDetails* _tmp11_;
				gconstpointer _tmp12_;
				const gchar* _tmp13_;
				_tmp7_ = _email_fd_it;
				_tmp8_ = gee_iterator_next (_tmp7_);
				if (!_tmp8_) {
					break;
				}
				_tmp9_ = _email_fd_it;
				_tmp10_ = gee_iterator_get (_tmp9_);
				email_fd = (FolksEmailFieldDetails*) _tmp10_;
				_tmp11_ = email_fd;
				_tmp12_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp11_);
				_tmp13_ = _tmp12_;
				if (((const gchar*) _tmp13_) != NULL) {
					FolksEmailFieldDetails* _tmp14_;
					gconstpointer _tmp15_;
					const gchar* _tmp16_;
					gchar* _tmp17_;
					_tmp14_ = email_fd;
					_tmp15_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp14_);
					_tmp16_ = _tmp15_;
					_tmp17_ = g_strdup ((const gchar*) _tmp16_);
					result = _tmp17_;
					_g_object_unref0 (email_fd);
					_g_object_unref0 (_email_fd_it);
					_g_object_unref0 (e);
					return result;
				}
				_g_object_unref0 (email_fd);
			}
			_g_object_unref0 (_email_fd_it);
		}
	}
	_tmp18_ = g_strdup ("");
	result = _tmp18_;
	_g_object_unref0 (e);
	return result;
}


static gchar* _folks_individual_look_up_display_id_for_display_name (FolksIndividual* self, FolksPersona* p) {
	gchar* result = NULL;
	gboolean _tmp0_ = FALSE;
	FolksPersona* _tmp1_;
	gchar* _tmp9_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp1_ = p;
	if (_tmp1_ != NULL) {
		FolksPersona* _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		_tmp2_ = p;
		_tmp3_ = folks_persona_get_display_id (_tmp2_);
		_tmp4_ = _tmp3_;
		_tmp0_ = _tmp4_ != NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		FolksPersona* _tmp5_;
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		gchar* _tmp8_;
		_tmp5_ = p;
		_tmp6_ = folks_persona_get_display_id (_tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = g_strdup (_tmp7_);
		result = _tmp8_;
		return result;
	}
	_tmp9_ = g_strdup ("");
	result = _tmp9_;
	return result;
}


static gchar* _folks_individual_look_up_postal_address_for_display_name (FolksIndividual* self, FolksPersona* p) {
	gchar* result = NULL;
	FolksPostalAddressDetails* address_details = NULL;
	FolksPersona* _tmp0_;
	FolksPostalAddressDetails* _tmp1_;
	FolksPostalAddressDetails* _tmp2_;
	gchar* _tmp18_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = p;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS) ? ((FolksPostalAddressDetails*) _tmp0_) : NULL);
	address_details = _tmp1_;
	_tmp2_ = address_details;
	if (_tmp2_ != NULL) {
		{
			GeeIterator* _pa_fd_it = NULL;
			FolksPostalAddressDetails* _tmp3_;
			GeeSet* _tmp4_;
			GeeSet* _tmp5_;
			GeeIterator* _tmp6_;
			_tmp3_ = address_details;
			_tmp4_ = folks_postal_address_details_get_postal_addresses (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetails));
			_tmp5_ = _tmp4_;
			_tmp6_ = gee_iterable_iterator ((GeeIterable*) _tmp5_);
			_pa_fd_it = _tmp6_;
			while (TRUE) {
				GeeIterator* _tmp7_;
				gboolean _tmp8_;
				FolksPostalAddressFieldDetails* pa_fd = NULL;
				GeeIterator* _tmp9_;
				gpointer _tmp10_;
				FolksPostalAddress* pa = NULL;
				FolksPostalAddressFieldDetails* _tmp11_;
				gconstpointer _tmp12_;
				FolksPostalAddress* _tmp13_;
				FolksPostalAddress* _tmp14_;
				FolksPostalAddress* _tmp15_;
				_tmp7_ = _pa_fd_it;
				_tmp8_ = gee_iterator_next (_tmp7_);
				if (!_tmp8_) {
					break;
				}
				_tmp9_ = _pa_fd_it;
				_tmp10_ = gee_iterator_get (_tmp9_);
				pa_fd = (FolksPostalAddressFieldDetails*) _tmp10_;
				_tmp11_ = pa_fd;
				_tmp12_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp11_);
				_tmp13_ = _tmp12_;
				_tmp14_ = _g_object_ref0 ((FolksPostalAddress*) _tmp13_);
				pa = _tmp14_;
				_tmp15_ = pa;
				if (_tmp15_ != NULL) {
					FolksPostalAddress* _tmp16_;
					gchar* _tmp17_;
					_tmp16_ = pa;
					_tmp17_ = folks_postal_address_to_string (_tmp16_);
					result = _tmp17_;
					_g_object_unref0 (pa);
					_g_object_unref0 (pa_fd);
					_g_object_unref0 (_pa_fd_it);
					_g_object_unref0 (address_details);
					return result;
				}
				_g_object_unref0 (pa);
				_g_object_unref0 (pa_fd);
			}
			_g_object_unref0 (_pa_fd_it);
		}
	}
	_tmp18_ = g_strdup ("");
	result = _tmp18_;
	_g_object_unref0 (address_details);
	return result;
}


static void _folks_individual_update_display_name (FolksIndividual* self) {
	FolksPersona* primary_persona = NULL;
	gchar* new_display_name = NULL;
	gchar* _tmp0_;
	FolksPersona* _tmp20_;
	gchar* _tmp21_;
	const gchar* _tmp37_;
	const gchar* _tmp55_;
	const gchar* _tmp73_;
	const gchar* _tmp91_;
	const gchar* _tmp109_;
	const gchar* _tmp111_;
	const gchar* _tmp112_;
	g_return_if_fail (self != NULL);
	primary_persona = NULL;
	_tmp0_ = g_strdup ("");
	new_display_name = _tmp0_;
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _p_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _p_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_p_list = _tmp2_;
		_tmp3_ = _p_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_p_size = _tmp5_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksPersona* _tmp13_;
			FolksPersonaStore* _tmp14_;
			FolksPersonaStore* _tmp15_;
			gboolean _tmp16_;
			gboolean _tmp17_;
			_tmp6_ = _p_index;
			_p_index = _tmp6_ + 1;
			_tmp7_ = _p_index;
			_tmp8_ = _p_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _p_list;
			_tmp10_ = _p_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			p = _tmp12_;
			_tmp13_ = p;
			_tmp14_ = folks_persona_get_store (_tmp13_);
			_tmp15_ = _tmp14_;
			_tmp16_ = folks_persona_store_get_is_primary_store (_tmp15_);
			_tmp17_ = _tmp16_;
			if (_tmp17_) {
				FolksPersona* _tmp18_;
				FolksPersona* _tmp19_;
				_tmp18_ = p;
				_tmp19_ = _g_object_ref0 (_tmp18_);
				_g_object_unref0 (primary_persona);
				primary_persona = _tmp19_;
				_g_object_unref0 (p);
				break;
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	_tmp20_ = primary_persona;
	_tmp21_ = _folks_individual_look_up_alias_for_display_name (self, _tmp20_);
	_g_free0 (new_display_name);
	new_display_name = _tmp21_;
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp22_;
		FolksSmallSet* _tmp23_;
		gint _p_size = 0;
		FolksSmallSet* _tmp24_;
		gint _tmp25_;
		gint _tmp26_;
		gint _p_index = 0;
		_tmp22_ = self->priv->_persona_set;
		_tmp23_ = _g_object_ref0 (_tmp22_);
		_p_list = _tmp23_;
		_tmp24_ = _p_list;
		_tmp25_ = gee_collection_get_size ((GeeCollection*) _tmp24_);
		_tmp26_ = _tmp25_;
		_p_size = _tmp26_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp27_;
			gint _tmp28_;
			gint _tmp29_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp30_;
			gint _tmp31_;
			gconstpointer _tmp32_;
			FolksPersona* _tmp33_;
			const gchar* _tmp34_;
			FolksPersona* _tmp35_;
			gchar* _tmp36_;
			_tmp27_ = _p_index;
			_p_index = _tmp27_ + 1;
			_tmp28_ = _p_index;
			_tmp29_ = _p_size;
			if (!(_tmp28_ < _tmp29_)) {
				break;
			}
			_tmp30_ = _p_list;
			_tmp31_ = _p_index;
			_tmp32_ = folks_small_set_get (_tmp30_, _tmp31_);
			_tmp33_ = _g_object_ref0 ((FolksPersona*) _tmp32_);
			p = _tmp33_;
			_tmp34_ = new_display_name;
			if (g_strcmp0 (_tmp34_, "") != 0) {
				_g_object_unref0 (p);
				break;
			}
			_tmp35_ = p;
			_tmp36_ = _folks_individual_look_up_alias_for_display_name (self, _tmp35_);
			_g_free0 (new_display_name);
			new_display_name = _tmp36_;
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	_tmp37_ = new_display_name;
	if (g_strcmp0 (_tmp37_, "") == 0) {
		FolksPersona* _tmp38_;
		gchar* _tmp39_;
		_tmp38_ = primary_persona;
		_tmp39_ = _folks_individual_look_up_name_details_for_display_name (self, _tmp38_);
		_g_free0 (new_display_name);
		new_display_name = _tmp39_;
		{
			FolksSmallSet* _p_list = NULL;
			FolksSmallSet* _tmp40_;
			FolksSmallSet* _tmp41_;
			gint _p_size = 0;
			FolksSmallSet* _tmp42_;
			gint _tmp43_;
			gint _tmp44_;
			gint _p_index = 0;
			_tmp40_ = self->priv->_persona_set;
			_tmp41_ = _g_object_ref0 (_tmp40_);
			_p_list = _tmp41_;
			_tmp42_ = _p_list;
			_tmp43_ = gee_collection_get_size ((GeeCollection*) _tmp42_);
			_tmp44_ = _tmp43_;
			_p_size = _tmp44_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp45_;
				gint _tmp46_;
				gint _tmp47_;
				FolksPersona* p = NULL;
				FolksSmallSet* _tmp48_;
				gint _tmp49_;
				gconstpointer _tmp50_;
				FolksPersona* _tmp51_;
				const gchar* _tmp52_;
				FolksPersona* _tmp53_;
				gchar* _tmp54_;
				_tmp45_ = _p_index;
				_p_index = _tmp45_ + 1;
				_tmp46_ = _p_index;
				_tmp47_ = _p_size;
				if (!(_tmp46_ < _tmp47_)) {
					break;
				}
				_tmp48_ = _p_list;
				_tmp49_ = _p_index;
				_tmp50_ = folks_small_set_get (_tmp48_, _tmp49_);
				_tmp51_ = _g_object_ref0 ((FolksPersona*) _tmp50_);
				p = _tmp51_;
				_tmp52_ = new_display_name;
				if (g_strcmp0 (_tmp52_, "") != 0) {
					_g_object_unref0 (p);
					break;
				}
				_tmp53_ = p;
				_tmp54_ = _folks_individual_look_up_name_details_for_display_name (self, _tmp53_);
				_g_free0 (new_display_name);
				new_display_name = _tmp54_;
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_list);
		}
	}
	_tmp55_ = new_display_name;
	if (g_strcmp0 (_tmp55_, "") == 0) {
		FolksPersona* _tmp56_;
		gchar* _tmp57_;
		_tmp56_ = primary_persona;
		_tmp57_ = _folks_individual_look_up_email_address_for_display_name (self, _tmp56_);
		_g_free0 (new_display_name);
		new_display_name = _tmp57_;
		{
			FolksSmallSet* _p_list = NULL;
			FolksSmallSet* _tmp58_;
			FolksSmallSet* _tmp59_;
			gint _p_size = 0;
			FolksSmallSet* _tmp60_;
			gint _tmp61_;
			gint _tmp62_;
			gint _p_index = 0;
			_tmp58_ = self->priv->_persona_set;
			_tmp59_ = _g_object_ref0 (_tmp58_);
			_p_list = _tmp59_;
			_tmp60_ = _p_list;
			_tmp61_ = gee_collection_get_size ((GeeCollection*) _tmp60_);
			_tmp62_ = _tmp61_;
			_p_size = _tmp62_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp63_;
				gint _tmp64_;
				gint _tmp65_;
				FolksPersona* p = NULL;
				FolksSmallSet* _tmp66_;
				gint _tmp67_;
				gconstpointer _tmp68_;
				FolksPersona* _tmp69_;
				const gchar* _tmp70_;
				FolksPersona* _tmp71_;
				gchar* _tmp72_;
				_tmp63_ = _p_index;
				_p_index = _tmp63_ + 1;
				_tmp64_ = _p_index;
				_tmp65_ = _p_size;
				if (!(_tmp64_ < _tmp65_)) {
					break;
				}
				_tmp66_ = _p_list;
				_tmp67_ = _p_index;
				_tmp68_ = folks_small_set_get (_tmp66_, _tmp67_);
				_tmp69_ = _g_object_ref0 ((FolksPersona*) _tmp68_);
				p = _tmp69_;
				_tmp70_ = new_display_name;
				if (g_strcmp0 (_tmp70_, "") != 0) {
					_g_object_unref0 (p);
					break;
				}
				_tmp71_ = p;
				_tmp72_ = _folks_individual_look_up_email_address_for_display_name (self, _tmp71_);
				_g_free0 (new_display_name);
				new_display_name = _tmp72_;
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_list);
		}
	}
	_tmp73_ = new_display_name;
	if (g_strcmp0 (_tmp73_, "") == 0) {
		FolksPersona* _tmp74_;
		gchar* _tmp75_;
		_tmp74_ = primary_persona;
		_tmp75_ = _folks_individual_look_up_display_id_for_display_name (self, _tmp74_);
		_g_free0 (new_display_name);
		new_display_name = _tmp75_;
		{
			FolksSmallSet* _p_list = NULL;
			FolksSmallSet* _tmp76_;
			FolksSmallSet* _tmp77_;
			gint _p_size = 0;
			FolksSmallSet* _tmp78_;
			gint _tmp79_;
			gint _tmp80_;
			gint _p_index = 0;
			_tmp76_ = self->priv->_persona_set;
			_tmp77_ = _g_object_ref0 (_tmp76_);
			_p_list = _tmp77_;
			_tmp78_ = _p_list;
			_tmp79_ = gee_collection_get_size ((GeeCollection*) _tmp78_);
			_tmp80_ = _tmp79_;
			_p_size = _tmp80_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp81_;
				gint _tmp82_;
				gint _tmp83_;
				FolksPersona* p = NULL;
				FolksSmallSet* _tmp84_;
				gint _tmp85_;
				gconstpointer _tmp86_;
				FolksPersona* _tmp87_;
				const gchar* _tmp88_;
				FolksPersona* _tmp89_;
				gchar* _tmp90_;
				_tmp81_ = _p_index;
				_p_index = _tmp81_ + 1;
				_tmp82_ = _p_index;
				_tmp83_ = _p_size;
				if (!(_tmp82_ < _tmp83_)) {
					break;
				}
				_tmp84_ = _p_list;
				_tmp85_ = _p_index;
				_tmp86_ = folks_small_set_get (_tmp84_, _tmp85_);
				_tmp87_ = _g_object_ref0 ((FolksPersona*) _tmp86_);
				p = _tmp87_;
				_tmp88_ = new_display_name;
				if (g_strcmp0 (_tmp88_, "") != 0) {
					_g_object_unref0 (p);
					break;
				}
				_tmp89_ = p;
				_tmp90_ = _folks_individual_look_up_display_id_for_display_name (self, _tmp89_);
				_g_free0 (new_display_name);
				new_display_name = _tmp90_;
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_list);
		}
	}
	_tmp91_ = new_display_name;
	if (g_strcmp0 (_tmp91_, "") == 0) {
		FolksPersona* _tmp92_;
		gchar* _tmp93_;
		_tmp92_ = primary_persona;
		_tmp93_ = _folks_individual_look_up_postal_address_for_display_name (self, _tmp92_);
		_g_free0 (new_display_name);
		new_display_name = _tmp93_;
		{
			FolksSmallSet* _p_list = NULL;
			FolksSmallSet* _tmp94_;
			FolksSmallSet* _tmp95_;
			gint _p_size = 0;
			FolksSmallSet* _tmp96_;
			gint _tmp97_;
			gint _tmp98_;
			gint _p_index = 0;
			_tmp94_ = self->priv->_persona_set;
			_tmp95_ = _g_object_ref0 (_tmp94_);
			_p_list = _tmp95_;
			_tmp96_ = _p_list;
			_tmp97_ = gee_collection_get_size ((GeeCollection*) _tmp96_);
			_tmp98_ = _tmp97_;
			_p_size = _tmp98_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp99_;
				gint _tmp100_;
				gint _tmp101_;
				FolksPersona* p = NULL;
				FolksSmallSet* _tmp102_;
				gint _tmp103_;
				gconstpointer _tmp104_;
				FolksPersona* _tmp105_;
				const gchar* _tmp106_;
				FolksPersona* _tmp107_;
				gchar* _tmp108_;
				_tmp99_ = _p_index;
				_p_index = _tmp99_ + 1;
				_tmp100_ = _p_index;
				_tmp101_ = _p_size;
				if (!(_tmp100_ < _tmp101_)) {
					break;
				}
				_tmp102_ = _p_list;
				_tmp103_ = _p_index;
				_tmp104_ = folks_small_set_get (_tmp102_, _tmp103_);
				_tmp105_ = _g_object_ref0 ((FolksPersona*) _tmp104_);
				p = _tmp105_;
				_tmp106_ = new_display_name;
				if (g_strcmp0 (_tmp106_, "") != 0) {
					_g_object_unref0 (p);
					break;
				}
				_tmp107_ = p;
				_tmp108_ = _folks_individual_look_up_postal_address_for_display_name (self, _tmp107_);
				_g_free0 (new_display_name);
				new_display_name = _tmp108_;
				_g_object_unref0 (p);
			}
			_g_object_unref0 (_p_list);
		}
	}
	_tmp109_ = new_display_name;
	if (g_strcmp0 (_tmp109_, "") == 0) {
		gchar* _tmp110_;
		_tmp110_ = g_strdup (_ ("Unnamed Person"));
		_g_free0 (new_display_name);
		new_display_name = _tmp110_;
	}
	_tmp111_ = new_display_name;
	_tmp112_ = self->priv->_display_name;
	if (g_strcmp0 (_tmp111_, _tmp112_) != 0) {
		const gchar* _tmp113_;
		gchar* _tmp114_;
		const gchar* _tmp115_;
		_tmp113_ = new_display_name;
		_tmp114_ = g_strdup (_tmp113_);
		_g_free0 (self->priv->_display_name);
		self->priv->_display_name = _tmp114_;
		_tmp115_ = new_display_name;
		g_debug ("individual.vala:2078: Setting display name ‘%s’", _tmp115_);
		g_object_notify ((GObject*) self, "display-name");
	}
	_g_free0 (new_display_name);
	_g_object_unref0 (primary_persona);
}


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


static gboolean __lambda7_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	gchar* alias = NULL;
	FolksPersona* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gboolean _tmp6_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_alias_details_get_alias (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails));
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup (_tmp2_);
	alias = _tmp3_;
	g_return_val_if_fail (alias != NULL, FALSE);
	_tmp4_ = string_strip (alias);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strcmp0 (_tmp5_, "") != 0;
	_g_free0 (_tmp5_);
	result = _tmp6_;
	_g_free0 (alias);
	return result;
}


static gboolean ___lambda7__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda7_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda8_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	gchar* a_alias = NULL;
	FolksPersona* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* b_alias = NULL;
	FolksPersona* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	gint _tmp10_ = 0;
	const gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gboolean _tmp14_;
	gint a_is_empty = 0;
	gint _tmp15_ = 0;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	gboolean _tmp19_;
	gint b_is_empty = 0;
	gint _tmp20_ = 0;
	const gchar* _tmp21_;
	FolksPersona* _tmp22_;
	const gchar* _tmp23_;
	const gchar* _tmp24_;
	gint a_is_display_id = 0;
	gint _tmp25_ = 0;
	const gchar* _tmp26_;
	FolksPersona* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	gint b_is_display_id = 0;
	gint _tmp30_;
	gint _tmp31_;
	gint _tmp32_;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = folks_alias_details_get_alias (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails));
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup (_tmp2_);
	a_alias = _tmp3_;
	_tmp4_ = b;
	_tmp5_ = folks_alias_details_get_alias (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails));
	_tmp6_ = _tmp5_;
	_tmp7_ = g_strdup (_tmp6_);
	b_alias = _tmp7_;
	_tmp8_ = a_alias;
	g_return_val_if_fail (_tmp8_ != NULL, 0);
	_tmp9_ = b_alias;
	g_return_val_if_fail (_tmp9_ != NULL, 0);
	_tmp11_ = a_alias;
	_tmp12_ = string_strip (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strcmp0 (_tmp13_, "") == 0;
	_g_free0 (_tmp13_);
	if (_tmp14_) {
		_tmp10_ = 1;
	} else {
		_tmp10_ = 0;
	}
	a_is_empty = _tmp10_;
	_tmp16_ = b_alias;
	_tmp17_ = string_strip (_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = g_strcmp0 (_tmp18_, "") == 0;
	_g_free0 (_tmp18_);
	if (_tmp19_) {
		_tmp15_ = 1;
	} else {
		_tmp15_ = 0;
	}
	b_is_empty = _tmp15_;
	_tmp21_ = a_alias;
	_tmp22_ = a;
	_tmp23_ = folks_persona_get_display_id (_tmp22_);
	_tmp24_ = _tmp23_;
	if (g_strcmp0 (_tmp21_, _tmp24_) == 0) {
		_tmp20_ = 1;
	} else {
		_tmp20_ = 0;
	}
	a_is_display_id = _tmp20_;
	_tmp26_ = b_alias;
	_tmp27_ = b;
	_tmp28_ = folks_persona_get_display_id (_tmp27_);
	_tmp29_ = _tmp28_;
	if (g_strcmp0 (_tmp26_, _tmp29_) == 0) {
		_tmp25_ = 1;
	} else {
		_tmp25_ = 0;
	}
	b_is_display_id = _tmp25_;
	_tmp30_ = b_is_empty;
	_tmp31_ = a_is_empty;
	_tmp32_ = a_is_display_id;
	result = (_tmp30_ + b_is_display_id) - (_tmp31_ + _tmp32_);
	_g_free0 (b_alias);
	_g_free0 (a_alias);
	return result;
}


static gint ___lambda8__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda8_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda9_ (FolksIndividual* self, FolksPersona* p) {
	gchar* alias = NULL;
	gchar* _tmp0_;
	FolksPersona* _tmp1_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	_tmp0_ = g_strdup ("");
	alias = _tmp0_;
	_tmp1_ = p;
	if (_tmp1_ != NULL) {
		FolksPersona* _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		gchar* _tmp5_;
		_tmp2_ = p;
		_tmp3_ = folks_alias_details_get_alias (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, FOLKS_TYPE_ALIAS_DETAILS, FolksAliasDetails));
		_tmp4_ = _tmp3_;
		_tmp5_ = string_strip (_tmp4_);
		_g_free0 (alias);
		alias = _tmp5_;
	}
	_tmp6_ = self->priv->_alias;
	_tmp7_ = alias;
	if (g_strcmp0 (_tmp6_, _tmp7_) != 0) {
		const gchar* _tmp8_;
		gchar* _tmp9_;
		const gchar* _tmp10_;
		_tmp8_ = alias;
		_tmp9_ = g_strdup (_tmp8_);
		_g_free0 (self->priv->_alias);
		self->priv->_alias = _tmp9_;
		_tmp10_ = alias;
		g_debug ("individual.vala:2127: Setting alias ‘%s’", _tmp10_);
		g_object_notify ((GObject*) self, "alias");
		_folks_individual_update_display_name (self);
	}
	_g_free0 (alias);
}


static void ___lambda9__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda9_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_alias (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_ALIAS_DETAILS, ___lambda7__folks_individual_property_filter, self, ___lambda8__gcompare_func, "alias", ___lambda9__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda10_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksPersona* _tmp0_;
	GLoadableIcon* _tmp1_;
	GLoadableIcon* _tmp2_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_avatar_details_get_avatar (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails));
	_tmp2_ = _tmp1_;
	result = _tmp2_ != NULL;
	return result;
}


static gboolean ___lambda10__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda10_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda11_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	result = 0;
	return result;
}


static gint ___lambda11__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda11_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda12_ (FolksIndividual* self, FolksPersona* p) {
	GLoadableIcon* avatar = NULL;
	FolksPersona* _tmp0_;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	GLoadableIcon* _tmp7_;
	avatar = NULL;
	_tmp0_ = p;
	if (_tmp0_ != NULL) {
		FolksPersona* _tmp1_;
		GLoadableIcon* _tmp2_;
		GLoadableIcon* _tmp3_;
		GLoadableIcon* _tmp4_;
		_tmp1_ = p;
		_tmp2_ = folks_avatar_details_get_avatar (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, FOLKS_TYPE_AVATAR_DETAILS, FolksAvatarDetails));
		_tmp3_ = _tmp2_;
		_tmp4_ = _g_object_ref0 (_tmp3_);
		_g_object_unref0 (avatar);
		avatar = _tmp4_;
	}
	_tmp7_ = self->priv->_avatar;
	if (_tmp7_ == NULL) {
		GLoadableIcon* _tmp8_;
		_tmp8_ = avatar;
		_tmp6_ = _tmp8_ != NULL;
	} else {
		_tmp6_ = FALSE;
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp9_ = FALSE;
		GLoadableIcon* _tmp10_;
		_tmp10_ = self->priv->_avatar;
		if (_tmp10_ != NULL) {
			gboolean _tmp11_ = FALSE;
			GLoadableIcon* _tmp12_;
			_tmp12_ = avatar;
			if (_tmp12_ == NULL) {
				_tmp11_ = TRUE;
			} else {
				GLoadableIcon* _tmp13_;
				GLoadableIcon* _tmp14_;
				gboolean _tmp15_;
				_tmp13_ = self->priv->_avatar;
				_tmp14_ = avatar;
				_tmp15_ = g_icon_equal ((GIcon*) G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, g_loadable_icon_get_type (), GLoadableIcon), (GIcon*) _tmp14_);
				_tmp11_ = !_tmp15_;
			}
			_tmp9_ = _tmp11_;
		} else {
			_tmp9_ = FALSE;
		}
		_tmp5_ = _tmp9_;
	}
	if (_tmp5_) {
		GLoadableIcon* _tmp16_;
		GLoadableIcon* _tmp17_;
		_tmp16_ = avatar;
		_tmp17_ = _g_object_ref0 (_tmp16_);
		_g_object_unref0 (self->priv->_avatar);
		self->priv->_avatar = _tmp17_;
		g_object_notify ((GObject*) self, "avatar");
	}
	_g_object_unref0 (avatar);
}


static void ___lambda12__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda12_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_avatar (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_AVATAR_DETAILS, ___lambda10__folks_individual_property_filter, self, ___lambda11__gcompare_func, "avatar", ___lambda12__folks_individual_single_valued_property_setter, self);
}


static void _folks_individual_update_trust_level (FolksIndividual* self) {
	FolksTrustLevel trust_level = 0;
	FolksTrustLevel _tmp21_;
	FolksTrustLevel _tmp22_;
	g_return_if_fail (self != NULL);
	trust_level = FOLKS_TRUST_LEVEL_PERSONAS;
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp0_;
		FolksSmallSet* _tmp1_;
		gint _p_size = 0;
		FolksSmallSet* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _p_index = 0;
		_tmp0_ = self->priv->_persona_set;
		_tmp1_ = _g_object_ref0 (_tmp0_);
		_p_list = _tmp1_;
		_tmp2_ = _p_list;
		_tmp3_ = gee_collection_get_size ((GeeCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_p_size = _tmp4_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			gint _tmp7_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp8_;
			gint _tmp9_;
			gconstpointer _tmp10_;
			FolksPersona* _tmp11_;
			gboolean _tmp12_ = FALSE;
			FolksPersona* _tmp13_;
			gboolean _tmp14_;
			gboolean _tmp15_;
			_tmp5_ = _p_index;
			_p_index = _tmp5_ + 1;
			_tmp6_ = _p_index;
			_tmp7_ = _p_size;
			if (!(_tmp6_ < _tmp7_)) {
				break;
			}
			_tmp8_ = _p_list;
			_tmp9_ = _p_index;
			_tmp10_ = folks_small_set_get (_tmp8_, _tmp9_);
			_tmp11_ = _g_object_ref0 ((FolksPersona*) _tmp10_);
			p = _tmp11_;
			_tmp13_ = p;
			_tmp14_ = folks_persona_get_is_user (_tmp13_);
			_tmp15_ = _tmp14_;
			if (_tmp15_ == FALSE) {
				FolksPersona* _tmp16_;
				FolksPersonaStore* _tmp17_;
				FolksPersonaStore* _tmp18_;
				FolksPersonaStoreTrust _tmp19_;
				FolksPersonaStoreTrust _tmp20_;
				_tmp16_ = p;
				_tmp17_ = folks_persona_get_store (_tmp16_);
				_tmp18_ = _tmp17_;
				_tmp19_ = folks_persona_store_get_trust_level (_tmp18_);
				_tmp20_ = _tmp19_;
				_tmp12_ = _tmp20_ == FOLKS_PERSONA_STORE_TRUST_NONE;
			} else {
				_tmp12_ = FALSE;
			}
			if (_tmp12_) {
				trust_level = FOLKS_TRUST_LEVEL_NONE;
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	_tmp21_ = self->priv->_trust_level;
	_tmp22_ = trust_level;
	if (_tmp21_ != _tmp22_) {
		FolksTrustLevel _tmp23_;
		_tmp23_ = trust_level;
		folks_individual_set_trust_level (self, _tmp23_);
	}
}


static gboolean __lambda16_ (FolksIndividual* self) {
	gboolean result = FALSE;
	GeeHashMultiMap* _tmp0_;
	_tmp0_ = self->priv->_im_addresses;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda16__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda16_ ((FolksIndividual*) self);
	return result;
}


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


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


static void __lambda17_ (FolksIndividual* self) {
	GeeHashMultiMap* _tmp0_;
	_tmp0_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_im_addresses);
	self->priv->_im_addresses = _tmp0_;
}


static void ___lambda17__folks_individual_collection_creator (gpointer self) {
	__lambda17_ ((FolksIndividual*) self);
}


static gboolean __lambda18_ (FolksIndividual* self) {
	gboolean result = FALSE;
	GeeHashMultiMap* new_im_addresses = NULL;
	GeeHashMultiMap* _tmp0_;
	GeeHashMultiMap* _tmp29_;
	GeeHashMultiMap* _tmp30_;
	gboolean _tmp31_;
	_tmp0_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_im_addresses = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksImDetails* im_details = NULL;
			FolksPersona* _tmp13_;
			FolksImDetails* _tmp14_;
			FolksImDetails* _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_IM_DETAILS) ? ((FolksImDetails*) _tmp13_) : NULL);
			im_details = _tmp14_;
			_tmp15_ = im_details;
			if (_tmp15_ != NULL) {
				GeeMapIterator* iter = NULL;
				FolksImDetails* _tmp16_;
				GeeMultiMap* _tmp17_;
				GeeMultiMap* _tmp18_;
				GeeMapIterator* _tmp19_;
				_tmp16_ = im_details;
				_tmp17_ = folks_im_details_get_im_addresses (_tmp16_);
				_tmp18_ = _tmp17_;
				_tmp19_ = gee_multi_map_map_iterator (_tmp18_);
				iter = _tmp19_;
				while (TRUE) {
					GeeMapIterator* _tmp20_;
					gboolean _tmp21_;
					GeeHashMultiMap* _tmp22_;
					GeeMapIterator* _tmp23_;
					gpointer _tmp24_;
					gchar* _tmp25_;
					GeeMapIterator* _tmp26_;
					gpointer _tmp27_;
					FolksImFieldDetails* _tmp28_;
					_tmp20_ = iter;
					_tmp21_ = gee_map_iterator_next (_tmp20_);
					if (!_tmp21_) {
						break;
					}
					_tmp22_ = new_im_addresses;
					_tmp23_ = iter;
					_tmp24_ = gee_map_iterator_get_key (_tmp23_);
					_tmp25_ = (gchar*) _tmp24_;
					_tmp26_ = iter;
					_tmp27_ = gee_map_iterator_get_value (_tmp26_);
					_tmp28_ = (FolksImFieldDetails*) _tmp27_;
					gee_multi_map_set ((GeeMultiMap*) _tmp22_, _tmp25_, _tmp28_);
					_g_object_unref0 (_tmp28_);
					_g_free0 (_tmp25_);
				}
				_g_object_unref0 (iter);
			}
			_g_object_unref0 (im_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp29_ = new_im_addresses;
	_tmp30_ = self->priv->_im_addresses;
	_tmp31_ = folks_utils_multi_map_str_afd_equal ((GeeMultiMap*) _tmp29_, (GeeMultiMap*) _tmp30_);
	if (!_tmp31_) {
		GeeHashMultiMap* _tmp32_;
		GeeHashMultiMap* _tmp33_;
		_tmp32_ = new_im_addresses;
		_tmp33_ = _g_object_ref0 (_tmp32_);
		_g_object_unref0 (self->priv->_im_addresses);
		self->priv->_im_addresses = _tmp33_;
		result = TRUE;
		_g_object_unref0 (new_im_addresses);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (new_im_addresses);
	return result;
}


static gboolean ___lambda18__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda18_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_im_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "im-addresses", _tmp0_, ___lambda16__folks_individual_property_is_null, self, ___lambda17__folks_individual_collection_creator, self, ___lambda18__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda19_ (FolksIndividual* self) {
	gboolean result = FALSE;
	GeeHashMultiMap* _tmp0_;
	_tmp0_ = self->priv->_web_service_addresses;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda19__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda19_ ((FolksIndividual*) self);
	return result;
}


static void __lambda20_ (FolksIndividual* self) {
	GeeHashMultiMap* _tmp0_;
	_tmp0_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_web_service_addresses);
	self->priv->_web_service_addresses = _tmp0_;
}


static void ___lambda20__folks_individual_collection_creator (gpointer self) {
	__lambda20_ ((FolksIndividual*) self);
}


static gboolean __lambda21_ (FolksIndividual* self) {
	gboolean result = FALSE;
	GeeHashMultiMap* new_web_service_addresses = NULL;
	GeeHashMultiMap* _tmp0_;
	GeeHashMultiMap* _tmp29_;
	GeeHashMultiMap* _tmp30_;
	gboolean _tmp31_;
	_tmp0_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_web_service_addresses = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksWebServiceDetails* web_service_details = NULL;
			FolksPersona* _tmp13_;
			FolksWebServiceDetails* _tmp14_;
			FolksWebServiceDetails* _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_WEB_SERVICE_DETAILS) ? ((FolksWebServiceDetails*) _tmp13_) : NULL);
			web_service_details = _tmp14_;
			_tmp15_ = web_service_details;
			if (_tmp15_ != NULL) {
				GeeMapIterator* iter = NULL;
				FolksWebServiceDetails* _tmp16_;
				GeeMultiMap* _tmp17_;
				GeeMultiMap* _tmp18_;
				GeeMapIterator* _tmp19_;
				_tmp16_ = web_service_details;
				_tmp17_ = folks_web_service_details_get_web_service_addresses (_tmp16_);
				_tmp18_ = _tmp17_;
				_tmp19_ = gee_multi_map_map_iterator (_tmp18_);
				iter = _tmp19_;
				while (TRUE) {
					GeeMapIterator* _tmp20_;
					gboolean _tmp21_;
					GeeHashMultiMap* _tmp22_;
					GeeMapIterator* _tmp23_;
					gpointer _tmp24_;
					gchar* _tmp25_;
					GeeMapIterator* _tmp26_;
					gpointer _tmp27_;
					FolksWebServiceFieldDetails* _tmp28_;
					_tmp20_ = iter;
					_tmp21_ = gee_map_iterator_next (_tmp20_);
					if (!_tmp21_) {
						break;
					}
					_tmp22_ = new_web_service_addresses;
					_tmp23_ = iter;
					_tmp24_ = gee_map_iterator_get_key (_tmp23_);
					_tmp25_ = (gchar*) _tmp24_;
					_tmp26_ = iter;
					_tmp27_ = gee_map_iterator_get_value (_tmp26_);
					_tmp28_ = (FolksWebServiceFieldDetails*) _tmp27_;
					gee_multi_map_set ((GeeMultiMap*) _tmp22_, _tmp25_, _tmp28_);
					_g_object_unref0 (_tmp28_);
					_g_free0 (_tmp25_);
				}
				_g_object_unref0 (iter);
			}
			_g_object_unref0 (web_service_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp29_ = new_web_service_addresses;
	_tmp30_ = self->priv->_web_service_addresses;
	_tmp31_ = folks_utils_multi_map_str_afd_equal ((GeeMultiMap*) _tmp29_, (GeeMultiMap*) _tmp30_);
	if (!_tmp31_) {
		GeeHashMultiMap* _tmp32_;
		GeeHashMultiMap* _tmp33_;
		_tmp32_ = new_web_service_addresses;
		_tmp33_ = _g_object_ref0 (_tmp32_);
		_g_object_unref0 (self->priv->_web_service_addresses);
		self->priv->_web_service_addresses = _tmp33_;
		result = TRUE;
		_g_object_unref0 (new_web_service_addresses);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (new_web_service_addresses);
	return result;
}


static gboolean ___lambda21__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda21_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_web_service_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "web-service-addresses", _tmp0_, ___lambda19__folks_individual_property_is_null, self, ___lambda20__folks_individual_collection_creator, self, ___lambda21__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static void __folks_individual_persona_notify_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
	_folks_individual_persona_notify_cb ((FolksIndividual*) self, _sender, pspec);
}


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 ((FolksIndividual*) self, group, is_member);
}


static void _folks_individual_connect_to_persona (FolksIndividual* self, FolksPersona* persona) {
	gboolean _tmp0_ = FALSE;
	FolksPersona* _tmp1_;
	FolksIndividual* _tmp2_;
	FolksIndividual* _tmp3_;
	FolksPersona* _tmp11_;
	FolksPersona* _tmp12_;
	FolksPersona* _tmp13_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (persona != NULL);
	_tmp1_ = persona;
	_tmp2_ = folks_persona_get_individual (_tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_ != NULL) {
		FolksPersona* _tmp4_;
		FolksIndividual* _tmp5_;
		FolksIndividual* _tmp6_;
		_tmp4_ = persona;
		_tmp5_ = folks_persona_get_individual (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = _tmp6_ != self;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		FolksPersona* _tmp7_;
		FolksIndividual* _tmp8_;
		FolksIndividual* _tmp9_;
		FolksPersona* _tmp10_;
		_tmp7_ = persona;
		_tmp8_ = folks_persona_get_individual (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = persona;
		_folks_individual_disconnect_from_persona (_tmp9_, _tmp10_, self);
	}
	_tmp11_ = persona;
	folks_persona_set_individual (_tmp11_, self);
	_tmp12_ = persona;
	g_signal_connect_object ((GObject*) _tmp12_, "notify", (GCallback) __folks_individual_persona_notify_cb_g_object_notify, self, 0);
	_tmp13_ = persona;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_GROUP_DETAILS)) {
		FolksPersona* _tmp14_;
		_tmp14_ = persona;
		g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails), "group-changed", (GCallback) __folks_individual_persona_group_changed_cb_folks_group_details_group_changed, self, 0);
	}
}


static gboolean __lambda25_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksStructuredName* name = NULL;
	FolksPersona* _tmp0_;
	FolksStructuredName* _tmp1_;
	FolksStructuredName* _tmp2_;
	FolksStructuredName* _tmp3_;
	gboolean _tmp4_ = FALSE;
	FolksStructuredName* _tmp5_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_name_details_get_structured_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
	_tmp2_ = _tmp1_;
	_tmp3_ = _g_object_ref0 (_tmp2_);
	name = _tmp3_;
	_tmp5_ = name;
	if (_tmp5_ != NULL) {
		FolksStructuredName* _tmp6_;
		gboolean _tmp7_;
		_tmp6_ = name;
		_tmp7_ = folks_structured_name_is_empty (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredName));
		_tmp4_ = !_tmp7_;
	} else {
		_tmp4_ = FALSE;
	}
	result = _tmp4_;
	_g_object_unref0 (name);
	return result;
}


static gboolean ___lambda25__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda25_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda26_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	result = 0;
	return result;
}


static gint ___lambda26__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda26_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda27_ (FolksIndividual* self, FolksPersona* p) {
	FolksStructuredName* name = NULL;
	FolksPersona* _tmp0_;
	gboolean _tmp9_ = FALSE;
	gboolean _tmp10_ = FALSE;
	FolksStructuredName* _tmp11_;
	name = NULL;
	_tmp0_ = p;
	if (_tmp0_ != NULL) {
		FolksPersona* _tmp1_;
		FolksStructuredName* _tmp2_;
		FolksStructuredName* _tmp3_;
		FolksStructuredName* _tmp4_;
		gboolean _tmp5_ = FALSE;
		FolksStructuredName* _tmp6_;
		_tmp1_ = p;
		_tmp2_ = folks_name_details_get_structured_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
		_tmp3_ = _tmp2_;
		_tmp4_ = _g_object_ref0 (_tmp3_);
		_g_object_unref0 (name);
		name = _tmp4_;
		_tmp6_ = name;
		if (_tmp6_ != NULL) {
			FolksStructuredName* _tmp7_;
			gboolean _tmp8_;
			_tmp7_ = name;
			_tmp8_ = folks_structured_name_is_empty (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredName));
			_tmp5_ = _tmp8_;
		} else {
			_tmp5_ = FALSE;
		}
		if (_tmp5_) {
			_g_object_unref0 (name);
			name = NULL;
		}
	}
	_tmp11_ = self->priv->_structured_name;
	if (_tmp11_ == NULL) {
		FolksStructuredName* _tmp12_;
		_tmp12_ = name;
		_tmp10_ = _tmp12_ != NULL;
	} else {
		_tmp10_ = FALSE;
	}
	if (_tmp10_) {
		_tmp9_ = TRUE;
	} else {
		gboolean _tmp13_ = FALSE;
		FolksStructuredName* _tmp14_;
		_tmp14_ = self->priv->_structured_name;
		if (_tmp14_ != NULL) {
			gboolean _tmp15_ = FALSE;
			FolksStructuredName* _tmp16_;
			_tmp16_ = name;
			if (_tmp16_ == NULL) {
				_tmp15_ = TRUE;
			} else {
				FolksStructuredName* _tmp17_;
				FolksStructuredName* _tmp18_;
				gboolean _tmp19_;
				_tmp17_ = self->priv->_structured_name;
				_tmp18_ = name;
				_tmp19_ = folks_structured_name_equal (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredName), G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, FOLKS_TYPE_STRUCTURED_NAME, FolksStructuredName));
				_tmp15_ = !_tmp19_;
			}
			_tmp13_ = _tmp15_;
		} else {
			_tmp13_ = FALSE;
		}
		_tmp9_ = _tmp13_;
	}
	if (_tmp9_) {
		FolksStructuredName* _tmp20_;
		FolksStructuredName* _tmp21_;
		_tmp20_ = name;
		_tmp21_ = _g_object_ref0 (_tmp20_);
		_g_object_unref0 (self->priv->_structured_name);
		self->priv->_structured_name = _tmp21_;
		g_object_notify ((GObject*) self, "structured-name");
		_folks_individual_update_display_name (self);
	}
	_g_object_unref0 (name);
}


static void ___lambda27__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda27_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_structured_name (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_NAME_DETAILS, ___lambda25__folks_individual_property_filter, self, ___lambda26__gcompare_func, "structured-name", ___lambda27__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda28_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	gchar* name = NULL;
	FolksPersona* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gboolean _tmp6_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_name_details_get_full_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup (_tmp2_);
	name = _tmp3_;
	g_return_val_if_fail (name != NULL, FALSE);
	_tmp4_ = string_strip (name);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strcmp0 (_tmp5_, "") != 0;
	_g_free0 (_tmp5_);
	result = _tmp6_;
	_g_free0 (name);
	return result;
}


static gboolean ___lambda28__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda28_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda29_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	result = 0;
	return result;
}


static gint ___lambda29__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda29_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda30_ (FolksIndividual* self, FolksPersona* p) {
	gchar* new_full_name = NULL;
	gchar* _tmp0_;
	FolksPersona* _tmp1_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	_tmp0_ = g_strdup ("");
	new_full_name = _tmp0_;
	_tmp1_ = p;
	if (_tmp1_ != NULL) {
		FolksPersona* _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		gchar* _tmp5_;
		_tmp2_ = p;
		_tmp3_ = folks_name_details_get_full_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
		_tmp4_ = _tmp3_;
		_tmp5_ = string_strip (_tmp4_);
		_g_free0 (new_full_name);
		new_full_name = _tmp5_;
	}
	_tmp6_ = new_full_name;
	_tmp7_ = self->priv->_full_name;
	if (g_strcmp0 (_tmp6_, _tmp7_) != 0) {
		const gchar* _tmp8_;
		gchar* _tmp9_;
		_tmp8_ = new_full_name;
		_tmp9_ = g_strdup (_tmp8_);
		_g_free0 (self->priv->_full_name);
		self->priv->_full_name = _tmp9_;
		g_object_notify ((GObject*) self, "full-name");
		_folks_individual_update_display_name (self);
	}
	_g_free0 (new_full_name);
}


static void ___lambda30__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda30_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_full_name (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_NAME_DETAILS, ___lambda28__folks_individual_property_filter, self, ___lambda29__gcompare_func, "full-name", ___lambda30__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda31_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	gchar* nickname = NULL;
	FolksPersona* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gboolean _tmp6_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_name_details_get_nickname (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup (_tmp2_);
	nickname = _tmp3_;
	g_return_val_if_fail (nickname != NULL, FALSE);
	_tmp4_ = string_strip (nickname);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strcmp0 (_tmp5_, "") != 0;
	_g_free0 (_tmp5_);
	result = _tmp6_;
	_g_free0 (nickname);
	return result;
}


static gboolean ___lambda31__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda31_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda32_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	result = 0;
	return result;
}


static gint ___lambda32__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda32_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda33_ (FolksIndividual* self, FolksPersona* p) {
	gchar* new_nickname = NULL;
	gchar* _tmp0_;
	FolksPersona* _tmp1_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	_tmp0_ = g_strdup ("");
	new_nickname = _tmp0_;
	_tmp1_ = p;
	if (_tmp1_ != NULL) {
		FolksPersona* _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		gchar* _tmp5_;
		_tmp2_ = p;
		_tmp3_ = folks_name_details_get_nickname (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, FOLKS_TYPE_NAME_DETAILS, FolksNameDetails));
		_tmp4_ = _tmp3_;
		_tmp5_ = string_strip (_tmp4_);
		_g_free0 (new_nickname);
		new_nickname = _tmp5_;
	}
	_tmp6_ = new_nickname;
	_tmp7_ = self->priv->_nickname;
	if (g_strcmp0 (_tmp6_, _tmp7_) != 0) {
		const gchar* _tmp8_;
		gchar* _tmp9_;
		_tmp8_ = new_nickname;
		_tmp9_ = g_strdup (_tmp8_);
		_g_free0 (self->priv->_nickname);
		self->priv->_nickname = _tmp9_;
		g_object_notify ((GObject*) self, "nickname");
		_folks_individual_update_display_name (self);
	}
	_g_free0 (new_nickname);
}


static void ___lambda33__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda33_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_nickname (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_NAME_DETAILS, ___lambda31__folks_individual_property_filter, self, ___lambda32__gcompare_func, "nickname", ___lambda33__folks_individual_single_valued_property_setter, self);
}


static void _folks_individual_disconnect_from_persona (FolksIndividual* self, FolksPersona* persona, FolksIndividual* replacement_individual) {
	FolksPersona* _tmp0_;
	guint _tmp1_;
	FolksPersona* _tmp2_;
	FolksPersona* _tmp5_;
	FolksIndividual* _tmp6_;
	FolksIndividual* _tmp7_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (persona != NULL);
	_tmp0_ = persona;
	g_signal_parse_name ("notify", G_TYPE_OBJECT, &_tmp1_, NULL, FALSE);
	g_signal_handlers_disconnect_matched ((GObject*) _tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) __folks_individual_persona_notify_cb_g_object_notify, self);
	_tmp2_ = persona;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, FOLKS_TYPE_GROUP_DETAILS)) {
		FolksPersona* _tmp3_;
		guint _tmp4_;
		_tmp3_ = persona;
		g_signal_parse_name ("group-changed", FOLKS_TYPE_GROUP_DETAILS, &_tmp4_, NULL, FALSE);
		g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, FOLKS_TYPE_GROUP_DETAILS, FolksGroupDetails), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp4_, 0, NULL, (GCallback) __folks_individual_persona_group_changed_cb_folks_group_details_group_changed, self);
	}
	_tmp5_ = persona;
	_tmp6_ = folks_persona_get_individual (_tmp5_);
	_tmp7_ = _tmp6_;
	if (_tmp7_ == self) {
		gboolean _tmp8_ = FALSE;
		FolksIndividual* _tmp9_;
		_tmp9_ = replacement_individual;
		if (_tmp9_ != NULL) {
			FolksIndividual* _tmp10_;
			GeeSet* _tmp11_;
			GeeSet* _tmp12_;
			FolksPersona* _tmp13_;
			gboolean _tmp14_;
			_tmp10_ = replacement_individual;
			_tmp11_ = folks_individual_get_personas (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual));
			_tmp12_ = _tmp11_;
			_tmp13_ = persona;
			_tmp14_ = gee_collection_contains ((GeeCollection*) _tmp12_, _tmp13_);
			_tmp8_ = _tmp14_;
		} else {
			_tmp8_ = FALSE;
		}
		if (_tmp8_) {
			FolksPersona* _tmp15_;
			FolksIndividual* _tmp16_;
			_tmp15_ = persona;
			_tmp16_ = replacement_individual;
			folks_persona_set_individual (_tmp15_, _tmp16_);
		} else {
			FolksPersona* _tmp17_;
			_tmp17_ = persona;
			folks_persona_set_individual (_tmp17_, NULL);
		}
	}
}


static gboolean __lambda34_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksPersona* _tmp0_;
	FolksGender _tmp1_;
	FolksGender _tmp2_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_gender_details_get_gender (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_GENDER_DETAILS, FolksGenderDetails));
	_tmp2_ = _tmp1_;
	result = _tmp2_ != FOLKS_GENDER_UNSPECIFIED;
	return result;
}


static gboolean ___lambda34__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda34_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda35_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	result = 0;
	return result;
}


static gint ___lambda35__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda35_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda36_ (FolksIndividual* self, FolksPersona* p) {
	FolksGender new_gender = 0;
	FolksPersona* _tmp0_;
	FolksGender _tmp4_;
	FolksGender _tmp5_;
	FolksGender _tmp6_;
	new_gender = FOLKS_GENDER_UNSPECIFIED;
	_tmp0_ = p;
	if (_tmp0_ != NULL) {
		FolksPersona* _tmp1_;
		FolksGender _tmp2_;
		FolksGender _tmp3_;
		_tmp1_ = p;
		_tmp2_ = folks_gender_details_get_gender (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, FOLKS_TYPE_GENDER_DETAILS, FolksGenderDetails));
		_tmp3_ = _tmp2_;
		new_gender = _tmp3_;
	}
	_tmp4_ = new_gender;
	_tmp5_ = folks_gender_details_get_gender ((FolksGenderDetails*) self);
	_tmp6_ = _tmp5_;
	if (_tmp4_ != _tmp6_) {
		FolksGender _tmp7_;
		_tmp7_ = new_gender;
		self->priv->_gender = _tmp7_;
		g_object_notify ((GObject*) self, "gender");
	}
}


static void ___lambda36__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda36_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_gender (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_GENDER_DETAILS, ___lambda34__folks_individual_property_filter, self, ___lambda35__gcompare_func, "gender", ___lambda36__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda37_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_urls;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda37__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda37_ ((FolksIndividual*) self);
	return result;
}


static void __lambda38_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_urls);
	self->priv->_urls = _tmp0_;
	_tmp1_ = self->priv->_urls;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_urls_ro);
	self->priv->_urls_ro = _tmp3_;
}


static void ___lambda38__folks_individual_collection_creator (gpointer self) {
	__lambda38_ ((FolksIndividual*) self);
}


static gboolean __lambda39_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_urls = NULL;
	FolksSmallSet* _tmp0_;
	GeeHashMap* urls_set = NULL;
	GeeHashMap* _tmp1_;
	FolksSmallSet* _tmp51_;
	FolksSmallSet* _tmp52_;
	gboolean _tmp53_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_urls = _tmp0_;
	_tmp1_ = gee_hash_map_new (G_TYPE_STRING, NULL, NULL, FOLKS_TYPE_URL_FIELD_DETAILS, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	urls_set = _tmp1_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp2_;
		FolksSmallSet* _tmp3_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp4_;
		gint _tmp5_;
		gint _tmp6_;
		gint _persona_index = 0;
		_tmp2_ = self->priv->_persona_set;
		_tmp3_ = _g_object_ref0 (_tmp2_);
		_persona_list = _tmp3_;
		_tmp4_ = _persona_list;
		_tmp5_ = gee_collection_get_size ((GeeCollection*) _tmp4_);
		_tmp6_ = _tmp5_;
		_persona_size = _tmp6_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp7_;
			gint _tmp8_;
			gint _tmp9_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp10_;
			gint _tmp11_;
			gconstpointer _tmp12_;
			FolksPersona* _tmp13_;
			FolksUrlDetails* url_details = NULL;
			FolksPersona* _tmp14_;
			FolksUrlDetails* _tmp15_;
			FolksUrlDetails* _tmp16_;
			_tmp7_ = _persona_index;
			_persona_index = _tmp7_ + 1;
			_tmp8_ = _persona_index;
			_tmp9_ = _persona_size;
			if (!(_tmp8_ < _tmp9_)) {
				break;
			}
			_tmp10_ = _persona_list;
			_tmp11_ = _persona_index;
			_tmp12_ = folks_small_set_get (_tmp10_, _tmp11_);
			_tmp13_ = _g_object_ref0 ((FolksPersona*) _tmp12_);
			persona = _tmp13_;
			_tmp14_ = persona;
			_tmp15_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, FOLKS_TYPE_URL_DETAILS) ? ((FolksUrlDetails*) _tmp14_) : NULL);
			url_details = _tmp15_;
			_tmp16_ = url_details;
			if (_tmp16_ != NULL) {
				{
					GeeIterator* _url_fd_it = NULL;
					FolksUrlDetails* _tmp17_;
					GeeSet* _tmp18_;
					GeeSet* _tmp19_;
					GeeIterator* _tmp20_;
					_tmp17_ = url_details;
					_tmp18_ = folks_url_details_get_urls (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, FOLKS_TYPE_URL_DETAILS, FolksUrlDetails));
					_tmp19_ = _tmp18_;
					_tmp20_ = gee_iterable_iterator ((GeeIterable*) _tmp19_);
					_url_fd_it = _tmp20_;
					while (TRUE) {
						GeeIterator* _tmp21_;
						gboolean _tmp22_;
						FolksUrlFieldDetails* url_fd = NULL;
						GeeIterator* _tmp23_;
						gpointer _tmp24_;
						FolksUrlFieldDetails* existing = NULL;
						GeeHashMap* _tmp25_;
						FolksUrlFieldDetails* _tmp26_;
						gconstpointer _tmp27_;
						const gchar* _tmp28_;
						gpointer _tmp29_;
						FolksUrlFieldDetails* _tmp30_;
						FolksUrlFieldDetails* _tmp31_;
						_tmp21_ = _url_fd_it;
						_tmp22_ = gee_iterator_next (_tmp21_);
						if (!_tmp22_) {
							break;
						}
						_tmp23_ = _url_fd_it;
						_tmp24_ = gee_iterator_get (_tmp23_);
						url_fd = (FolksUrlFieldDetails*) _tmp24_;
						_tmp25_ = urls_set;
						_tmp26_ = url_fd;
						_tmp27_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp26_);
						_tmp28_ = _tmp27_;
						_tmp29_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp25_, (const gchar*) _tmp28_);
						_tmp30_ = _g_object_ref0 ((FolksUrlFieldDetails*) _tmp29_);
						existing = _tmp30_;
						_tmp31_ = existing;
						if (_tmp31_ != NULL) {
							FolksUrlFieldDetails* _tmp32_;
							FolksUrlFieldDetails* _tmp33_;
							GeeMultiMap* _tmp34_;
							GeeMultiMap* _tmp35_;
							_tmp32_ = existing;
							_tmp33_ = url_fd;
							_tmp34_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp33_);
							_tmp35_ = _tmp34_;
							folks_abstract_field_details_extend_parameters ((FolksAbstractFieldDetails*) _tmp32_, _tmp35_);
						} else {
							FolksUrlFieldDetails* new_url_fd = NULL;
							FolksUrlFieldDetails* _tmp36_;
							gconstpointer _tmp37_;
							const gchar* _tmp38_;
							FolksUrlFieldDetails* _tmp39_;
							FolksUrlFieldDetails* _tmp40_;
							FolksUrlFieldDetails* _tmp41_;
							GeeMultiMap* _tmp42_;
							GeeMultiMap* _tmp43_;
							GeeHashMap* _tmp44_;
							FolksUrlFieldDetails* _tmp45_;
							gconstpointer _tmp46_;
							const gchar* _tmp47_;
							FolksUrlFieldDetails* _tmp48_;
							FolksSmallSet* _tmp49_;
							FolksUrlFieldDetails* _tmp50_;
							_tmp36_ = url_fd;
							_tmp37_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp36_);
							_tmp38_ = _tmp37_;
							_tmp39_ = folks_url_field_details_new ((const gchar*) _tmp38_, NULL);
							new_url_fd = _tmp39_;
							_tmp40_ = new_url_fd;
							_tmp41_ = url_fd;
							_tmp42_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp41_);
							_tmp43_ = _tmp42_;
							folks_abstract_field_details_extend_parameters ((FolksAbstractFieldDetails*) _tmp40_, _tmp43_);
							_tmp44_ = urls_set;
							_tmp45_ = new_url_fd;
							_tmp46_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp45_);
							_tmp47_ = _tmp46_;
							_tmp48_ = new_url_fd;
							gee_abstract_map_set ((GeeAbstractMap*) _tmp44_, (const gchar*) _tmp47_, _tmp48_);
							_tmp49_ = new_urls;
							_tmp50_ = new_url_fd;
							gee_abstract_collection_add ((GeeAbstractCollection*) _tmp49_, _tmp50_);
							_g_object_unref0 (new_url_fd);
						}
						_g_object_unref0 (existing);
						_g_object_unref0 (url_fd);
					}
					_g_object_unref0 (_url_fd_it);
				}
			}
			_g_object_unref0 (url_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp51_ = new_urls;
	_tmp52_ = self->priv->_urls;
	_tmp53_ = folks_utils_set_afd_equal ((GeeSet*) _tmp51_, (GeeSet*) _tmp52_);
	if (!_tmp53_) {
		FolksSmallSet* _tmp54_;
		FolksSmallSet* _tmp55_;
		FolksSmallSet* _tmp56_;
		GeeSet* _tmp57_;
		GeeSet* _tmp58_;
		_tmp54_ = new_urls;
		_tmp55_ = _g_object_ref0 (_tmp54_);
		_g_object_unref0 (self->priv->_urls);
		self->priv->_urls = _tmp55_;
		_tmp56_ = new_urls;
		_tmp57_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp56_);
		_tmp58_ = _tmp57_;
		_g_object_unref0 (self->priv->_urls_ro);
		self->priv->_urls_ro = _tmp58_;
		result = TRUE;
		_g_object_unref0 (urls_set);
		_g_object_unref0 (new_urls);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (urls_set);
	_g_object_unref0 (new_urls);
	return result;
}


static gboolean ___lambda39__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda39_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_urls (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "urls", _tmp0_, ___lambda37__folks_individual_property_is_null, self, ___lambda38__folks_individual_collection_creator, self, ___lambda39__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda40_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_phone_numbers;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda40__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda40_ ((FolksIndividual*) self);
	return result;
}


static void __lambda41_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_phone_numbers);
	self->priv->_phone_numbers = _tmp0_;
	_tmp1_ = self->priv->_phone_numbers;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_phone_numbers_ro);
	self->priv->_phone_numbers_ro = _tmp3_;
}


static void ___lambda41__folks_individual_collection_creator (gpointer self) {
	__lambda41_ ((FolksIndividual*) self);
}


static gboolean __lambda42_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_phone_numbers = NULL;
	FolksSmallSet* _tmp0_;
	GeeHashMap* phone_numbers_set = NULL;
	GeeHashMap* _tmp1_;
	FolksSmallSet* _tmp50_;
	FolksSmallSet* _tmp51_;
	gboolean _tmp52_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_phone_numbers = _tmp0_;
	_tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	phone_numbers_set = _tmp1_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp2_;
		FolksSmallSet* _tmp3_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp4_;
		gint _tmp5_;
		gint _tmp6_;
		gint _persona_index = 0;
		_tmp2_ = self->priv->_persona_set;
		_tmp3_ = _g_object_ref0 (_tmp2_);
		_persona_list = _tmp3_;
		_tmp4_ = _persona_list;
		_tmp5_ = gee_collection_get_size ((GeeCollection*) _tmp4_);
		_tmp6_ = _tmp5_;
		_persona_size = _tmp6_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp7_;
			gint _tmp8_;
			gint _tmp9_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp10_;
			gint _tmp11_;
			gconstpointer _tmp12_;
			FolksPersona* _tmp13_;
			FolksPhoneDetails* phone_details = NULL;
			FolksPersona* _tmp14_;
			FolksPhoneDetails* _tmp15_;
			FolksPhoneDetails* _tmp16_;
			_tmp7_ = _persona_index;
			_persona_index = _tmp7_ + 1;
			_tmp8_ = _persona_index;
			_tmp9_ = _persona_size;
			if (!(_tmp8_ < _tmp9_)) {
				break;
			}
			_tmp10_ = _persona_list;
			_tmp11_ = _persona_index;
			_tmp12_ = folks_small_set_get (_tmp10_, _tmp11_);
			_tmp13_ = _g_object_ref0 ((FolksPersona*) _tmp12_);
			persona = _tmp13_;
			_tmp14_ = persona;
			_tmp15_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, FOLKS_TYPE_PHONE_DETAILS) ? ((FolksPhoneDetails*) _tmp14_) : NULL);
			phone_details = _tmp15_;
			_tmp16_ = phone_details;
			if (_tmp16_ != NULL) {
				{
					GeeIterator* _phone_fd_it = NULL;
					FolksPhoneDetails* _tmp17_;
					GeeSet* _tmp18_;
					GeeSet* _tmp19_;
					GeeIterator* _tmp20_;
					_tmp17_ = phone_details;
					_tmp18_ = folks_phone_details_get_phone_numbers (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, FOLKS_TYPE_PHONE_DETAILS, FolksPhoneDetails));
					_tmp19_ = _tmp18_;
					_tmp20_ = gee_iterable_iterator ((GeeIterable*) _tmp19_);
					_phone_fd_it = _tmp20_;
					while (TRUE) {
						GeeIterator* _tmp21_;
						gboolean _tmp22_;
						FolksPhoneFieldDetails* phone_fd = NULL;
						GeeIterator* _tmp23_;
						gpointer _tmp24_;
						FolksPhoneFieldDetails* existing = NULL;
						GeeHashMap* _tmp25_;
						FolksPhoneFieldDetails* _tmp26_;
						gconstpointer _tmp27_;
						const gchar* _tmp28_;
						gpointer _tmp29_;
						FolksPhoneFieldDetails* _tmp30_;
						_tmp21_ = _phone_fd_it;
						_tmp22_ = gee_iterator_next (_tmp21_);
						if (!_tmp22_) {
							break;
						}
						_tmp23_ = _phone_fd_it;
						_tmp24_ = gee_iterator_get (_tmp23_);
						phone_fd = (FolksPhoneFieldDetails*) _tmp24_;
						_tmp25_ = phone_numbers_set;
						_tmp26_ = phone_fd;
						_tmp27_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp26_);
						_tmp28_ = _tmp27_;
						_tmp29_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp25_, (const gchar*) _tmp28_);
						existing = (FolksPhoneFieldDetails*) _tmp29_;
						_tmp30_ = existing;
						if (_tmp30_ != NULL) {
							FolksPhoneFieldDetails* _tmp31_;
							FolksPhoneFieldDetails* _tmp32_;
							GeeMultiMap* _tmp33_;
							GeeMultiMap* _tmp34_;
							_tmp31_ = existing;
							_tmp32_ = phone_fd;
							_tmp33_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp32_);
							_tmp34_ = _tmp33_;
							folks_abstract_field_details_extend_parameters ((FolksAbstractFieldDetails*) _tmp31_, _tmp34_);
						} else {
							FolksPhoneFieldDetails* new_fd = NULL;
							FolksPhoneFieldDetails* _tmp35_;
							gconstpointer _tmp36_;
							const gchar* _tmp37_;
							FolksPhoneFieldDetails* _tmp38_;
							FolksPhoneFieldDetails* _tmp39_;
							FolksPhoneFieldDetails* _tmp40_;
							GeeMultiMap* _tmp41_;
							GeeMultiMap* _tmp42_;
							GeeHashMap* _tmp43_;
							FolksPhoneFieldDetails* _tmp44_;
							gconstpointer _tmp45_;
							const gchar* _tmp46_;
							FolksPhoneFieldDetails* _tmp47_;
							FolksSmallSet* _tmp48_;
							FolksPhoneFieldDetails* _tmp49_;
							_tmp35_ = phone_fd;
							_tmp36_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp35_);
							_tmp37_ = _tmp36_;
							_tmp38_ = folks_phone_field_details_new ((const gchar*) _tmp37_, NULL);
							new_fd = _tmp38_;
							_tmp39_ = new_fd;
							_tmp40_ = phone_fd;
							_tmp41_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp40_);
							_tmp42_ = _tmp41_;
							folks_abstract_field_details_extend_parameters ((FolksAbstractFieldDetails*) _tmp39_, _tmp42_);
							_tmp43_ = phone_numbers_set;
							_tmp44_ = new_fd;
							_tmp45_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp44_);
							_tmp46_ = _tmp45_;
							_tmp47_ = new_fd;
							gee_abstract_map_set ((GeeAbstractMap*) _tmp43_, (const gchar*) _tmp46_, _tmp47_);
							_tmp48_ = new_phone_numbers;
							_tmp49_ = new_fd;
							gee_abstract_collection_add ((GeeAbstractCollection*) _tmp48_, _tmp49_);
							_g_object_unref0 (new_fd);
						}
						_g_object_unref0 (existing);
						_g_object_unref0 (phone_fd);
					}
					_g_object_unref0 (_phone_fd_it);
				}
			}
			_g_object_unref0 (phone_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp50_ = new_phone_numbers;
	_tmp51_ = self->priv->_phone_numbers;
	_tmp52_ = folks_utils_set_string_afd_equal ((GeeSet*) _tmp50_, (GeeSet*) _tmp51_);
	if (!_tmp52_) {
		FolksSmallSet* _tmp53_;
		FolksSmallSet* _tmp54_;
		FolksSmallSet* _tmp55_;
		GeeSet* _tmp56_;
		GeeSet* _tmp57_;
		_tmp53_ = new_phone_numbers;
		_tmp54_ = _g_object_ref0 (_tmp53_);
		_g_object_unref0 (self->priv->_phone_numbers);
		self->priv->_phone_numbers = _tmp54_;
		_tmp55_ = new_phone_numbers;
		_tmp56_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp55_);
		_tmp57_ = _tmp56_;
		_g_object_unref0 (self->priv->_phone_numbers_ro);
		self->priv->_phone_numbers_ro = _tmp57_;
		result = TRUE;
		_g_object_unref0 (phone_numbers_set);
		_g_object_unref0 (new_phone_numbers);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (phone_numbers_set);
	_g_object_unref0 (new_phone_numbers);
	return result;
}


static gboolean ___lambda42__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda42_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_phone_numbers (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "phone-numbers", _tmp0_, ___lambda40__folks_individual_property_is_null, self, ___lambda41__folks_individual_collection_creator, self, ___lambda42__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda43_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_email_addresses;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda43__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda43_ ((FolksIndividual*) self);
	return result;
}


static void __lambda44_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_email_addresses);
	self->priv->_email_addresses = _tmp0_;
	_tmp1_ = self->priv->_email_addresses;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_email_addresses_ro);
	self->priv->_email_addresses_ro = _tmp3_;
}


static void ___lambda44__folks_individual_collection_creator (gpointer self) {
	__lambda44_ ((FolksIndividual*) self);
}


static gboolean __lambda45_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_email_addresses = NULL;
	FolksSmallSet* _tmp0_;
	GeeHashMap* emails_set = NULL;
	GeeHashMap* _tmp1_;
	FolksSmallSet* _tmp49_;
	FolksSmallSet* _tmp50_;
	gboolean _tmp51_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_email_addresses = _tmp0_;
	_tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	emails_set = _tmp1_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp2_;
		FolksSmallSet* _tmp3_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp4_;
		gint _tmp5_;
		gint _tmp6_;
		gint _persona_index = 0;
		_tmp2_ = self->priv->_persona_set;
		_tmp3_ = _g_object_ref0 (_tmp2_);
		_persona_list = _tmp3_;
		_tmp4_ = _persona_list;
		_tmp5_ = gee_collection_get_size ((GeeCollection*) _tmp4_);
		_tmp6_ = _tmp5_;
		_persona_size = _tmp6_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp7_;
			gint _tmp8_;
			gint _tmp9_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp10_;
			gint _tmp11_;
			gconstpointer _tmp12_;
			FolksPersona* _tmp13_;
			FolksEmailDetails* email_details = NULL;
			FolksPersona* _tmp14_;
			FolksEmailDetails* _tmp15_;
			FolksEmailDetails* _tmp16_;
			_tmp7_ = _persona_index;
			_persona_index = _tmp7_ + 1;
			_tmp8_ = _persona_index;
			_tmp9_ = _persona_size;
			if (!(_tmp8_ < _tmp9_)) {
				break;
			}
			_tmp10_ = _persona_list;
			_tmp11_ = _persona_index;
			_tmp12_ = folks_small_set_get (_tmp10_, _tmp11_);
			_tmp13_ = _g_object_ref0 ((FolksPersona*) _tmp12_);
			persona = _tmp13_;
			_tmp14_ = persona;
			_tmp15_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, FOLKS_TYPE_EMAIL_DETAILS) ? ((FolksEmailDetails*) _tmp14_) : NULL);
			email_details = _tmp15_;
			_tmp16_ = email_details;
			if (_tmp16_ != NULL) {
				{
					GeeIterator* _email_fd_it = NULL;
					FolksEmailDetails* _tmp17_;
					GeeSet* _tmp18_;
					GeeSet* _tmp19_;
					GeeIterator* _tmp20_;
					_tmp17_ = email_details;
					_tmp18_ = folks_email_details_get_email_addresses (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, FOLKS_TYPE_EMAIL_DETAILS, FolksEmailDetails));
					_tmp19_ = _tmp18_;
					_tmp20_ = gee_iterable_iterator ((GeeIterable*) _tmp19_);
					_email_fd_it = _tmp20_;
					while (TRUE) {
						GeeIterator* _tmp21_;
						gboolean _tmp22_;
						FolksEmailFieldDetails* email_fd = NULL;
						GeeIterator* _tmp23_;
						gpointer _tmp24_;
						FolksEmailFieldDetails* existing = NULL;
						GeeHashMap* _tmp25_;
						FolksEmailFieldDetails* _tmp26_;
						gconstpointer _tmp27_;
						const gchar* _tmp28_;
						gpointer _tmp29_;
						FolksEmailFieldDetails* _tmp30_;
						_tmp21_ = _email_fd_it;
						_tmp22_ = gee_iterator_next (_tmp21_);
						if (!_tmp22_) {
							break;
						}
						_tmp23_ = _email_fd_it;
						_tmp24_ = gee_iterator_get (_tmp23_);
						email_fd = (FolksEmailFieldDetails*) _tmp24_;
						_tmp25_ = emails_set;
						_tmp26_ = email_fd;
						_tmp27_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp26_);
						_tmp28_ = _tmp27_;
						_tmp29_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp25_, (const gchar*) _tmp28_);
						existing = (FolksEmailFieldDetails*) _tmp29_;
						_tmp30_ = existing;
						if (_tmp30_ != NULL) {
							FolksEmailFieldDetails* _tmp31_;
							FolksEmailFieldDetails* _tmp32_;
							GeeMultiMap* _tmp33_;
							GeeMultiMap* _tmp34_;
							_tmp31_ = existing;
							_tmp32_ = email_fd;
							_tmp33_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp32_);
							_tmp34_ = _tmp33_;
							folks_abstract_field_details_extend_parameters ((FolksAbstractFieldDetails*) _tmp31_, _tmp34_);
						} else {
							FolksEmailFieldDetails* new_email_fd = NULL;
							FolksEmailFieldDetails* _tmp35_;
							gconstpointer _tmp36_;
							const gchar* _tmp37_;
							FolksEmailFieldDetails* _tmp38_;
							GeeMultiMap* _tmp39_;
							GeeMultiMap* _tmp40_;
							FolksEmailFieldDetails* _tmp41_;
							GeeHashMap* _tmp42_;
							FolksEmailFieldDetails* _tmp43_;
							gconstpointer _tmp44_;
							const gchar* _tmp45_;
							FolksEmailFieldDetails* _tmp46_;
							FolksSmallSet* _tmp47_;
							FolksEmailFieldDetails* _tmp48_;
							_tmp35_ = email_fd;
							_tmp36_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp35_);
							_tmp37_ = _tmp36_;
							_tmp38_ = email_fd;
							_tmp39_ = folks_abstract_field_details_get_parameters ((FolksAbstractFieldDetails*) _tmp38_);
							_tmp40_ = _tmp39_;
							_tmp41_ = folks_email_field_details_new ((const gchar*) _tmp37_, _tmp40_);
							new_email_fd = _tmp41_;
							_tmp42_ = emails_set;
							_tmp43_ = new_email_fd;
							_tmp44_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp43_);
							_tmp45_ = _tmp44_;
							_tmp46_ = new_email_fd;
							gee_abstract_map_set ((GeeAbstractMap*) _tmp42_, (const gchar*) _tmp45_, _tmp46_);
							_tmp47_ = new_email_addresses;
							_tmp48_ = new_email_fd;
							gee_abstract_collection_add ((GeeAbstractCollection*) _tmp47_, _tmp48_);
							_g_object_unref0 (new_email_fd);
						}
						_g_object_unref0 (existing);
						_g_object_unref0 (email_fd);
					}
					_g_object_unref0 (_email_fd_it);
				}
			}
			_g_object_unref0 (email_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp49_ = new_email_addresses;
	_tmp50_ = self->priv->_email_addresses;
	_tmp51_ = folks_utils_set_afd_equal ((GeeSet*) _tmp49_, (GeeSet*) _tmp50_);
	if (!_tmp51_) {
		FolksSmallSet* _tmp52_;
		FolksSmallSet* _tmp53_;
		FolksSmallSet* _tmp54_;
		GeeSet* _tmp55_;
		GeeSet* _tmp56_;
		_tmp52_ = new_email_addresses;
		_tmp53_ = _g_object_ref0 (_tmp52_);
		_g_object_unref0 (self->priv->_email_addresses);
		self->priv->_email_addresses = _tmp53_;
		_tmp54_ = new_email_addresses;
		_tmp55_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp54_);
		_tmp56_ = _tmp55_;
		_g_object_unref0 (self->priv->_email_addresses_ro);
		self->priv->_email_addresses_ro = _tmp56_;
		result = TRUE;
		_g_object_unref0 (emails_set);
		_g_object_unref0 (new_email_addresses);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (emails_set);
	_g_object_unref0 (new_email_addresses);
	return result;
}


static gboolean ___lambda45__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda45_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_email_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "email-addresses", _tmp0_, ___lambda43__folks_individual_property_is_null, self, ___lambda44__folks_individual_collection_creator, self, ___lambda45__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda46_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_roles;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda46__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda46_ ((FolksIndividual*) self);
	return result;
}


static void __lambda47_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_ROLE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_roles);
	self->priv->_roles = _tmp0_;
	_tmp1_ = self->priv->_roles;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_roles_ro);
	self->priv->_roles_ro = _tmp3_;
}


static void ___lambda47__folks_individual_collection_creator (gpointer self) {
	__lambda47_ ((FolksIndividual*) self);
}


static gboolean __lambda48_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_roles = NULL;
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp26_;
	FolksSmallSet* _tmp27_;
	gboolean _tmp28_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_ROLE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_roles = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksRoleDetails* role_details = NULL;
			FolksPersona* _tmp13_;
			FolksRoleDetails* _tmp14_;
			FolksRoleDetails* _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_ROLE_DETAILS) ? ((FolksRoleDetails*) _tmp13_) : NULL);
			role_details = _tmp14_;
			_tmp15_ = role_details;
			if (_tmp15_ != NULL) {
				{
					GeeIterator* _role_fd_it = NULL;
					FolksRoleDetails* _tmp16_;
					GeeSet* _tmp17_;
					GeeSet* _tmp18_;
					GeeIterator* _tmp19_;
					_tmp16_ = role_details;
					_tmp17_ = folks_role_details_get_roles (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, FOLKS_TYPE_ROLE_DETAILS, FolksRoleDetails));
					_tmp18_ = _tmp17_;
					_tmp19_ = gee_iterable_iterator ((GeeIterable*) _tmp18_);
					_role_fd_it = _tmp19_;
					while (TRUE) {
						GeeIterator* _tmp20_;
						gboolean _tmp21_;
						FolksRoleFieldDetails* role_fd = NULL;
						GeeIterator* _tmp22_;
						gpointer _tmp23_;
						FolksSmallSet* _tmp24_;
						FolksRoleFieldDetails* _tmp25_;
						_tmp20_ = _role_fd_it;
						_tmp21_ = gee_iterator_next (_tmp20_);
						if (!_tmp21_) {
							break;
						}
						_tmp22_ = _role_fd_it;
						_tmp23_ = gee_iterator_get (_tmp22_);
						role_fd = (FolksRoleFieldDetails*) _tmp23_;
						_tmp24_ = new_roles;
						_tmp25_ = role_fd;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp24_, _tmp25_);
						_g_object_unref0 (role_fd);
					}
					_g_object_unref0 (_role_fd_it);
				}
			}
			_g_object_unref0 (role_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp26_ = new_roles;
	_tmp27_ = self->priv->_roles;
	_tmp28_ = folks_utils_set_afd_equal ((GeeSet*) _tmp26_, (GeeSet*) _tmp27_);
	if (!_tmp28_) {
		FolksSmallSet* _tmp29_;
		FolksSmallSet* _tmp30_;
		FolksSmallSet* _tmp31_;
		GeeSet* _tmp32_;
		GeeSet* _tmp33_;
		_tmp29_ = new_roles;
		_tmp30_ = _g_object_ref0 (_tmp29_);
		_g_object_unref0 (self->priv->_roles);
		self->priv->_roles = _tmp30_;
		_tmp31_ = new_roles;
		_tmp32_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp31_);
		_tmp33_ = _tmp32_;
		_g_object_unref0 (self->priv->_roles_ro);
		self->priv->_roles_ro = _tmp33_;
		result = TRUE;
		_g_object_unref0 (new_roles);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (new_roles);
	return result;
}


static gboolean ___lambda48__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda48_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_roles (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "roles", _tmp0_, ___lambda46__folks_individual_property_is_null, self, ___lambda47__folks_individual_collection_creator, self, ___lambda48__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda58_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_local_ids;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda58__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda58_ ((FolksIndividual*) self);
	return result;
}


static void __lambda59_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->_local_ids);
	self->priv->_local_ids = _tmp0_;
	_tmp1_ = self->priv->_local_ids;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_local_ids_ro);
	self->priv->_local_ids_ro = _tmp3_;
}


static void ___lambda59__folks_individual_collection_creator (gpointer self) {
	__lambda59_ ((FolksIndividual*) self);
}


static gboolean __lambda60_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_local_ids = NULL;
	FolksSmallSet* _tmp0_;
	gboolean _tmp26_ = FALSE;
	FolksSmallSet* _tmp27_;
	gint _tmp28_;
	gint _tmp29_;
	FolksSmallSet* _tmp30_;
	gint _tmp31_;
	gint _tmp32_;
	_tmp0_ = folks_small_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
	new_local_ids = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksLocalIdDetails* local_id_details = NULL;
			FolksPersona* _tmp13_;
			FolksLocalIdDetails* _tmp14_;
			FolksLocalIdDetails* _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_LOCAL_ID_DETAILS) ? ((FolksLocalIdDetails*) _tmp13_) : NULL);
			local_id_details = _tmp14_;
			_tmp15_ = local_id_details;
			if (_tmp15_ != NULL) {
				{
					GeeIterator* _id_it = NULL;
					FolksLocalIdDetails* _tmp16_;
					GeeSet* _tmp17_;
					GeeSet* _tmp18_;
					GeeIterator* _tmp19_;
					_tmp16_ = local_id_details;
					_tmp17_ = folks_local_id_details_get_local_ids (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, FOLKS_TYPE_LOCAL_ID_DETAILS, FolksLocalIdDetails));
					_tmp18_ = _tmp17_;
					_tmp19_ = gee_iterable_iterator ((GeeIterable*) _tmp18_);
					_id_it = _tmp19_;
					while (TRUE) {
						GeeIterator* _tmp20_;
						gboolean _tmp21_;
						gchar* id = NULL;
						GeeIterator* _tmp22_;
						gpointer _tmp23_;
						FolksSmallSet* _tmp24_;
						const gchar* _tmp25_;
						_tmp20_ = _id_it;
						_tmp21_ = gee_iterator_next (_tmp20_);
						if (!_tmp21_) {
							break;
						}
						_tmp22_ = _id_it;
						_tmp23_ = gee_iterator_get (_tmp22_);
						id = (gchar*) _tmp23_;
						_tmp24_ = new_local_ids;
						_tmp25_ = id;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp24_, _tmp25_);
						_g_free0 (id);
					}
					_g_object_unref0 (_id_it);
				}
			}
			_g_object_unref0 (local_id_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp27_ = new_local_ids;
	_tmp28_ = gee_collection_get_size ((GeeCollection*) _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = self->priv->_local_ids;
	_tmp31_ = gee_collection_get_size ((GeeCollection*) _tmp30_);
	_tmp32_ = _tmp31_;
	if (_tmp29_ != _tmp32_) {
		_tmp26_ = TRUE;
	} else {
		FolksSmallSet* _tmp33_;
		FolksSmallSet* _tmp34_;
		gboolean _tmp35_;
		_tmp33_ = new_local_ids;
		_tmp34_ = self->priv->_local_ids;
		_tmp35_ = gee_collection_contains_all ((GeeCollection*) _tmp33_, (GeeCollection*) _tmp34_);
		_tmp26_ = !_tmp35_;
	}
	if (_tmp26_) {
		FolksSmallSet* _tmp36_;
		FolksSmallSet* _tmp37_;
		FolksSmallSet* _tmp38_;
		GeeSet* _tmp39_;
		GeeSet* _tmp40_;
		_tmp36_ = new_local_ids;
		_tmp37_ = _g_object_ref0 (_tmp36_);
		_g_object_unref0 (self->priv->_local_ids);
		self->priv->_local_ids = _tmp37_;
		_tmp38_ = new_local_ids;
		_tmp39_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp38_);
		_tmp40_ = _tmp39_;
		_g_object_unref0 (self->priv->_local_ids_ro);
		self->priv->_local_ids_ro = _tmp40_;
		result = TRUE;
		_g_object_unref0 (new_local_ids);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (new_local_ids);
	return result;
}


static gboolean ___lambda60__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda60_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_local_ids (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "local-ids", _tmp0_, ___lambda58__folks_individual_property_is_null, self, ___lambda59__folks_individual_collection_creator, self, ___lambda60__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda61_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksPersona* _tmp0_;
	FolksLocation* _tmp1_;
	FolksLocation* _tmp2_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = folks_location_details_get_location (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_LOCATION_DETAILS, FolksLocationDetails));
	_tmp2_ = _tmp1_;
	result = _tmp2_ != NULL;
	return result;
}


static gboolean ___lambda61__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda61_ ((FolksIndividual*) self, persona);
	return result;
}


static gint __lambda62_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	result = 0;
	return result;
}


static gint ___lambda62__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda62_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda63_ (FolksIndividual* self, FolksPersona* p) {
	FolksLocation* new_location = NULL;
	FolksPersona* _tmp0_;
	gboolean _tmp4_ = FALSE;
	FolksLocation* _tmp5_;
	FolksLocation* _tmp6_;
	FolksLocation* _tmp7_;
	new_location = NULL;
	_tmp0_ = p;
	if (_tmp0_ != NULL) {
		FolksPersona* _tmp1_;
		FolksLocation* _tmp2_;
		FolksLocation* _tmp3_;
		_tmp1_ = p;
		_tmp2_ = folks_location_details_get_location (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, FOLKS_TYPE_LOCATION_DETAILS, FolksLocationDetails));
		_tmp3_ = _tmp2_;
		new_location = _tmp3_;
	}
	_tmp5_ = new_location;
	_tmp6_ = folks_location_details_get_location ((FolksLocationDetails*) self);
	_tmp7_ = _tmp6_;
	if ((_tmp5_ == NULL) != (_tmp7_ == NULL)) {
		_tmp4_ = TRUE;
	} else {
		gboolean _tmp8_ = FALSE;
		FolksLocation* _tmp9_;
		_tmp9_ = new_location;
		if (_tmp9_ != NULL) {
			FolksLocation* _tmp10_;
			FolksLocation* _tmp11_;
			FolksLocation* _tmp12_;
			gboolean _tmp13_;
			_tmp10_ = new_location;
			_tmp11_ = folks_location_details_get_location ((FolksLocationDetails*) self);
			_tmp12_ = _tmp11_;
			_tmp13_ = folks_location_equal (_tmp10_, _tmp12_);
			_tmp8_ = !_tmp13_;
		} else {
			_tmp8_ = FALSE;
		}
		_tmp4_ = _tmp8_;
	}
	if (_tmp4_) {
		FolksLocation* _tmp14_;
		FolksLocation* _tmp15_;
		_tmp14_ = new_location;
		_tmp15_ = _g_object_ref0 (_tmp14_);
		_g_object_unref0 (self->priv->_location);
		self->priv->_location = _tmp15_;
		g_object_notify ((GObject*) self, "location");
	}
}


static void ___lambda63__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda63_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_location (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_LOCATION_DETAILS, ___lambda61__folks_individual_property_filter, self, ___lambda62__gcompare_func, "location", ___lambda63__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda55_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_postal_addresses;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda55__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda55_ ((FolksIndividual*) self);
	return result;
}


static void __lambda56_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_postal_addresses);
	self->priv->_postal_addresses = _tmp0_;
	_tmp1_ = self->priv->_postal_addresses;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_postal_addresses_ro);
	self->priv->_postal_addresses_ro = _tmp3_;
}


static void ___lambda56__folks_individual_collection_creator (gpointer self) {
	__lambda56_ ((FolksIndividual*) self);
}


static gboolean __lambda57_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_postal_addresses = NULL;
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp26_;
	FolksSmallSet* _tmp27_;
	gboolean _tmp28_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_postal_addresses = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksPostalAddressDetails* postal_address_details = NULL;
			FolksPersona* _tmp13_;
			FolksPostalAddressDetails* _tmp14_;
			FolksPostalAddressDetails* _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS) ? ((FolksPostalAddressDetails*) _tmp13_) : NULL);
			postal_address_details = _tmp14_;
			_tmp15_ = postal_address_details;
			if (_tmp15_ != NULL) {
				{
					GeeIterator* _pafd_it = NULL;
					FolksPostalAddressDetails* _tmp16_;
					GeeSet* _tmp17_;
					GeeSet* _tmp18_;
					GeeIterator* _tmp19_;
					_tmp16_ = postal_address_details;
					_tmp17_ = folks_postal_address_details_get_postal_addresses (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, FolksPostalAddressDetails));
					_tmp18_ = _tmp17_;
					_tmp19_ = gee_iterable_iterator ((GeeIterable*) _tmp18_);
					_pafd_it = _tmp19_;
					while (TRUE) {
						GeeIterator* _tmp20_;
						gboolean _tmp21_;
						FolksPostalAddressFieldDetails* pafd = NULL;
						GeeIterator* _tmp22_;
						gpointer _tmp23_;
						FolksSmallSet* _tmp24_;
						FolksPostalAddressFieldDetails* _tmp25_;
						_tmp20_ = _pafd_it;
						_tmp21_ = gee_iterator_next (_tmp20_);
						if (!_tmp21_) {
							break;
						}
						_tmp22_ = _pafd_it;
						_tmp23_ = gee_iterator_get (_tmp22_);
						pafd = (FolksPostalAddressFieldDetails*) _tmp23_;
						_tmp24_ = new_postal_addresses;
						_tmp25_ = pafd;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp24_, _tmp25_);
						_g_object_unref0 (pafd);
					}
					_g_object_unref0 (_pafd_it);
				}
			}
			_g_object_unref0 (postal_address_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp26_ = new_postal_addresses;
	_tmp27_ = self->priv->_postal_addresses;
	_tmp28_ = folks_utils_set_afd_equal ((GeeSet*) _tmp26_, (GeeSet*) _tmp27_);
	if (!_tmp28_) {
		FolksSmallSet* _tmp29_;
		FolksSmallSet* _tmp30_;
		FolksSmallSet* _tmp31_;
		GeeSet* _tmp32_;
		GeeSet* _tmp33_;
		_tmp29_ = new_postal_addresses;
		_tmp30_ = _g_object_ref0 (_tmp29_);
		_g_object_unref0 (self->priv->_postal_addresses);
		self->priv->_postal_addresses = _tmp30_;
		_tmp31_ = new_postal_addresses;
		_tmp32_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp31_);
		_tmp33_ = _tmp32_;
		_g_object_unref0 (self->priv->_postal_addresses_ro);
		self->priv->_postal_addresses_ro = _tmp33_;
		result = TRUE;
		_g_object_unref0 (new_postal_addresses);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (new_postal_addresses);
	return result;
}


static gboolean ___lambda57__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda57_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_postal_addresses (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "postal-addresses", _tmp0_, ___lambda55__folks_individual_property_is_null, self, ___lambda56__folks_individual_collection_creator, self, ___lambda57__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static gboolean __lambda49_ (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksBirthdayDetails* details = NULL;
	FolksPersona* _tmp0_;
	FolksBirthdayDetails* _tmp1_;
	gboolean _tmp2_ = FALSE;
	FolksBirthdayDetails* _tmp3_;
	GDateTime* _tmp4_;
	GDateTime* _tmp5_;
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
	details = _tmp1_;
	_tmp3_ = details;
	_tmp4_ = folks_birthday_details_get_birthday (_tmp3_);
	_tmp5_ = _tmp4_;
	if (_tmp5_ != NULL) {
		FolksBirthdayDetails* _tmp6_;
		const gchar* _tmp7_;
		const gchar* _tmp8_;
		_tmp6_ = details;
		_tmp7_ = folks_birthday_details_get_calendar_event_id (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp2_ = _tmp8_ != NULL;
	} else {
		_tmp2_ = FALSE;
	}
	result = _tmp2_;
	_g_object_unref0 (details);
	return result;
}


static gboolean ___lambda49__folks_individual_property_filter (FolksPersona* persona, gpointer self) {
	gboolean result;
	result = __lambda49_ ((FolksIndividual*) self, persona);
	return result;
}


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


static gint __lambda50_ (FolksPersona* a, FolksPersona* b) {
	gint result = 0;
	GDateTime* a_birthday = NULL;
	FolksPersona* _tmp0_;
	GDateTime* _tmp1_;
	GDateTime* _tmp2_;
	GDateTime* _tmp3_;
	GDateTime* b_birthday = NULL;
	FolksPersona* _tmp4_;
	GDateTime* _tmp5_;
	GDateTime* _tmp6_;
	GDateTime* _tmp7_;
	gchar* a_event_id = NULL;
	FolksPersona* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* b_event_id = NULL;
	FolksPersona* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	gchar* _tmp15_;
	gint _tmp16_ = 0;
	GDateTime* _tmp17_;
	gint a_birthday_is_set = 0;
	gint _tmp18_ = 0;
	GDateTime* _tmp19_;
	gint b_birthday_is_set = 0;
	gint _tmp20_ = 0;
	const gchar* _tmp21_;
	gint a_event_id_is_set = 0;
	gint _tmp22_ = 0;
	const gchar* _tmp23_;
	gint b_event_id_is_set = 0;
	gint _tmp24_;
	gint _tmp25_;
	gint _tmp26_;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = folks_birthday_details_get_birthday (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
	_tmp2_ = _tmp1_;
	_tmp3_ = _g_date_time_ref0 (_tmp2_);
	a_birthday = _tmp3_;
	_tmp4_ = b;
	_tmp5_ = folks_birthday_details_get_birthday (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
	_tmp6_ = _tmp5_;
	_tmp7_ = _g_date_time_ref0 (_tmp6_);
	b_birthday = _tmp7_;
	_tmp8_ = a;
	_tmp9_ = folks_birthday_details_get_calendar_event_id (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
	_tmp10_ = _tmp9_;
	_tmp11_ = g_strdup (_tmp10_);
	a_event_id = _tmp11_;
	_tmp12_ = b;
	_tmp13_ = folks_birthday_details_get_calendar_event_id (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
	_tmp14_ = _tmp13_;
	_tmp15_ = g_strdup (_tmp14_);
	b_event_id = _tmp15_;
	_tmp17_ = a_birthday;
	if (_tmp17_ != NULL) {
		_tmp16_ = 1;
	} else {
		_tmp16_ = 0;
	}
	a_birthday_is_set = _tmp16_;
	_tmp19_ = b_birthday;
	if (_tmp19_ != NULL) {
		_tmp18_ = 1;
	} else {
		_tmp18_ = 0;
	}
	b_birthday_is_set = _tmp18_;
	_tmp21_ = a_event_id;
	if (_tmp21_ != NULL) {
		_tmp20_ = 1;
	} else {
		_tmp20_ = 0;
	}
	a_event_id_is_set = _tmp20_;
	_tmp23_ = b_event_id;
	if (_tmp23_ != NULL) {
		_tmp22_ = 1;
	} else {
		_tmp22_ = 0;
	}
	b_event_id_is_set = _tmp22_;
	_tmp24_ = a_birthday_is_set;
	_tmp25_ = a_event_id_is_set;
	_tmp26_ = b_birthday_is_set;
	result = (_tmp24_ + _tmp25_) - (_tmp26_ + b_event_id_is_set);
	_g_free0 (b_event_id);
	_g_free0 (a_event_id);
	_g_date_time_unref0 (b_birthday);
	_g_date_time_unref0 (a_birthday);
	return result;
}


static gint ___lambda50__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda50_ ((FolksPersona*) a, (FolksPersona*) b);
	return result;
}


static void __lambda51_ (FolksIndividual* self, FolksPersona* p) {
	GDateTime* bday = NULL;
	const gchar* calendar_event_id = NULL;
	FolksPersona* _tmp0_;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	GDateTime* _tmp10_;
	bday = NULL;
	calendar_event_id = NULL;
	_tmp0_ = p;
	if (_tmp0_ != NULL) {
		FolksPersona* _tmp1_;
		GDateTime* _tmp2_;
		GDateTime* _tmp3_;
		FolksPersona* _tmp4_;
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		_tmp1_ = p;
		_tmp2_ = folks_birthday_details_get_birthday (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
		_tmp3_ = _tmp2_;
		bday = _tmp3_;
		_tmp4_ = p;
		_tmp5_ = folks_birthday_details_get_calendar_event_id (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, FOLKS_TYPE_BIRTHDAY_DETAILS, FolksBirthdayDetails));
		_tmp6_ = _tmp5_;
		calendar_event_id = _tmp6_;
	}
	_tmp10_ = self->priv->_birthday;
	if (_tmp10_ == NULL) {
		GDateTime* _tmp11_;
		_tmp11_ = bday;
		_tmp9_ = _tmp11_ != NULL;
	} else {
		_tmp9_ = FALSE;
	}
	if (_tmp9_) {
		_tmp8_ = TRUE;
	} else {
		gboolean _tmp12_ = FALSE;
		GDateTime* _tmp13_;
		_tmp13_ = self->priv->_birthday;
		if (_tmp13_ != NULL) {
			gboolean _tmp14_ = FALSE;
			GDateTime* _tmp15_;
			_tmp15_ = bday;
			if (_tmp15_ == NULL) {
				_tmp14_ = TRUE;
			} else {
				GDateTime* _tmp16_;
				GDateTime* _tmp17_;
				gboolean _tmp18_;
				_tmp16_ = self->priv->_birthday;
				_tmp17_ = bday;
				_tmp18_ = g_date_time_equal ((GDateTime*) _tmp16_, (GDateTime*) _tmp17_);
				_tmp14_ = !_tmp18_;
			}
			_tmp12_ = _tmp14_;
		} else {
			_tmp12_ = FALSE;
		}
		_tmp8_ = _tmp12_;
	}
	if (_tmp8_) {
		_tmp7_ = TRUE;
	} else {
		const gchar* _tmp19_;
		const gchar* _tmp20_;
		_tmp19_ = self->priv->_calendar_event_id;
		_tmp20_ = calendar_event_id;
		_tmp7_ = g_strcmp0 (_tmp19_, _tmp20_) != 0;
	}
	if (_tmp7_) {
		GDateTime* _tmp21_;
		GDateTime* _tmp22_;
		const gchar* _tmp23_;
		gchar* _tmp24_;
		_tmp21_ = bday;
		_tmp22_ = _g_date_time_ref0 (_tmp21_);
		_g_date_time_unref0 (self->priv->_birthday);
		self->priv->_birthday = _tmp22_;
		_tmp23_ = calendar_event_id;
		_tmp24_ = g_strdup (_tmp23_);
		_g_free0 (self->priv->_calendar_event_id);
		self->priv->_calendar_event_id = _tmp24_;
		g_object_freeze_notify ((GObject*) self);
		g_object_notify ((GObject*) self, "birthday");
		g_object_notify ((GObject*) self, "calendar-event-id");
		g_object_thaw_notify ((GObject*) self);
	}
}


static void ___lambda51__folks_individual_single_valued_property_setter (FolksPersona* chosen_persona, gpointer self) {
	__lambda51_ ((FolksIndividual*) self, chosen_persona);
}


static void _folks_individual_update_birthday (FolksIndividual* self) {
	g_return_if_fail (self != NULL);
	_folks_individual_update_single_valued_property (self, FOLKS_TYPE_BIRTHDAY_DETAILS, ___lambda49__folks_individual_property_filter, self, ___lambda50__gcompare_func, "birthday", ___lambda51__folks_individual_single_valued_property_setter, self);
}


static gboolean __lambda52_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* _tmp0_;
	_tmp0_ = self->priv->_notes;
	result = _tmp0_ == NULL;
	return result;
}


static gboolean ___lambda52__folks_individual_property_is_null (gpointer self) {
	gboolean result;
	result = __lambda52_ ((FolksIndividual*) self);
	return result;
}


static void __lambda53_ (FolksIndividual* self) {
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp1_;
	GeeSet* _tmp2_;
	GeeSet* _tmp3_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_NOTE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	_g_object_unref0 (self->priv->_notes);
	self->priv->_notes = _tmp0_;
	_tmp1_ = self->priv->_notes;
	_tmp2_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp1_);
	_tmp3_ = _tmp2_;
	_g_object_unref0 (self->priv->_notes_ro);
	self->priv->_notes_ro = _tmp3_;
}


static void ___lambda53__folks_individual_collection_creator (gpointer self) {
	__lambda53_ ((FolksIndividual*) self);
}


static gboolean __lambda54_ (FolksIndividual* self) {
	gboolean result = FALSE;
	FolksSmallSet* new_notes = NULL;
	FolksSmallSet* _tmp0_;
	FolksSmallSet* _tmp26_;
	FolksSmallSet* _tmp27_;
	gboolean _tmp28_;
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_NOTE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, _folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
	new_notes = _tmp0_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp1_;
		FolksSmallSet* _tmp2_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
		gint _persona_index = 0;
		_tmp1_ = self->priv->_persona_set;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_persona_list = _tmp2_;
		_tmp3_ = _persona_list;
		_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
		_tmp5_ = _tmp4_;
		_persona_size = _tmp5_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp6_;
			gint _tmp7_;
			gint _tmp8_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp9_;
			gint _tmp10_;
			gconstpointer _tmp11_;
			FolksPersona* _tmp12_;
			FolksNoteDetails* note_details = NULL;
			FolksPersona* _tmp13_;
			FolksNoteDetails* _tmp14_;
			FolksNoteDetails* _tmp15_;
			_tmp6_ = _persona_index;
			_persona_index = _tmp6_ + 1;
			_tmp7_ = _persona_index;
			_tmp8_ = _persona_size;
			if (!(_tmp7_ < _tmp8_)) {
				break;
			}
			_tmp9_ = _persona_list;
			_tmp10_ = _persona_index;
			_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
			_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
			persona = _tmp12_;
			_tmp13_ = persona;
			_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_NOTE_DETAILS) ? ((FolksNoteDetails*) _tmp13_) : NULL);
			note_details = _tmp14_;
			_tmp15_ = note_details;
			if (_tmp15_ != NULL) {
				{
					GeeIterator* _n_it = NULL;
					FolksNoteDetails* _tmp16_;
					GeeSet* _tmp17_;
					GeeSet* _tmp18_;
					GeeIterator* _tmp19_;
					_tmp16_ = note_details;
					_tmp17_ = folks_note_details_get_notes (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, FOLKS_TYPE_NOTE_DETAILS, FolksNoteDetails));
					_tmp18_ = _tmp17_;
					_tmp19_ = gee_iterable_iterator ((GeeIterable*) _tmp18_);
					_n_it = _tmp19_;
					while (TRUE) {
						GeeIterator* _tmp20_;
						gboolean _tmp21_;
						FolksNoteFieldDetails* n = NULL;
						GeeIterator* _tmp22_;
						gpointer _tmp23_;
						FolksSmallSet* _tmp24_;
						FolksNoteFieldDetails* _tmp25_;
						_tmp20_ = _n_it;
						_tmp21_ = gee_iterator_next (_tmp20_);
						if (!_tmp21_) {
							break;
						}
						_tmp22_ = _n_it;
						_tmp23_ = gee_iterator_get (_tmp22_);
						n = (FolksNoteFieldDetails*) _tmp23_;
						_tmp24_ = new_notes;
						_tmp25_ = n;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp24_, _tmp25_);
						_g_object_unref0 (n);
					}
					_g_object_unref0 (_n_it);
				}
			}
			_g_object_unref0 (note_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp26_ = new_notes;
	_tmp27_ = self->priv->_notes;
	_tmp28_ = folks_utils_set_afd_equal ((GeeSet*) _tmp26_, (GeeSet*) _tmp27_);
	if (!_tmp28_) {
		FolksSmallSet* _tmp29_;
		FolksSmallSet* _tmp30_;
		FolksSmallSet* _tmp31_;
		GeeSet* _tmp32_;
		GeeSet* _tmp33_;
		_tmp29_ = new_notes;
		_tmp30_ = _g_object_ref0 (_tmp29_);
		_g_object_unref0 (self->priv->_notes);
		self->priv->_notes = _tmp30_;
		_tmp31_ = new_notes;
		_tmp32_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp31_);
		_tmp33_ = _tmp32_;
		_g_object_unref0 (self->priv->_notes_ro);
		self->priv->_notes_ro = _tmp33_;
		result = TRUE;
		_g_object_unref0 (new_notes);
		return result;
	}
	result = FALSE;
	_g_object_unref0 (new_notes);
	return result;
}


static gboolean ___lambda54__folks_individual_multi_valued_property_setter (gpointer self) {
	gboolean result;
	result = __lambda54_ ((FolksIndividual*) self);
	return result;
}


static void _folks_individual_update_notes (FolksIndividual* self, gboolean create_if_not_exist, gboolean emit_notification, gboolean force_update) {
	gboolean _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = create_if_not_exist;
	_tmp1_ = emit_notification;
	_tmp2_ = force_update;
	_folks_individual_update_multi_valued_property (self, "notes", _tmp0_, ___lambda52__folks_individual_property_is_null, self, ___lambda53__folks_individual_collection_creator, self, ___lambda54__folks_individual_multi_valued_property_setter, self, _tmp1_, _tmp2_);
}


static void __folks_individual_store_removed_cb_folks_persona_store_removed (FolksPersonaStore* _sender, gpointer self) {
	_folks_individual_store_removed_cb ((FolksIndividual*) 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 ((FolksIndividual*) self, _sender, added, removed, message, actor, reason);
}


static void _folks_individual_set_personas (FolksIndividual* self, GeeSet* personas, FolksIndividual* replacement_individual) {
	gboolean _tmp0_ = FALSE;
	FolksIndividual* _tmp1_;
	FolksSmallSet* added = NULL;
	FolksSmallSet* _tmp3_;
	FolksSmallSet* removed = NULL;
	FolksSmallSet* _tmp4_;
	GeeSet* _tmp5_;
	FolksSmallSet* _tmp95_;
	FolksSmallSet* _tmp96_;
	gboolean _tmp97_ = FALSE;
	guint _tmp98_;
	gboolean new_is_user = FALSE;
	gboolean _tmp99_;
	gboolean _tmp100_;
	FolksSmallSet* _tmp102_;
	gint _tmp103_;
	gint _tmp104_;
	FolksSmallSet* _tmp106_;
	gint _tmp107_;
	gint _tmp108_;
	g_return_if_fail (self != NULL);
	_tmp1_ = replacement_individual;
	if (_tmp1_ == NULL) {
		_tmp0_ = TRUE;
	} else {
		FolksIndividual* _tmp2_;
		_tmp2_ = replacement_individual;
		_tmp0_ = _tmp2_ != self;
	}
	_vala_assert (_tmp0_, "replacement_individual == null || replacement_individual != this");
	_tmp3_ = folks_small_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
	added = _tmp3_;
	_tmp4_ = folks_small_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
	removed = _tmp4_;
	_tmp5_ = personas;
	if (_tmp5_ != NULL) {
		{
			GeeIterator* _p_it = NULL;
			GeeSet* _tmp6_;
			GeeIterator* _tmp7_;
			_tmp6_ = personas;
			_tmp7_ = gee_iterable_iterator ((GeeIterable*) G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_SET, GeeSet));
			_p_it = _tmp7_;
			while (TRUE) {
				GeeIterator* _tmp8_;
				gboolean _tmp9_;
				FolksPersona* p = NULL;
				GeeIterator* _tmp10_;
				gpointer _tmp11_;
				FolksSmallSet* _tmp12_;
				FolksPersona* _tmp13_;
				gboolean _tmp14_;
				_tmp8_ = _p_it;
				_tmp9_ = gee_iterator_next (_tmp8_);
				if (!_tmp9_) {
					break;
				}
				_tmp10_ = _p_it;
				_tmp11_ = gee_iterator_get (_tmp10_);
				p = (FolksPersona*) _tmp11_;
				_tmp12_ = self->priv->_persona_set;
				_tmp13_ = p;
				_tmp14_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp12_, _tmp13_);
				if (!_tmp14_) {
					FolksPersona* _tmp15_;
					gboolean _tmp16_;
					gboolean _tmp17_;
					FolksSmallSet* _tmp19_;
					FolksPersona* _tmp20_;
					FolksSmallSet* _tmp21_;
					FolksPersona* _tmp22_;
					FolksPersona* _tmp23_;
					FolksPersonaStore* store = NULL;
					FolksPersona* _tmp24_;
					FolksPersonaStore* _tmp25_;
					FolksPersonaStore* _tmp26_;
					FolksPersonaStore* _tmp27_;
					guint num_from_store = 0U;
					GeeHashMap* _tmp28_;
					FolksPersonaStore* _tmp29_;
					gpointer _tmp30_;
					guint _tmp31_;
					_tmp15_ = p;
					_tmp16_ = folks_persona_get_is_user (_tmp15_);
					_tmp17_ = _tmp16_;
					if (_tmp17_) {
						guint _tmp18_;
						_tmp18_ = self->priv->_persona_user_count;
						self->priv->_persona_user_count = _tmp18_ + 1;
					}
					_tmp19_ = added;
					_tmp20_ = p;
					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp19_, _tmp20_);
					_tmp21_ = self->priv->_persona_set;
					_tmp22_ = p;
					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp21_, _tmp22_);
					_tmp23_ = p;
					_folks_individual_connect_to_persona (self, _tmp23_);
					_tmp24_ = p;
					_tmp25_ = folks_persona_get_store (_tmp24_);
					_tmp26_ = _tmp25_;
					_tmp27_ = _g_object_ref0 (_tmp26_);
					store = _tmp27_;
					_tmp28_ = self->priv->_stores;
					_tmp29_ = store;
					_tmp30_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp28_, _tmp29_);
					num_from_store = (guint) ((guintptr) _tmp30_);
					_tmp31_ = num_from_store;
					if (_tmp31_ == ((guint) 0)) {
						GeeHashMap* _tmp32_;
						FolksPersonaStore* _tmp33_;
						guint _tmp34_;
						_tmp32_ = self->priv->_stores;
						_tmp33_ = store;
						_tmp34_ = num_from_store;
						gee_abstract_map_set ((GeeAbstractMap*) _tmp32_, _tmp33_, (gpointer) ((guintptr) (_tmp34_ + 1)));
					} else {
						GeeHashMap* _tmp35_;
						FolksPersonaStore* _tmp36_;
						FolksPersonaStore* _tmp37_;
						FolksPersonaStore* _tmp38_;
						_tmp35_ = self->priv->_stores;
						_tmp36_ = store;
						gee_abstract_map_set ((GeeAbstractMap*) _tmp35_, _tmp36_, (gpointer) ((guintptr) ((guint) 1)));
						_tmp37_ = store;
						g_signal_connect_object (_tmp37_, "removed", (GCallback) __folks_individual_store_removed_cb_folks_persona_store_removed, self, 0);
						_tmp38_ = store;
						g_signal_connect_object (_tmp38_, "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);
		}
	}
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp39_;
		FolksSmallSet* _tmp40_;
		gint _p_size = 0;
		FolksSmallSet* _tmp41_;
		gint _tmp42_;
		gint _tmp43_;
		gint _p_index = 0;
		_tmp39_ = self->priv->_persona_set;
		_tmp40_ = _g_object_ref0 (_tmp39_);
		_p_list = _tmp40_;
		_tmp41_ = _p_list;
		_tmp42_ = gee_collection_get_size ((GeeCollection*) _tmp41_);
		_tmp43_ = _tmp42_;
		_p_size = _tmp43_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp44_;
			gint _tmp45_;
			gint _tmp46_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp47_;
			gint _tmp48_;
			gconstpointer _tmp49_;
			FolksPersona* _tmp50_;
			gboolean _tmp51_ = FALSE;
			GeeSet* _tmp52_;
			_tmp44_ = _p_index;
			_p_index = _tmp44_ + 1;
			_tmp45_ = _p_index;
			_tmp46_ = _p_size;
			if (!(_tmp45_ < _tmp46_)) {
				break;
			}
			_tmp47_ = _p_list;
			_tmp48_ = _p_index;
			_tmp49_ = folks_small_set_get (_tmp47_, _tmp48_);
			_tmp50_ = _g_object_ref0 ((FolksPersona*) _tmp49_);
			p = _tmp50_;
			_tmp52_ = personas;
			if (_tmp52_ == NULL) {
				_tmp51_ = TRUE;
			} else {
				GeeSet* _tmp53_;
				FolksPersona* _tmp54_;
				gboolean _tmp55_;
				_tmp53_ = personas;
				_tmp54_ = p;
				_tmp55_ = gee_collection_contains ((GeeCollection*) G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, GEE_TYPE_SET, GeeSet), _tmp54_);
				_tmp51_ = !_tmp55_;
			}
			if (_tmp51_) {
				FolksPersona* _tmp56_;
				gboolean _tmp57_;
				gboolean _tmp58_;
				FolksSmallSet* _tmp60_;
				FolksPersona* _tmp61_;
				FolksPersonaStore* store = NULL;
				FolksPersona* _tmp62_;
				FolksPersonaStore* _tmp63_;
				FolksPersonaStore* _tmp64_;
				FolksPersonaStore* _tmp65_;
				guint num_from_store = 0U;
				GeeHashMap* _tmp66_;
				FolksPersonaStore* _tmp67_;
				gpointer _tmp68_;
				guint _tmp69_;
				FolksPersona* _tmp79_;
				FolksIndividual* _tmp80_;
				_tmp56_ = p;
				_tmp57_ = folks_persona_get_is_user (_tmp56_);
				_tmp58_ = _tmp57_;
				if (_tmp58_) {
					guint _tmp59_;
					_tmp59_ = self->priv->_persona_user_count;
					self->priv->_persona_user_count = _tmp59_ - 1;
				}
				_tmp60_ = removed;
				_tmp61_ = p;
				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp60_, _tmp61_);
				_tmp62_ = p;
				_tmp63_ = folks_persona_get_store (_tmp62_);
				_tmp64_ = _tmp63_;
				_tmp65_ = _g_object_ref0 (_tmp64_);
				store = _tmp65_;
				_tmp66_ = self->priv->_stores;
				_tmp67_ = store;
				_tmp68_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp66_, _tmp67_);
				num_from_store = (guint) ((guintptr) _tmp68_);
				_tmp69_ = num_from_store;
				if (_tmp69_ > ((guint) 1)) {
					GeeHashMap* _tmp70_;
					FolksPersonaStore* _tmp71_;
					guint _tmp72_;
					_tmp70_ = self->priv->_stores;
					_tmp71_ = store;
					_tmp72_ = num_from_store;
					gee_abstract_map_set ((GeeAbstractMap*) _tmp70_, _tmp71_, (gpointer) ((guintptr) (_tmp72_ - 1)));
				} else {
					FolksPersonaStore* _tmp73_;
					guint _tmp74_;
					FolksPersonaStore* _tmp75_;
					guint _tmp76_;
					GeeHashMap* _tmp77_;
					FolksPersonaStore* _tmp78_;
					_tmp73_ = store;
					g_signal_parse_name ("removed", FOLKS_TYPE_PERSONA_STORE, &_tmp74_, NULL, FALSE);
					g_signal_handlers_disconnect_matched (_tmp73_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp74_, 0, NULL, (GCallback) __folks_individual_store_removed_cb_folks_persona_store_removed, self);
					_tmp75_ = store;
					g_signal_parse_name ("personas-changed", FOLKS_TYPE_PERSONA_STORE, &_tmp76_, NULL, FALSE);
					g_signal_handlers_disconnect_matched (_tmp75_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp76_, 0, NULL, (GCallback) __folks_individual_store_personas_changed_cb_folks_persona_store_personas_changed, self);
					_tmp77_ = self->priv->_stores;
					_tmp78_ = store;
					gee_abstract_map_unset ((GeeAbstractMap*) _tmp77_, _tmp78_, NULL);
				}
				_tmp79_ = p;
				_tmp80_ = replacement_individual;
				_folks_individual_disconnect_from_persona (self, _tmp79_, _tmp80_);
				_g_object_unref0 (store);
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	{
		FolksSmallSet* _p_list = NULL;
		FolksSmallSet* _tmp81_;
		FolksSmallSet* _tmp82_;
		gint _p_size = 0;
		FolksSmallSet* _tmp83_;
		gint _tmp84_;
		gint _tmp85_;
		gint _p_index = 0;
		_tmp81_ = removed;
		_tmp82_ = _g_object_ref0 (_tmp81_);
		_p_list = _tmp82_;
		_tmp83_ = _p_list;
		_tmp84_ = gee_collection_get_size ((GeeCollection*) _tmp83_);
		_tmp85_ = _tmp84_;
		_p_size = _tmp85_;
		_p_index = -1;
		while (TRUE) {
			gint _tmp86_;
			gint _tmp87_;
			gint _tmp88_;
			FolksPersona* p = NULL;
			FolksSmallSet* _tmp89_;
			gint _tmp90_;
			gconstpointer _tmp91_;
			FolksPersona* _tmp92_;
			FolksSmallSet* _tmp93_;
			FolksPersona* _tmp94_;
			_tmp86_ = _p_index;
			_p_index = _tmp86_ + 1;
			_tmp87_ = _p_index;
			_tmp88_ = _p_size;
			if (!(_tmp87_ < _tmp88_)) {
				break;
			}
			_tmp89_ = _p_list;
			_tmp90_ = _p_index;
			_tmp91_ = folks_small_set_get (_tmp89_, _tmp90_);
			_tmp92_ = _g_object_ref0 ((FolksPersona*) _tmp91_);
			p = _tmp92_;
			_tmp93_ = self->priv->_persona_set;
			_tmp94_ = p;
			gee_abstract_collection_remove ((GeeAbstractCollection*) _tmp93_, _tmp94_);
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_list);
	}
	_tmp95_ = added;
	_tmp96_ = removed;
	_folks_individual_emit_personas_changed (self, (GeeSet*) _tmp95_, (GeeSet*) _tmp96_);
	_tmp98_ = self->priv->_persona_user_count;
	if (_tmp98_ > ((guint) 0)) {
		_tmp97_ = TRUE;
	} else {
		_tmp97_ = FALSE;
	}
	new_is_user = _tmp97_;
	_tmp99_ = new_is_user;
	_tmp100_ = self->priv->_is_user;
	if (_tmp99_ != _tmp100_) {
		gboolean _tmp101_;
		_tmp101_ = new_is_user;
		folks_individual_set_is_user (self, _tmp101_);
	}
	_tmp102_ = self->priv->_persona_set;
	_tmp103_ = gee_collection_get_size ((GeeCollection*) _tmp102_);
	_tmp104_ = _tmp103_;
	if (_tmp104_ < 1) {
		FolksIndividual* _tmp105_;
		_tmp105_ = replacement_individual;
		g_signal_emit (self, folks_individual_signals[FOLKS_INDIVIDUAL_REMOVED_SIGNAL], 0, _tmp105_);
		_g_object_unref0 (removed);
		_g_object_unref0 (added);
		return;
	}
	_tmp106_ = self->priv->_persona_set;
	_tmp107_ = gee_collection_get_size ((GeeCollection*) _tmp106_);
	_tmp108_ = _tmp107_;
	if (_tmp108_ > 0) {
		FolksPersona* chosen_persona = NULL;
		FolksPersona* _tmp234_;
		const gchar* _tmp235_;
		const gchar* _tmp236_;
		gchar* _tmp237_;
		gchar* _tmp238_;
		chosen_persona = NULL;
		{
			FolksSmallSet* _persona_list = NULL;
			FolksSmallSet* _tmp109_;
			FolksSmallSet* _tmp110_;
			gint _persona_size = 0;
			FolksSmallSet* _tmp111_;
			gint _tmp112_;
			gint _tmp113_;
			gint _persona_index = 0;
			_tmp109_ = self->priv->_persona_set;
			_tmp110_ = _g_object_ref0 (_tmp109_);
			_persona_list = _tmp110_;
			_tmp111_ = _persona_list;
			_tmp112_ = gee_collection_get_size ((GeeCollection*) _tmp111_);
			_tmp113_ = _tmp112_;
			_persona_size = _tmp113_;
			_persona_index = -1;
			while (TRUE) {
				gint _tmp114_;
				gint _tmp115_;
				gint _tmp116_;
				FolksPersona* persona = NULL;
				FolksSmallSet* _tmp117_;
				gint _tmp118_;
				gconstpointer _tmp119_;
				FolksPersona* _tmp120_;
				FolksPersona* _tmp121_;
				FolksPersona* _chosen_persona = NULL;
				FolksPersona* _tmp124_;
				FolksPersona* _tmp125_;
				gboolean _tmp126_ = FALSE;
				gboolean _tmp127_ = FALSE;
				gboolean _tmp128_ = FALSE;
				gboolean _tmp129_ = FALSE;
				FolksPersona* _tmp130_;
				FolksPersonaStore* _tmp131_;
				FolksPersonaStore* _tmp132_;
				gboolean _tmp133_;
				gboolean _tmp134_;
				_tmp114_ = _persona_index;
				_persona_index = _tmp114_ + 1;
				_tmp115_ = _persona_index;
				_tmp116_ = _persona_size;
				if (!(_tmp115_ < _tmp116_)) {
					break;
				}
				_tmp117_ = _persona_list;
				_tmp118_ = _persona_index;
				_tmp119_ = folks_small_set_get (_tmp117_, _tmp118_);
				_tmp120_ = _g_object_ref0 ((FolksPersona*) _tmp119_);
				persona = _tmp120_;
				_tmp121_ = chosen_persona;
				if (_tmp121_ == NULL) {
					FolksPersona* _tmp122_;
					FolksPersona* _tmp123_;
					_tmp122_ = persona;
					_tmp123_ = _g_object_ref0 (_tmp122_);
					_g_object_unref0 (chosen_persona);
					chosen_persona = _tmp123_;
					_g_object_unref0 (persona);
					continue;
				}
				_tmp124_ = chosen_persona;
				_tmp125_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp124_, FOLKS_TYPE_PERSONA, FolksPersona));
				_chosen_persona = _tmp125_;
				_tmp130_ = _chosen_persona;
				_tmp131_ = folks_persona_get_store (_tmp130_);
				_tmp132_ = _tmp131_;
				_tmp133_ = folks_persona_store_get_is_primary_store (_tmp132_);
				_tmp134_ = _tmp133_;
				if (_tmp134_ == FALSE) {
					FolksPersona* _tmp135_;
					FolksPersonaStore* _tmp136_;
					FolksPersonaStore* _tmp137_;
					gboolean _tmp138_;
					gboolean _tmp139_;
					_tmp135_ = persona;
					_tmp136_ = folks_persona_get_store (_tmp135_);
					_tmp137_ = _tmp136_;
					_tmp138_ = folks_persona_store_get_is_primary_store (_tmp137_);
					_tmp139_ = _tmp138_;
					_tmp129_ = _tmp139_ == TRUE;
				} else {
					_tmp129_ = FALSE;
				}
				if (_tmp129_) {
					_tmp128_ = TRUE;
				} else {
					gboolean _tmp140_ = FALSE;
					FolksPersona* _tmp141_;
					FolksPersonaStore* _tmp142_;
					FolksPersonaStore* _tmp143_;
					gboolean _tmp144_;
					gboolean _tmp145_;
					FolksPersona* _tmp146_;
					FolksPersonaStore* _tmp147_;
					FolksPersonaStore* _tmp148_;
					gboolean _tmp149_;
					gboolean _tmp150_;
					_tmp141_ = _chosen_persona;
					_tmp142_ = folks_persona_get_store (_tmp141_);
					_tmp143_ = _tmp142_;
					_tmp144_ = folks_persona_store_get_is_primary_store (_tmp143_);
					_tmp145_ = _tmp144_;
					_tmp146_ = persona;
					_tmp147_ = folks_persona_get_store (_tmp146_);
					_tmp148_ = _tmp147_;
					_tmp149_ = folks_persona_store_get_is_primary_store (_tmp148_);
					_tmp150_ = _tmp149_;
					if (_tmp145_ == _tmp150_) {
						FolksPersona* _tmp151_;
						FolksPersonaStore* _tmp152_;
						FolksPersonaStore* _tmp153_;
						FolksPersonaStoreTrust _tmp154_;
						FolksPersonaStoreTrust _tmp155_;
						FolksPersona* _tmp156_;
						FolksPersonaStore* _tmp157_;
						FolksPersonaStore* _tmp158_;
						FolksPersonaStoreTrust _tmp159_;
						FolksPersonaStoreTrust _tmp160_;
						_tmp151_ = _chosen_persona;
						_tmp152_ = folks_persona_get_store (_tmp151_);
						_tmp153_ = _tmp152_;
						_tmp154_ = folks_persona_store_get_trust_level (_tmp153_);
						_tmp155_ = _tmp154_;
						_tmp156_ = persona;
						_tmp157_ = folks_persona_get_store (_tmp156_);
						_tmp158_ = _tmp157_;
						_tmp159_ = folks_persona_store_get_trust_level (_tmp158_);
						_tmp160_ = _tmp159_;
						_tmp140_ = _tmp155_ > _tmp160_;
					} else {
						_tmp140_ = FALSE;
					}
					_tmp128_ = _tmp140_;
				}
				if (_tmp128_) {
					_tmp127_ = TRUE;
				} else {
					gboolean _tmp161_ = FALSE;
					gboolean _tmp162_ = FALSE;
					FolksPersona* _tmp163_;
					FolksPersonaStore* _tmp164_;
					FolksPersonaStore* _tmp165_;
					gboolean _tmp166_;
					gboolean _tmp167_;
					FolksPersona* _tmp168_;
					FolksPersonaStore* _tmp169_;
					FolksPersonaStore* _tmp170_;
					gboolean _tmp171_;
					gboolean _tmp172_;
					_tmp163_ = _chosen_persona;
					_tmp164_ = folks_persona_get_store (_tmp163_);
					_tmp165_ = _tmp164_;
					_tmp166_ = folks_persona_store_get_is_primary_store (_tmp165_);
					_tmp167_ = _tmp166_;
					_tmp168_ = persona;
					_tmp169_ = folks_persona_get_store (_tmp168_);
					_tmp170_ = _tmp169_;
					_tmp171_ = folks_persona_store_get_is_primary_store (_tmp170_);
					_tmp172_ = _tmp171_;
					if (_tmp167_ == _tmp172_) {
						FolksPersona* _tmp173_;
						FolksPersonaStore* _tmp174_;
						FolksPersonaStore* _tmp175_;
						FolksPersonaStoreTrust _tmp176_;
						FolksPersonaStoreTrust _tmp177_;
						FolksPersona* _tmp178_;
						FolksPersonaStore* _tmp179_;
						FolksPersonaStore* _tmp180_;
						FolksPersonaStoreTrust _tmp181_;
						FolksPersonaStoreTrust _tmp182_;
						_tmp173_ = _chosen_persona;
						_tmp174_ = folks_persona_get_store (_tmp173_);
						_tmp175_ = _tmp174_;
						_tmp176_ = folks_persona_store_get_trust_level (_tmp175_);
						_tmp177_ = _tmp176_;
						_tmp178_ = persona;
						_tmp179_ = folks_persona_get_store (_tmp178_);
						_tmp180_ = _tmp179_;
						_tmp181_ = folks_persona_store_get_trust_level (_tmp180_);
						_tmp182_ = _tmp181_;
						_tmp162_ = _tmp177_ == _tmp182_;
					} else {
						_tmp162_ = FALSE;
					}
					if (_tmp162_) {
						FolksPersona* _tmp183_;
						FolksPersonaStore* _tmp184_;
						FolksPersonaStore* _tmp185_;
						const gchar* _tmp186_;
						const gchar* _tmp187_;
						FolksPersona* _tmp188_;
						FolksPersonaStore* _tmp189_;
						FolksPersonaStore* _tmp190_;
						const gchar* _tmp191_;
						const gchar* _tmp192_;
						_tmp183_ = _chosen_persona;
						_tmp184_ = folks_persona_get_store (_tmp183_);
						_tmp185_ = _tmp184_;
						_tmp186_ = folks_persona_store_get_id (_tmp185_);
						_tmp187_ = _tmp186_;
						_tmp188_ = persona;
						_tmp189_ = folks_persona_get_store (_tmp188_);
						_tmp190_ = _tmp189_;
						_tmp191_ = folks_persona_store_get_id (_tmp190_);
						_tmp192_ = _tmp191_;
						_tmp161_ = g_strcmp0 (_tmp187_, _tmp192_) > 0;
					} else {
						_tmp161_ = FALSE;
					}
					_tmp127_ = _tmp161_;
				}
				if (_tmp127_) {
					_tmp126_ = TRUE;
				} else {
					gboolean _tmp193_ = FALSE;
					gboolean _tmp194_ = FALSE;
					gboolean _tmp195_ = FALSE;
					FolksPersona* _tmp196_;
					FolksPersonaStore* _tmp197_;
					FolksPersonaStore* _tmp198_;
					gboolean _tmp199_;
					gboolean _tmp200_;
					FolksPersona* _tmp201_;
					FolksPersonaStore* _tmp202_;
					FolksPersonaStore* _tmp203_;
					gboolean _tmp204_;
					gboolean _tmp205_;
					_tmp196_ = _chosen_persona;
					_tmp197_ = folks_persona_get_store (_tmp196_);
					_tmp198_ = _tmp197_;
					_tmp199_ = folks_persona_store_get_is_primary_store (_tmp198_);
					_tmp200_ = _tmp199_;
					_tmp201_ = persona;
					_tmp202_ = folks_persona_get_store (_tmp201_);
					_tmp203_ = _tmp202_;
					_tmp204_ = folks_persona_store_get_is_primary_store (_tmp203_);
					_tmp205_ = _tmp204_;
					if (_tmp200_ == _tmp205_) {
						FolksPersona* _tmp206_;
						FolksPersonaStore* _tmp207_;
						FolksPersonaStore* _tmp208_;
						FolksPersonaStoreTrust _tmp209_;
						FolksPersonaStoreTrust _tmp210_;
						FolksPersona* _tmp211_;
						FolksPersonaStore* _tmp212_;
						FolksPersonaStore* _tmp213_;
						FolksPersonaStoreTrust _tmp214_;
						FolksPersonaStoreTrust _tmp215_;
						_tmp206_ = _chosen_persona;
						_tmp207_ = folks_persona_get_store (_tmp206_);
						_tmp208_ = _tmp207_;
						_tmp209_ = folks_persona_store_get_trust_level (_tmp208_);
						_tmp210_ = _tmp209_;
						_tmp211_ = persona;
						_tmp212_ = folks_persona_get_store (_tmp211_);
						_tmp213_ = _tmp212_;
						_tmp214_ = folks_persona_store_get_trust_level (_tmp213_);
						_tmp215_ = _tmp214_;
						_tmp195_ = _tmp210_ == _tmp215_;
					} else {
						_tmp195_ = FALSE;
					}
					if (_tmp195_) {
						FolksPersona* _tmp216_;
						FolksPersonaStore* _tmp217_;
						FolksPersonaStore* _tmp218_;
						const gchar* _tmp219_;
						const gchar* _tmp220_;
						FolksPersona* _tmp221_;
						FolksPersonaStore* _tmp222_;
						FolksPersonaStore* _tmp223_;
						const gchar* _tmp224_;
						const gchar* _tmp225_;
						_tmp216_ = _chosen_persona;
						_tmp217_ = folks_persona_get_store (_tmp216_);
						_tmp218_ = _tmp217_;
						_tmp219_ = folks_persona_store_get_id (_tmp218_);
						_tmp220_ = _tmp219_;
						_tmp221_ = persona;
						_tmp222_ = folks_persona_get_store (_tmp221_);
						_tmp223_ = _tmp222_;
						_tmp224_ = folks_persona_store_get_id (_tmp223_);
						_tmp225_ = _tmp224_;
						_tmp194_ = g_strcmp0 (_tmp220_, _tmp225_) == 0;
					} else {
						_tmp194_ = FALSE;
					}
					if (_tmp194_) {
						FolksPersona* _tmp226_;
						const gchar* _tmp227_;
						const gchar* _tmp228_;
						FolksPersona* _tmp229_;
						const gchar* _tmp230_;
						const gchar* _tmp231_;
						_tmp226_ = _chosen_persona;
						_tmp227_ = folks_persona_get_uid (_tmp226_);
						_tmp228_ = _tmp227_;
						_tmp229_ = persona;
						_tmp230_ = folks_persona_get_uid (_tmp229_);
						_tmp231_ = _tmp230_;
						_tmp193_ = g_strcmp0 (_tmp228_, _tmp231_) > 0;
					} else {
						_tmp193_ = FALSE;
					}
					_tmp126_ = _tmp193_;
				}
				if (_tmp126_) {
					FolksPersona* _tmp232_;
					FolksPersona* _tmp233_;
					_tmp232_ = persona;
					_tmp233_ = _g_object_ref0 (_tmp232_);
					_g_object_unref0 (chosen_persona);
					chosen_persona = _tmp233_;
				}
				_g_object_unref0 (_chosen_persona);
				_g_object_unref0 (persona);
			}
			_g_object_unref0 (_persona_list);
		}
		_tmp234_ = chosen_persona;
		_tmp235_ = folks_persona_get_uid (G_TYPE_CHECK_INSTANCE_CAST (_tmp234_, FOLKS_TYPE_PERSONA, FolksPersona));
		_tmp236_ = _tmp235_;
		_tmp237_ = g_compute_checksum_for_string (G_CHECKSUM_SHA1, _tmp236_, (gsize) -1);
		_tmp238_ = _tmp237_;
		folks_individual_set_id (self, _tmp238_);
		_g_free0 (_tmp238_);
		_g_object_unref0 (chosen_persona);
	} else {
		folks_individual_set_id (self, "");
	}
	_folks_individual_update_fields (self);
	_g_object_unref0 (removed);
	_g_object_unref0 (added);
}


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


/**
   * Anti-linked with a persona?
   *
   * Check whether this individual is anti-linked to {@link Persona} ``p`` at
   * all. If so, ``true`` will be returned — ``false`` will be returned
   * otherwise.
   *
   * Note that this will check for anti-links in either direction, since
   * anti-links are not necessarily symmetric.
   *
   * @param p persona to check for anti-links with
   * @return ``true`` if this individual is anti-linked with persona ``p``;
   * ``false``
   * otherwise
   * @since 0.7.3
   */
gboolean folks_individual_has_anti_link_with_persona (FolksIndividual* self, FolksPersona* p) {
	gboolean result = FALSE;
	FolksAntiLinkable* al = NULL;
	FolksPersona* _tmp0_;
	FolksAntiLinkable* _tmp1_;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (p != NULL, FALSE);
	_tmp0_ = p;
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, FOLKS_TYPE_ANTI_LINKABLE) ? ((FolksAntiLinkable*) _tmp0_) : NULL);
	al = _tmp1_;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp2_;
		FolksSmallSet* _tmp3_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp4_;
		gint _tmp5_;
		gint _tmp6_;
		gint _persona_index = 0;
		_tmp2_ = self->priv->_persona_set;
		_tmp3_ = _g_object_ref0 (_tmp2_);
		_persona_list = _tmp3_;
		_tmp4_ = _persona_list;
		_tmp5_ = gee_collection_get_size ((GeeCollection*) _tmp4_);
		_tmp6_ = _tmp5_;
		_persona_size = _tmp6_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp7_;
			gint _tmp8_;
			gint _tmp9_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp10_;
			gint _tmp11_;
			gconstpointer _tmp12_;
			FolksPersona* _tmp13_;
			FolksAntiLinkable* pl = NULL;
			FolksPersona* _tmp14_;
			FolksAntiLinkable* _tmp15_;
			gboolean _tmp16_ = FALSE;
			gboolean _tmp17_ = FALSE;
			FolksAntiLinkable* _tmp18_;
			_tmp7_ = _persona_index;
			_persona_index = _tmp7_ + 1;
			_tmp8_ = _persona_index;
			_tmp9_ = _persona_size;
			if (!(_tmp8_ < _tmp9_)) {
				break;
			}
			_tmp10_ = _persona_list;
			_tmp11_ = _persona_index;
			_tmp12_ = folks_small_set_get (_tmp10_, _tmp11_);
			_tmp13_ = _g_object_ref0 ((FolksPersona*) _tmp12_);
			persona = _tmp13_;
			_tmp14_ = persona;
			_tmp15_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, FOLKS_TYPE_ANTI_LINKABLE) ? ((FolksAntiLinkable*) _tmp14_) : NULL);
			pl = _tmp15_;
			_tmp18_ = al;
			if (_tmp18_ != NULL) {
				FolksAntiLinkable* _tmp19_;
				FolksPersona* _tmp20_;
				gboolean _tmp21_;
				_tmp19_ = al;
				_tmp20_ = persona;
				_tmp21_ = folks_anti_linkable_has_anti_link_with_persona (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, FOLKS_TYPE_ANTI_LINKABLE, FolksAntiLinkable), _tmp20_);
				_tmp17_ = _tmp21_;
			} else {
				_tmp17_ = FALSE;
			}
			if (_tmp17_) {
				_tmp16_ = TRUE;
			} else {
				gboolean _tmp22_ = FALSE;
				FolksAntiLinkable* _tmp23_;
				_tmp23_ = pl;
				if (_tmp23_ != NULL) {
					FolksAntiLinkable* _tmp24_;
					FolksPersona* _tmp25_;
					gboolean _tmp26_;
					_tmp24_ = pl;
					_tmp25_ = p;
					_tmp26_ = folks_anti_linkable_has_anti_link_with_persona (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, FOLKS_TYPE_ANTI_LINKABLE, FolksAntiLinkable), _tmp25_);
					_tmp22_ = _tmp26_;
				} else {
					_tmp22_ = FALSE;
				}
				_tmp16_ = _tmp22_;
			}
			if (_tmp16_) {
				result = TRUE;
				_g_object_unref0 (pl);
				_g_object_unref0 (persona);
				_g_object_unref0 (_persona_list);
				_g_object_unref0 (al);
				return result;
			}
			_g_object_unref0 (pl);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	result = FALSE;
	_g_object_unref0 (al);
	return result;
}


/**
   * Anti-linked with an individual?
   *
   * Check whether this individual is anti-linked to any of the {@link Persona}s
   * in {@link Folks.Individual} ``i``. If so, ``true`` will be returned —
   * ``false`` will be returned otherwise.
   *
   * Note that this will check for anti-links in either direction, since
   * anti-links are not necessarily symmetric.
   *
   * @param i individual to check for anti-links with
   * @return ``true`` if this individual is anti-linked with individual ``i``;
   * ``false`` otherwise
   * @since 0.7.3
   */
gboolean folks_individual_has_anti_link_with_individual (FolksIndividual* self, FolksIndividual* i) {
	gboolean result = FALSE;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (i != NULL, FALSE);
	{
		GeeIterator* _p_it = NULL;
		FolksIndividual* _tmp0_;
		GeeSet* _tmp1_;
		GeeSet* _tmp2_;
		GeeIterator* _tmp3_;
		_tmp0_ = i;
		_tmp1_ = folks_individual_get_personas (_tmp0_);
		_tmp2_ = _tmp1_;
		_tmp3_ = gee_iterable_iterator ((GeeIterable*) _tmp2_);
		_p_it = _tmp3_;
		while (TRUE) {
			GeeIterator* _tmp4_;
			gboolean _tmp5_;
			FolksPersona* p = NULL;
			GeeIterator* _tmp6_;
			gpointer _tmp7_;
			FolksPersona* _tmp8_;
			gboolean _tmp9_;
			_tmp4_ = _p_it;
			_tmp5_ = gee_iterator_next (_tmp4_);
			if (!_tmp5_) {
				break;
			}
			_tmp6_ = _p_it;
			_tmp7_ = gee_iterator_get (_tmp6_);
			p = (FolksPersona*) _tmp7_;
			_tmp8_ = p;
			_tmp9_ = folks_individual_has_anti_link_with_persona (self, _tmp8_);
			if (_tmp9_ == TRUE) {
				result = TRUE;
				_g_object_unref0 (p);
				_g_object_unref0 (_p_it);
				return result;
			}
			_g_object_unref0 (p);
		}
		_g_object_unref0 (_p_it);
	}
	result = FALSE;
	return result;
}


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


static void folks_individual_set_trust_level (FolksIndividual* self, FolksTrustLevel value) {
	g_return_if_fail (self != NULL);
	if (folks_individual_get_trust_level (self) != value) {
		FolksTrustLevel _tmp0_;
		_tmp0_ = value;
		self->priv->_trust_level = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_TRUST_LEVEL]);
	}
}


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


static void folks_individual_real_set_avatar (FolksAvatarDetails* base, GLoadableIcon* value) {
	FolksIndividual* self;
	GLoadableIcon* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_avatar_details_change_avatar ((FolksAvatarDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_presence_type (FolksPresenceDetails* base, FolksPresenceType value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	if (folks_individual_real_get_presence_type (base) != value) {
		FolksPresenceType _tmp0_;
		_tmp0_ = value;
		self->priv->_presence_type = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_PRESENCE_TYPE]);
	}
}


static const gchar* folks_individual_real_get_presence_status (FolksPresenceDetails* base) {
	const gchar* result;
	FolksIndividual* self;
	const gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = self->priv->_presence_status;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_presence_status (FolksPresenceDetails* base, const gchar* value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	if (g_strcmp0 (value, folks_individual_real_get_presence_status (base)) != 0) {
		const gchar* _tmp0_;
		gchar* _tmp1_;
		_tmp0_ = value;
		_tmp1_ = g_strdup (_tmp0_);
		_g_free0 (self->priv->_presence_status);
		self->priv->_presence_status = _tmp1_;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_PRESENCE_STATUS]);
	}
}


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


static void folks_individual_real_set_presence_message (FolksPresenceDetails* base, const gchar* value) {
	FolksIndividual* self;
	self = (FolksIndividual*) base;
	if (g_strcmp0 (value, folks_individual_real_get_presence_message (base)) != 0) {
		const gchar* _tmp0_;
		gchar* _tmp1_;
		_tmp0_ = value;
		_tmp1_ = g_strdup (_tmp0_);
		_g_free0 (self->priv->_presence_message);
		self->priv->_presence_message = _tmp1_;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_PRESENCE_MESSAGE]);
	}
}


static gchar** folks_individual_real_get_client_types (FolksPresenceDetails* base, int* result_length1) {
	gchar** result;
	FolksIndividual* self;
	gchar** _tmp0_;
	gint _tmp0__length1;
	gchar** _tmp1_;
	gint _tmp1__length1;
	self = (FolksIndividual*) base;
	_tmp0_ = self->priv->_client_types;
	_tmp0__length1 = self->priv->_client_types_length1;
	_tmp1_ = _tmp0_;
	_tmp1__length1 = _tmp0__length1;
	if (result_length1) {
		*result_length1 = _tmp1__length1;
	}
	result = _tmp1_;
	return result;
}


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


static void folks_individual_real_set_client_types (FolksPresenceDetails* base, gchar** value, int value_length1) {
	FolksIndividual* self;
	int old_value_length;
	self = (FolksIndividual*) base;
	if (folks_individual_real_get_client_types (base, &old_value_length) != value) {
		gchar** _tmp0_;
		gint _tmp0__length1;
		gchar** _tmp1_;
		gint _tmp1__length1;
		_tmp0_ = value;
		_tmp0__length1 = value_length1;
		_tmp1_ = (_tmp0_ != NULL) ? _vala_array_dup2 (_tmp0_, _tmp0__length1) : ((gpointer) _tmp0_);
		_tmp1__length1 = _tmp0__length1;
		self->priv->_client_types = (_vala_array_free (self->priv->_client_types, self->priv->_client_types_length1, (GDestroyNotify) g_free), NULL);
		self->priv->_client_types = _tmp1_;
		self->priv->_client_types_length1 = _tmp1__length1;
		self->priv->__client_types_size_ = self->priv->_client_types_length1;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_CLIENT_TYPES]);
	}
}


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


static void folks_individual_set_is_user (FolksIndividual* self, gboolean value) {
	g_return_if_fail (self != NULL);
	if (folks_individual_get_is_user (self) != value) {
		gboolean _tmp0_;
		_tmp0_ = value;
		self->priv->_is_user = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_IS_USER]);
	}
}


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


static void folks_individual_set_id (FolksIndividual* self, const gchar* value) {
	g_return_if_fail (self != NULL);
	if (g_strcmp0 (value, folks_individual_get_id (self)) != 0) {
		const gchar* _tmp0_;
		gchar* _tmp1_;
		_tmp0_ = value;
		_tmp1_ = g_strdup (_tmp0_);
		_g_free0 (self->priv->_id);
		self->priv->_id = _tmp1_;
		g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_ID]);
	}
}


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


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


static void folks_individual_real_set_alias (FolksAliasDetails* base, const gchar* value) {
	FolksIndividual* self;
	const gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_alias_details_change_alias ((FolksAliasDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_structured_name (FolksNameDetails* base, FolksStructuredName* value) {
	FolksIndividual* self;
	FolksStructuredName* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_name_details_change_structured_name ((FolksNameDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_full_name (FolksNameDetails* base, const gchar* value) {
	FolksIndividual* self;
	const gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_name_details_change_full_name ((FolksNameDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_nickname (FolksNameDetails* base, const gchar* value) {
	FolksIndividual* self;
	const gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_name_details_change_nickname ((FolksNameDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_gender (FolksGenderDetails* base, FolksGender value) {
	FolksIndividual* self;
	FolksGender _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_gender_details_change_gender ((FolksGenderDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_urls (FolksUrlDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_urls (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_urls_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_urls (FolksUrlDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_url_details_change_urls ((FolksUrlDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_phone_numbers (FolksPhoneDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_phone_numbers (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_phone_numbers_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_phone_numbers (FolksPhoneDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_phone_details_change_phone_numbers ((FolksPhoneDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_email_addresses (FolksEmailDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_email_addresses (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_email_addresses_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_email_addresses (FolksEmailDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_email_details_change_email_addresses ((FolksEmailDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_roles (FolksRoleDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_roles (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_roles_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_roles (FolksRoleDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_role_details_change_roles ((FolksRoleDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_local_ids (FolksLocalIdDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_local_ids (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_local_ids_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_local_ids (FolksLocalIdDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_local_id_details_change_local_ids ((FolksLocalIdDetails*) self, _tmp0_, NULL, NULL);
}


static FolksLocation* folks_individual_real_get_location (FolksLocationDetails* base) {
	FolksLocation* result;
	FolksIndividual* self;
	FolksLocation* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = self->priv->_location;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_location (FolksLocationDetails* base, FolksLocation* value) {
	FolksIndividual* self;
	FolksLocation* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_location_details_change_location ((FolksLocationDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_birthday (FolksBirthdayDetails* base, GDateTime* value) {
	FolksIndividual* self;
	GDateTime* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_birthday_details_change_birthday ((FolksBirthdayDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_calendar_event_id (FolksBirthdayDetails* base, const gchar* value) {
	FolksIndividual* self;
	const gchar* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_birthday_details_change_calendar_event_id ((FolksBirthdayDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_notes (FolksNoteDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_notes (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_notes_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_notes (FolksNoteDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_note_details_change_notes ((FolksNoteDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_postal_addresses (FolksPostalAddressDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_postal_addresses (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_postal_addresses_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_postal_addresses (FolksPostalAddressDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_postal_address_details_change_postal_addresses ((FolksPostalAddressDetails*) self, _tmp0_, NULL, NULL);
}


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


static void folks_individual_real_set_is_favourite (FolksFavouriteDetails* base, gboolean value) {
	FolksIndividual* self;
	gboolean _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_favourite_details_change_is_favourite ((FolksFavouriteDetails*) self, _tmp0_, NULL, NULL);
}


static GeeSet* folks_individual_real_get_groups (FolksGroupDetails* base) {
	GeeSet* result;
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_groups (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_groups_ro;
	result = _tmp0_;
	return result;
}


static void folks_individual_real_set_groups (FolksGroupDetails* base, GeeSet* value) {
	FolksIndividual* self;
	GeeSet* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_group_details_change_groups ((FolksGroupDetails*) self, _tmp0_, NULL, NULL);
}


static GeeMultiMap* folks_individual_real_get_im_addresses (FolksImDetails* base) {
	GeeMultiMap* result;
	FolksIndividual* self;
	GeeHashMultiMap* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_im_addresses (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_im_addresses;
	result = (GeeMultiMap*) _tmp0_;
	return result;
}


static void folks_individual_real_set_im_addresses (FolksImDetails* base, GeeMultiMap* value) {
	FolksIndividual* self;
	GeeMultiMap* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_im_details_change_im_addresses ((FolksImDetails*) self, _tmp0_, NULL, NULL);
}


static GeeMultiMap* folks_individual_real_get_web_service_addresses (FolksWebServiceDetails* base) {
	GeeMultiMap* result;
	FolksIndividual* self;
	GeeHashMultiMap* _tmp0_;
	self = (FolksIndividual*) base;
	_folks_individual_update_web_service_addresses (self, TRUE, FALSE, FALSE);
	_tmp0_ = self->priv->_web_service_addresses;
	result = (GeeMultiMap*) _tmp0_;
	return result;
}


static void folks_individual_real_set_web_service_addresses (FolksWebServiceDetails* base, GeeMultiMap* value) {
	FolksIndividual* self;
	GeeMultiMap* _tmp0_;
	self = (FolksIndividual*) base;
	_tmp0_ = value;
	folks_web_service_details_change_web_service_addresses ((FolksWebServiceDetails*) self, _tmp0_, NULL, NULL);
}


static guint folks_individual_real_get_im_interaction_count (FolksInteractionDetails* base) {
	guint result;
	FolksIndividual* self;
	guint counter = 0U;
	guint _tmp19_;
	self = (FolksIndividual*) base;
	counter = (guint) 0;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp0_;
		FolksSmallSet* _tmp1_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _persona_index = 0;
		_tmp0_ = self->priv->_persona_set;
		_tmp1_ = _g_object_ref0 (_tmp0_);
		_persona_list = _tmp1_;
		_tmp2_ = _persona_list;
		_tmp3_ = gee_collection_get_size ((GeeCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_persona_size = _tmp4_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			gint _tmp7_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp8_;
			gint _tmp9_;
			gconstpointer _tmp10_;
			FolksPersona* _tmp11_;
			FolksInteractionDetails* my_interaction_details = NULL;
			FolksPersona* _tmp12_;
			FolksInteractionDetails* _tmp13_;
			FolksInteractionDetails* _tmp14_;
			_tmp5_ = _persona_index;
			_persona_index = _tmp5_ + 1;
			_tmp6_ = _persona_index;
			_tmp7_ = _persona_size;
			if (!(_tmp6_ < _tmp7_)) {
				break;
			}
			_tmp8_ = _persona_list;
			_tmp9_ = _persona_index;
			_tmp10_ = folks_small_set_get (_tmp8_, _tmp9_);
			_tmp11_ = _g_object_ref0 ((FolksPersona*) _tmp10_);
			persona = _tmp11_;
			_tmp12_ = persona;
			_tmp13_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, FOLKS_TYPE_INTERACTION_DETAILS) ? ((FolksInteractionDetails*) _tmp12_) : NULL);
			my_interaction_details = _tmp13_;
			_tmp14_ = my_interaction_details;
			if (_tmp14_ != NULL) {
				guint _tmp15_;
				FolksInteractionDetails* _tmp16_;
				guint _tmp17_;
				guint _tmp18_;
				_tmp15_ = counter;
				_tmp16_ = my_interaction_details;
				_tmp17_ = folks_interaction_details_get_im_interaction_count (_tmp16_);
				_tmp18_ = _tmp17_;
				counter = _tmp15_ + _tmp18_;
			}
			_g_object_unref0 (my_interaction_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp19_ = counter;
	result = _tmp19_;
	return result;
}


static GDateTime* folks_individual_real_get_last_im_interaction_datetime (FolksInteractionDetails* base) {
	GDateTime* result;
	FolksIndividual* self;
	GDateTime* _tmp0_;
	GDateTime* _tmp33_;
	self = (FolksIndividual*) base;
	_tmp0_ = self->priv->_last_im_interaction_datetime;
	if (_tmp0_ == NULL) {
		{
			FolksSmallSet* _persona_list = NULL;
			FolksSmallSet* _tmp1_;
			FolksSmallSet* _tmp2_;
			gint _persona_size = 0;
			FolksSmallSet* _tmp3_;
			gint _tmp4_;
			gint _tmp5_;
			gint _persona_index = 0;
			_tmp1_ = self->priv->_persona_set;
			_tmp2_ = _g_object_ref0 (_tmp1_);
			_persona_list = _tmp2_;
			_tmp3_ = _persona_list;
			_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
			_tmp5_ = _tmp4_;
			_persona_size = _tmp5_;
			_persona_index = -1;
			while (TRUE) {
				gint _tmp6_;
				gint _tmp7_;
				gint _tmp8_;
				FolksPersona* persona = NULL;
				FolksSmallSet* _tmp9_;
				gint _tmp10_;
				gconstpointer _tmp11_;
				FolksPersona* _tmp12_;
				FolksInteractionDetails* my_interaction_details = NULL;
				FolksPersona* _tmp13_;
				FolksInteractionDetails* _tmp14_;
				gboolean _tmp15_ = FALSE;
				FolksInteractionDetails* _tmp16_;
				_tmp6_ = _persona_index;
				_persona_index = _tmp6_ + 1;
				_tmp7_ = _persona_index;
				_tmp8_ = _persona_size;
				if (!(_tmp7_ < _tmp8_)) {
					break;
				}
				_tmp9_ = _persona_list;
				_tmp10_ = _persona_index;
				_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
				_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
				persona = _tmp12_;
				_tmp13_ = persona;
				_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_INTERACTION_DETAILS) ? ((FolksInteractionDetails*) _tmp13_) : NULL);
				my_interaction_details = _tmp14_;
				_tmp16_ = my_interaction_details;
				if (_tmp16_ != NULL) {
					FolksInteractionDetails* _tmp17_;
					GDateTime* _tmp18_;
					GDateTime* _tmp19_;
					_tmp17_ = my_interaction_details;
					_tmp18_ = folks_interaction_details_get_last_im_interaction_datetime (_tmp17_);
					_tmp19_ = _tmp18_;
					_tmp15_ = _tmp19_ != NULL;
				} else {
					_tmp15_ = FALSE;
				}
				if (_tmp15_) {
					GDateTime* interaction_datetime = NULL;
					FolksInteractionDetails* _tmp20_;
					GDateTime* _tmp21_;
					GDateTime* _tmp22_;
					GDateTime* _tmp23_;
					gboolean _tmp24_ = FALSE;
					GDateTime* _tmp25_;
					_tmp20_ = my_interaction_details;
					_tmp21_ = folks_interaction_details_get_last_im_interaction_datetime (_tmp20_);
					_tmp22_ = _tmp21_;
					_tmp23_ = _g_date_time_ref0 (_tmp22_);
					interaction_datetime = _tmp23_;
					_tmp25_ = self->priv->_last_im_interaction_datetime;
					if (_tmp25_ == NULL) {
						_tmp24_ = TRUE;
					} else {
						GDateTime* _tmp26_;
						GDateTime* _tmp27_;
						gint _tmp28_;
						_tmp26_ = interaction_datetime;
						_tmp27_ = self->priv->_last_im_interaction_datetime;
						_tmp28_ = g_date_time_compare (_tmp26_, _tmp27_);
						_tmp24_ = _tmp28_ == 1;
					}
					if (_tmp24_) {
						FolksInteractionDetails* _tmp29_;
						GDateTime* _tmp30_;
						GDateTime* _tmp31_;
						GDateTime* _tmp32_;
						_tmp29_ = my_interaction_details;
						_tmp30_ = folks_interaction_details_get_last_im_interaction_datetime (_tmp29_);
						_tmp31_ = _tmp30_;
						_tmp32_ = _g_date_time_ref0 (_tmp31_);
						_g_date_time_unref0 (self->priv->_last_im_interaction_datetime);
						self->priv->_last_im_interaction_datetime = _tmp32_;
					}
					_g_date_time_unref0 (interaction_datetime);
				}
				_g_object_unref0 (my_interaction_details);
				_g_object_unref0 (persona);
			}
			_g_object_unref0 (_persona_list);
		}
	}
	_tmp33_ = self->priv->_last_im_interaction_datetime;
	result = _tmp33_;
	return result;
}


static guint folks_individual_real_get_call_interaction_count (FolksInteractionDetails* base) {
	guint result;
	FolksIndividual* self;
	guint counter = 0U;
	guint _tmp19_;
	self = (FolksIndividual*) base;
	counter = (guint) 0;
	{
		FolksSmallSet* _persona_list = NULL;
		FolksSmallSet* _tmp0_;
		FolksSmallSet* _tmp1_;
		gint _persona_size = 0;
		FolksSmallSet* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _persona_index = 0;
		_tmp0_ = self->priv->_persona_set;
		_tmp1_ = _g_object_ref0 (_tmp0_);
		_persona_list = _tmp1_;
		_tmp2_ = _persona_list;
		_tmp3_ = gee_collection_get_size ((GeeCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_persona_size = _tmp4_;
		_persona_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			gint _tmp7_;
			FolksPersona* persona = NULL;
			FolksSmallSet* _tmp8_;
			gint _tmp9_;
			gconstpointer _tmp10_;
			FolksPersona* _tmp11_;
			FolksInteractionDetails* my_interaction_details = NULL;
			FolksPersona* _tmp12_;
			FolksInteractionDetails* _tmp13_;
			FolksInteractionDetails* _tmp14_;
			_tmp5_ = _persona_index;
			_persona_index = _tmp5_ + 1;
			_tmp6_ = _persona_index;
			_tmp7_ = _persona_size;
			if (!(_tmp6_ < _tmp7_)) {
				break;
			}
			_tmp8_ = _persona_list;
			_tmp9_ = _persona_index;
			_tmp10_ = folks_small_set_get (_tmp8_, _tmp9_);
			_tmp11_ = _g_object_ref0 ((FolksPersona*) _tmp10_);
			persona = _tmp11_;
			_tmp12_ = persona;
			_tmp13_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, FOLKS_TYPE_INTERACTION_DETAILS) ? ((FolksInteractionDetails*) _tmp12_) : NULL);
			my_interaction_details = _tmp13_;
			_tmp14_ = my_interaction_details;
			if (_tmp14_ != NULL) {
				guint _tmp15_;
				FolksInteractionDetails* _tmp16_;
				guint _tmp17_;
				guint _tmp18_;
				_tmp15_ = counter;
				_tmp16_ = my_interaction_details;
				_tmp17_ = folks_interaction_details_get_call_interaction_count (_tmp16_);
				_tmp18_ = _tmp17_;
				counter = _tmp15_ + _tmp18_;
			}
			_g_object_unref0 (my_interaction_details);
			_g_object_unref0 (persona);
		}
		_g_object_unref0 (_persona_list);
	}
	_tmp19_ = counter;
	result = _tmp19_;
	return result;
}


static GDateTime* folks_individual_real_get_last_call_interaction_datetime (FolksInteractionDetails* base) {
	GDateTime* result;
	FolksIndividual* self;
	GDateTime* _tmp0_;
	GDateTime* _tmp33_;
	self = (FolksIndividual*) base;
	_tmp0_ = self->priv->_last_call_interaction_datetime;
	if (_tmp0_ == NULL) {
		{
			FolksSmallSet* _persona_list = NULL;
			FolksSmallSet* _tmp1_;
			FolksSmallSet* _tmp2_;
			gint _persona_size = 0;
			FolksSmallSet* _tmp3_;
			gint _tmp4_;
			gint _tmp5_;
			gint _persona_index = 0;
			_tmp1_ = self->priv->_persona_set;
			_tmp2_ = _g_object_ref0 (_tmp1_);
			_persona_list = _tmp2_;
			_tmp3_ = _persona_list;
			_tmp4_ = gee_collection_get_size ((GeeCollection*) _tmp3_);
			_tmp5_ = _tmp4_;
			_persona_size = _tmp5_;
			_persona_index = -1;
			while (TRUE) {
				gint _tmp6_;
				gint _tmp7_;
				gint _tmp8_;
				FolksPersona* persona = NULL;
				FolksSmallSet* _tmp9_;
				gint _tmp10_;
				gconstpointer _tmp11_;
				FolksPersona* _tmp12_;
				FolksInteractionDetails* my_interaction_details = NULL;
				FolksPersona* _tmp13_;
				FolksInteractionDetails* _tmp14_;
				gboolean _tmp15_ = FALSE;
				FolksInteractionDetails* _tmp16_;
				_tmp6_ = _persona_index;
				_persona_index = _tmp6_ + 1;
				_tmp7_ = _persona_index;
				_tmp8_ = _persona_size;
				if (!(_tmp7_ < _tmp8_)) {
					break;
				}
				_tmp9_ = _persona_list;
				_tmp10_ = _persona_index;
				_tmp11_ = folks_small_set_get (_tmp9_, _tmp10_);
				_tmp12_ = _g_object_ref0 ((FolksPersona*) _tmp11_);
				persona = _tmp12_;
				_tmp13_ = persona;
				_tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, FOLKS_TYPE_INTERACTION_DETAILS) ? ((FolksInteractionDetails*) _tmp13_) : NULL);
				my_interaction_details = _tmp14_;
				_tmp16_ = my_interaction_details;
				if (_tmp16_ != NULL) {
					FolksInteractionDetails* _tmp17_;
					GDateTime* _tmp18_;
					GDateTime* _tmp19_;
					_tmp17_ = my_interaction_details;
					_tmp18_ = folks_interaction_details_get_last_call_interaction_datetime (_tmp17_);
					_tmp19_ = _tmp18_;
					_tmp15_ = _tmp19_ != NULL;
				} else {
					_tmp15_ = FALSE;
				}
				if (_tmp15_) {
					GDateTime* interaction_datetime = NULL;
					FolksInteractionDetails* _tmp20_;
					GDateTime* _tmp21_;
					GDateTime* _tmp22_;
					GDateTime* _tmp23_;
					gboolean _tmp24_ = FALSE;
					GDateTime* _tmp25_;
					_tmp20_ = my_interaction_details;
					_tmp21_ = folks_interaction_details_get_last_call_interaction_datetime (_tmp20_);
					_tmp22_ = _tmp21_;
					_tmp23_ = _g_date_time_ref0 (_tmp22_);
					interaction_datetime = _tmp23_;
					_tmp25_ = self->priv->_last_call_interaction_datetime;
					if (_tmp25_ == NULL) {
						_tmp24_ = TRUE;
					} else {
						GDateTime* _tmp26_;
						GDateTime* _tmp27_;
						gint _tmp28_;
						_tmp26_ = interaction_datetime;
						_tmp27_ = self->priv->_last_call_interaction_datetime;
						_tmp28_ = g_date_time_compare (_tmp26_, _tmp27_);
						_tmp24_ = _tmp28_ > 1;
					}
					if (_tmp24_) {
						FolksInteractionDetails* _tmp29_;
						GDateTime* _tmp30_;
						GDateTime* _tmp31_;
						GDateTime* _tmp32_;
						_tmp29_ = my_interaction_details;
						_tmp30_ = folks_interaction_details_get_last_call_interaction_datetime (_tmp29_);
						_tmp31_ = _tmp30_;
						_tmp32_ = _g_date_time_ref0 (_tmp31_);
						_g_date_time_unref0 (self->priv->_last_call_interaction_datetime);
						self->priv->_last_call_interaction_datetime = _tmp32_;
					}
					_g_date_time_unref0 (interaction_datetime);
				}
				_g_object_unref0 (my_interaction_details);
				_g_object_unref0 (persona);
			}
			_g_object_unref0 (_persona_list);
		}
	}
	_tmp33_ = self->priv->_last_call_interaction_datetime;
	result = _tmp33_;
	return result;
}


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


void folks_individual_set_personas (FolksIndividual* self, GeeSet* value) {
	GeeSet* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	_folks_individual_set_personas (self, _tmp0_, NULL);
	g_object_notify_by_pspec ((GObject *) self, folks_individual_properties[FOLKS_INDIVIDUAL_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;
	register gpointer 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 GObject * folks_individual_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	FolksIndividual * self;
	FolksSmallSet* _tmp0_;
	GeeSet* _tmp1_;
	GeeSet* _tmp2_;
	parent_class = G_OBJECT_CLASS (folks_individual_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, FOLKS_TYPE_INDIVIDUAL, FolksIndividual);
	_tmp0_ = self->priv->_persona_set;
	_tmp1_ = gee_abstract_set_get_read_only_view ((GeeAbstractSet*) _tmp0_);
	_tmp2_ = _tmp1_;
	_g_object_unref0 (self->priv->_persona_set_ro);
	self->priv->_persona_set_ro = _tmp2_;
	return obj;
}


static FolksIndividual_Notifier* folks_individual__notifier_dup (const FolksIndividual_Notifier* self) {
	FolksIndividual_Notifier* dup;
	dup = g_new0 (FolksIndividual_Notifier, 1);
	memcpy (dup, self, sizeof (FolksIndividual_Notifier));
	return dup;
}


static void folks_individual__notifier_free (FolksIndividual_Notifier* self) {
	g_free (self);
}


static GType folks_individual__notifier_get_type (void) {
	static volatile gsize folks_individual__notifier_type_id__volatile = 0;
	if (g_once_init_enter (&folks_individual__notifier_type_id__volatile)) {
		GType folks_individual__notifier_type_id;
		folks_individual__notifier_type_id = g_boxed_type_register_static ("FolksIndividual_Notifier", (GBoxedCopyFunc) folks_individual__notifier_dup, (GBoxedFreeFunc) folks_individual__notifier_free);
		g_once_init_leave (&folks_individual__notifier_type_id__volatile, folks_individual__notifier_type_id);
	}
	return folks_individual__notifier_type_id__volatile;
}


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)->constructor = folks_individual_constructor;
	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, folks_individual_properties[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}
	   *
	   * @since 0.6.0
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_AVATAR, folks_individual_properties[FOLKS_INDIVIDUAL_AVATAR] = g_param_spec_object ("avatar", "avatar", "avatar", g_loadable_icon_get_type (), G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PRESENCE_TYPE, folks_individual_properties[FOLKS_INDIVIDUAL_PRESENCE_TYPE] = g_param_spec_enum ("presence-type", "presence-type", "presence-type", FOLKS_TYPE_PRESENCE_TYPE, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   *
	   * @since 0.6.0
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PRESENCE_STATUS, folks_individual_properties[FOLKS_INDIVIDUAL_PRESENCE_STATUS] = g_param_spec_string ("presence-status", "presence-status", "presence-status", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PRESENCE_MESSAGE, folks_individual_properties[FOLKS_INDIVIDUAL_PRESENCE_MESSAGE] = g_param_spec_string ("presence-message", "presence-message", "presence-message", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   *
	   * @since 0.9.5
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_CLIENT_TYPES, folks_individual_properties[FOLKS_INDIVIDUAL_CLIENT_TYPES] = g_param_spec_boxed ("client-types", "client-types", "client-types", G_TYPE_STRV, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * 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, folks_individual_properties[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. It may not persist across linking
	   * the Individual with other Individuals.
	   *
	   * This is an opaque string and has no structure.
	   *
	   * If an identifier is required which will be used for a long-lived link
	   * between different stored data, it may be more desirable to use the
	   * {@link Persona.uid} of the most relevant {@link Persona} in the Individual
	   * instead. For example, if storing references to Individuals who are tagged
	   * in a photo, it may be safer to store the UID of the Persona whose backend
	   * provided the photo (e.g. Facebook).
	   *
	   * As a special case, the ID defaults to an empty string when the individual
	   * has no personas (i.e. if it’s just been constructed).
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_ID, folks_individual_properties[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));
	/**
	   * The name of this Individual to display in the UI.
	   *
	   * This value is set according to the following list of possibilities, each
	   * one being tried first on the primary persona, then on all other personas in
	   * the Individual, before falling back to the next item on the list:
	   * # Alias
	   * # Full name, structured name or nickname
	   * # E-mail address
	   * # Display ID (e.g. foo@example.org)
	   * # Postal address
	   * # _("Unnamed Person")
	   *
	   * @since 0.9.7
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_DISPLAY_NAME, folks_individual_properties[FOLKS_INDIVIDUAL_DISPLAY_NAME] = g_param_spec_string ("display-name", "display-name", "display-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_ALIAS, folks_individual_properties[FOLKS_INDIVIDUAL_ALIAS] = g_param_spec_string ("alias", "alias", "alias", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_STRUCTURED_NAME, folks_individual_properties[FOLKS_INDIVIDUAL_STRUCTURED_NAME] = g_param_spec_object ("structured-name", "structured-name", "structured-name", FOLKS_TYPE_STRUCTURED_NAME, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_FULL_NAME, folks_individual_properties[FOLKS_INDIVIDUAL_FULL_NAME] = g_param_spec_string ("full-name", "full-name", "full-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_NICKNAME, folks_individual_properties[FOLKS_INDIVIDUAL_NICKNAME] = g_param_spec_string ("nickname", "nickname", "nickname", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_GENDER, folks_individual_properties[FOLKS_INDIVIDUAL_GENDER] = g_param_spec_enum ("gender", "gender", "gender", FOLKS_TYPE_GENDER, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_URLS, folks_individual_properties[FOLKS_INDIVIDUAL_URLS] = g_param_spec_object ("urls", "urls", "urls", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_PHONE_NUMBERS, folks_individual_properties[FOLKS_INDIVIDUAL_PHONE_NUMBERS] = g_param_spec_object ("phone-numbers", "phone-numbers", "phone-numbers", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_EMAIL_ADDRESSES, folks_individual_properties[FOLKS_INDIVIDUAL_EMAIL_ADDRESSES] = g_param_spec_object ("email-addresses", "email-addresses", "email-addresses", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_ROLES, folks_individual_properties[FOLKS_INDIVIDUAL_ROLES] = g_param_spec_object ("roles", "roles", "roles", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_LOCAL_IDS, folks_individual_properties[FOLKS_INDIVIDUAL_LOCAL_IDS] = g_param_spec_object ("local-ids", "local-ids", "local-ids", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_LOCATION, folks_individual_properties[FOLKS_INDIVIDUAL_LOCATION] = g_param_spec_object ("location", "location", "location", FOLKS_TYPE_LOCATION, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_BIRTHDAY, folks_individual_properties[FOLKS_INDIVIDUAL_BIRTHDAY] = g_param_spec_boxed ("birthday", "birthday", "birthday", G_TYPE_DATE_TIME, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_CALENDAR_EVENT_ID, folks_individual_properties[FOLKS_INDIVIDUAL_CALENDAR_EVENT_ID] = g_param_spec_string ("calendar-event-id", "calendar-event-id", "calendar-event-id", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_NOTES, folks_individual_properties[FOLKS_INDIVIDUAL_NOTES] = g_param_spec_object ("notes", "notes", "notes", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_POSTAL_ADDRESSES, folks_individual_properties[FOLKS_INDIVIDUAL_POSTAL_ADDRESSES] = g_param_spec_object ("postal-addresses", "postal-addresses", "postal-addresses", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * 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_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_IS_FAVOURITE, folks_individual_properties[FOLKS_INDIVIDUAL_IS_FAVOURITE] = g_param_spec_boolean ("is-favourite", "is-favourite", "is-favourite", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_GROUPS, folks_individual_properties[FOLKS_INDIVIDUAL_GROUPS] = g_param_spec_object ("groups", "groups", "groups", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_IM_ADDRESSES, folks_individual_properties[FOLKS_INDIVIDUAL_IM_ADDRESSES] = g_param_spec_object ("im-addresses", "im-addresses", "im-addresses", GEE_TYPE_MULTI_MAP, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_WEB_SERVICE_ADDRESSES, folks_individual_properties[FOLKS_INDIVIDUAL_WEB_SERVICE_ADDRESSES] = g_param_spec_object ("web-service-addresses", "web-service-addresses", "web-service-addresses", GEE_TYPE_MULTI_MAP, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_IM_INTERACTION_COUNT, folks_individual_properties[FOLKS_INDIVIDUAL_IM_INTERACTION_COUNT] = g_param_spec_uint ("im-interaction-count", "im-interaction-count", "im-interaction-count", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_LAST_IM_INTERACTION_DATETIME, folks_individual_properties[FOLKS_INDIVIDUAL_LAST_IM_INTERACTION_DATETIME] = g_param_spec_boxed ("last-im-interaction-datetime", "last-im-interaction-datetime", "last-im-interaction-datetime", G_TYPE_DATE_TIME, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	   * {@inheritDoc}
	   */
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_CALL_INTERACTION_COUNT, folks_individual_properties[FOLKS_INDIVIDUAL_CALL_INTERACTION_COUNT] = g_param_spec_uint ("call-interaction-count", "call-interaction-count", "call-interaction-count", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), FOLKS_INDIVIDUAL_LAST_CALL_INTERACTION_DATETIME, folks_individual_properties[FOLKS_INDIVIDUAL_LAST_CALL_INTERACTION_DATETIME] = g_param_spec_boxed ("last-call-interaction-datetime", "last-call-interaction-datetime", "last-call-interaction-datetime", G_TYPE_DATE_TIME, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	   * The set of {@link Persona}s encapsulated by this Individual.
	   *
	   * There must always be at least one Persona in this set.
	   *
	   * 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, folks_individual_properties[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
	   */
	folks_individual_signals[FOLKS_INDIVIDUAL_REMOVED_SIGNAL] = 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
	   */
	folks_individual_signals[FOLKS_INDIVIDUAL_PERSONAS_CHANGED_SIGNAL] = 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->change_alias = (void (*) (FolksAliasDetails *, const gchar*, GAsyncReadyCallback, gpointer)) folks_individual_real_change_alias;
	iface->change_alias_finish = (void (*) (FolksAliasDetails *, GAsyncResult*, GError**)) folks_individual_real_change_alias_finish;
	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->change_avatar = (void (*) (FolksAvatarDetails *, GLoadableIcon*, GAsyncReadyCallback, gpointer)) folks_individual_real_change_avatar;
	iface->change_avatar_finish = (void (*) (FolksAvatarDetails *, GAsyncResult*, GError**)) folks_individual_real_change_avatar_finish;
	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_extended_info_interface_init (FolksExtendedInfoIface * iface) {
	folks_individual_folks_extended_info_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_extended_field = (FolksExtendedFieldDetails* (*) (FolksExtendedInfo *, const gchar*)) folks_individual_real_get_extended_field;
	iface->change_extended_field = (void (*) (FolksExtendedInfo *, const gchar*, FolksExtendedFieldDetails*, GAsyncReadyCallback, gpointer)) folks_individual_real_change_extended_field;
	iface->change_extended_field_finish = (void (*) (FolksExtendedInfo *, GAsyncResult*, GError**)) folks_individual_real_change_extended_field_finish;
	iface->remove_extended_field = (void (*) (FolksExtendedInfo *, const gchar*, GAsyncReadyCallback, gpointer)) folks_individual_real_remove_extended_field;
	iface->remove_extended_field_finish = (void (*) (FolksExtendedInfo *, GAsyncResult*, GError**)) folks_individual_real_remove_extended_field_finish;
}


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->change_is_favourite = (void (*) (FolksFavouriteDetails *, gboolean, GAsyncReadyCallback, gpointer)) folks_individual_real_change_is_favourite;
	iface->change_is_favourite_finish = (void (*) (FolksFavouriteDetails *, GAsyncResult*, GError**)) folks_individual_real_change_is_favourite_finish;
	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_groups = (void (*) (FolksGroupDetails *, GeeSet*, GAsyncReadyCallback, gpointer)) folks_individual_real_change_groups;
	iface->change_groups_finish = (void (*) (FolksGroupDetails *, GAsyncResult*, GError**)) folks_individual_real_change_groups_finish;
	iface->change_group = (void (*) (FolksGroupDetails *, const gchar*, gboolean, GAsyncReadyCallback, gpointer)) folks_individual_real_change_group;
	iface->change_group_finish = (void (*) (FolksGroupDetails *, GAsyncResult*, GError**)) 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_interaction_details_interface_init (FolksInteractionDetailsIface * iface) {
	folks_individual_folks_interaction_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_im_interaction_count = folks_individual_real_get_im_interaction_count;
	iface->get_last_im_interaction_datetime = folks_individual_real_get_last_im_interaction_datetime;
	iface->get_call_interaction_count = folks_individual_real_get_call_interaction_count;
	iface->get_last_call_interaction_datetime = folks_individual_real_get_last_call_interaction_datetime;
}


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_location_details_interface_init (FolksLocationDetailsIface * iface) {
	folks_individual_folks_location_details_parent_iface = g_type_interface_peek_parent (iface);
	iface->get_location = folks_individual_real_get_location;
	iface->set_location = folks_individual_real_set_location;
}


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->change_nickname = (void (*) (FolksNameDetails *, const gchar*, GAsyncReadyCallback, gpointer)) folks_individual_real_change_nickname;
	iface->change_nickname_finish = (void (*) (FolksNameDetails *, GAsyncResult*, GError**)) folks_individual_real_change_nickname_finish;
	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;
	iface->set_nickname = folks_individual_real_set_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_status = folks_individual_real_get_presence_status;
	iface->set_presence_status = folks_individual_real_set_presence_status;
	iface->get_presence_message = folks_individual_real_get_presence_message;
	iface->set_presence_message = folks_individual_real_set_presence_message;
	iface->get_client_types = folks_individual_real_get_client_types;
	iface->set_client_types = folks_individual_real_set_client_types;
}


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) {
	FolksSmallSet* _tmp0_;
	GeeHashMap* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	self->priv = FOLKS_INDIVIDUAL_GET_PRIVATE (self);
	_tmp0_ = folks_small_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
	self->priv->_persona_set = _tmp0_;
	_tmp1_ = gee_hash_map_new (FOLKS_TYPE_PERSONA_STORE, NULL, NULL, G_TYPE_UINT, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	self->priv->_stores = _tmp1_;
	self->priv->_persona_user_count = (guint) 0;
	self->priv->_avatar = NULL;
	_tmp2_ = g_strdup ("");
	self->priv->_presence_status = _tmp2_;
	_tmp3_ = g_strdup ("");
	self->priv->_presence_message = _tmp3_;
	_tmp4_ = g_strdup ("");
	self->priv->_id = _tmp4_;
	_tmp5_ = g_strdup ("");
	self->priv->_display_name = _tmp5_;
	_tmp6_ = g_strdup ("");
	self->priv->_alias = _tmp6_;
	self->priv->_structured_name = NULL;
	_tmp7_ = g_strdup ("");
	self->priv->_full_name = _tmp7_;
	_tmp8_ = g_strdup ("");
	self->priv->_nickname = _tmp8_;
	self->priv->_gender = FOLKS_GENDER_UNSPECIFIED;
	self->priv->_urls = NULL;
	self->priv->_urls_ro = NULL;
	self->priv->_phone_numbers = NULL;
	self->priv->_phone_numbers_ro = NULL;
	self->priv->_email_addresses = NULL;
	self->priv->_email_addresses_ro = NULL;
	self->priv->_roles = NULL;
	self->priv->_roles_ro = NULL;
	self->priv->_local_ids = NULL;
	self->priv->_local_ids_ro = NULL;
	self->priv->_location = NULL;
	self->priv->_birthday = NULL;
	self->priv->_calendar_event_id = NULL;
	self->priv->_notes = NULL;
	self->priv->_notes_ro = NULL;
	self->priv->_postal_addresses = NULL;
	self->priv->_postal_addresses_ro = NULL;
	self->priv->_is_favourite = FALSE;
	self->priv->_groups = NULL;
	self->priv->_groups_ro = NULL;
	self->priv->_im_addresses = NULL;
	self->priv->_web_service_addresses = NULL;
	self->priv->_last_im_interaction_datetime = NULL;
	self->priv->_last_call_interaction_datetime = NULL;
}


static void folks_individual_finalize (GObject * obj) {
	FolksIndividual * self;
	const gchar* _tmp0_;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, FOLKS_TYPE_INDIVIDUAL, FolksIndividual);
	_tmp0_ = self->priv->_id;
	g_debug ("individual.vala:1423: Destroying Individual '%s': %p", _tmp0_, self);
	_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->_avatar);
	_g_free0 (self->priv->_presence_status);
	_g_free0 (self->priv->_presence_message);
	self->priv->_client_types = (_vala_array_free (self->priv->_client_types, self->priv->_client_types_length1, (GDestroyNotify) g_free), NULL);
	_g_free0 (self->priv->_id);
	_g_free0 (self->priv->_display_name);
	_g_free0 (self->priv->_alias);
	_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->_urls_ro);
	_g_object_unref0 (self->priv->_phone_numbers);
	_g_object_unref0 (self->priv->_phone_numbers_ro);
	_g_object_unref0 (self->priv->_email_addresses);
	_g_object_unref0 (self->priv->_email_addresses_ro);
	_g_object_unref0 (self->priv->_roles);
	_g_object_unref0 (self->priv->_roles_ro);
	_g_object_unref0 (self->priv->_local_ids);
	_g_object_unref0 (self->priv->_local_ids_ro);
	_g_object_unref0 (self->priv->_location);
	_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->_notes_ro);
	_g_object_unref0 (self->priv->_postal_addresses);
	_g_object_unref0 (self->priv->_postal_addresses_ro);
	_g_object_unref0 (self->priv->_groups);
	_g_object_unref0 (self->priv->_groups_ro);
	_g_object_unref0 (self->priv->_im_addresses);
	_g_object_unref0 (self->priv->_web_service_addresses);
	_g_date_time_unref0 (self->priv->_last_im_interaction_datetime);
	_g_date_time_unref0 (self->priv->_last_call_interaction_datetime);
	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. An
 * individual must always contain at least one {@link Persona}.
 *
 * When choosing the values of single-valued properties (such as
 * {@link Individual.alias} and {@link Individual.avatar}; but not multi-valued
 * properties such as {@link Individual.groups} and
 * {@link Individual.im_addresses}) from the {@link Persona}s in the
 * individual to present as the values of those properties of the individual,
 * it is guaranteed that if the individual contains a persona from the primary
 * persona store (see {@link IndividualAggregator.primary_store}), its property
 * values will be chosen above all others. This means that any changes to
 * property values made through folks (which are normally written to the primary
 * store) will always be used by {@link Folks.Individual}s.
 *
 * No further guarantees are made about the order of preference used for
 * choosing which property values to use for the {@link Folks.Individual}, other
 * than that the order may vary between properties, but is guaranteed to be
 * stable for a given property.
 */
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_extended_info_info = { (GInterfaceInitFunc) folks_individual_folks_extended_info_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_interaction_details_info = { (GInterfaceInitFunc) folks_individual_folks_interaction_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_location_details_info = { (GInterfaceInitFunc) folks_individual_folks_location_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_EXTENDED_INFO, &folks_extended_info_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_INTERACTION_DETAILS, &folks_interaction_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_LOCATION_DETAILS, &folks_location_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 = G_TYPE_CHECK_INSTANCE_CAST (object, FOLKS_TYPE_INDIVIDUAL, FolksIndividual);
	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_STATUS:
		g_value_set_string (value, folks_presence_details_get_presence_status ((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_CLIENT_TYPES:
		{
			int length;
			g_value_set_boxed (value, folks_presence_details_get_client_types ((FolksPresenceDetails*) self, &length));
		}
		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_DISPLAY_NAME:
		g_value_set_string (value, folks_individual_get_display_name (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_LOCATION:
		g_value_set_object (value, folks_location_details_get_location ((FolksLocationDetails*) 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_IM_INTERACTION_COUNT:
		g_value_set_uint (value, folks_interaction_details_get_im_interaction_count ((FolksInteractionDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_LAST_IM_INTERACTION_DATETIME:
		g_value_set_boxed (value, folks_interaction_details_get_last_im_interaction_datetime ((FolksInteractionDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_CALL_INTERACTION_COUNT:
		g_value_set_uint (value, folks_interaction_details_get_call_interaction_count ((FolksInteractionDetails*) self));
		break;
		case FOLKS_INDIVIDUAL_LAST_CALL_INTERACTION_DATETIME:
		g_value_set_boxed (value, folks_interaction_details_get_last_call_interaction_datetime ((FolksInteractionDetails*) 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 = G_TYPE_CHECK_INSTANCE_CAST (object, FOLKS_TYPE_INDIVIDUAL, FolksIndividual);
	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_STATUS:
		folks_presence_details_set_presence_status ((FolksPresenceDetails*) self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_PRESENCE_MESSAGE:
		folks_presence_details_set_presence_message ((FolksPresenceDetails*) self, g_value_get_string (value));
		break;
		case FOLKS_INDIVIDUAL_CLIENT_TYPES:
		{
			gpointer boxed;
			boxed = g_value_get_boxed (value);
			folks_presence_details_set_client_types ((FolksPresenceDetails*) self, boxed, (boxed == NULL) ? 0 : g_strv_length (boxed));
		}
		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_NICKNAME:
		folks_name_details_set_nickname ((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_LOCATION:
		folks_location_details_set_location ((FolksLocationDetails*) 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;
	}
}


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


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



