/* gee.h generated by valac 0.58.0-frida, the Vala compiler, do not modify */

#ifndef __GEE_GEE_H__
#define __GEE_GEE_H__

#include <glib-object.h>
#include <glib.h>
#include <gio/gio.h>

G_BEGIN_DECLS

#if !defined(VALA_EXTERN)
#if defined(_WIN32) || defined(__CYGWIN__)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif
#define GEE_QUEUE_UNBOUNDED_CAPACITY -1

#define GEE_TYPE_TRAVERSABLE (gee_traversable_get_type ())
#define GEE_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversable))
#define GEE_IS_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TRAVERSABLE))
#define GEE_TRAVERSABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversableIface))

typedef struct _GeeTraversable GeeTraversable;
typedef struct _GeeTraversableIface GeeTraversableIface;
typedef gboolean (*GeeForallFunc) (gpointer g, gpointer user_data);
typedef enum  {
	GEE_TRAVERSABLE_STREAM_YIELD,
	GEE_TRAVERSABLE_STREAM_CONTINUE,
	GEE_TRAVERSABLE_STREAM_END,
	GEE_TRAVERSABLE_STREAM_WAIT
} GeeTraversableStream;

#define GEE_TRAVERSABLE_TYPE_STREAM (gee_traversable_stream_get_type ())

#define GEE_TYPE_LAZY (gee_lazy_get_type ())
#define GEE_LAZY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LAZY, GeeLazy))
#define GEE_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LAZY, GeeLazyClass))
#define GEE_IS_LAZY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LAZY))
#define GEE_IS_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LAZY))
#define GEE_LAZY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LAZY, GeeLazyClass))

typedef struct _GeeLazy GeeLazy;
typedef struct _GeeLazyClass GeeLazyClass;
typedef GeeTraversableStream (*GeeStreamFunc) (GeeTraversableStream state, GeeLazy* g, GeeLazy** lazy, gpointer user_data);

#define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
#define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
#define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
#define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))

typedef struct _GeeIterator GeeIterator;
typedef struct _GeeIteratorIface GeeIteratorIface;
typedef gpointer (*GeeFoldFunc) (gpointer g, gpointer a, gpointer user_data);
typedef gpointer (*GeeMapFunc) (gpointer g, gpointer user_data);
typedef gboolean (*GeePredicate) (gconstpointer g, gpointer user_data);
typedef GeeIterator* (*GeeFlatMapFunc) (gpointer g, gpointer user_data);

#define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
#define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
#define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
#define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))

typedef struct _GeeIterable GeeIterable;
typedef struct _GeeIterableIface GeeIterableIface;

#define GEE_TYPE_COLLECTION (gee_collection_get_type ())
#define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
#define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
#define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))

typedef struct _GeeCollection GeeCollection;
typedef struct _GeeCollectionIface GeeCollectionIface;

#define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
#define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
#define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
#define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
#define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
#define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))

typedef struct _GeeAbstractCollection GeeAbstractCollection;
typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
typedef struct _GeeAbstractCollectionPrivate GeeAbstractCollectionPrivate;

#define GEE_TYPE_LIST (gee_list_get_type ())
#define GEE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST, GeeList))
#define GEE_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST))
#define GEE_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST, GeeListIface))

typedef struct _GeeList GeeList;
typedef struct _GeeListIface GeeListIface;

#define GEE_TYPE_LIST_ITERATOR (gee_list_iterator_get_type ())
#define GEE_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIterator))
#define GEE_IS_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST_ITERATOR))
#define GEE_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIteratorIface))

typedef struct _GeeListIterator GeeListIterator;
typedef struct _GeeListIteratorIface GeeListIteratorIface;

#define GEE_TYPE_ABSTRACT_LIST (gee_abstract_list_get_type ())
#define GEE_ABSTRACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_LIST, GeeAbstractList))
#define GEE_ABSTRACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_LIST, GeeAbstractListClass))
#define GEE_IS_ABSTRACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_LIST))
#define GEE_IS_ABSTRACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_LIST))
#define GEE_ABSTRACT_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_LIST, GeeAbstractListClass))

typedef struct _GeeAbstractList GeeAbstractList;
typedef struct _GeeAbstractListClass GeeAbstractListClass;
typedef struct _GeeAbstractListPrivate GeeAbstractListPrivate;

#define GEE_TYPE_BIDIR_LIST (gee_bidir_list_get_type ())
#define GEE_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_LIST, GeeBidirList))
#define GEE_IS_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_LIST))
#define GEE_BIDIR_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_LIST, GeeBidirListIface))

typedef struct _GeeBidirList GeeBidirList;
typedef struct _GeeBidirListIface GeeBidirListIface;

#define GEE_TYPE_BIDIR_LIST_ITERATOR (gee_bidir_list_iterator_get_type ())
#define GEE_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR, GeeBidirListIterator))
#define GEE_IS_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR))
#define GEE_BIDIR_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR, GeeBidirListIteratorIface))

typedef struct _GeeBidirListIterator GeeBidirListIterator;
typedef struct _GeeBidirListIteratorIface GeeBidirListIteratorIface;

#define GEE_TYPE_BIDIR_ITERATOR (gee_bidir_iterator_get_type ())
#define GEE_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator))
#define GEE_IS_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_ITERATOR))
#define GEE_BIDIR_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIteratorIface))

typedef struct _GeeBidirIterator GeeBidirIterator;
typedef struct _GeeBidirIteratorIface GeeBidirIteratorIface;

#define GEE_TYPE_ABSTRACT_BIDIR_LIST (gee_abstract_bidir_list_get_type ())
#define GEE_ABSTRACT_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirList))
#define GEE_ABSTRACT_BIDIR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirListClass))
#define GEE_IS_ABSTRACT_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_BIDIR_LIST))
#define GEE_IS_ABSTRACT_BIDIR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_BIDIR_LIST))
#define GEE_ABSTRACT_BIDIR_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirListClass))

typedef struct _GeeAbstractBidirList GeeAbstractBidirList;
typedef struct _GeeAbstractBidirListClass GeeAbstractBidirListClass;
typedef struct _GeeAbstractBidirListPrivate GeeAbstractBidirListPrivate;

#define GEE_TYPE_SET (gee_set_get_type ())
#define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
#define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
#define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))

typedef struct _GeeSet GeeSet;
typedef struct _GeeSetIface GeeSetIface;

#define GEE_TYPE_ABSTRACT_SET (gee_abstract_set_get_type ())
#define GEE_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSet))
#define GEE_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
#define GEE_IS_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SET))
#define GEE_IS_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SET))
#define GEE_ABSTRACT_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))

typedef struct _GeeAbstractSet GeeAbstractSet;
typedef struct _GeeAbstractSetClass GeeAbstractSetClass;
typedef struct _GeeAbstractSetPrivate GeeAbstractSetPrivate;

#define GEE_TYPE_SORTED_SET (gee_sorted_set_get_type ())
#define GEE_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SORTED_SET, GeeSortedSet))
#define GEE_IS_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SORTED_SET))
#define GEE_SORTED_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SORTED_SET, GeeSortedSetIface))

typedef struct _GeeSortedSet GeeSortedSet;
typedef struct _GeeSortedSetIface GeeSortedSetIface;

#define GEE_TYPE_ABSTRACT_SORTED_SET (gee_abstract_sorted_set_get_type ())
#define GEE_ABSTRACT_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSet))
#define GEE_ABSTRACT_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSetClass))
#define GEE_IS_ABSTRACT_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SORTED_SET))
#define GEE_IS_ABSTRACT_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SORTED_SET))
#define GEE_ABSTRACT_SORTED_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSetClass))

typedef struct _GeeAbstractSortedSet GeeAbstractSortedSet;
typedef struct _GeeAbstractSortedSetClass GeeAbstractSortedSetClass;
typedef struct _GeeAbstractSortedSetPrivate GeeAbstractSortedSetPrivate;

#define GEE_TYPE_BIDIR_SORTED_SET (gee_bidir_sorted_set_get_type ())
#define GEE_BIDIR_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_SORTED_SET, GeeBidirSortedSet))
#define GEE_IS_BIDIR_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_SORTED_SET))
#define GEE_BIDIR_SORTED_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_SORTED_SET, GeeBidirSortedSetIface))

typedef struct _GeeBidirSortedSet GeeBidirSortedSet;
typedef struct _GeeBidirSortedSetIface GeeBidirSortedSetIface;

#define GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET (gee_abstract_bidir_sorted_set_get_type ())
#define GEE_ABSTRACT_BIDIR_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET, GeeAbstractBidirSortedSet))
#define GEE_ABSTRACT_BIDIR_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET, GeeAbstractBidirSortedSetClass))
#define GEE_IS_ABSTRACT_BIDIR_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET))
#define GEE_IS_ABSTRACT_BIDIR_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET))
#define GEE_ABSTRACT_BIDIR_SORTED_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET, GeeAbstractBidirSortedSetClass))

typedef struct _GeeAbstractBidirSortedSet GeeAbstractBidirSortedSet;
typedef struct _GeeAbstractBidirSortedSetClass GeeAbstractBidirSortedSetClass;
typedef struct _GeeAbstractBidirSortedSetPrivate GeeAbstractBidirSortedSetPrivate;

#define GEE_TYPE_MAP (gee_map_get_type ())
#define GEE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP, GeeMap))
#define GEE_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP))
#define GEE_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP, GeeMapIface))

typedef struct _GeeMap GeeMap;
typedef struct _GeeMapIface GeeMapIface;

#define GEE_TYPE_MAP_ITERATOR (gee_map_iterator_get_type ())
#define GEE_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIterator))
#define GEE_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP_ITERATOR))
#define GEE_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIteratorIface))

typedef struct _GeeMapIterator GeeMapIterator;
typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
typedef gpointer (*GeeFoldMapFunc) (gconstpointer k, gconstpointer v, gpointer a, gpointer user_data);
typedef gboolean (*GeeForallMapFunc) (gconstpointer k, gconstpointer v, gpointer user_data);

#define GEE_MAP_TYPE_ENTRY (gee_map_entry_get_type ())
#define GEE_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntry))
#define GEE_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
#define GEE_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_MAP_TYPE_ENTRY))
#define GEE_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_MAP_TYPE_ENTRY))
#define GEE_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))

typedef struct _GeeMapEntry GeeMapEntry;
typedef struct _GeeMapEntryClass GeeMapEntryClass;

#define GEE_TYPE_ABSTRACT_MAP (gee_abstract_map_get_type ())
#define GEE_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap))
#define GEE_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
#define GEE_IS_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MAP))
#define GEE_IS_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MAP))
#define GEE_ABSTRACT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))

typedef struct _GeeAbstractMap GeeAbstractMap;
typedef struct _GeeAbstractMapClass GeeAbstractMapClass;
typedef struct _GeeAbstractMapPrivate GeeAbstractMapPrivate;

#define GEE_TYPE_SORTED_MAP (gee_sorted_map_get_type ())
#define GEE_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SORTED_MAP, GeeSortedMap))
#define GEE_IS_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SORTED_MAP))
#define GEE_SORTED_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SORTED_MAP, GeeSortedMapIface))

typedef struct _GeeSortedMap GeeSortedMap;
typedef struct _GeeSortedMapIface GeeSortedMapIface;

#define GEE_TYPE_ABSTRACT_SORTED_MAP (gee_abstract_sorted_map_get_type ())
#define GEE_ABSTRACT_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SORTED_MAP, GeeAbstractSortedMap))
#define GEE_ABSTRACT_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SORTED_MAP, GeeAbstractSortedMapClass))
#define GEE_IS_ABSTRACT_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SORTED_MAP))
#define GEE_IS_ABSTRACT_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SORTED_MAP))
#define GEE_ABSTRACT_SORTED_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SORTED_MAP, GeeAbstractSortedMapClass))

typedef struct _GeeAbstractSortedMap GeeAbstractSortedMap;
typedef struct _GeeAbstractSortedMapClass GeeAbstractSortedMapClass;
typedef struct _GeeAbstractSortedMapPrivate GeeAbstractSortedMapPrivate;

#define GEE_TYPE_BIDIR_SORTED_MAP (gee_bidir_sorted_map_get_type ())
#define GEE_BIDIR_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_SORTED_MAP, GeeBidirSortedMap))
#define GEE_IS_BIDIR_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_SORTED_MAP))
#define GEE_BIDIR_SORTED_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_SORTED_MAP, GeeBidirSortedMapIface))

typedef struct _GeeBidirSortedMap GeeBidirSortedMap;
typedef struct _GeeBidirSortedMapIface GeeBidirSortedMapIface;

#define GEE_TYPE_BIDIR_MAP_ITERATOR (gee_bidir_map_iterator_get_type ())
#define GEE_BIDIR_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_MAP_ITERATOR, GeeBidirMapIterator))
#define GEE_IS_BIDIR_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_MAP_ITERATOR))
#define GEE_BIDIR_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_MAP_ITERATOR, GeeBidirMapIteratorIface))

typedef struct _GeeBidirMapIterator GeeBidirMapIterator;
typedef struct _GeeBidirMapIteratorIface GeeBidirMapIteratorIface;

#define GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP (gee_abstract_bidir_sorted_map_get_type ())
#define GEE_ABSTRACT_BIDIR_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP, GeeAbstractBidirSortedMap))
#define GEE_ABSTRACT_BIDIR_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP, GeeAbstractBidirSortedMapClass))
#define GEE_IS_ABSTRACT_BIDIR_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP))
#define GEE_IS_ABSTRACT_BIDIR_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP))
#define GEE_ABSTRACT_BIDIR_SORTED_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP, GeeAbstractBidirSortedMapClass))

typedef struct _GeeAbstractBidirSortedMap GeeAbstractBidirSortedMap;
typedef struct _GeeAbstractBidirSortedMapClass GeeAbstractBidirSortedMapClass;
typedef struct _GeeAbstractBidirSortedMapPrivate GeeAbstractBidirSortedMapPrivate;

#define GEE_TYPE_MULTI_MAP (gee_multi_map_get_type ())
#define GEE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_MAP, GeeMultiMap))
#define GEE_IS_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_MAP))
#define GEE_MULTI_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_MAP, GeeMultiMapIface))

typedef struct _GeeMultiMap GeeMultiMap;
typedef struct _GeeMultiMapIface GeeMultiMapIface;

#define GEE_TYPE_MULTI_SET (gee_multi_set_get_type ())
#define GEE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_SET, GeeMultiSet))
#define GEE_IS_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_SET))
#define GEE_MULTI_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_SET, GeeMultiSetIface))

typedef struct _GeeMultiSet GeeMultiSet;
typedef struct _GeeMultiSetIface GeeMultiSetIface;

#define GEE_TYPE_ABSTRACT_MULTI_MAP (gee_abstract_multi_map_get_type ())
#define GEE_ABSTRACT_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMap))
#define GEE_ABSTRACT_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMapClass))
#define GEE_IS_ABSTRACT_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP))
#define GEE_IS_ABSTRACT_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_MAP))
#define GEE_ABSTRACT_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMapClass))

typedef struct _GeeAbstractMultiMap GeeAbstractMultiMap;
typedef struct _GeeAbstractMultiMapClass GeeAbstractMultiMapClass;
typedef struct _GeeAbstractMultiMapPrivate GeeAbstractMultiMapPrivate;
typedef gboolean (*GeeEqualDataFunc) (gconstpointer a, gconstpointer b, gpointer user_data);

#define GEE_TYPE_ABSTRACT_MULTI_SET (gee_abstract_multi_set_get_type ())
#define GEE_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet))
#define GEE_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
#define GEE_IS_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_SET))
#define GEE_IS_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_SET))
#define GEE_ABSTRACT_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))

typedef struct _GeeAbstractMultiSet GeeAbstractMultiSet;
typedef struct _GeeAbstractMultiSetClass GeeAbstractMultiSetClass;
typedef struct _GeeAbstractMultiSetPrivate GeeAbstractMultiSetPrivate;

#define GEE_TYPE_QUEUE (gee_queue_get_type ())
#define GEE_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_QUEUE, GeeQueue))
#define GEE_IS_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_QUEUE))
#define GEE_QUEUE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_QUEUE, GeeQueueIface))

typedef struct _GeeQueue GeeQueue;
typedef struct _GeeQueueIface GeeQueueIface;

#define GEE_TYPE_ABSTRACT_QUEUE (gee_abstract_queue_get_type ())
#define GEE_ABSTRACT_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_QUEUE, GeeAbstractQueue))
#define GEE_ABSTRACT_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_QUEUE, GeeAbstractQueueClass))
#define GEE_IS_ABSTRACT_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_QUEUE))
#define GEE_IS_ABSTRACT_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_QUEUE))
#define GEE_ABSTRACT_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_QUEUE, GeeAbstractQueueClass))

typedef struct _GeeAbstractQueue GeeAbstractQueue;
typedef struct _GeeAbstractQueueClass GeeAbstractQueueClass;
typedef struct _GeeAbstractQueuePrivate GeeAbstractQueuePrivate;

