The generation counter wrapper would have to be around the mapping being shadowed. So ShadowedMapping wouldn't be able to take an ordinary mapping for shadowing if the generation stuff isn't built into it.
Otoh, the generation counter is only necessary for a cache inside ShadowedMapping. I think it'd work pretty well without that cache too, so imo it's not worth the overhead in all mappings. Is there something else to motivate having built-in generation counters?