IMHO the suggestion by @ploeh on using `GetTypes` sounds good. That way, derived types are flexible with filtering.

-----

In general, I do my best to avoid using flags and enums. Down the line they lead to procedural paradigms - after all, that's why we use Visitors everywhere in Albedo.