#define GEE_TYPE_ARRAY_LIST (gee_array_list_get_type ())
#define GEE_ARRAY_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ARRAY_LIST, GeeArrayList))
#define GEE_ARRAY_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ARRAY_LIST, GeeArrayListClass))
#define GEE_IS_ARRAY_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ARRAY_LIST))
#define GEE_IS_ARRAY_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ARRAY_LIST))
#define GEE_ARRAY_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ARRAY_LIST, GeeArrayListClass))

typedef struct _GeeArrayList GeeArrayList;
typedef struct _GeeArrayListClass GeeArrayListClass;
typedef struct _GeeArrayListPrivate GeeArrayListPrivate;

#define GEE_TYPE_DEQUE (gee_deque_get_type ())
#define GEE_DEQUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_DEQUE, GeeDeque))
#define GEE_IS_DEQUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_DEQUE))
#define GEE_DEQUE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_DEQUE, GeeDequeIface))

typedef struct _GeeDeque GeeDeque;
typedef struct _GeeDequeIface GeeDequeIface;

#define GEE_TYPE_ARRAY_QUEUE (gee_array_queue_get_type ())
#define GEE_ARRAY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ARRAY_QUEUE, GeeArrayQueue))
#define GEE_ARRAY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ARRAY_QUEUE, GeeArrayQueueClass))
#define GEE_IS_ARRAY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ARRAY_QUEUE))
#define GEE_IS_ARRAY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ARRAY_QUEUE))
#define GEE_ARRAY_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ARRAY_QUEUE, GeeArrayQueueClass))

typedef struct _GeeArrayQueue GeeArrayQueue;
typedef struct _GeeArrayQueueClass GeeArrayQueueClass;
typedef struct _GeeArrayQueuePrivate GeeArrayQueuePrivate;

#define GEE_TYPE_COMPARABLE (gee_comparable_get_type ())
#define GEE_COMPARABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COMPARABLE, GeeComparable))
#define GEE_IS_COMPARABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COMPARABLE))
#define GEE_COMPARABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COMPARABLE, GeeComparableIface))

typedef struct _GeeComparable GeeComparable;
typedef struct _GeeComparableIface GeeComparableIface;

#define GEE_TYPE_CONCURRENT_LIST (gee_concurrent_list_get_type ())
#define GEE_CONCURRENT_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_CONCURRENT_LIST, GeeConcurrentList))
#define GEE_CONCURRENT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_CONCURRENT_LIST, GeeConcurrentListClass))
#define GEE_IS_CONCURRENT_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_CONCURRENT_LIST))
#define GEE_IS_CONCURRENT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_CONCURRENT_LIST))
#define GEE_CONCURRENT_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_CONCURRENT_LIST, GeeConcurrentListClass))

typedef struct _GeeConcurrentList GeeConcurrentList;
typedef struct _GeeConcurrentListClass GeeConcurrentListClass;
typedef struct _GeeConcurrentListPrivate GeeConcurrentListPrivate;

#define GEE_TYPE_CONCURRENT_SET (gee_concurrent_set_get_type ())
#define GEE_CONCURRENT_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_CONCURRENT_SET, GeeConcurrentSet))
#define GEE_CONCURRENT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_CONCURRENT_SET, GeeConcurrentSetClass))
#define GEE_IS_CONCURRENT_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_CONCURRENT_SET))
#define GEE_IS_CONCURRENT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_CONCURRENT_SET))
#define GEE_CONCURRENT_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_CONCURRENT_SET, GeeConcurrentSetClass))

typedef struct _GeeConcurrentSet GeeConcurrentSet;
typedef struct _GeeConcurrentSetClass GeeConcurrentSetClass;
typedef struct _GeeConcurrentSetPrivate GeeConcurrentSetPrivate;
typedef enum  {
	GEE_CONCURRENT_SET_RANGE_TYPE_HEAD,
	GEE_CONCURRENT_SET_RANGE_TYPE_TAIL,
	GEE_CONCURRENT_SET_RANGE_TYPE_BOUNDED,
	GEE_CONCURRENT_SET_RANGE_TYPE_EMPTY
} GeeConcurrentSetRangeType;

#define GEE_CONCURRENT_SET_TYPE_RANGE_TYPE (gee_concurrent_set_range_type_get_type ())
typedef guint (*GeeHashDataFunc) (gconstpointer v, gpointer user_data);

#define GEE_TYPE_FUTURE (gee_future_get_type ())
#define GEE_FUTURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_FUTURE, GeeFuture))
#define GEE_IS_FUTURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_FUTURE))
#define GEE_FUTURE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_FUTURE, GeeFutureIface))

typedef struct _GeeFuture GeeFuture;
typedef struct _GeeFutureIface GeeFutureIface;

#define GEE_TYPE_FUTURE_ERROR (gee_future_error_get_type ())
typedef gpointer (*GeeFutureMapFunc) (gconstpointer value, gpointer user_data);
typedef gconstpointer (*GeeFutureLightMapFunc) (gconstpointer value, gpointer user_data);
typedef gpointer (*GeeFutureZipFunc) (gconstpointer a, gconstpointer b, gpointer user_data);
typedef GeeFuture* (*GeeFutureFlatMapFunc) (gconstpointer value, gpointer user_data);

#define GEE_TYPE_HASHABLE (gee_hashable_get_type ())
#define GEE_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASHABLE, GeeHashable))
#define GEE_IS_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASHABLE))
#define GEE_HASHABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_HASHABLE, GeeHashableIface))

typedef struct _GeeHashable GeeHashable;
typedef struct _GeeHashableIface GeeHashableIface;

#define GEE_TYPE_HASH_MAP (gee_hash_map_get_type ())
#define GEE_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MAP, GeeHashMap))
#define GEE_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MAP, GeeHashMapClass))
#define GEE_IS_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MAP))
#define GEE_IS_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MAP))
#define GEE_HASH_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MAP, GeeHashMapClass))

typedef struct _GeeHashMap GeeHashMap;
typedef struct _GeeHashMapClass GeeHashMapClass;
typedef struct _GeeHashMapPrivate GeeHashMapPrivate;

#define GEE_TYPE_HASH_MULTI_MAP (gee_hash_multi_map_get_type ())
#define GEE_HASH_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMap))
#define GEE_HASH_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMapClass))
#define GEE_IS_HASH_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MULTI_MAP))
#define GEE_IS_HASH_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MULTI_MAP))
#define GEE_HASH_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMapClass))

typedef struct _GeeHashMultiMap GeeHashMultiMap;
typedef struct _GeeHashMultiMapClass GeeHashMultiMapClass;
typedef struct _GeeHashMultiMapPrivate GeeHashMultiMapPrivate;

#define GEE_TYPE_HASH_MULTI_SET (gee_hash_multi_set_get_type ())
#define GEE_HASH_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSet))
#define GEE_HASH_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSetClass))
#define GEE_IS_HASH_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MULTI_SET))
#define GEE_IS_HASH_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MULTI_SET))
#define GEE_HASH_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSetClass))

typedef struct _GeeHashMultiSet GeeHashMultiSet;
typedef struct _GeeHashMultiSetClass GeeHashMultiSetClass;
typedef struct _GeeHashMultiSetPrivate GeeHashMultiSetPrivate;

#define GEE_TYPE_HASH_SET (gee_hash_set_get_type ())
#define GEE_HASH_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_SET, GeeHashSet))
#define GEE_HASH_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_SET, GeeHashSetClass))
#define GEE_IS_HASH_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_SET))
#define GEE_IS_HASH_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_SET))
#define GEE_HASH_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_SET, GeeHashSetClass))

typedef struct _GeeHashSet GeeHashSet;
typedef struct _GeeHashSetClass GeeHashSetClass;
typedef struct _GeeHashSetPrivate GeeHashSetPrivate;
typedef struct _GeeHazardPointer GeeHazardPointer;
typedef struct _GeeHazardPointerNode GeeHazardPointerNode;
typedef enum  {
	GEE_HAZARD_POINTER_POLICY_DEFAULT,
	GEE_HAZARD_POINTER_POLICY_THREAD_EXIT,
	GEE_HAZARD_POINTER_POLICY_TRY_FREE,
	GEE_HAZARD_POINTER_POLICY_FREE,
	GEE_HAZARD_POINTER_POLICY_TRY_RELEASE,
	GEE_HAZARD_POINTER_POLICY_RELEASE
} GeeHazardPointerPolicy;

#define GEE_HAZARD_POINTER_TYPE_POLICY (gee_hazard_pointer_policy_get_type ())
typedef enum  {
	GEE_HAZARD_POINTER_RELEASE_POLICY_HELPER_THREAD,
	GEE_HAZARD_POINTER_RELEASE_POLICY_MAIN_LOOP
} GeeHazardPointerReleasePolicy;

#define GEE_HAZARD_POINTER_TYPE_RELEASE_POLICY (gee_hazard_pointer_release_policy_get_type ())
typedef struct _GeeHazardPointerContext GeeHazardPointerContext;
typedef struct _GeeHazardPointerFreeNode GeeHazardPointerFreeNode;
typedef GeeLazy* (*GeeUnfoldFunc) (gpointer user_data);
typedef gpointer (*GeeLazyFunc) (gpointer user_data);
typedef struct _GeeLazyPrivate GeeLazyPrivate;

#define GEE_TYPE_LINKED_LIST (gee_linked_list_get_type ())
#define GEE_LINKED_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LINKED_LIST, GeeLinkedList))
#define GEE_LINKED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LINKED_LIST, GeeLinkedListClass))
#define GEE_IS_LINKED_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LINKED_LIST))
#define GEE_IS_LINKED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LINKED_LIST))
#define GEE_LINKED_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LINKED_LIST, GeeLinkedListClass))

typedef struct _GeeLinkedList GeeLinkedList;
typedef struct _GeeLinkedListClass GeeLinkedListClass;
typedef struct _GeeLinkedListPrivate GeeLinkedListPrivate;
typedef struct _GeeMapEntryPrivate GeeMapEntryPrivate;

#define GEE_TYPE_PRIORITY_QUEUE (gee_priority_queue_get_type ())
#define GEE_PRIORITY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_PRIORITY_QUEUE, GeePriorityQueue))
#define GEE_PRIORITY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_PRIORITY_QUEUE, GeePriorityQueueClass))
#define GEE_IS_PRIORITY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_PRIORITY_QUEUE))
#define GEE_IS_PRIORITY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_PRIORITY_QUEUE))
#define GEE_PRIORITY_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_PRIORITY_QUEUE, GeePriorityQueueClass))

typedef struct _GeePriorityQueue GeePriorityQueue;
typedef struct _GeePriorityQueueClass GeePriorityQueueClass;
typedef struct _GeePriorityQueuePrivate GeePriorityQueuePrivate;

#define GEE_TYPE_PROMISE (gee_promise_get_type ())
#define GEE_PROMISE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_PROMISE, GeePromise))
#define GEE_PROMISE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_PROMISE, GeePromiseClass))
#define GEE_IS_PROMISE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_PROMISE))
#define GEE_IS_PROMISE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_PROMISE))
#define GEE_PROMISE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_PROMISE, GeePromiseClass))

typedef struct _GeePromise GeePromise;
typedef struct _GeePromiseClass GeePromiseClass;
typedef struct _GeePromisePrivate GeePromisePrivate;
typedef gpointer (*GeeTask) (gpointer user_data);

#define GEE_TYPE_TREE_MAP (gee_tree_map_get_type ())
#define GEE_TREE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_MAP, GeeTreeMap))
#define GEE_TREE_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_MAP, GeeTreeMapClass))
#define GEE_IS_TREE_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_MAP))
#define GEE_IS_TREE_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_MAP))
#define GEE_TREE_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_MAP, GeeTreeMapClass))

typedef struct _GeeTreeMap GeeTreeMap;
typedef struct _GeeTreeMapClass GeeTreeMapClass;
typedef struct _GeeTreeMapPrivate GeeTreeMapPrivate;

#define GEE_TYPE_TREE_MULTI_MAP (gee_tree_multi_map_get_type ())
#define GEE_TREE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMap))
#define GEE_TREE_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMapClass))
#define GEE_IS_TREE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_MULTI_MAP))
#define GEE_IS_TREE_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_MULTI_MAP))
#define GEE_TREE_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMapClass))

typedef struct _GeeTreeMultiMap GeeTreeMultiMap;
typedef struct _GeeTreeMultiMapClass GeeTreeMultiMapClass;
typedef struct _GeeTreeMultiMapPrivate GeeTreeMultiMapPrivate;

#define GEE_TYPE_TREE_MULTI_SET (gee_tree_multi_set_get_type ())
#define GEE_TREE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_MULTI_SET, GeeTreeMultiSet))
#define GEE_TREE_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_MULTI_SET, GeeTreeMultiSetClass))
#define GEE_IS_TREE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_MULTI_SET))
#define GEE_IS_TREE_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_MULTI_SET))
#define GEE_TREE_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_MULTI_SET, GeeTreeMultiSetClass))

typedef struct _GeeTreeMultiSet GeeTreeMultiSet;
typedef struct _GeeTreeMultiSetClass GeeTreeMultiSetClass;
typedef struct _GeeTreeMultiSetPrivate GeeTreeMultiSetPrivate;

#define GEE_TYPE_TREE_SET (gee_tree_set_get_type ())
#define GEE_TREE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_SET, GeeTreeSet))
#define GEE_TREE_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_SET, GeeTreeSetClass))
#define GEE_IS_TREE_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_SET))
#define GEE_IS_TREE_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_SET))
#define GEE_TREE_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_SET, GeeTreeSetClass))

typedef struct _GeeTreeSet GeeTreeSet;
typedef struct _GeeTreeSetClass GeeTreeSetClass;
typedef struct _GeeTreeSetPrivate GeeTreeSetPrivate;

#define GEE_TYPE_UNROLLED_LINKED_LIST (gee_unrolled_linked_list_get_type ())
#define GEE_UNROLLED_LINKED_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedList))
#define GEE_UNROLLED_LINKED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedListClass))
#define GEE_IS_UNROLLED_LINKED_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_UNROLLED_LINKED_LIST))
#define GEE_IS_UNROLLED_LINKED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_UNROLLED_LINKED_LIST))
#define GEE_UNROLLED_LINKED_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedListClass))

typedef struct _GeeUnrolledLinkedList GeeUnrolledLinkedList;
typedef struct _GeeUnrolledLinkedListClass GeeUnrolledLinkedListClass;
typedef struct _GeeUnrolledLinkedListPrivate GeeUnrolledLinkedListPrivate;

struct _GeeIteratorIface {
	GTypeInterface parent_iface;
	gboolean (*next) (GeeIterator* self);
	gboolean (*has_next) (GeeIterator* self);
	gpointer (*get) (GeeIterator* self);
	void (*remove) (GeeIterator* self);
	gboolean (*get_valid) (GeeIterator* self);
	gboolean (*get_read_only) (GeeIterator* self);
};

