pub fn with_custom_shadow<ShadowS>(
        batch_env: L1BatchEnv,
        system_env: SystemEnv,
        storage: StoragePtr<StorageView<S>>,
        shadow_storage: StoragePtr<ShadowS>,
    ) -> Self
    where
        Shadow: VmFactory<ShadowS>,
    {
        let main = DumpingVm::new(batch_env.clone(), system_env.clone(), storage);
        let shadow = Shadow::new(batch_env.clone(), system_env.clone(), shadow_storage);
        let shadow = VmWithReporting {
            vm: shadow,
            divergence_handler: DivergenceHandler::default(),
        };
        Self {
            main,
            shadow: RefCell::new(Some(shadow)),
        }
    }
Creates a VM with a custom shadow storage.
core/lib/vm_interface/src/utils/shadow.rs