### Question:
RecordStorageEngine implements StorageEngine, Lifecycle { @Override public void flushAndForce( IOLimiter limiter ) { indexingService.forceAll( limiter ); labelScanStore.force( limiter ); for ( IndexImplementation index : explicitIndexProviderLookup.allIndexProviders() ) { index.force(); } neoStores.flush( limiter ); } RecordStorageEngine(
            DatabaseLayout databaseLayout,
            Config config,
            PageCache pageCache,
            FileSystemAbstraction fs,
            LogProvider logProvider,
            LogProvider userLogProvider,
            TokenHolders tokenHolders,
            SchemaState schemaState,
            ConstraintSemantics constraintSemantics,
            JobScheduler scheduler,
            TokenNameLookup tokenNameLookup,
            LockService lockService,
            IndexProviderMap indexProviderMap,
            IndexingService.Monitor indexingServiceMonitor,
            DatabaseHealth databaseHealth,
            ExplicitIndexProvider explicitIndexProvider,
            IndexConfigStore indexConfigStore,
            IdOrderingQueue explicitIndexTransactionOrdering,
            IdGeneratorFactory idGeneratorFactory,
            IdController idController,
            Monitors monitors,
            RecoveryCleanupWorkCollector recoveryCleanupWorkCollector,
            OperationalMode operationalMode,
            VersionContextSupplier versionContextSupplier ); @Override StorageReader newReader(); @Override RecordStorageCommandCreationContext allocateCommandCreationContext(); @Override CommandReaderFactory commandReaderFactory(); @SuppressWarnings( "resource" ) @Override void createCommands( Collection<StorageCommand> commands, ReadableTransactionState txState, StorageReader storageReader, ResourceLocker locks,
            long lastTransactionIdWhenStarted, TxStateVisitor.Decorator additionalTxStateVisitor ); @Override void apply( CommandsToApply batch, TransactionApplicationMode mode ); void satisfyDependencies( DependencySatisfier satisfier ); @Override void init(); @Override void start(); @Override void loadSchemaCache(); @Override void clearBufferedIds(); @Override void stop(); @Override void shutdown(); @Override void flushAndForce( IOLimiter limiter ); @Override void registerDiagnostics( DiagnosticsManager diagnosticsManager ); @Override void forceClose(); @Override void prepareForRecoveryRequired(); @Override Collection<StoreFileMetadata> listStorageFiles(); @VisibleForTesting NeoStores testAccessNeoStores(); @Override StoreId getStoreId(); @Override Lifecycle schemaAndTokensLifecycle();  }### Answer:
@Test public void mustFlushStoresWithGivenIOLimiter() { IOLimiter limiter = IOLimiter.UNLIMITED; FileSystemAbstraction fs = fsRule.get(); AtomicReference<IOLimiter> observedLimiter = new AtomicReference<>(); PageCache pageCache = new DelegatingPageCache( pageCacheRule.getPageCache( fs ) ) { @Override public void flushAndForce( IOLimiter limiter ) throws IOException { super.flushAndForce( limiter ); observedLimiter.set( limiter ); } }; RecordStorageEngine engine = storageEngineRule.getWith( fs, pageCache, testDirectory.databaseLayout() ).build(); engine.flushAndForce( limiter ); assertThat( observedLimiter.get(), sameInstance( limiter ) ); }