+ zend_hash_apply_with_arguments(&obj->intern->eventhandlers, apply_read_callbacks, 1, Z_ARRVAL_P(return_value));
+}
+
+static void php_pqconn_object_gc_event_handlers(zval *object, void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+ zval *evhs;
+
+ ZEND_HASH_FOREACH_VAL(&obj->intern->eventhandlers, evhs)
+ {
+ zval *evh;
+
+ ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(evhs), evh)
+ {
+ zval zcb;
+
+ add_next_index_zval(return_value, php_pq_callback_to_zval_no_addref(Z_PTR_P(evh), &zcb));
+ }
+ ZEND_HASH_FOREACH_END();
+ }
+ ZEND_HASH_FOREACH_END();
+}
+
+static void php_pqconn_object_read_listeners(zval *object, void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+
+ array_init(return_value);
+ zend_hash_apply_with_arguments(&obj->intern->listeners, apply_read_callbacks, 1, Z_ARRVAL_P(return_value));
+}
+
+static void php_pqconn_object_gc_listeners(zval *object, void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+ zval *listeners;
+
+ ZEND_HASH_FOREACH_VAL(&obj->intern->listeners, listeners)
+ {
+ zval *listener;
+
+ ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(listeners), listener)
+ {
+ zval zcb;
+
+ add_next_index_zval(return_value, php_pq_callback_to_zval_no_addref(Z_PTR_P(listener), &zcb));
+ }
+ ZEND_HASH_FOREACH_END();
+ }
+ ZEND_HASH_FOREACH_END();
+}
+
+static void php_pqconn_object_read_converters(zval *object, void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+
+ array_init(return_value);
+ zend_hash_copy(Z_ARRVAL_P(return_value), &obj->intern->converters, zval_add_ref);
+}
+
+static void php_pqconn_object_gc_converters(zval *object, void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+ zval *converter;
+
+ ZEND_HASH_FOREACH_VAL(&obj->intern->converters, converter)
+ {
+ add_next_index_zval(return_value, converter);
+ }
+ ZEND_HASH_FOREACH_END();