Blindly skipping "skipped" blocks leads to really bad code coverage metrics, so we need to make it possible to analyze "skipped" blocks. At its heart, this will require two key architectural changes:
- A new type of block, called "skipped"
- This will be similar to "ambiguous" blocks, but with slightly different semantics
- The ability to create a "shadow closure"
- Shadow closures will clone an actual closure so that modifications to that closure by the skipped block are not reflected in the actual closure
- Skipped blocks will use the shadow closure
- Non-skipped blocks will use the original closure
There will probably be other architectural modifications necessary