The recursive strategy I initially built looked clever but it's
not going to work because we need to iterate through both the
rules and the components/properties/parameters at the same time.
Reworked the code to go through filters iteratively instead of
recursively. This protocol is way too complex and the people who
designed it need to be tortured.