Generate SSD truth store directory init from typed Jerboa

ober

5baaeae921442b69eb01909901a3ac683d8efc20

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index ca33394..09c7d81 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -4735,6 +4735,7 @@
                 ssdPdfDocumentNotDirectory
                 shouldIncludeSsdPdfDocument
                 trimmedNonBlankLines trimmedNonBlankPathParts
+                ensureTruthStoreDirectories
                 sourceBaseName canonicalSourceName isUsefulGuessLabel isErrorStatus
                 formatActivityDuration groupDisplayLabel appendModeStatus
                 selectedGroupStatus sessionCountsStatus rotatedPageStatus
@@ -4965,6 +4966,8 @@
           (kotlin-member-get isFile))
         (extern (fileName (file : File)) : String
           (kotlin-member-get name))
+        (extern (fileMkdirsRaw (file : File)) : Bool
+          (kotlin-member-call mkdirs))
         (extern (documentFileIsDirectoryRaw (file : DocumentFile)) : Bool
           (kotlin-member-get isDirectory))
         (extern (documentFileIsFile (file : DocumentFile)) : Bool
@@ -5576,6 +5579,19 @@
           (string-uppercase (string-trim value)))
         (def (normalizeLabel (value : String)) : String
           (string-filter-letter-or-digit (string-lowercase value)))
+        (def (ensureTruthStoreDirectories
+               (root : File)
+               (groundTruth : File)
+               (learned : File)
+               (events : File)
+               (reviews : File)) : Unit
+          (begin
+            (fileMkdirsRaw root)
+            (fileMkdirsRaw groundTruth)
+            (fileMkdirsRaw learned)
+            (fileMkdirsRaw events)
+            (fileMkdirsRaw reviews)
+            (begin)))
         (def (nullableLowercaseOrEmpty (value : (Nullable String))) : String
           (if (nullable-null? value)
             ""
@@ -11230,7 +11246,7 @@
        "    @Volatile private var truthIndexCache: List<TruthIndexEntry> = emptyList()"
        ""
        "    init {"
-       "        listOf(root, groundTruthDir, learnedDir, eventsDir, reviewsDir).forEach { it.mkdirs() }"
+       "        ensureTruthStoreDirectories(root, groundTruthDir, learnedDir, eventsDir, reviewsDir)"
        "    }"
        ""
        "    fun truthPath(sourceKey: String): File {"