{
        count = 1;
 
-       action (closure, string->s);
+       action (closure, string->s, &trie->flags);
     }
 
     if (length == max_length)
 }
 
 static void
-dict_action_print (void *closure, char *word)
+dict_action_print (void *closure, char *word, dict_entry_t *entry)
 {
     int *length_of_last = closure;
     int length = strlen (word);
 
                         dict_entry_predicate_t  predicate);
 
 /* More general callback-based iteration of all entries */
-typedef void (* dict_action_t) (void *closure, char *word);
+typedef void (* dict_action_t) (void *closure, char *word, dict_entry_t *entry);
 
 int
 dict_for_each (dict_t          *dict,
 
 } dict_paint_cursor_t;
 
 static void
-dict_paint_action (void *closure, char *word)
+dict_paint_action (void *closure, char *word, dict_entry_t *entry)
 {
     dict_paint_cursor_t *cursor = closure;
     cairo_t *cr = cursor->cr;