Leaked module_tags.  Is there *any* caller of ModuleProtocol() that actually wants the tags back ?  If not, don't pass in a StringSet** at all, just reduce tags to a local variable of ModuleProtocol() and have *it* take care of tidying it away, when done with it !