pub fn new(
        pool: ConnectionPool<Core>,
        io: Arc<dyn VmRunnerIo>,
        loader: Arc<dyn StorageLoader>,
        output_handler_factory: Arc<dyn OutputHandlerFactory>,
        batch_executor_factory: Box<dyn BatchExecutorFactory<OwnedStorage>>,
    ) -> Self {
        Self {
            pool,
            io,
            loader,
            output_handler_factory,
            batch_executor_factory: Arc::new(Mutex::new(batch_executor_factory)),
        }
    }
Initializes VM runner with its constituents. In order to make VM runner concurrent each
parameter here needs to support concurrent execution mode. See
[`ConcurrentOutputHandlerFactory`], [`VmRunnerStorage`].

Caller is expected to provide a component-specific implementation of [`VmRunnerIo`] and
an underlying implementation of [`OutputHandlerFactory`].
core/node/vm_runner/src/process.rs