Tested against Unity trunk and works very well. I am not particularly keen on maintaining a dupe list of the filter ids, but it doesn't seem to be easily fixable without a major refactoring. Otherwise, the code looks great.
All in all, nice work!
(wrt testing - this branch is currently exceptionally hard to test in an automated manner. I took extra care in the review (and to some degree the branch can be considered a refactoring so I don't see big risk from this branch))
Tested against Unity trunk and works very well. I am not particularly keen on maintaining a dupe list of the filter ids, but it doesn't seem to be easily fixable without a major refactoring. Otherwise, the code looks great.
All in all, nice work!
(wrt testing - this branch is currently exceptionally hard to test in an automated manner. I took extra care in the review (and to some degree the branch can be considered a refactoring so I don't see big risk from this branch))