pub fn with_fallback<S: ReadStorage>(
        self,
        fallback: S,
        shadow: bool,
    ) -> StorageWithSnapshot<S> {
        StorageWithSnapshot {
            snapshot: self,
            fallback,
            shadow,
        }
    }
Creates a [`ReadStorage`] implementation based on this snapshot and the provided fallback implementation.
Fallback will be called for storage slots / factory deps not in this snapshot (which, if this snapshot
is reasonably constructed, would be a rare occurrence). If `shadow` flag is set, the fallback will be
consulted for *every* operation; this obviously harms performance and is mostly useful for testing.

The caller is responsible for ensuring that the fallback actually corresponds to the snapshot.
core/lib/vm_interface/src/storage/snapshot.rs