struct _GeeTraversableIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeTraversable* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self);
	GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self);
	gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, gpointer f_target);
	GeeIterator* (*stream) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeStreamFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
	gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
	GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, gpointer f_target);
	GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
	GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
	GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length);
	GType (*get_element_type) (GeeTraversable* self);
	GeeIterator* (*flat_map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFlatMapFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
	GeeIterator** (*tee) (GeeTraversable* self, guint forks, gint* result_length1);
	gpointer (*first_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
	gboolean (*any_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
	gboolean (*all_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
	gpointer (*max) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
	gpointer (*min) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
	GeeIterator* (*order_by) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
};

struct _GeeIterableIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeIterable* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self);
	GDestroyNotify (*get_g_destroy_func) (GeeIterable* self);
	GeeIterator* (*iterator) (GeeIterable* self);
};

struct _GeeCollectionIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeCollection* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self);
	GDestroyNotify (*get_g_destroy_func) (GeeCollection* self);
	gboolean (*contains) (GeeCollection* self, gconstpointer item);
	gboolean (*add) (GeeCollection* self, gconstpointer item);
	gboolean (*remove) (GeeCollection* self, gconstpointer item);
	void (*clear) (GeeCollection* self);
	gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
	gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
	gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
	gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
	gpointer* (*to_array) (GeeCollection* self, gint* result_length1);
	gint (*get_size) (GeeCollection* self);
	gboolean (*get_is_empty) (GeeCollection* self);
	gboolean (*get_read_only) (GeeCollection* self);
	GeeCollection* (*get_read_only_view) (GeeCollection* self);
	gboolean (*add_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
	gboolean (*contains_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
	gboolean (*remove_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
	gboolean (*add_all_iterator) (GeeCollection* self, GeeIterator* iter);
	gboolean (*contains_all_iterator) (GeeCollection* self, GeeIterator* iter);
	gboolean (*remove_all_iterator) (GeeCollection* self, GeeIterator* iter);
};

struct _GeeAbstractCollection {
	GObject parent_instance;
	GeeAbstractCollectionPrivate * priv;
};

struct _GeeAbstractCollectionClass {
	GObjectClass parent_class;
	gboolean (*contains) (GeeAbstractCollection* self, gconstpointer item);
	gboolean (*add) (GeeAbstractCollection* self, gconstpointer item);
	gboolean (*remove) (GeeAbstractCollection* self, gconstpointer item);
	void (*clear) (GeeAbstractCollection* self);
	GeeIterator* (*iterator) (GeeAbstractCollection* self);
	gboolean (*foreach) (GeeAbstractCollection* self, GeeForallFunc f, gpointer f_target);
	void (*reserved0) (GeeAbstractCollection* self);
	void (*reserved1) (GeeAbstractCollection* self);
	void (*reserved2) (GeeAbstractCollection* self);
	void (*reserved3) (GeeAbstractCollection* self);
	void (*reserved4) (GeeAbstractCollection* self);
	void (*reserved5) (GeeAbstractCollection* self);
	void (*reserved6) (GeeAbstractCollection* self);
	void (*reserved7) (GeeAbstractCollection* self);
	void (*reserved8) (GeeAbstractCollection* self);
	void (*reserved9) (GeeAbstractCollection* self);
	gint (*get_size) (GeeAbstractCollection* self);
	gboolean (*get_read_only) (GeeAbstractCollection* self);
	GeeCollection* (*get_read_only_view) (GeeAbstractCollection* self);
};

struct _GeeListIteratorIface {
	GTypeInterface parent_iface;
	void (*set) (GeeListIterator* self, gconstpointer item);
	void (*add) (GeeListIterator* self, gconstpointer item);
	gint (*index) (GeeListIterator* self);
};

struct _GeeListIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeList* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeList* self);
	GDestroyNotify (*get_g_destroy_func) (GeeList* self);
	GeeListIterator* (*list_iterator) (GeeList* self);
	gpointer (*get) (GeeList* self, gint index);
	void (*set) (GeeList* self, gint index, gconstpointer item);
	gint (*index_of) (GeeList* self, gconstpointer item);
	void (*insert) (GeeList* self, gint index, gconstpointer item);
	gpointer (*remove_at) (GeeList* self, gint index);
	GeeList* (*slice) (GeeList* self, gint start, gint stop);
	gpointer (*first) (GeeList* self);
	gpointer (*last) (GeeList* self);
	void (*insert_all) (GeeList* self, gint index, GeeCollection* collection);
	void (*sort) (GeeList* self, GCompareDataFunc compare_func, gpointer compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
	GeeList* (*get_read_only_view) (GeeList* self);
};

struct _GeeAbstractList {
	GeeAbstractCollection parent_instance;
	GeeAbstractListPrivate * priv;
};

struct _GeeAbstractListClass {
	GeeAbstractCollectionClass parent_class;
	GeeListIterator* (*list_iterator) (GeeAbstractList* self);
	gpointer (*get) (GeeAbstractList* self, gint index);
	void (*set) (GeeAbstractList* self, gint index, gconstpointer item);
	gint (*index_of) (GeeAbstractList* self, gconstpointer item);
	void (*insert) (GeeAbstractList* self, gint index, gconstpointer item);
	gpointer (*remove_at) (GeeAbstractList* self, gint index);
	GeeList* (*slice) (GeeAbstractList* self, gint start, gint stop);
	void (*reserved0) (GeeAbstractList* self);
	void (*reserved1) (GeeAbstractList* self);
	void (*reserved2) (GeeAbstractList* self);
	void (*reserved3) (GeeAbstractList* self);
	void (*reserved4) (GeeAbstractList* self);
	void (*reserved5) (GeeAbstractList* self);
	void (*reserved6) (GeeAbstractList* self);
	void (*reserved7) (GeeAbstractList* self);
	void (*reserved8) (GeeAbstractList* self);
	void (*reserved9) (GeeAbstractList* self);
	GeeList* (*get_read_only_view) (GeeAbstractList* self);
};

struct _GeeBidirIteratorIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeBidirIterator* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirIterator* self);
	GDestroyNotify (*get_g_destroy_func) (GeeBidirIterator* self);
	gboolean (*previous) (GeeBidirIterator* self);
	gboolean (*has_previous) (GeeBidirIterator* self);
	gboolean (*first) (GeeBidirIterator* self);
	gboolean (*last) (GeeBidirIterator* self);
};

struct _GeeBidirListIteratorIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeBidirListIterator* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirListIterator* self);
	GDestroyNotify (*get_g_destroy_func) (GeeBidirListIterator* self);
	void (*insert) (GeeBidirListIterator* self, gconstpointer item);
};

struct _GeeBidirListIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeBidirList* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirList* self);
	GDestroyNotify (*get_g_destroy_func) (GeeBidirList* self);
	GeeBidirListIterator* (*bidir_list_iterator) (GeeBidirList* self);
	GeeBidirList* (*get_read_only_view) (GeeBidirList* self);
};

struct _GeeAbstractBidirList {
	GeeAbstractList parent_instance;
	GeeAbstractBidirListPrivate * priv;
};

struct _GeeAbstractBidirListClass {
	GeeAbstractListClass parent_class;
	GeeBidirListIterator* (*bidir_list_iterator) (GeeAbstractBidirList* self);
	void (*reserved0) (GeeAbstractBidirList* self);
	void (*reserved1) (GeeAbstractBidirList* self);
	void (*reserved2) (GeeAbstractBidirList* self);
	void (*reserved3) (GeeAbstractBidirList* self);
	void (*reserved4) (GeeAbstractBidirList* self);
	void (*reserved5) (GeeAbstractBidirList* self);
	void (*reserved6) (GeeAbstractBidirList* self);
	void (*reserved7) (GeeAbstractBidirList* self);
	void (*reserved8) (GeeAbstractBidirList* self);
	void (*reserved9) (GeeAbstractBidirList* self);
	GeeBidirList* (*get_read_only_view) (GeeAbstractBidirList* self);
};

struct _GeeSetIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeSet* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeSet* self);
	GDestroyNotify (*get_g_destroy_func) (GeeSet* self);
	GeeSet* (*get_read_only_view) (GeeSet* self);
};

struct _GeeAbstractSet {
	GeeAbstractCollection parent_instance;
	GeeAbstractSetPrivate * priv;
};

struct _GeeAbstractSetClass {
	GeeAbstractCollectionClass parent_class;
	void (*reserved0) (GeeAbstractSet* self);
	void (*reserved1) (GeeAbstractSet* self);
	void (*reserved2) (GeeAbstractSet* self);
	void (*reserved3) (GeeAbstractSet* self);
	void (*reserved4) (GeeAbstractSet* self);
	void (*reserved5) (GeeAbstractSet* self);
	void (*reserved6) (GeeAbstractSet* self);
	void (*reserved7) (GeeAbstractSet* self);
	void (*reserved8) (GeeAbstractSet* self);
	void (*reserved9) (GeeAbstractSet* self);
	GeeSet* (*get_read_only_view) (GeeAbstractSet* self);
};

struct _GeeSortedSetIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeSortedSet* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeSortedSet* self);
	GDestroyNotify (*get_g_destroy_func) (GeeSortedSet* self);
	gpointer (*first) (GeeSortedSet* self);
	gpointer (*last) (GeeSortedSet* self);
	GeeIterator* (*iterator_at) (GeeSortedSet* self, gconstpointer element);
	gpointer (*lower) (GeeSortedSet* self, gconstpointer element);
	gpointer (*higher) (GeeSortedSet* self, gconstpointer element);
	gpointer (*floor) (GeeSortedSet* self, gconstpointer element);
	gpointer (*ceil) (GeeSortedSet* self, gconstpointer element);
	GeeSortedSet* (*head_set) (GeeSortedSet* self, gconstpointer before);
	GeeSortedSet* (*tail_set) (GeeSortedSet* self, gconstpointer after);
	GeeSortedSet* (*sub_set) (GeeSortedSet* self, gconstpointer from, gconstpointer to);
	GeeSortedSet* (*get_read_only_view) (GeeSortedSet* self);
};

struct _GeeAbstractSortedSet {
	GeeAbstractSet parent_instance;
	GeeAbstractSortedSetPrivate * priv;
};

struct _GeeAbstractSortedSetClass {
	GeeAbstractSetClass parent_class;
	gpointer (*first) (GeeAbstractSortedSet* self);
	gpointer (*last) (GeeAbstractSortedSet* self);
	GeeIterator* (*iterator_at) (GeeAbstractSortedSet* self, gconstpointer element);
	gpointer (*lower) (GeeAbstractSortedSet* self, gconstpointer element);
	gpointer (*higher) (GeeAbstractSortedSet* self, gconstpointer element);
	gpointer (*floor) (GeeAbstractSortedSet* self, gconstpointer element);
	gpointer (*ceil) (GeeAbstractSortedSet* self, gconstpointer element);
	GeeSortedSet* (*head_set) (GeeAbstractSortedSet* self, gconstpointer before);
	GeeSortedSet* (*tail_set) (GeeAbstractSortedSet* self, gconstpointer after);
	GeeSortedSet* (*sub_set) (GeeAbstractSortedSet* self, gconstpointer from, gconstpointer to);
	void (*reserved0) (GeeAbstractSortedSet* self);
	void (*reserved1) (GeeAbstractSortedSet* self);
	void (*reserved2) (GeeAbstractSortedSet* self);
	void (*reserved3) (GeeAbstractSortedSet* self);
	void (*reserved4) (GeeAbstractSortedSet* self);
	void (*reserved5) (GeeAbstractSortedSet* self);
	void (*reserved6) (GeeAbstractSortedSet* self);
	void (*reserved7) (GeeAbstractSortedSet* self);
	void (*reserved8) (GeeAbstractSortedSet* self);
	void (*reserved9) (GeeAbstractSortedSet* self);
	GeeSortedSet* (*get_read_only_view) (GeeAbstractSortedSet* self);
};

struct _GeeBidirSortedSetIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeBidirSortedSet* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirSortedSet* self);
	GDestroyNotify (*get_g_destroy_func) (GeeBidirSortedSet* self);
	GeeBidirIterator* (*bidir_iterator) (GeeBidirSortedSet* self);
	GeeBidirSortedSet* (*get_read_only_view) (GeeBidirSortedSet* self);
};

struct _GeeAbstractBidirSortedSet {
	GeeAbstractSortedSet parent_instance;
	GeeAbstractBidirSortedSetPrivate * priv;
};

struct _GeeAbstractBidirSortedSetClass {
	GeeAbstractSortedSetClass parent_class;
	GeeBidirIterator* (*bidir_iterator) (GeeAbstractBidirSortedSet* self);
	void (*reserved0) (GeeAbstractBidirSortedSet* self);
	void (*reserved1) (GeeAbstractBidirSortedSet* self);
	void (*reserved2) (GeeAbstractBidirSortedSet* self);
	void (*reserved3) (GeeAbstractBidirSortedSet* self);
	void (*reserved4) (GeeAbstractBidirSortedSet* self);
	void (*reserved5) (GeeAbstractBidirSortedSet* self);
	void (*reserved6) (GeeAbstractBidirSortedSet* self);
	void (*reserved7) (GeeAbstractBidirSortedSet* self);
	void (*reserved8) (GeeAbstractBidirSortedSet* self);
	void (*reserved9) (GeeAbstractBidirSortedSet* self);
	GeeBidirSortedSet* (*get_read_only_view) (GeeAbstractBidirSortedSet* self);
};

struct _GeeMapIteratorIface {
	GTypeInterface parent_iface;
	GType (*get_k_type) (GeeMapIterator* self);
	GBoxedCopyFunc (*get_k_dup_func) (GeeMapIterator* self);
	GDestroyNotify (*get_k_destroy_func) (GeeMapIterator* self);
	GType (*get_v_type) (GeeMapIterator* self);
	GBoxedCopyFunc (*get_v_dup_func) (GeeMapIterator* self);
	GDestroyNotify (*get_v_destroy_func) (GeeMapIterator* self);
	gboolean (*next) (GeeMapIterator* self);
	gboolean (*has_next) (GeeMapIterator* self);
	gpointer (*get_key) (GeeMapIterator* self);
	gpointer (*get_value) (GeeMapIterator* self);
	void (*set_value) (GeeMapIterator* self, gconstpointer value);
	void (*unset) (GeeMapIterator* self);
	gpointer (*fold) (GeeMapIterator* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldMapFunc f, gpointer f_target, gpointer seed);
	gboolean (*foreach) (GeeMapIterator* self, GeeForallMapFunc f, gpointer f_target);
	gboolean (*get_valid) (GeeMapIterator* self);
	gboolean (*get_mutable) (GeeMapIterator* self);
	gboolean (*get_read_only) (GeeMapIterator* self);
};

struct _GeeMapIface {
	GTypeInterface parent_iface;
	GType (*get_k_type) (GeeMap* self);
	GBoxedCopyFunc (*get_k_dup_func) (GeeMap* self);
	GDestroyNotify (*get_k_destroy_func) (GeeMap* self);
	GType (*get_v_type) (GeeMap* self);
	GBoxedCopyFunc (*get_v_dup_func) (GeeMap* self);
	GDestroyNotify (*get_v_destroy_func) (GeeMap* self);
	gboolean (*has_key) (GeeMap* self, gconstpointer key);
	gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value);
	gpointer (*get) (GeeMap* self, gconstpointer key);
	void (*set) (GeeMap* self, gconstpointer key, gconstpointer value);
	gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value);
	void (*clear) (GeeMap* self);
	GeeMapIterator* (*map_iterator) (GeeMap* self);
	void (*set_all) (GeeMap* self, GeeMap* map);
	gboolean (*unset_all) (GeeMap* self, GeeMap* map);
	gboolean (*has_all) (GeeMap* self, GeeMap* map);
	gint (*get_size) (GeeMap* self);
	gboolean (*get_is_empty) (GeeMap* self);
	gboolean (*get_read_only) (GeeMap* self);
	GeeSet* (*get_keys) (GeeMap* self);
	GeeCollection* (*get_values) (GeeMap* self);
	GeeSet* (*get_entries) (GeeMap* self);
	GeeMap* (*get_read_only_view) (GeeMap* self);
};

struct _GeeAbstractMap {
	GObject parent_instance;
	GeeAbstractMapPrivate * priv;
};

