Seeing how you did this...I think it would actually be best to memoize the entire method.  I'm concerned about the fact that constraints can be applied to the same `expectation` instance which seems potentially problematic.