Why can't you build a context here and then close over that with the predicate so that you only have one context per predicate?  Is it because you need to call Context.exit() on order to clean up resources?