struct _GeeAbstractMapClass {
	GObjectClass parent_class;
	gboolean (*has_key) (GeeAbstractMap* self, gconstpointer key);
	gboolean (*has) (GeeAbstractMap* self, gconstpointer key, gconstpointer value);
	gpointer (*get) (GeeAbstractMap* self, gconstpointer key);
	void (*set) (GeeAbstractMap* self, gconstpointer key, gconstpointer value);
	gboolean (*unset) (GeeAbstractMap* self, gconstpointer key, gpointer* value);
	GeeMapIterator* (*map_iterator) (GeeAbstractMap* self);
	void (*clear) (GeeAbstractMap* self);
	gboolean (*foreach) (GeeAbstractMap* self, GeeForallFunc f, gpointer f_target);
	GeeIterator* (*stream) (GeeAbstractMap* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeStreamFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
	void (*reserved0) (GeeAbstractMap* self);
	void (*reserved1) (GeeAbstractMap* self);
	void (*reserved2) (GeeAbstractMap* self);
	void (*reserved3) (GeeAbstractMap* self);
	void (*reserved4) (GeeAbstractMap* self);
	void (*reserved5) (GeeAbstractMap* self);
	void (*reserved6) (GeeAbstractMap* self);
	void (*reserved7) (GeeAbstractMap* self);
	void (*reserved8) (GeeAbstractMap* self);
	void (*reserved9) (GeeAbstractMap* self);
	gint (*get_size) (GeeAbstractMap* self);
	gboolean (*get_read_only) (GeeAbstractMap* self);
	GeeSet* (*get_keys) (GeeAbstractMap* self);
	GeeCollection* (*get_values) (GeeAbstractMap* self);
	GeeSet* (*get_entries) (GeeAbstractMap* self);
	GeeMap* (*get_read_only_view) (GeeAbstractMap* self);
};

struct _GeeSortedMapIface {
	GTypeInterface parent_iface;
	GeeSortedMap* (*head_map) (GeeSortedMap* self, gconstpointer before);
	GeeSortedMap* (*tail_map) (GeeSortedMap* self, gconstpointer after);
	GeeSortedMap* (*sub_map) (GeeSortedMap* self, gconstpointer before, gconstpointer after);
	GeeSortedSet* (*get_ascending_keys) (GeeSortedMap* self);
	GeeSortedSet* (*get_ascending_entries) (GeeSortedMap* self);
	GeeSortedMap* (*get_read_only_view) (GeeSortedMap* self);
};

struct _GeeAbstractSortedMap {
	GeeAbstractMap parent_instance;
	GeeAbstractSortedMapPrivate * priv;
};

struct _GeeAbstractSortedMapClass {
	GeeAbstractMapClass parent_class;
	GeeSortedMap* (*head_map) (GeeAbstractSortedMap* self, gconstpointer before);
	GeeSortedMap* (*tail_map) (GeeAbstractSortedMap* self, gconstpointer after);
	GeeSortedMap* (*sub_map) (GeeAbstractSortedMap* self, gconstpointer before, gconstpointer after);
	void (*reserved0) (GeeAbstractSortedMap* self);
	void (*reserved1) (GeeAbstractSortedMap* self);
	void (*reserved2) (GeeAbstractSortedMap* self);
	void (*reserved3) (GeeAbstractSortedMap* self);
	void (*reserved4) (GeeAbstractSortedMap* self);
	void (*reserved5) (GeeAbstractSortedMap* self);
	void (*reserved6) (GeeAbstractSortedMap* self);
	void (*reserved7) (GeeAbstractSortedMap* self);
	void (*reserved8) (GeeAbstractSortedMap* self);
	void (*reserved9) (GeeAbstractSortedMap* self);
	GeeSortedSet* (*get_ascending_keys) (GeeAbstractSortedMap* self);
	GeeSortedSet* (*get_ascending_entries) (GeeAbstractSortedMap* self);
};

struct _GeeBidirMapIteratorIface {
	GTypeInterface parent_iface;
	GType (*get_k_type) (GeeBidirMapIterator* self);
	GBoxedCopyFunc (*get_k_dup_func) (GeeBidirMapIterator* self);
	GDestroyNotify (*get_k_destroy_func) (GeeBidirMapIterator* self);
	GType (*get_v_type) (GeeBidirMapIterator* self);
	GBoxedCopyFunc (*get_v_dup_func) (GeeBidirMapIterator* self);
	GDestroyNotify (*get_v_destroy_func) (GeeBidirMapIterator* self);
	gboolean (*previous) (GeeBidirMapIterator* self);
	gboolean (*has_previous) (GeeBidirMapIterator* self);
	gboolean (*first) (GeeBidirMapIterator* self);
	gboolean (*last) (GeeBidirMapIterator* self);
};

struct _GeeBidirSortedMapIface {
	GTypeInterface parent_iface;
	GType (*get_k_type) (GeeBidirSortedMap* self);
	GBoxedCopyFunc (*get_k_dup_func) (GeeBidirSortedMap* self);
	GDestroyNotify (*get_k_destroy_func) (GeeBidirSortedMap* self);
	GType (*get_v_type) (GeeBidirSortedMap* self);
	GBoxedCopyFunc (*get_v_dup_func) (GeeBidirSortedMap* self);
	GDestroyNotify (*get_v_destroy_func) (GeeBidirSortedMap* self);
	GeeBidirMapIterator* (*bidir_map_iterator) (GeeBidirSortedMap* self);
	GeeBidirSortedMap* (*get_read_only_view) (GeeBidirSortedMap* self);
};

struct _GeeAbstractBidirSortedMap {
	GeeAbstractSortedMap parent_instance;
	GeeAbstractBidirSortedMapPrivate * priv;
};

struct _GeeAbstractBidirSortedMapClass {
	GeeAbstractSortedMapClass parent_class;
	GeeBidirMapIterator* (*bidir_map_iterator) (GeeAbstractBidirSortedMap* self);
	void (*reserved0) (GeeAbstractBidirSortedMap* self);
	void (*reserved1) (GeeAbstractBidirSortedMap* self);
	void (*reserved2) (GeeAbstractBidirSortedMap* self);
	void (*reserved3) (GeeAbstractBidirSortedMap* self);
	void (*reserved4) (GeeAbstractBidirSortedMap* self);
	void (*reserved5) (GeeAbstractBidirSortedMap* self);
	void (*reserved6) (GeeAbstractBidirSortedMap* self);
	void (*reserved7) (GeeAbstractBidirSortedMap* self);
	void (*reserved8) (GeeAbstractBidirSortedMap* self);
	void (*reserved9) (GeeAbstractBidirSortedMap* self);
	GeeBidirSortedMap* (*get_read_only_view) (GeeAbstractBidirSortedMap* self);
};

struct _GeeMultiSetIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeMultiSet* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeMultiSet* self);
	GDestroyNotify (*get_g_destroy_func) (GeeMultiSet* self);
	gint (*count) (GeeMultiSet* self, gconstpointer item);
	GeeMultiSet* (*get_read_only_view) (GeeMultiSet* self);
};

struct _GeeMultiMapIface {
	GTypeInterface parent_iface;
	GType (*get_k_type) (GeeMultiMap* self);
	GBoxedCopyFunc (*get_k_dup_func) (GeeMultiMap* self);
	GDestroyNotify (*get_k_destroy_func) (GeeMultiMap* self);
	GType (*get_v_type) (GeeMultiMap* self);
	GBoxedCopyFunc (*get_v_dup_func) (GeeMultiMap* self);
	GDestroyNotify (*get_v_destroy_func) (GeeMultiMap* self);
	GeeSet* (*get_keys) (GeeMultiMap* self);
	GeeMultiSet* (*get_all_keys) (GeeMultiMap* self);
	GeeCollection* (*get_values) (GeeMultiMap* self);
	gboolean (*contains) (GeeMultiMap* self, gconstpointer key);
	GeeCollection* (*get) (GeeMultiMap* self, gconstpointer key);
	void (*set) (GeeMultiMap* self, gconstpointer key, gconstpointer value);
	gboolean (*remove) (GeeMultiMap* self, gconstpointer key, gconstpointer value);
	gboolean (*remove_all) (GeeMultiMap* self, gconstpointer key);
	void (*clear) (GeeMultiMap* self);
	GeeMapIterator* (*map_iterator) (GeeMultiMap* self);
	gint (*get_size) (GeeMultiMap* self);
	gboolean (*get_read_only) (GeeMultiMap* self);
	GeeMultiMap* (*get_read_only_view) (GeeMultiMap* self);
};

struct _GeeAbstractMultiMap {
	GObject parent_instance;
	GeeAbstractMultiMapPrivate * priv;
	GeeMap* _storage_map;
};

struct _GeeAbstractMultiMapClass {
	GObjectClass parent_class;
	GeeCollection* (*create_value_storage) (GeeAbstractMultiMap* self);
	GeeMultiSet* (*create_multi_key_set) (GeeAbstractMultiMap* self);
	GeeEqualDataFunc (*get_value_equal_func) (GeeAbstractMultiMap* self, gpointer* result_target, GDestroyNotify* result_target_destroy_notify);
	void (*reserved0) (GeeAbstractMultiMap* self);
	void (*reserved1) (GeeAbstractMultiMap* self);
	void (*reserved2) (GeeAbstractMultiMap* self);
	void (*reserved3) (GeeAbstractMultiMap* self);
	void (*reserved4) (GeeAbstractMultiMap* self);
	void (*reserved5) (GeeAbstractMultiMap* self);
	void (*reserved6) (GeeAbstractMultiMap* self);
	void (*reserved7) (GeeAbstractMultiMap* self);
	void (*reserved8) (GeeAbstractMultiMap* self);
	GeeMultiMap* (*get_read_only_view) (GeeAbstractMultiMap* self);
};

struct _GeeAbstractMultiSet {
	GeeAbstractCollection parent_instance;
	GeeAbstractMultiSetPrivate * priv;
	GeeMap* _storage_map;
};

struct _GeeAbstractMultiSetClass {
	GeeAbstractCollectionClass parent_class;
	void (*reserved0) (GeeAbstractMultiSet* self);
	void (*reserved1) (GeeAbstractMultiSet* self);
	void (*reserved2) (GeeAbstractMultiSet* self);
	void (*reserved3) (GeeAbstractMultiSet* self);
	void (*reserved4) (GeeAbstractMultiSet* self);
	void (*reserved5) (GeeAbstractMultiSet* self);
	void (*reserved6) (GeeAbstractMultiSet* self);
	void (*reserved7) (GeeAbstractMultiSet* self);
	void (*reserved8) (GeeAbstractMultiSet* self);
	GeeMultiSet* (*get_read_only_view) (GeeAbstractMultiSet* self);
};

struct _GeeQueueIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeQueue* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeQueue* self);
	GDestroyNotify (*get_g_destroy_func) (GeeQueue* self);
	gboolean (*offer) (GeeQueue* self, gconstpointer element);
	gpointer (*peek) (GeeQueue* self);
	gpointer (*poll) (GeeQueue* self);
	gint (*drain) (GeeQueue* self, GeeCollection* recipient, gint amount);
	gint (*get_capacity) (GeeQueue* self);
	gint (*get_remaining_capacity) (GeeQueue* self);
	gboolean (*get_is_full) (GeeQueue* self);
};

struct _GeeAbstractQueue {
	GeeAbstractCollection parent_instance;
	GeeAbstractQueuePrivate * priv;
};

struct _GeeAbstractQueueClass {
	GeeAbstractCollectionClass parent_class;
	gpointer (*peek) (GeeAbstractQueue* self);
	gpointer (*poll) (GeeAbstractQueue* self);
	void (*reserved0) (GeeAbstractQueue* self);
	void (*reserved1) (GeeAbstractQueue* self);
	void (*reserved2) (GeeAbstractQueue* self);
	void (*reserved3) (GeeAbstractQueue* self);
	void (*reserved4) (GeeAbstractQueue* self);
	void (*reserved5) (GeeAbstractQueue* self);
	void (*reserved6) (GeeAbstractQueue* self);
	void (*reserved7) (GeeAbstractQueue* self);
	void (*reserved8) (GeeAbstractQueue* self);
	void (*reserved9) (GeeAbstractQueue* self);
	gint (*get_capacity) (GeeAbstractQueue* self);
	gint (*get_remaining_capacity) (GeeAbstractQueue* self);
	gboolean (*get_is_full) (GeeAbstractQueue* self);
};

struct _GeeArrayList {
	GeeAbstractBidirList parent_instance;
	GeeArrayListPrivate * priv;
	gpointer* _items;
	gint _items_length1;
	gint __items_size_;
	gint _size;
};

struct _GeeArrayListClass {
	GeeAbstractBidirListClass parent_class;
};

struct _GeeDequeIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeDeque* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeDeque* self);
	GDestroyNotify (*get_g_destroy_func) (GeeDeque* self);
	gboolean (*offer_head) (GeeDeque* self, gconstpointer element);
	gpointer (*peek_head) (GeeDeque* self);
	gpointer (*poll_head) (GeeDeque* self);
	gint (*drain_head) (GeeDeque* self, GeeCollection* recipient, gint amount);
	gboolean (*offer_tail) (GeeDeque* self, gconstpointer element);
	gpointer (*peek_tail) (GeeDeque* self);
	gpointer (*poll_tail) (GeeDeque* self);
	gint (*drain_tail) (GeeDeque* self, GeeCollection* recipient, gint amount);
};

struct _GeeArrayQueue {
	GeeAbstractQueue parent_instance;
	GeeArrayQueuePrivate * priv;
};

struct _GeeArrayQueueClass {
	GeeAbstractQueueClass parent_class;
};

struct _GeeComparableIface {
	GTypeInterface parent_iface;
	gint (*compare_to) (GeeComparable* self, gconstpointer object);
};

struct _GeeConcurrentList {
	GeeAbstractList parent_instance;
	GeeConcurrentListPrivate * priv;
};

struct _GeeConcurrentListClass {
	GeeAbstractListClass parent_class;
};

struct _GeeConcurrentSet {
	GeeAbstractSortedSet parent_instance;
	GeeConcurrentSetPrivate * priv;
};

struct _GeeConcurrentSetClass {
	GeeAbstractSortedSetClass parent_class;
};

typedef enum  {
	GEE_FUTURE_ERROR_ABANDON_PROMISE,
	GEE_FUTURE_ERROR_EXCEPTION
} GeeFutureError;
#define GEE_FUTURE_ERROR gee_future_error_quark ()

struct _GeeFutureIface {
	GTypeInterface parent_iface;
	GType (*get_g_type) (GeeFuture* self);
	GBoxedCopyFunc (*get_g_dup_func) (GeeFuture* self);
	GDestroyNotify (*get_g_destroy_func) (GeeFuture* self);
	gconstpointer (*wait) (GeeFuture* self, GError** error);
	gboolean (*wait_until) (GeeFuture* self, gint64 end_time, gconstpointer* value, GError** error);
	void (*wait_async) (GeeFuture* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gconstpointer (*wait_finish) (GeeFuture* self, GAsyncResult* _res_, GError** error);
	GeeFuture* (*map) (GeeFuture* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFutureMapFunc func, gpointer func_target, GDestroyNotify func_target_destroy_notify);
	GeeFuture* (*light_map) (GeeFuture* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFutureLightMapFunc func, gpointer func_target);
	GeeFuture* (*zip) (GeeFuture* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GType b_type, GBoxedCopyFunc b_dup_func, GDestroyNotify b_destroy_func, GeeFutureZipFunc zip_func, gpointer zip_func_target, GeeFuture* second);
	GeeFuture* (*flat_map) (GeeFuture* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFutureFlatMapFunc func, gpointer func_target, GDestroyNotify func_target_destroy_notify);
	gconstpointer (*get_value) (GeeFuture* self);
	gboolean (*get_ready) (GeeFuture* self);
	GError* (*get_exception) (GeeFuture* self);
	GeeFuture* (*light_map_fixed) (GeeFuture* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFutureLightMapFunc func, gpointer func_target, GDestroyNotify func_target_destroy_notify);
};

struct _GeeHashableIface {
	GTypeInterface parent_iface;
	guint (*hash) (GeeHashable* self);
	gboolean (*equal_to) (GeeHashable* self, gconstpointer object);
};

struct _GeeHashMap {
	GeeAbstractMap parent_instance;
	GeeHashMapPrivate * priv;
};

struct _GeeHashMapClass {
	GeeAbstractMapClass parent_class;
};

struct _GeeHashMultiMap {
	GeeAbstractMultiMap parent_instance;
	GeeHashMultiMapPrivate * priv;
};

struct _GeeHashMultiMapClass {
	GeeAbstractMultiMapClass parent_class;
};

struct _GeeHashMultiSet {
	GeeAbstractMultiSet parent_instance;
	GeeHashMultiSetPrivate * priv;
};

struct _GeeHashMultiSetClass {
	GeeAbstractMultiSetClass parent_class;
};

struct _GeeHashSet {
	GeeAbstractSet parent_instance;
	GeeHashSetPrivate * priv;
};

struct _GeeHashSetClass {
	GeeAbstractSetClass parent_class;
};

struct _GeeHazardPointer {
	GeeHazardPointerNode* _node;
};

struct _GeeHazardPointerContext {
	GeeHazardPointerContext* _parent;
	GeeArrayList* _to_free;
	GeeHazardPointerPolicy* _policy;
};

struct _GeeLazy {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GeeLazyPrivate * priv;
};

struct _GeeLazyClass {
	GTypeClass parent_class;
	void (*finalize) (GeeLazy *self);
};

struct _GeeLinkedList {
	GeeAbstractBidirList parent_instance;
	GeeLinkedListPrivate * priv;
};

struct _GeeLinkedListClass {
	GeeAbstractBidirListClass parent_class;
};

struct _GeeMapEntry {
	GObject parent_instance;
	GeeMapEntryPrivate * priv;
};

struct _GeeMapEntryClass {
	GObjectClass parent_class;
	gconstpointer (*get_key) (GeeMapEntry* self);
	gconstpointer (*get_value) (GeeMapEntry* self);
	void (*set_value) (GeeMapEntry* self, gconstpointer value);
	gboolean (*get_read_only) (GeeMapEntry* self);
};

struct _GeePriorityQueue {
	GeeAbstractQueue parent_instance;
	GeePriorityQueuePrivate * priv;
};

struct _GeePriorityQueueClass {
	GeeAbstractQueueClass parent_class;
};

struct _GeePromise {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GeePromisePrivate * priv;
};

struct _GeePromiseClass {
	GTypeClass parent_class;
	void (*finalize) (GeePromise *self);
};

struct _GeeTreeMap {
	GeeAbstractBidirSortedMap parent_instance;
	GeeTreeMapPrivate * priv;
};

struct _GeeTreeMapClass {
	GeeAbstractBidirSortedMapClass parent_class;
};

struct _GeeTreeMultiMap {
	GeeAbstractMultiMap parent_instance;
	GeeTreeMultiMapPrivate * priv;
};

struct _GeeTreeMultiMapClass {
	GeeAbstractMultiMapClass parent_class;
};

struct _GeeTreeMultiSet {
	GeeAbstractMultiSet parent_instance;
	GeeTreeMultiSetPrivate * priv;
};

struct _GeeTreeMultiSetClass {
	GeeAbstractMultiSetClass parent_class;
};

struct _GeeTreeSet {
	GeeAbstractBidirSortedSet parent_instance;
	GeeTreeSetPrivate * priv;
};

struct _GeeTreeSetClass {
	GeeAbstractBidirSortedSetClass parent_class;
};

struct _GeeUnrolledLinkedList {
	GeeAbstractBidirList parent_instance;
	GeeUnrolledLinkedListPrivate * priv;
};

struct _GeeUnrolledLinkedListClass {
	GeeAbstractBidirListClass parent_class;
};

VALA_EXTERN GType gee_traversable_stream_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gpointer gee_lazy_ref (gpointer instance);
VALA_EXTERN void gee_lazy_unref (gpointer instance);
VALA_EXTERN GParamSpec* gee_param_spec_lazy (const gchar* name,
                                 const gchar* nick,
                                 const gchar* blurb,
                                 GType object_type,
                                 GParamFlags flags);
VALA_EXTERN void gee_value_set_lazy (GValue* value,
                         gpointer v_object);
VALA_EXTERN void gee_value_take_lazy (GValue* value,
                          gpointer v_object);
VALA_EXTERN gpointer gee_value_get_lazy (const GValue* value);
VALA_EXTERN GType gee_lazy_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeLazy, gee_lazy_unref)
VALA_EXTERN GType gee_iterator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_traversable_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTraversable, g_object_unref)
VALA_EXTERN GType gee_iterable_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_collection_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_collection_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractCollection, g_object_unref)
VALA_EXTERN GType gee_list_iterator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_list_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_list_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractList, g_object_unref)
VALA_EXTERN GType gee_bidir_iterator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_bidir_list_iterator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_bidir_list_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_bidir_list_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractBidirList, g_object_unref)
VALA_EXTERN GeeBidirListIterator* gee_abstract_bidir_list_bidir_list_iterator (GeeAbstractBidirList* self);
VALA_EXTERN GeeAbstractBidirList* gee_abstract_bidir_list_construct (GType object_type,
                                                         GType g_type,
                                                         GBoxedCopyFunc g_dup_func,
                                                         GDestroyNotify g_destroy_func);
