I think I just don't like the interface here.  I think we should not use closures as interfaces.  The old object-oriented validators made it really easy to see what was going on.  But this might be just my lack of familiarity with the code.

Basically I don't think there's any way to make 'thunking' a value into a closure and keeping it for later clearer with better names