# 컴팩트 생성자가 네 입력을 세 방식으로 처리한다
  public MongoPlatformSettings {
    // Absent rather than empty is the normal case: a deployment that has opted the module in but
    // configured no platform profile yet must still start, so binding treats "no profiles" as an
    // empty map instead of a binding failure.
    profiles = profiles == null ? Map.of() : Map.copyOf(profiles);
    // Experimental, and therefore not a switch (MNG-INT-003). The driver-side source — watch,
    // resumeAfter/startAfter, cursor lifetime, reconnection — is not shipped; what exists is policy
    // and value objects that do not add up to a running consumer. Accepting the flag and ignoring
    // it
    // would leave an operator believing it took effect, so the value is refused rather than stored:
    // zero beans, zero threads, and a `true` that cannot be honoured never becomes one that looks
    // honoured.
    changeStreams = false;
    // Absent means the platform default, and a negative count is refused rather than clamped: a
    // requirement of -1 is not a lenient requirement, it is a typo, and reading it as "no
    // secondaries needed" is how a health view comes to report a cluster it never checked.
    if (requiredSecondaries == null) {
      requiredSecondaries = DEFAULT_REQUIRED_SECONDARIES;
    }
    if (requiredSecondaries < 0) {
      throw MongoOperationRejectedException.of(
          "config.secondaries",
          "the required secondary count must not be negative; " + requiredSecondaries + " is");
    }

# 시작 검증기의 변경 스트림 분기
104:    if (changeStreamsEnabled && !capabilities.isStable(MongoCapability.CHANGE_STREAM)) {
105-      throw MongoOperationRejectedException.of(
106-          "startup.capability",

#   그 분기가 내는 문장이 저장소에 나오는 곳 전수
…/autoconfigure/MongoStartupValidator.java:107:          "change streams are enabled but unavailable here: "

# changeStreams 라는 이름이 나오는 곳 전수 (다른 타입의 동명 정적 팩터리 포함)
test/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoStartupValidationTest.java:63:    assertThat(MongoPlatformSettings.empty().changeStreams())
test/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoStartupValidationTest.java:76:    assertThat(asked.changeStreams())
test/java/dev/caskeleton/adapter/outbound/mongo/api/profile/MongoRuntimeProfileTest.java:66:    assertThatThrownBy(() -> standalone.require(MongoTopologyRequirement.changeStreams()))
main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformAutoConfiguration.java:363:              properties.changeStreams(),

# MongoStartupValidator 를 만드는 곳 전수
test/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoStartupValidatorTest.java:143:    return new MongoStartupValidator(
main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformAutoConfiguration.java:354:      new MongoStartupValidator(