VALA_EXTERN GeeBidirList* gee_abstract_bidir_list_get_read_only_view (GeeAbstractBidirList* self);
VALA_EXTERN GType gee_set_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractSet, g_object_unref)
VALA_EXTERN GType gee_sorted_set_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_sorted_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractSortedSet, g_object_unref)
VALA_EXTERN GType gee_bidir_sorted_set_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_bidir_sorted_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractBidirSortedSet, g_object_unref)
VALA_EXTERN GeeBidirIterator* gee_abstract_bidir_sorted_set_bidir_iterator (GeeAbstractBidirSortedSet* self);
VALA_EXTERN GeeAbstractBidirSortedSet* gee_abstract_bidir_sorted_set_construct (GType object_type,
                                                                    GType g_type,
                                                                    GBoxedCopyFunc g_dup_func,
                                                                    GDestroyNotify g_destroy_func);
VALA_EXTERN GeeBidirSortedSet* gee_abstract_bidir_sorted_set_get_read_only_view (GeeAbstractBidirSortedSet* self);
VALA_EXTERN GType gee_map_iterator_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeMapIterator, g_object_unref)
VALA_EXTERN GType gee_map_entry_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeMapEntry, g_object_unref)
VALA_EXTERN GType gee_map_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMap, g_object_unref)
VALA_EXTERN GType gee_sorted_map_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_sorted_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractSortedMap, g_object_unref)
VALA_EXTERN GType gee_bidir_map_iterator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_bidir_sorted_map_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_bidir_sorted_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractBidirSortedMap, g_object_unref)
VALA_EXTERN GeeBidirMapIterator* gee_abstract_bidir_sorted_map_bidir_map_iterator (GeeAbstractBidirSortedMap* self);
VALA_EXTERN GeeAbstractBidirSortedMap* gee_abstract_bidir_sorted_map_construct (GType object_type,
                                                                    GType k_type,
                                                                    GBoxedCopyFunc k_dup_func,
                                                                    GDestroyNotify k_destroy_func,
                                                                    GType v_type,
                                                                    GBoxedCopyFunc v_dup_func,
                                                                    GDestroyNotify v_destroy_func);
VALA_EXTERN GeeBidirSortedMap* gee_abstract_bidir_sorted_map_get_read_only_view (GeeAbstractBidirSortedMap* self);
VALA_EXTERN gboolean gee_abstract_collection_contains (GeeAbstractCollection* self,
                                           gconstpointer item);
VALA_EXTERN gboolean gee_abstract_collection_add (GeeAbstractCollection* self,
                                      gconstpointer item);
VALA_EXTERN gboolean gee_abstract_collection_remove (GeeAbstractCollection* self,
                                         gconstpointer item);
VALA_EXTERN void gee_abstract_collection_clear (GeeAbstractCollection* self);
VALA_EXTERN GeeIterator* gee_abstract_collection_iterator (GeeAbstractCollection* self);
VALA_EXTERN gboolean gee_abstract_collection_foreach (GeeAbstractCollection* self,
                                          GeeForallFunc f,
                                          gpointer f_target);
VALA_EXTERN GeeAbstractCollection* gee_abstract_collection_construct (GType object_type,
                                                          GType g_type,
                                                          GBoxedCopyFunc g_dup_func,
                                                          GDestroyNotify g_destroy_func);
VALA_EXTERN gint gee_abstract_collection_get_size (GeeAbstractCollection* self);
VALA_EXTERN gboolean gee_abstract_collection_get_read_only (GeeAbstractCollection* self);
VALA_EXTERN GeeCollection* gee_abstract_collection_get_read_only_view (GeeAbstractCollection* self);
VALA_EXTERN GeeListIterator* gee_abstract_list_list_iterator (GeeAbstractList* self);
VALA_EXTERN gpointer gee_abstract_list_get (GeeAbstractList* self,
                                gint index);
VALA_EXTERN void gee_abstract_list_set (GeeAbstractList* self,
                            gint index,
                            gconstpointer item);
VALA_EXTERN gint gee_abstract_list_index_of (GeeAbstractList* self,
                                 gconstpointer item);
VALA_EXTERN void gee_abstract_list_insert (GeeAbstractList* self,
                               gint index,
                               gconstpointer item);
VALA_EXTERN gpointer gee_abstract_list_remove_at (GeeAbstractList* self,
                                      gint index);
VALA_EXTERN GeeList* gee_abstract_list_slice (GeeAbstractList* self,
                                  gint start,
                                  gint stop);
VALA_EXTERN GeeAbstractList* gee_abstract_list_construct (GType object_type,
                                              GType g_type,
                                              GBoxedCopyFunc g_dup_func,
                                              GDestroyNotify g_destroy_func);
VALA_EXTERN GeeList* gee_abstract_list_get_read_only_view (GeeAbstractList* self);
VALA_EXTERN gboolean gee_abstract_map_has_key (GeeAbstractMap* self,
                                   gconstpointer key);
VALA_EXTERN gboolean gee_abstract_map_has (GeeAbstractMap* self,
                               gconstpointer key,
                               gconstpointer value);
VALA_EXTERN gpointer gee_abstract_map_get (GeeAbstractMap* self,
                               gconstpointer key);
VALA_EXTERN void gee_abstract_map_set (GeeAbstractMap* self,
                           gconstpointer key,
                           gconstpointer value);
VALA_EXTERN gboolean gee_abstract_map_unset (GeeAbstractMap* self,
                                 gconstpointer key,
                                 gpointer* value);
VALA_EXTERN GeeMapIterator* gee_abstract_map_map_iterator (GeeAbstractMap* self);
VALA_EXTERN void gee_abstract_map_clear (GeeAbstractMap* self);
VALA_EXTERN gboolean gee_abstract_map_foreach (GeeAbstractMap* self,
                                   GeeForallFunc f,
                                   gpointer f_target);
VALA_EXTERN GeeIterator* gee_abstract_map_stream (GeeAbstractMap* self,
                                      GType a_type,
                                      GBoxedCopyFunc a_dup_func,
                                      GDestroyNotify a_destroy_func,
                                      GeeStreamFunc f,
                                      gpointer f_target,
                                      GDestroyNotify f_target_destroy_notify);
VALA_EXTERN GeeAbstractMap* gee_abstract_map_construct (GType object_type,
                                            GType k_type,
                                            GBoxedCopyFunc k_dup_func,
                                            GDestroyNotify k_destroy_func,
                                            GType v_type,
                                            GBoxedCopyFunc v_dup_func,
                                            GDestroyNotify v_destroy_func);
VALA_EXTERN gint gee_abstract_map_get_size (GeeAbstractMap* self);
VALA_EXTERN gboolean gee_abstract_map_get_read_only (GeeAbstractMap* self);
VALA_EXTERN GeeSet* gee_abstract_map_get_keys (GeeAbstractMap* self);
VALA_EXTERN GeeCollection* gee_abstract_map_get_values (GeeAbstractMap* self);
VALA_EXTERN GeeSet* gee_abstract_map_get_entries (GeeAbstractMap* self);
VALA_EXTERN GeeMap* gee_abstract_map_get_read_only_view (GeeAbstractMap* self);
VALA_EXTERN GType gee_multi_set_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_multi_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeMultiMap, g_object_unref)
VALA_EXTERN GType gee_abstract_multi_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMultiMap, g_object_unref)
VALA_EXTERN GeeAbstractMultiMap* gee_abstract_multi_map_construct (GType object_type,
                                                       GType k_type,
                                                       GBoxedCopyFunc k_dup_func,
                                                       GDestroyNotify k_destroy_func,
                                                       GType v_type,
                                                       GBoxedCopyFunc v_dup_func,
                                                       GDestroyNotify v_destroy_func,
                                                       GeeMap* storage_map);
VALA_EXTERN GeeCollection* gee_abstract_multi_map_create_value_storage (GeeAbstractMultiMap* self);
VALA_EXTERN GeeMultiSet* gee_abstract_multi_map_create_multi_key_set (GeeAbstractMultiMap* self);
VALA_EXTERN GeeEqualDataFunc gee_abstract_multi_map_get_value_equal_func (GeeAbstractMultiMap* self,
                                                              gpointer* result_target,
                                                              GDestroyNotify* result_target_destroy_notify);
VALA_EXTERN GeeMultiMap* gee_abstract_multi_map_get_read_only_view (GeeAbstractMultiMap* self);
VALA_EXTERN GType gee_abstract_multi_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMultiSet, g_object_unref)
VALA_EXTERN GeeAbstractMultiSet* gee_abstract_multi_set_construct (GType object_type,
                                                       GType g_type,
                                                       GBoxedCopyFunc g_dup_func,
                                                       GDestroyNotify g_destroy_func,
                                                       GeeMap* storage_map);
VALA_EXTERN GeeMultiSet* gee_abstract_multi_set_get_read_only_view (GeeAbstractMultiSet* self);
VALA_EXTERN GType gee_queue_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_abstract_queue_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractQueue, g_object_unref)
VALA_EXTERN gpointer gee_abstract_queue_peek (GeeAbstractQueue* self);
VALA_EXTERN gpointer gee_abstract_queue_poll (GeeAbstractQueue* self);
VALA_EXTERN GeeAbstractQueue* gee_abstract_queue_construct (GType object_type,
                                                GType g_type,
                                                GBoxedCopyFunc g_dup_func,
                                                GDestroyNotify g_destroy_func);
VALA_EXTERN gint gee_abstract_queue_get_capacity (GeeAbstractQueue* self);
VALA_EXTERN gint gee_abstract_queue_get_remaining_capacity (GeeAbstractQueue* self);
VALA_EXTERN gboolean gee_abstract_queue_get_is_full (GeeAbstractQueue* self);
VALA_EXTERN GeeAbstractSet* gee_abstract_set_construct (GType object_type,
                                            GType g_type,
                                            GBoxedCopyFunc g_dup_func,
                                            GDestroyNotify g_destroy_func);
VALA_EXTERN GeeSet* gee_abstract_set_get_read_only_view (GeeAbstractSet* self);
VALA_EXTERN GeeSortedMap* gee_abstract_sorted_map_head_map (GeeAbstractSortedMap* self,
                                                gconstpointer before);
VALA_EXTERN GeeSortedMap* gee_abstract_sorted_map_tail_map (GeeAbstractSortedMap* self,
                                                gconstpointer after);
VALA_EXTERN GeeSortedMap* gee_abstract_sorted_map_sub_map (GeeAbstractSortedMap* self,
                                               gconstpointer before,
                                               gconstpointer after);
VALA_EXTERN GeeAbstractSortedMap* gee_abstract_sorted_map_construct (GType object_type,
                                                         GType k_type,
                                                         GBoxedCopyFunc k_dup_func,
                                                         GDestroyNotify k_destroy_func,
                                                         GType v_type,
                                                         GBoxedCopyFunc v_dup_func,
                                                         GDestroyNotify v_destroy_func);
VALA_EXTERN GeeSortedSet* gee_abstract_sorted_map_get_ascending_keys (GeeAbstractSortedMap* self);
VALA_EXTERN GeeSortedSet* gee_abstract_sorted_map_get_ascending_entries (GeeAbstractSortedMap* self);
VALA_EXTERN gpointer gee_abstract_sorted_set_first (GeeAbstractSortedSet* self);
VALA_EXTERN gpointer gee_abstract_sorted_set_last (GeeAbstractSortedSet* self);
VALA_EXTERN GeeIterator* gee_abstract_sorted_set_iterator_at (GeeAbstractSortedSet* self,
                                                  gconstpointer element);
VALA_EXTERN gpointer gee_abstract_sorted_set_lower (GeeAbstractSortedSet* self,
                                        gconstpointer element);
VALA_EXTERN gpointer gee_abstract_sorted_set_higher (GeeAbstractSortedSet* self,
                                         gconstpointer element);
VALA_EXTERN gpointer gee_abstract_sorted_set_floor (GeeAbstractSortedSet* self,
                                        gconstpointer element);
VALA_EXTERN gpointer gee_abstract_sorted_set_ceil (GeeAbstractSortedSet* self,
                                       gconstpointer element);
VALA_EXTERN GeeSortedSet* gee_abstract_sorted_set_head_set (GeeAbstractSortedSet* self,
                                                gconstpointer before);
VALA_EXTERN GeeSortedSet* gee_abstract_sorted_set_tail_set (GeeAbstractSortedSet* self,
                                                gconstpointer after);
VALA_EXTERN GeeSortedSet* gee_abstract_sorted_set_sub_set (GeeAbstractSortedSet* self,
                                               gconstpointer from,
                                               gconstpointer to);
VALA_EXTERN GeeAbstractSortedSet* gee_abstract_sorted_set_construct (GType object_type,
                                                         GType g_type,
                                                         GBoxedCopyFunc g_dup_func,
                                                         GDestroyNotify g_destroy_func);
