code: @Override
      protected void configure() {
          bindIfNotNull(StateStorage.class, stateStorage, Scopes.SINGLETON);
          bindIfNotNull(TimeoutManager.class, timeoutManager, Scopes.SINGLETON);
          bindIfNotNull(TypeScanner.class, scanner, Scopes.SINGLETON);
          bindIfNotNull(SagaProviderFactory.class, providerFactory, Scopes.SINGLETON);
          bindIfNotNull(StrategyFinder.class, strategyFinder, Scopes.SINGLETON);
          bindIfNotNull(HandlerInvoker.class, invoker, Scopes.SINGLETON);
          bindIfNotNull(ModuleCoordinatorFactory.class, coordinatorFactory, Scopes.SINGLETON);
  
          bindIfNotNull(CurrentExecutionContext.class, executionContext);
          bind(ExecutionContext.class).toProvider(binder().getProvider(CurrentExecutionContext.class));
  
          bind(SagaInstanceCreator.class).in(Singleton.class);
          bind(SagaInstanceFactory.class).in(Singleton.class);
          bind(InstanceResolver.class).to(StrategyInstanceResolver.class).in(Singleton.class);
          bind(MessageStream.class).to(SagaMessageStream.class).in(Singleton.class);
          bind(KeyExtractor.class).to(SagaKeyReaderExtractor.class).in(Singleton.class);
  
          bindModules();
          bindExecutor();
          bindInterceptors();
      }
docs: {@inheritDoc}