Cutover to placing tagged filter inputs into an array as opposed to a dictionary: the indices for all matching tags are always present, so there is no point in using ina sorted associative data structure that permits gaps between the keys.
Hoist filter insabity checking so that it is not unnecessarily done during each invocation of the calculated combined filter.