Personally I would rename ShouldExpression to ExecutedBlock or ExecutedExpression, keep #should as nice syntactic sugar, but provide #executed as the standard way of creating ExecutedExpressions.�� After all this is useful for more than SUnit.
Thank's for suggestion Eliot. I would think about it.
Underhood should expressions are based on reusable components which has no relation to tests. It is first class specifications of object state. Should expression just creates particular instance of spec to validate receiver by it. So ShouldExpression is just syntax sugar helper class. It not implements any "real" behaviour.