An example of how we are currently combining the Specification Pattern with the Visitor Pattern to build repositories