I don't know but I still find it a bit too heavy-weight for what you use it for. Wouldn't it be sufficient to just extend some tag array utility functions and make them accessible for plugins? These two
``` GPtrArray *tm_tags_extract(); void tm_tags_sort(); ```
could be changed to e.g.
``` GPtrArray *tm_tags_extract(GPtrArray *tags_array, gchar *name, gchar *scope, gboolean prefix, TMParserType lang, TMTagType tag_types); void tm_tags_sort(GPtrArray *tags_array, TMTagAttrType *sort_attributes, gboolean dedup); ```
plus maybe add
``` GPtrArray *tm_tags_concat(GPtrArray *array1, GPtrArray *array2); ```
to concatenate two tag arrays. You will be able to apply them on arbitrary tag arrays (global or non-global) or if you wanted logical `or`, you could run several tm_tags_extract(), concat the results and run tm_tags_sort() on the result.