VALA_EXTERN GeeSortedSet* gee_abstract_sorted_set_get_read_only_view (GeeAbstractSortedSet* self);
VALA_EXTERN GType gee_array_list_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeArrayList, g_object_unref)
VALA_EXTERN GeeArrayList* gee_array_list_new (GType g_type,
                                  GBoxedCopyFunc g_dup_func,
                                  GDestroyNotify g_destroy_func,
                                  GeeEqualDataFunc equal_func,
                                  gpointer equal_func_target,
                                  GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeArrayList* gee_array_list_construct (GType object_type,
                                        GType g_type,
                                        GBoxedCopyFunc g_dup_func,
                                        GDestroyNotify g_destroy_func,
                                        GeeEqualDataFunc equal_func,
                                        gpointer equal_func_target,
                                        GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeArrayList* gee_array_list_new_wrap (GType g_type,
                                       GBoxedCopyFunc g_dup_func,
                                       GDestroyNotify g_destroy_func,
                                       gpointer* items,
                                       gint items_length1,
                                       GeeEqualDataFunc equal_func,
                                       gpointer equal_func_target,
                                       GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeArrayList* gee_array_list_construct_wrap (GType object_type,
                                             GType g_type,
                                             GBoxedCopyFunc g_dup_func,
                                             GDestroyNotify g_destroy_func,
                                             gpointer* items,
                                             gint items_length1,
                                             GeeEqualDataFunc equal_func,
                                             gpointer equal_func_target,
                                             GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN gboolean gee_array_list_add_all (GeeArrayList* self,
                                 GeeCollection* collection);
VALA_EXTERN GeeEqualDataFunc gee_array_list_get_equal_func (GeeArrayList* self,
                                                gpointer* result_target);
VALA_EXTERN GType gee_deque_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_array_queue_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeArrayQueue, g_object_unref)
VALA_EXTERN GeeArrayQueue* gee_array_queue_new (GType g_type,
                                    GBoxedCopyFunc g_dup_func,
                                    GDestroyNotify g_destroy_func,
                                    GeeEqualDataFunc equal_func,
                                    gpointer equal_func_target,
                                    GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeArrayQueue* gee_array_queue_construct (GType object_type,
                                          GType g_type,
                                          GBoxedCopyFunc g_dup_func,
                                          GDestroyNotify g_destroy_func,
                                          GeeEqualDataFunc equal_func,
                                          gpointer equal_func_target,
                                          GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeEqualDataFunc gee_array_queue_get_equal_func (GeeArrayQueue* self,
                                                 gpointer* result_target);
VALA_EXTERN gboolean gee_array_queue_get_is_empty (GeeArrayQueue* self);
VALA_EXTERN gboolean gee_bidir_iterator_previous (GeeBidirIterator* self);
VALA_EXTERN gboolean gee_bidir_iterator_has_previous (GeeBidirIterator* self);
VALA_EXTERN gboolean gee_bidir_iterator_first (GeeBidirIterator* self);
VALA_EXTERN gboolean gee_bidir_iterator_last (GeeBidirIterator* self);
VALA_EXTERN GeeBidirListIterator* gee_bidir_list_bidir_list_iterator (GeeBidirList* self);
VALA_EXTERN GeeBidirList* gee_bidir_list_get_read_only_view (GeeBidirList* self);
VALA_EXTERN void gee_bidir_list_iterator_insert (GeeBidirListIterator* self,
                                     gconstpointer item);
VALA_EXTERN gboolean gee_bidir_map_iterator_previous (GeeBidirMapIterator* self);
VALA_EXTERN gboolean gee_bidir_map_iterator_has_previous (GeeBidirMapIterator* self);
VALA_EXTERN gboolean gee_bidir_map_iterator_first (GeeBidirMapIterator* self);
VALA_EXTERN gboolean gee_bidir_map_iterator_last (GeeBidirMapIterator* self);
VALA_EXTERN GeeBidirIterator* gee_bidir_sorted_set_bidir_iterator (GeeBidirSortedSet* self);
VALA_EXTERN GeeBidirSortedSet* gee_bidir_sorted_set_empty (GType g_type,
                                               GBoxedCopyFunc g_dup_func,
                                               GDestroyNotify g_destroy_func);
VALA_EXTERN GeeBidirSortedSet* gee_bidir_sorted_set_get_read_only_view (GeeBidirSortedSet* self);
VALA_EXTERN GeeBidirMapIterator* gee_bidir_sorted_map_bidir_map_iterator (GeeBidirSortedMap* self);
VALA_EXTERN GeeBidirSortedMap* gee_bidir_sorted_map_empty (GType k_type,
                                               GBoxedCopyFunc k_dup_func,
                                               GDestroyNotify k_destroy_func,
                                               GType v_type,
                                               GBoxedCopyFunc v_dup_func,
                                               GDestroyNotify v_destroy_func);
VALA_EXTERN GeeBidirSortedMap* gee_bidir_sorted_map_get_read_only_view (GeeBidirSortedMap* self);
VALA_EXTERN gboolean gee_collection_contains (GeeCollection* self,
                                  gconstpointer item);
VALA_EXTERN gboolean gee_collection_add (GeeCollection* self,
                             gconstpointer item);
VALA_EXTERN gboolean gee_collection_remove (GeeCollection* self,
                                gconstpointer item);
VALA_EXTERN void gee_collection_clear (GeeCollection* self);
VALA_EXTERN gboolean gee_collection_add_all (GeeCollection* self,
                                 GeeCollection* collection);
VALA_EXTERN gboolean gee_collection_contains_all (GeeCollection* self,
                                      GeeCollection* collection);
VALA_EXTERN gboolean gee_collection_remove_all (GeeCollection* self,
                                    GeeCollection* collection);
VALA_EXTERN gboolean gee_collection_retain_all (GeeCollection* self,
                                    GeeCollection* collection);
VALA_EXTERN gpointer* gee_collection_to_array (GeeCollection* self,
                                   gint* result_length1);
VALA_EXTERN gboolean gee_collection_add_all_array (GeeCollection* self,
                                       gpointer* array,
                                       gint array_length1);
VALA_EXTERN gboolean gee_collection_contains_all_array (GeeCollection* self,
                                            gpointer* array,
                                            gint array_length1);
VALA_EXTERN gboolean gee_collection_remove_all_array (GeeCollection* self,
                                          gpointer* array,
                                          gint array_length1);
VALA_EXTERN gboolean gee_collection_add_all_iterator (GeeCollection* self,
                                          GeeIterator* iter);
VALA_EXTERN gboolean gee_collection_contains_all_iterator (GeeCollection* self,
                                               GeeIterator* iter);
VALA_EXTERN gboolean gee_collection_remove_all_iterator (GeeCollection* self,
                                             GeeIterator* iter);
VALA_EXTERN GeeCollection* gee_collection_empty (GType g_type,
                                     GBoxedCopyFunc g_dup_func,
                                     GDestroyNotify g_destroy_func);
VALA_EXTERN gint gee_collection_get_size (GeeCollection* self);
VALA_EXTERN gboolean gee_collection_get_is_empty (GeeCollection* self);
VALA_EXTERN gboolean gee_collection_get_read_only (GeeCollection* self);
VALA_EXTERN GeeCollection* gee_collection_get_read_only_view (GeeCollection* self);
VALA_EXTERN GType gee_comparable_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeComparable, g_object_unref)
VALA_EXTERN gint gee_comparable_compare_to (GeeComparable* self,
                                gconstpointer object);
VALA_EXTERN GType gee_concurrent_list_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeConcurrentList, g_object_unref)
VALA_EXTERN GeeConcurrentList* gee_concurrent_list_new (GType g_type,
                                            GBoxedCopyFunc g_dup_func,
                                            GDestroyNotify g_destroy_func,
                                            GeeEqualDataFunc equal_func,
                                            gpointer equal_func_target,
                                            GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeConcurrentList* gee_concurrent_list_construct (GType object_type,
                                                  GType g_type,
                                                  GBoxedCopyFunc g_dup_func,
                                                  GDestroyNotify g_destroy_func,
                                                  GeeEqualDataFunc equal_func,
                                                  gpointer equal_func_target,
                                                  GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeEqualDataFunc gee_concurrent_list_get_equal_func (GeeConcurrentList* self,
                                                     gpointer* result_target);
VALA_EXTERN gboolean gee_concurrent_list_get_is_empty (GeeConcurrentList* self);
VALA_EXTERN GType gee_concurrent_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeConcurrentSet, g_object_unref)
VALA_EXTERN GType gee_concurrent_set_range_type_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GeeConcurrentSet* gee_concurrent_set_new (GType g_type,
                                          GBoxedCopyFunc g_dup_func,
                                          GDestroyNotify g_destroy_func,
                                          GCompareDataFunc compare_func,
                                          gpointer compare_func_target,
                                          GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GeeConcurrentSet* gee_concurrent_set_construct (GType object_type,
                                                GType g_type,
                                                GBoxedCopyFunc g_dup_func,
                                                GDestroyNotify g_destroy_func,
                                                GCompareDataFunc compare_func,
                                                gpointer compare_func_target,
                                                GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN gboolean gee_deque_offer_head (GeeDeque* self,
                               gconstpointer element);
VALA_EXTERN gpointer gee_deque_peek_head (GeeDeque* self);
VALA_EXTERN gpointer gee_deque_poll_head (GeeDeque* self);
VALA_EXTERN gint gee_deque_drain_head (GeeDeque* self,
                           GeeCollection* recipient,
                           gint amount);
VALA_EXTERN gboolean gee_deque_offer_tail (GeeDeque* self,
                               gconstpointer element);
VALA_EXTERN gpointer gee_deque_peek_tail (GeeDeque* self);
VALA_EXTERN gpointer gee_deque_poll_tail (GeeDeque* self);
VALA_EXTERN gint gee_deque_drain_tail (GeeDeque* self,
                           GeeCollection* recipient,
                           gint amount);
VALA_EXTERN GeeEqualDataFunc gee_functions_get_equal_func_for (GType t,
                                                   gpointer* result_target,
                                                   GDestroyNotify* result_target_destroy_notify);
VALA_EXTERN GeeHashDataFunc gee_functions_get_hash_func_for (GType t,
                                                 gpointer* result_target,
                                                 GDestroyNotify* result_target_destroy_notify);
VALA_EXTERN GCompareDataFunc gee_functions_get_compare_func_for (GType t,
                                                     gpointer* result_target,
                                                     GDestroyNotify* result_target_destroy_notify);
VALA_EXTERN GQuark gee_future_error_quark (void);
VALA_EXTERN GType gee_future_error_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType gee_future_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeFuture, g_object_unref)
VALA_EXTERN gconstpointer gee_future_wait (GeeFuture* self,
                               GError** error);
VALA_EXTERN gboolean gee_future_wait_until (GeeFuture* self,
                                gint64 end_time,
                                gconstpointer* value,
                                GError** error);
VALA_EXTERN void gee_future_wait_async (GeeFuture* self,
                            GAsyncReadyCallback _callback_,
                            gpointer _user_data_);
VALA_EXTERN gconstpointer gee_future_wait_finish (GeeFuture* self,
                                      GAsyncResult* _res_,
                                      GError** error);
VALA_EXTERN GeeFuture* gee_future_map (GeeFuture* self,
                           GType a_type,
                           GBoxedCopyFunc a_dup_func,
                           GDestroyNotify a_destroy_func,
                           GeeFutureMapFunc func,
                           gpointer func_target,
                           GDestroyNotify func_target_destroy_notify);
VALA_EXTERN GeeFuture* gee_future_light_map_fixed (GeeFuture* self,
                                       GType a_type,
                                       GBoxedCopyFunc a_dup_func,
                                       GDestroyNotify a_destroy_func,
                                       GeeFutureLightMapFunc func,
                                       gpointer func_target,
                                       GDestroyNotify func_target_destroy_notify);
VALA_EXTERN GeeFuture* gee_future_light_map (GeeFuture* self,
                                 GType a_type,
                                 GBoxedCopyFunc a_dup_func,
                                 GDestroyNotify a_destroy_func,
                                 GeeFutureLightMapFunc func,
                                 gpointer func_target);
VALA_EXTERN GeeFuture* gee_future_zip (GeeFuture* self,
                           GType a_type,
                           GBoxedCopyFunc a_dup_func,
                           GDestroyNotify a_destroy_func,
                           GType b_type,
                           GBoxedCopyFunc b_dup_func,
                           GDestroyNotify b_destroy_func,
                           GeeFutureZipFunc zip_func,
                           gpointer zip_func_target,
                           GeeFuture* second);
VALA_EXTERN GeeFuture* gee_future_flat_map (GeeFuture* self,
                                GType a_type,
                                GBoxedCopyFunc a_dup_func,
                                GDestroyNotify a_destroy_func,
                                GeeFutureFlatMapFunc func,
                                gpointer func_target,
                                GDestroyNotify func_target_destroy_notify);
VALA_EXTERN gconstpointer gee_future_get_value (GeeFuture* self);
VALA_EXTERN gboolean gee_future_get_ready (GeeFuture* self);
VALA_EXTERN GError* gee_future_get_exception (GeeFuture* self);
VALA_EXTERN GType gee_hashable_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHashable, g_object_unref)
VALA_EXTERN guint gee_hashable_hash (GeeHashable* self);
VALA_EXTERN gboolean gee_hashable_equal_to (GeeHashable* self,
                                gconstpointer object);
VALA_EXTERN GType gee_hash_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHashMap, g_object_unref)
VALA_EXTERN GeeHashMap* gee_hash_map_new (GType k_type,
                              GBoxedCopyFunc k_dup_func,
                              GDestroyNotify k_destroy_func,
                              GType v_type,
                              GBoxedCopyFunc v_dup_func,
                              GDestroyNotify v_destroy_func,
                              GeeHashDataFunc key_hash_func,
                              gpointer key_hash_func_target,
                              GDestroyNotify key_hash_func_target_destroy_notify,
                              GeeEqualDataFunc key_equal_func,
                              gpointer key_equal_func_target,
                              GDestroyNotify key_equal_func_target_destroy_notify,
                              GeeEqualDataFunc value_equal_func,
                              gpointer value_equal_func_target,
                              GDestroyNotify value_equal_func_target_destroy_notify);
VALA_EXTERN GeeHashMap* gee_hash_map_construct (GType object_type,
                                    GType k_type,
                                    GBoxedCopyFunc k_dup_func,
                                    GDestroyNotify k_destroy_func,
                                    GType v_type,
                                    GBoxedCopyFunc v_dup_func,
                                    GDestroyNotify v_destroy_func,
                                    GeeHashDataFunc key_hash_func,
                                    gpointer key_hash_func_target,
                                    GDestroyNotify key_hash_func_target_destroy_notify,
                                    GeeEqualDataFunc key_equal_func,
                                    gpointer key_equal_func_target,
                                    GDestroyNotify key_equal_func_target_destroy_notify,
                                    GeeEqualDataFunc value_equal_func,
                                    gpointer value_equal_func_target,
                                    GDestroyNotify value_equal_func_target_destroy_notify);
VALA_EXTERN GeeHashDataFunc gee_hash_map_get_key_hash_func (GeeHashMap* self,
                                                gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_hash_map_get_key_equal_func (GeeHashMap* self,
                                                  gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_hash_map_get_value_equal_func (GeeHashMap* self,
                                                    gpointer* result_target);
VALA_EXTERN GType gee_hash_multi_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHashMultiMap, g_object_unref)
VALA_EXTERN GeeHashMultiMap* gee_hash_multi_map_new (GType k_type,
                                         GBoxedCopyFunc k_dup_func,
                                         GDestroyNotify k_destroy_func,
                                         GType v_type,
                                         GBoxedCopyFunc v_dup_func,
                                         GDestroyNotify v_destroy_func,
                                         GeeHashDataFunc key_hash_func,
                                         gpointer key_hash_func_target,
                                         GDestroyNotify key_hash_func_target_destroy_notify,
                                         GeeEqualDataFunc key_equal_func,
                                         gpointer key_equal_func_target,
                                         GDestroyNotify key_equal_func_target_destroy_notify,
                                         GeeHashDataFunc value_hash_func,
                                         gpointer value_hash_func_target,
                                         GDestroyNotify value_hash_func_target_destroy_notify,
                                         GeeEqualDataFunc value_equal_func,
                                         gpointer value_equal_func_target,
                                         GDestroyNotify value_equal_func_target_destroy_notify);
VALA_EXTERN GeeHashMultiMap* gee_hash_multi_map_construct (GType object_type,
                                               GType k_type,
                                               GBoxedCopyFunc k_dup_func,
                                               GDestroyNotify k_destroy_func,
                                               GType v_type,
                                               GBoxedCopyFunc v_dup_func,
                                               GDestroyNotify v_destroy_func,
                                               GeeHashDataFunc key_hash_func,
                                               gpointer key_hash_func_target,
                                               GDestroyNotify key_hash_func_target_destroy_notify,
                                               GeeEqualDataFunc key_equal_func,
                                               gpointer key_equal_func_target,
                                               GDestroyNotify key_equal_func_target_destroy_notify,
                                               GeeHashDataFunc value_hash_func,
                                               gpointer value_hash_func_target,
                                               GDestroyNotify value_hash_func_target_destroy_notify,
                                               GeeEqualDataFunc value_equal_func,
                                               gpointer value_equal_func_target,
                                               GDestroyNotify value_equal_func_target_destroy_notify);
VALA_EXTERN GeeHashDataFunc gee_hash_multi_map_get_key_hash_func (GeeHashMultiMap* self,
                                                      gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_hash_multi_map_get_key_equal_func (GeeHashMultiMap* self,
                                                        gpointer* result_target);
VALA_EXTERN GeeHashDataFunc gee_hash_multi_map_get_value_hash_func (GeeHashMultiMap* self,
                                                        gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_hash_multi_map_get_value_equal_func (GeeHashMultiMap* self,
                                                          gpointer* result_target);
VALA_EXTERN GType gee_hash_multi_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHashMultiSet, g_object_unref)
VALA_EXTERN GeeHashMultiSet* gee_hash_multi_set_new_fixed (GType g_type,
                                               GBoxedCopyFunc g_dup_func,
                                               GDestroyNotify g_destroy_func,
                                               GeeHashDataFunc hash_func,
                                               gpointer hash_func_target,
                                               GDestroyNotify hash_func_target_destroy_notify,
                                               GeeEqualDataFunc equal_func,
                                               gpointer equal_func_target,
                                               GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type,
                                               GType g_type,
                                               GBoxedCopyFunc g_dup_func,
                                               GDestroyNotify g_destroy_func,
                                               GeeHashDataFunc hash_func,
                                               gpointer hash_func_target,
                                               GDestroyNotify hash_func_target_destroy_notify,
                                               GeeEqualDataFunc equal_func,
                                               gpointer equal_func_target,
                                               GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeHashMultiSet* gee_hash_multi_set_new (GType g_type,
                                         GBoxedCopyFunc g_dup_func,
                                         GDestroyNotify g_destroy_func,
                                         GeeHashDataFunc hash_func,
                                         gpointer hash_func_target,
                                         GeeEqualDataFunc equal_func,
                                         gpointer equal_func_target) G_GNUC_DEPRECATED ;
VALA_EXTERN GeeHashMultiSet* gee_hash_multi_set_construct_broken (GType object_type,
                                                      GType g_type,
                                                      GBoxedCopyFunc g_dup_func,
                                                      GDestroyNotify g_destroy_func,
                                                      GeeHashDataFunc hash_func,
                                                      gpointer hash_func_target,
                                                      GeeEqualDataFunc equal_func,
                                                      gpointer equal_func_target) G_GNUC_DEPRECATED ;
VALA_EXTERN GeeHashDataFunc gee_hash_multi_set_get_hash_func (GeeHashMultiSet* self,
                                                  gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_hash_multi_set_get_equal_func (GeeHashMultiSet* self,
                                                    gpointer* result_target);
VALA_EXTERN GType gee_hash_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHashSet, g_object_unref)
VALA_EXTERN GeeHashSet* gee_hash_set_new (GType g_type,
                              GBoxedCopyFunc g_dup_func,
                              GDestroyNotify g_destroy_func,
                              GeeHashDataFunc hash_func,
                              gpointer hash_func_target,
                              GDestroyNotify hash_func_target_destroy_notify,
                              GeeEqualDataFunc equal_func,
                              gpointer equal_func_target,
                              GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeHashSet* gee_hash_set_construct (GType object_type,
                                    GType g_type,
                                    GBoxedCopyFunc g_dup_func,
                                    GDestroyNotify g_destroy_func,
                                    GeeHashDataFunc hash_func,
                                    gpointer hash_func_target,
                                    GDestroyNotify hash_func_target_destroy_notify,
                                    GeeEqualDataFunc equal_func,
                                    gpointer equal_func_target,
                                    GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeHashDataFunc gee_hash_set_get_hash_func (GeeHashSet* self,
                                            gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_hash_set_get_equal_func (GeeHashSet* self,
                                              gpointer* result_target);
VALA_EXTERN void gee_hazard_pointer_free (GeeHazardPointer * self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHazardPointer, gee_hazard_pointer_free)
VALA_EXTERN void gee_hazard_pointer_node_free (GeeHazardPointerNode * self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHazardPointerNode, gee_hazard_pointer_node_free)
VALA_EXTERN GType gee_hazard_pointer_policy_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gboolean gee_hazard_pointer_policy_is_concrete (GeeHazardPointerPolicy self);
VALA_EXTERN gboolean gee_hazard_pointer_policy_is_blocking (GeeHazardPointerPolicy self);
VALA_EXTERN gboolean gee_hazard_pointer_policy_is_safe (GeeHazardPointerPolicy self);
VALA_EXTERN GeeHazardPointerPolicy gee_hazard_pointer_policy_to_concrete (GeeHazardPointerPolicy self);
VALA_EXTERN GType gee_hazard_pointer_release_policy_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GeeHazardPointer* gee_hazard_pointer_new (gconstpointer* ptr);
VALA_EXTERN GeeHazardPointer* gee_hazard_pointer_get_hazard_pointer (GType g_type,
                                                         GBoxedCopyFunc g_dup_func,
                                                         GDestroyNotify g_destroy_func,
                                                         gconstpointer** aptr,
                                                         gsize mask,
                                                         gsize* mask_out);
VALA_EXTERN gpointer gee_hazard_pointer_get_pointer (GType g_type,
                                         GBoxedCopyFunc g_dup_func,
                                         GDestroyNotify g_destroy_func,
                                         gconstpointer** aptr,
                                         gsize mask,
                                         gsize* mask_out);
VALA_EXTERN GeeHazardPointer* gee_hazard_pointer_exchange_hazard_pointer (GType g_type,
                                                              GBoxedCopyFunc g_dup_func,
                                                              GDestroyNotify g_destroy_func,
                                                              gconstpointer** aptr,
                                                              gpointer new_ptr,
                                                              gsize mask,
                                                              gsize new_mask,
                                                              gsize* old_mask);
VALA_EXTERN void gee_hazard_pointer_set_pointer (GType g_type,
                                     GBoxedCopyFunc g_dup_func,
                                     GDestroyNotify g_destroy_func,
                                     gconstpointer** aptr,
                                     gpointer new_ptr,
                                     gsize mask,
                                     gsize new_mask);
VALA_EXTERN gpointer gee_hazard_pointer_exchange_pointer (GType g_type,
                                              GBoxedCopyFunc g_dup_func,
                                              GDestroyNotify g_destroy_func,
                                              gconstpointer** aptr,
                                              gpointer new_ptr,
                                              gsize mask,
                                              gsize new_mask,
                                              gsize* old_mask);
VALA_EXTERN gboolean gee_hazard_pointer_compare_and_exchange_pointer (GType g_type,
                                                          GBoxedCopyFunc g_dup_func,
                                                          GDestroyNotify g_destroy_func,
                                                          gconstpointer** aptr,
                                                          gconstpointer old_ptr,
                                                          gpointer _new_ptr,
                                                          gsize mask,
                                                          gsize old_mask,
                                                          gsize new_mask);
VALA_EXTERN gconstpointer gee_hazard_pointer_get (GeeHazardPointer* self,
                                      gboolean other_thread);
VALA_EXTERN void gee_hazard_pointer_release (GeeHazardPointer* self,
                                 GDestroyNotify notify);
VALA_EXTERN void gee_hazard_pointer_set_default_policy (GeeHazardPointerPolicy policy);
VALA_EXTERN void gee_hazard_pointer_set_thread_exit_policy (GeeHazardPointerPolicy policy);
VALA_EXTERN gboolean gee_hazard_pointer_set_release_policy (GeeHazardPointerReleasePolicy policy);
VALA_EXTERN void gee_hazard_pointer_context_free (GeeHazardPointerContext * self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHazardPointerContext, gee_hazard_pointer_context_free)
VALA_EXTERN void gee_hazard_pointer_free_node_free (GeeHazardPointerFreeNode * self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeHazardPointerFreeNode, gee_hazard_pointer_free_node_free)
VALA_EXTERN GeeHazardPointerContext* gee_hazard_pointer_context_new (GeeHazardPointerPolicy* policy);
VALA_EXTERN void gee_hazard_pointer_context_try_free (GeeHazardPointerContext* self);
VALA_EXTERN void gee_hazard_pointer_context_free_all (GeeHazardPointerContext* self);
VALA_EXTERN void gee_hazard_pointer_context_try_release (GeeHazardPointerContext* self);
VALA_EXTERN void gee_hazard_pointer_context_release (GeeHazardPointerContext* self);
VALA_EXTERN GeeIterator* gee_iterable_iterator (GeeIterable* self);
VALA_EXTERN gboolean gee_iterator_next (GeeIterator* self);
VALA_EXTERN gboolean gee_iterator_has_next (GeeIterator* self);
VALA_EXTERN gpointer gee_iterator_get (GeeIterator* self);
VALA_EXTERN void gee_iterator_remove (GeeIterator* self);
VALA_EXTERN GeeIterator* gee_iterator_unfold (GType a_type,
                                  GBoxedCopyFunc a_dup_func,
                                  GDestroyNotify a_destroy_func,
                                  GeeUnfoldFunc f,
                                  gpointer f_target,
                                  GDestroyNotify f_target_destroy_notify,
                                  GeeLazy* current);
VALA_EXTERN GeeIterator* gee_iterator_concat (GType g_type,
                                  GBoxedCopyFunc g_dup_func,
                                  GDestroyNotify g_destroy_func,
                                  GeeIterator* iters);
VALA_EXTERN gboolean gee_iterator_get_valid (GeeIterator* self);
VALA_EXTERN gboolean gee_iterator_get_read_only (GeeIterator* self);
VALA_EXTERN GeeLazy* gee_lazy_new (GType g_type,
                       GBoxedCopyFunc g_dup_func,
                       GDestroyNotify g_destroy_func,
                       GeeLazyFunc func,
                       gpointer func_target,
                       GDestroyNotify func_target_destroy_notify);
VALA_EXTERN GeeLazy* gee_lazy_construct (GType object_type,
                             GType g_type,
                             GBoxedCopyFunc g_dup_func,
                             GDestroyNotify g_destroy_func,
                             GeeLazyFunc func,
                             gpointer func_target,
                             GDestroyNotify func_target_destroy_notify);
VALA_EXTERN GeeLazy* gee_lazy_new_from_value (GType g_type,
                                  GBoxedCopyFunc g_dup_func,
                                  GDestroyNotify g_destroy_func,
                                  gconstpointer item);
VALA_EXTERN GeeLazy* gee_lazy_construct_from_value (GType object_type,
                                        GType g_type,
                                        GBoxedCopyFunc g_dup_func,
                                        GDestroyNotify g_destroy_func,
                                        gconstpointer item);
VALA_EXTERN void gee_lazy_eval (GeeLazy* self);
VALA_EXTERN gpointer gee_lazy_get (GeeLazy* self);
VALA_EXTERN gconstpointer gee_lazy_get_value (GeeLazy* self);
VALA_EXTERN GeeFuture* gee_lazy_get_future (GeeLazy* self);
VALA_EXTERN GType gee_linked_list_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeLinkedList, g_object_unref)
VALA_EXTERN GeeLinkedList* gee_linked_list_new (GType g_type,
                                    GBoxedCopyFunc g_dup_func,
                                    GDestroyNotify g_destroy_func,
                                    GeeEqualDataFunc equal_func,
                                    gpointer equal_func_target,
                                    GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeLinkedList* gee_linked_list_construct (GType object_type,
                                          GType g_type,
                                          GBoxedCopyFunc g_dup_func,
                                          GDestroyNotify g_destroy_func,
                                          GeeEqualDataFunc equal_func,
                                          gpointer equal_func_target,
                                          GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN gpointer gee_linked_list_first (GeeLinkedList* self);
VALA_EXTERN gpointer gee_linked_list_last (GeeLinkedList* self);
VALA_EXTERN GeeEqualDataFunc gee_linked_list_get_equal_func (GeeLinkedList* self,
                                                 gpointer* result_target);
VALA_EXTERN GeeListIterator* gee_list_list_iterator (GeeList* self);
VALA_EXTERN gpointer gee_list_get (GeeList* self,
                       gint index);
VALA_EXTERN void gee_list_set (GeeList* self,
                   gint index,
                   gconstpointer item);
VALA_EXTERN gint gee_list_index_of (GeeList* self,
                        gconstpointer item);
VALA_EXTERN void gee_list_insert (GeeList* self,
                      gint index,
                      gconstpointer item);
VALA_EXTERN gpointer gee_list_remove_at (GeeList* self,
                             gint index);
VALA_EXTERN GeeList* gee_list_slice (GeeList* self,
                         gint start,
                         gint stop);
VALA_EXTERN gpointer gee_list_first (GeeList* self);
VALA_EXTERN gpointer gee_list_last (GeeList* self);
VALA_EXTERN void gee_list_insert_all (GeeList* self,
                          gint index,
                          GeeCollection* collection);
VALA_EXTERN void gee_list_sort (GeeList* self,
                    GCompareDataFunc compare_func,
                    gpointer compare_func_target,
                    GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GeeList* gee_list_empty (GType g_type,
                         GBoxedCopyFunc g_dup_func,
                         GDestroyNotify g_destroy_func);
VALA_EXTERN GeeList* gee_list_get_read_only_view (GeeList* self);
VALA_EXTERN void gee_list_iterator_set (GeeListIterator* self,
                            gconstpointer item);
VALA_EXTERN void gee_list_iterator_add (GeeListIterator* self,
                            gconstpointer item);
VALA_EXTERN gint gee_list_iterator_index (GeeListIterator* self);
VALA_EXTERN gboolean gee_map_has_key (GeeMap* self,
                          gconstpointer key);
VALA_EXTERN gboolean gee_map_contains (GeeMap* self,
                           gconstpointer key) G_GNUC_DEPRECATED ;
VALA_EXTERN gboolean gee_map_has (GeeMap* self,
                      gconstpointer key,
                      gconstpointer value);
VALA_EXTERN gpointer gee_map_get (GeeMap* self,
                      gconstpointer key);
VALA_EXTERN void gee_map_set (GeeMap* self,
                  gconstpointer key,
                  gconstpointer value);
VALA_EXTERN gboolean gee_map_unset (GeeMap* self,
                        gconstpointer key,
                        gpointer* value);
VALA_EXTERN gboolean gee_map_remove (GeeMap* self,
                         gconstpointer key,
                         gpointer* value) G_GNUC_DEPRECATED ;
VALA_EXTERN void gee_map_clear (GeeMap* self);
VALA_EXTERN GeeMapIterator* gee_map_map_iterator (GeeMap* self);
VALA_EXTERN void gee_map_set_all (GeeMap* self,
                      GeeMap* map);
VALA_EXTERN gboolean gee_map_unset_all (GeeMap* self,
                            GeeMap* map);
VALA_EXTERN gboolean gee_map_remove_all (GeeMap* self,
                             GeeMap* map) G_GNUC_DEPRECATED ;
VALA_EXTERN gboolean gee_map_has_all (GeeMap* self,
                          GeeMap* map);
VALA_EXTERN gboolean gee_map_contains_all (GeeMap* self,
                               GeeMap* map) G_GNUC_DEPRECATED ;
VALA_EXTERN GeeMap* gee_map_empty (GType k_type,
                       GBoxedCopyFunc k_dup_func,
                       GDestroyNotify k_destroy_func,
                       GType v_type,
                       GBoxedCopyFunc v_dup_func,
                       GDestroyNotify v_destroy_func);
VALA_EXTERN gint gee_map_get_size (GeeMap* self);
VALA_EXTERN gboolean gee_map_get_is_empty (GeeMap* self);
VALA_EXTERN gboolean gee_map_get_read_only (GeeMap* self);
VALA_EXTERN GeeSet* gee_map_get_keys (GeeMap* self);
VALA_EXTERN GeeCollection* gee_map_get_values (GeeMap* self);
VALA_EXTERN GeeSet* gee_map_get_entries (GeeMap* self);
VALA_EXTERN GeeMap* gee_map_get_read_only_view (GeeMap* self);
VALA_EXTERN GType gee_map_get_key_type (GeeMap* self);
VALA_EXTERN GType gee_map_get_value_type (GeeMap* self);
VALA_EXTERN GeeMapEntry* gee_map_entry_construct (GType object_type,
                                      GType k_type,
                                      GBoxedCopyFunc k_dup_func,
                                      GDestroyNotify k_destroy_func,
                                      GType v_type,
                                      GBoxedCopyFunc v_dup_func,
                                      GDestroyNotify v_destroy_func);
VALA_EXTERN gconstpointer gee_map_entry_get_key (GeeMapEntry* self);
VALA_EXTERN gconstpointer gee_map_entry_get_value (GeeMapEntry* self);
VALA_EXTERN void gee_map_entry_set_value (GeeMapEntry* self,
                              gconstpointer value);
VALA_EXTERN gboolean gee_map_entry_get_read_only (GeeMapEntry* self);
VALA_EXTERN gboolean gee_map_iterator_next (GeeMapIterator* self);
VALA_EXTERN gboolean gee_map_iterator_has_next (GeeMapIterator* self);
VALA_EXTERN gpointer gee_map_iterator_get_key (GeeMapIterator* self);
VALA_EXTERN gpointer gee_map_iterator_get_value (GeeMapIterator* self);
VALA_EXTERN void gee_map_iterator_set_value (GeeMapIterator* self,
                                 gconstpointer value);
VALA_EXTERN void gee_map_iterator_unset (GeeMapIterator* self);
VALA_EXTERN gpointer gee_map_iterator_fold (GeeMapIterator* self,
                                GType a_type,
                                GBoxedCopyFunc a_dup_func,
                                GDestroyNotify a_destroy_func,
                                GeeFoldMapFunc f,
                                gpointer f_target,
                                gpointer seed);
VALA_EXTERN gboolean gee_map_iterator_foreach (GeeMapIterator* self,
                                   GeeForallMapFunc f,
                                   gpointer f_target);
VALA_EXTERN gboolean gee_map_iterator_get_valid (GeeMapIterator* self);
VALA_EXTERN gboolean gee_map_iterator_get_mutable (GeeMapIterator* self);
VALA_EXTERN gboolean gee_map_iterator_get_read_only (GeeMapIterator* self);
VALA_EXTERN GeeSet* gee_multi_map_get_keys (GeeMultiMap* self);
VALA_EXTERN GeeMultiSet* gee_multi_map_get_all_keys (GeeMultiMap* self);
VALA_EXTERN GeeCollection* gee_multi_map_get_values (GeeMultiMap* self);
VALA_EXTERN gboolean gee_multi_map_contains (GeeMultiMap* self,
                                 gconstpointer key);
VALA_EXTERN GeeCollection* gee_multi_map_get (GeeMultiMap* self,
                                  gconstpointer key);
VALA_EXTERN void gee_multi_map_set (GeeMultiMap* self,
                        gconstpointer key,
                        gconstpointer value);
VALA_EXTERN gboolean gee_multi_map_remove (GeeMultiMap* self,
                               gconstpointer key,
                               gconstpointer value);
VALA_EXTERN gboolean gee_multi_map_remove_all (GeeMultiMap* self,
                                   gconstpointer key);
VALA_EXTERN void gee_multi_map_clear (GeeMultiMap* self);
VALA_EXTERN GeeMapIterator* gee_multi_map_map_iterator (GeeMultiMap* self);
VALA_EXTERN gint gee_multi_map_get_size (GeeMultiMap* self);
VALA_EXTERN gboolean gee_multi_map_get_read_only (GeeMultiMap* self);
VALA_EXTERN GType gee_multi_map_get_key_type (GeeMultiMap* self);
VALA_EXTERN GType gee_multi_map_get_value_type (GeeMultiMap* self);
VALA_EXTERN GeeMultiMap* gee_multi_map_get_read_only_view (GeeMultiMap* self);
VALA_EXTERN gint gee_multi_set_count (GeeMultiSet* self,
                          gconstpointer item);
VALA_EXTERN GeeSet* gee_multi_set_empty (GType g_type,
                             GBoxedCopyFunc g_dup_func,
                             GDestroyNotify g_destroy_func);
VALA_EXTERN GeeMultiSet* gee_multi_set_get_read_only_view (GeeMultiSet* self);
VALA_EXTERN GType gee_priority_queue_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeePriorityQueue, g_object_unref)
VALA_EXTERN GeePriorityQueue* gee_priority_queue_new (GType g_type,
                                          GBoxedCopyFunc g_dup_func,
                                          GDestroyNotify g_destroy_func,
                                          GCompareDataFunc compare_func,
                                          gpointer compare_func_target,
                                          GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GeePriorityQueue* gee_priority_queue_construct (GType object_type,
                                                GType g_type,
                                                GBoxedCopyFunc g_dup_func,
                                                GDestroyNotify g_destroy_func,
                                                GCompareDataFunc compare_func,
                                                gpointer compare_func_target,
                                                GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN gboolean gee_priority_queue_offer (GeePriorityQueue* self,
                                   gconstpointer element);
VALA_EXTERN gint gee_priority_queue_drain (GeePriorityQueue* self,
                               GeeCollection* recipient,
                               gint amount);
VALA_EXTERN GCompareDataFunc gee_priority_queue_get_compare_func (GeePriorityQueue* self,
                                                      gpointer* result_target);
VALA_EXTERN gpointer gee_promise_ref (gpointer instance);
VALA_EXTERN void gee_promise_unref (gpointer instance);
VALA_EXTERN GParamSpec* gee_param_spec_promise (const gchar* name,
                                    const gchar* nick,
                                    const gchar* blurb,
                                    GType object_type,
                                    GParamFlags flags);
VALA_EXTERN void gee_value_set_promise (GValue* value,
                            gpointer v_object);
VALA_EXTERN void gee_value_take_promise (GValue* value,
                             gpointer v_object);
VALA_EXTERN gpointer gee_value_get_promise (const GValue* value);
VALA_EXTERN GType gee_promise_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeePromise, gee_promise_unref)
VALA_EXTERN GeePromise* gee_promise_new (GType g_type,
                             GBoxedCopyFunc g_dup_func,
                             GDestroyNotify g_destroy_func);
VALA_EXTERN GeePromise* gee_promise_construct (GType object_type,
                                   GType g_type,
                                   GBoxedCopyFunc g_dup_func,
                                   GDestroyNotify g_destroy_func);
VALA_EXTERN void gee_promise_set_value (GeePromise* self,
                            gpointer value);
VALA_EXTERN void gee_promise_set_exception (GeePromise* self,
                                GError* exception);
VALA_EXTERN GeeFuture* gee_promise_get_future (GeePromise* self);
VALA_EXTERN gboolean gee_queue_offer (GeeQueue* self,
                          gconstpointer element);
VALA_EXTERN gpointer gee_queue_peek (GeeQueue* self);
VALA_EXTERN gpointer gee_queue_poll (GeeQueue* self);
VALA_EXTERN gint gee_queue_drain (GeeQueue* self,
                      GeeCollection* recipient,
                      gint amount);
VALA_EXTERN gint gee_queue_get_capacity (GeeQueue* self);
VALA_EXTERN gint gee_queue_get_remaining_capacity (GeeQueue* self);
VALA_EXTERN gboolean gee_queue_get_is_full (GeeQueue* self);
VALA_EXTERN GeeSet* gee_set_empty (GType g_type,
                       GBoxedCopyFunc g_dup_func,
                       GDestroyNotify g_destroy_func);
VALA_EXTERN GeeSet* gee_set_get_read_only_view (GeeSet* self);
VALA_EXTERN GeeSortedMap* gee_sorted_map_head_map (GeeSortedMap* self,
                                       gconstpointer before);
VALA_EXTERN GeeSortedMap* gee_sorted_map_tail_map (GeeSortedMap* self,
                                       gconstpointer after);
VALA_EXTERN GeeSortedMap* gee_sorted_map_sub_map (GeeSortedMap* self,
                                      gconstpointer before,
                                      gconstpointer after);
VALA_EXTERN GeeMap* gee_sorted_map_empty (GType k_type,
                              GBoxedCopyFunc k_dup_func,
                              GDestroyNotify k_destroy_func,
                              GType v_type,
                              GBoxedCopyFunc v_dup_func,
                              GDestroyNotify v_destroy_func);
VALA_EXTERN GeeSortedSet* gee_sorted_map_get_ascending_keys (GeeSortedMap* self);
VALA_EXTERN GeeSortedSet* gee_sorted_map_get_ascending_entries (GeeSortedMap* self);
VALA_EXTERN GeeSortedMap* gee_sorted_map_get_read_only_view (GeeSortedMap* self);
VALA_EXTERN gpointer gee_sorted_set_first (GeeSortedSet* self);
VALA_EXTERN gpointer gee_sorted_set_last (GeeSortedSet* self);
VALA_EXTERN GeeIterator* gee_sorted_set_iterator_at (GeeSortedSet* self,
                                         gconstpointer element);
VALA_EXTERN gpointer gee_sorted_set_lower (GeeSortedSet* self,
                               gconstpointer element);
VALA_EXTERN gpointer gee_sorted_set_higher (GeeSortedSet* self,
                                gconstpointer element);
VALA_EXTERN gpointer gee_sorted_set_floor (GeeSortedSet* self,
                               gconstpointer element);
VALA_EXTERN gpointer gee_sorted_set_ceil (GeeSortedSet* self,
                              gconstpointer element);
VALA_EXTERN GeeSortedSet* gee_sorted_set_head_set (GeeSortedSet* self,
                                       gconstpointer before);
VALA_EXTERN GeeSortedSet* gee_sorted_set_tail_set (GeeSortedSet* self,
                                       gconstpointer after);
VALA_EXTERN GeeSortedSet* gee_sorted_set_sub_set (GeeSortedSet* self,
                                      gconstpointer from,
                                      gconstpointer to);
VALA_EXTERN GeeSortedSet* gee_sorted_set_empty (GType g_type,
                                    GBoxedCopyFunc g_dup_func,
                                    GDestroyNotify g_destroy_func);
VALA_EXTERN GeeSortedSet* gee_sorted_set_get_read_only_view (GeeSortedSet* self);
VALA_EXTERN GeeFuture* gee_task (GType g_type,
                     GBoxedCopyFunc g_dup_func,
                     GDestroyNotify g_destroy_func,
                     GeeTask task,
                     gpointer task_target,
                     GError** error);
VALA_EXTERN void gee_async_task (GAsyncReadyCallback _callback_,
                     gpointer _user_data_);
VALA_EXTERN void gee_async_task_finish (GAsyncResult* _res_,
                            GError** error);
VALA_EXTERN gboolean gee_traversable_foreach (GeeTraversable* self,
                                  GeeForallFunc f,
                                  gpointer f_target);
VALA_EXTERN GeeIterator* gee_traversable_stream (GeeTraversable* self,
                                     GType a_type,
                                     GBoxedCopyFunc a_dup_func,
                                     GDestroyNotify a_destroy_func,
                                     GeeStreamFunc f,
                                     gpointer f_target,
                                     GDestroyNotify f_target_destroy_notify);
VALA_EXTERN gpointer gee_traversable_fold (GeeTraversable* self,
                               GType a_type,
                               GBoxedCopyFunc a_dup_func,
                               GDestroyNotify a_destroy_func,
                               GeeFoldFunc f,
                               gpointer f_target,
                               gpointer seed);
VALA_EXTERN GeeIterator* gee_traversable_map (GeeTraversable* self,
                                  GType a_type,
                                  GBoxedCopyFunc a_dup_func,
                                  GDestroyNotify a_destroy_func,
                                  GeeMapFunc f,
                                  gpointer f_target);
VALA_EXTERN GeeIterator* gee_traversable_scan (GeeTraversable* self,
                                   GType a_type,
                                   GBoxedCopyFunc a_dup_func,
                                   GDestroyNotify a_destroy_func,
                                   GeeFoldFunc f,
                                   gpointer f_target,
                                   gpointer seed);
VALA_EXTERN GeeIterator* gee_traversable_filter (GeeTraversable* self,
                                     GeePredicate pred,
                                     gpointer pred_target,
                                     GDestroyNotify pred_target_destroy_notify);
VALA_EXTERN GeeIterator* gee_traversable_chop (GeeTraversable* self,
                                   gint offset,
                                   gint length);
VALA_EXTERN GeeIterator* gee_traversable_flat_map (GeeTraversable* self,
                                       GType a_type,
                                       GBoxedCopyFunc a_dup_func,
                                       GDestroyNotify a_destroy_func,
                                       GeeFlatMapFunc f,
                                       gpointer f_target,
                                       GDestroyNotify f_target_destroy_notify);
VALA_EXTERN GeeIterator** gee_traversable_tee (GeeTraversable* self,
                                   guint forks,
                                   gint* result_length1);
VALA_EXTERN gpointer gee_traversable_first_match (GeeTraversable* self,
                                      GeePredicate pred,
                                      gpointer pred_target,
                                      GDestroyNotify pred_target_destroy_notify);
VALA_EXTERN gboolean gee_traversable_any_match (GeeTraversable* self,
                                    GeePredicate pred,
                                    gpointer pred_target,
                                    GDestroyNotify pred_target_destroy_notify);
VALA_EXTERN gboolean gee_traversable_all_match (GeeTraversable* self,
                                    GeePredicate pred,
                                    gpointer pred_target,
                                    GDestroyNotify pred_target_destroy_notify);
VALA_EXTERN gpointer gee_traversable_max (GeeTraversable* self,
                              GCompareDataFunc compare,
                              gpointer compare_target,
                              GDestroyNotify compare_target_destroy_notify);
VALA_EXTERN gpointer gee_traversable_min (GeeTraversable* self,
                              GCompareDataFunc compare,
                              gpointer compare_target,
                              GDestroyNotify compare_target_destroy_notify);
VALA_EXTERN GeeIterator* gee_traversable_order_by (GeeTraversable* self,
                                       GCompareDataFunc compare,
                                       gpointer compare_target,
                                       GDestroyNotify compare_target_destroy_notify);
VALA_EXTERN GType gee_traversable_get_element_type (GeeTraversable* self);
VALA_EXTERN GType gee_tree_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeMap, g_object_unref)
VALA_EXTERN GeeTreeMap* gee_tree_map_new (GType k_type,
                              GBoxedCopyFunc k_dup_func,
                              GDestroyNotify k_destroy_func,
                              GType v_type,
                              GBoxedCopyFunc v_dup_func,
                              GDestroyNotify v_destroy_func,
                              GCompareDataFunc key_compare_func,
                              gpointer key_compare_func_target,
                              GDestroyNotify key_compare_func_target_destroy_notify,
                              GeeEqualDataFunc value_equal_func,
                              gpointer value_equal_func_target,
                              GDestroyNotify value_equal_func_target_destroy_notify);
VALA_EXTERN GeeTreeMap* gee_tree_map_construct (GType object_type,
                                    GType k_type,
                                    GBoxedCopyFunc k_dup_func,
                                    GDestroyNotify k_destroy_func,
                                    GType v_type,
                                    GBoxedCopyFunc v_dup_func,
                                    GDestroyNotify v_destroy_func,
                                    GCompareDataFunc key_compare_func,
                                    gpointer key_compare_func_target,
                                    GDestroyNotify key_compare_func_target_destroy_notify,
                                    GeeEqualDataFunc value_equal_func,
                                    gpointer value_equal_func_target,
                                    GDestroyNotify value_equal_func_target_destroy_notify);
VALA_EXTERN GCompareDataFunc gee_tree_map_get_key_compare_func (GeeTreeMap* self,
                                                    gpointer* result_target);
VALA_EXTERN GeeEqualDataFunc gee_tree_map_get_value_equal_func (GeeTreeMap* self,
                                                    gpointer* result_target);
VALA_EXTERN GType gee_tree_multi_map_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeMultiMap, g_object_unref)
VALA_EXTERN GeeTreeMultiMap* gee_tree_multi_map_new (GType k_type,
                                         GBoxedCopyFunc k_dup_func,
                                         GDestroyNotify k_destroy_func,
                                         GType v_type,
                                         GBoxedCopyFunc v_dup_func,
                                         GDestroyNotify v_destroy_func,
                                         GCompareDataFunc key_compare_func,
                                         gpointer key_compare_func_target,
                                         GDestroyNotify key_compare_func_target_destroy_notify,
                                         GCompareDataFunc value_compare_func,
                                         gpointer value_compare_func_target,
                                         GDestroyNotify value_compare_func_target_destroy_notify);
VALA_EXTERN GeeTreeMultiMap* gee_tree_multi_map_construct (GType object_type,
                                               GType k_type,
                                               GBoxedCopyFunc k_dup_func,
                                               GDestroyNotify k_destroy_func,
                                               GType v_type,
                                               GBoxedCopyFunc v_dup_func,
                                               GDestroyNotify v_destroy_func,
                                               GCompareDataFunc key_compare_func,
                                               gpointer key_compare_func_target,
                                               GDestroyNotify key_compare_func_target_destroy_notify,
                                               GCompareDataFunc value_compare_func,
                                               gpointer value_compare_func_target,
                                               GDestroyNotify value_compare_func_target_destroy_notify);
VALA_EXTERN GCompareDataFunc gee_tree_multi_map_get_key_compare_func (GeeTreeMultiMap* self,
                                                          gpointer* result_target);
VALA_EXTERN GCompareDataFunc gee_tree_multi_map_get_value_compare_func (GeeTreeMultiMap* self,
                                                            gpointer* result_target);
VALA_EXTERN GType gee_tree_multi_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeMultiSet, g_object_unref)
VALA_EXTERN GeeTreeMultiSet* gee_tree_multi_set_new (GType g_type,
                                         GBoxedCopyFunc g_dup_func,
                                         GDestroyNotify g_destroy_func,
                                         GCompareDataFunc compare_func,
                                         gpointer compare_func_target,
                                         GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GeeTreeMultiSet* gee_tree_multi_set_construct (GType object_type,
                                               GType g_type,
                                               GBoxedCopyFunc g_dup_func,
                                               GDestroyNotify g_destroy_func,
                                               GCompareDataFunc compare_func,
                                               gpointer compare_func_target,
                                               GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GCompareDataFunc gee_tree_multi_set_get_compare_func (GeeTreeMultiSet* self,
                                                      gpointer* result_target);
VALA_EXTERN GType gee_tree_set_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeSet, g_object_unref)
VALA_EXTERN GeeTreeSet* gee_tree_set_new (GType g_type,
                              GBoxedCopyFunc g_dup_func,
                              GDestroyNotify g_destroy_func,
                              GCompareDataFunc compare_func,
                              gpointer compare_func_target,
                              GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GeeTreeSet* gee_tree_set_construct (GType object_type,
                                    GType g_type,
                                    GBoxedCopyFunc g_dup_func,
                                    GDestroyNotify g_destroy_func,
                                    GCompareDataFunc compare_func,
                                    gpointer compare_func_target,
                                    GDestroyNotify compare_func_target_destroy_notify);
VALA_EXTERN GCompareDataFunc gee_tree_set_get_compare_func (GeeTreeSet* self,
                                                gpointer* result_target);
VALA_EXTERN GType gee_unrolled_linked_list_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeUnrolledLinkedList, g_object_unref)
VALA_EXTERN GeeUnrolledLinkedList* gee_unrolled_linked_list_new (GType g_type,
                                                     GBoxedCopyFunc g_dup_func,
                                                     GDestroyNotify g_destroy_func,
                                                     GeeEqualDataFunc equal_func,
                                                     gpointer equal_func_target,
                                                     GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeUnrolledLinkedList* gee_unrolled_linked_list_construct (GType object_type,
                                                           GType g_type,
                                                           GBoxedCopyFunc g_dup_func,
                                                           GDestroyNotify g_destroy_func,
                                                           GeeEqualDataFunc equal_func,
                                                           gpointer equal_func_target,
                                                           GDestroyNotify equal_func_target_destroy_notify);
VALA_EXTERN GeeEqualDataFunc gee_unrolled_linked_list_get_equal_func (GeeUnrolledLinkedList* self,
                                                          gpointer* result_target);

G_END_DECLS

#endif
