# 트랜잭션 패키지의 타입 수: 20
    MongoTransactionExecutor.java
    MongoTransactionProfile.java
    MongoTransactionScope.java
    MongoTransactionSession.java
    MongoTransactionSessionFactory.java
    ReactiveMongoTransactionExecutor.java
    ReactiveMongoTransactionSession.java
    ReactiveMongoTransactionSessionFactory.java
    SpringMongoTransactionExecutor.java
    SpringMongoTransactionSessionFactory.java
    SpringReactiveMongoTransactionExecutor.java
    SpringReactiveMongoTransactionSessionFactory.java
    MongoCommitReconciler.java
    MongoRetryBudget.java
    MongoRetryDecision.java
    MongoTransactionRetryCoordinator.java
    MongoCausalSessionContext.java
    MongoCausalSessionExecutor.java
    ReactiveMongoCausalSessionExecutor.java
    SpringMongoCausalSessionExecutor.java

# 자동설정이 그 타입들을 참조하는 매치 (Transaction / CausalSession): 0 / 0
# transaction 패키지 밖 main 참조: 0

# 플래그는 선언되고 검증기까지 가서 판정에 쓰인다
29:    boolean transactions,
362:              properties.transactions(),
97:    if (transactionsEnabled && !capabilities.isStable(MongoCapability.TRANSACTION)) {
98-      throw MongoOperationRejectedException.of(
99-          "startup.capability",
100-          "transactions are enabled but unavailable here: "

# 다만 그 검사는 프로브가 있어야 돌고, 이 저장소는 프로브를 출하하지 않는다
  @Bean
  @ConditionalOnBean(MongoTopologyProbe.class)
  public InitializingBean mongoPlatformStartupCheck(
   * as a state that must start. This repository ships no probe: it is built from the live
   * data-plane client by the composition root that owns the connection, which is a fork's decision.
#   MongoTopologyProbe 를 빈으로 만드는 main 코드: 0

# 같은 생성자가 입력마다 다르게 처리한다
    profiles = profiles == null ? Map.of() : Map.copyOf(profiles);
    changeStreams = false;
    if (requiredSecondaries < 0) {
      throw MongoOperationRejectedException.of(
          "config.secondaries",
          "the required secondary count must not be negative; " + requiredSecondaries + " is");

# 반대쪽 실행체는 플래그와 무관하게 조립된다
  @ConditionalOnClass(org.springframework.data.mongodb.core.ReactiveMongoTemplate.class)
  @ConditionalOnBean(org.springframework.data.mongodb.core.ReactiveMongoTemplate.class)
  public static class ReactiveExecution {
    @Bean
    @ConditionalOnMissingBean
    public dev.caskeleton.adapter.outbound.mongo.changestream.consumer.MongoChangeStreamSource
#   이 경로에서 두 플래그를 보는 조건: 0
#   그 주석이 없다고 적은 드라이버 호출
46:        .changeStream(org.bson.Document.class)
47:        .watchCollection(collections.require(subscription.collectionProfile()))
64:            options.startAfter(from.token());
66:            options.resumeAfter(from.token());

# 그 위 소비자가 요구하는 다섯 포트
      dev.caskeleton.adapter.outbound.mongo.changestream.MongoChangeStreamSubscription.class,
      dev.caskeleton.adapter.outbound.mongo.changestream.MongoResumeCheckpointStore.class,
      dev.caskeleton.adapter.outbound.mongo.changestream.MongoResumeTokenCodec.class,
      dev.caskeleton.adapter.outbound.mongo.changestream.projector.MongoChangeProjector.class,
      dev.caskeleton.adapter.outbound.mongo.changestream.projector.MongoChangeDeduplicationStore
          .class
