/**
  * This is where subclasses declare what storage types they support together with
  * the initializers for those types.
  */
 public function formalize()
 {
     $this->supports(StorageType::OUTBOX(), function (Settings $s) {
         FeatureSettingsExtensions::enableFeatureByDefault(InMemoryOutboxPersistenceFeature::class, $s);
     });
 }
 private function ensureOutboxPersistenceConfigured()
 {
     $isConfigured = false;
     /** @var EnabledPersistence[] $enabledPersistences */
     $enabledPersistences = $this->settings->tryGet(KnownSettingsEnum::ENABLED_PERSISTENCES) ?: [];
     foreach ($enabledPersistences as $enabledPersistence) {
         $selectedStorageType = $enabledPersistence->getSelectedStorageType();
         if (!$selectedStorageType || $selectedStorageType && $selectedStorageType->equals(StorageType::OUTBOX())) {
             $isConfigured = true;
         }
     }
     if (!$isConfigured) {
         $this->usePersistence(new InMemoryPersistenceDefinition(), StorageType::OUTBOX());
     }
 }