Sorry I'm just now getting into the meat of the code.  The two-stage interface here feels unnecessary to me: I was thinking of something that just took a String and returned a Filter.  Can you help me understand the motivation for the intervening Params class?