public static DebugRecoveryProcessor create(int containerId, DurableDataLog durableDataLog, ContainerConfig config, ReadIndexConfig readIndexConfig,
ScheduledExecutorService executor, OperationCallbacks callbacks) {
Preconditions.checkNotNull(durableDataLog, "durableDataLog");
Preconditions.checkNotNull(config, "config");
Preconditions.checkNotNull(readIndexConfig, "readIndexConfig");
Preconditions.checkNotNull(executor, "executor");
Preconditions.checkNotNull(callbacks, callbacks);
StreamSegmentContainerMetadata metadata = new StreamSegmentContainerMetadata(containerId, config.getMaxActiveSegmentCount());
CacheManager cacheManager = new CacheManager(new CachePolicy(Long.MAX_VALUE, Duration.ofHours(10), Duration.ofHours(1)), executor);
cacheManager.startAsync().awaitRunning();
ContainerReadIndexFactory rf = new ContainerReadIndexFactory(readIndexConfig, new NoOpCacheFactory(), cacheManager, executor);
Storage s = new InMemoryStorageFactory(executor).createStorageAdapter();
return new DebugRecoveryProcessor(metadata, durableDataLog, rf, s, cacheManager, callbacks);
}