This logic seems doubly inverted to me.  I think I'd rather 

1) take the list of SegmentDescriptors
2) ask the toolChest to give me a new list of SegmentDescriptors to actually check
3) Load up the selectors based on the list from (2)

There's also turning out to be a good amount of functionality that we are exposing but which will not be set for a lot of the query types.  I wonder if we should introduce a base class or have the methods return things that can be null...