Move SSD activity field initializers to typed Kotlin

ober

c956d892e4d0eb04964279dcbadc5e5997cfa170

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 5f7d5fb..d4b24f1 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -4588,6 +4588,7 @@
                       (android net Uri)
                       (android os ParcelFileDescriptor)
                       (android view Window)
+                      (android widget TextView)
                       (androidx documentfile provider DocumentFile)
                       (org json JSONObject))
       (typed-library (com sfb ssdreview)
@@ -4655,6 +4656,8 @@
                 mainActivitySetPageIndex mainActivitySetPdfIdentity
                 mainActivitySetLoadedPdfState
                 mainActivityAdvanceLoadGeneration
+                mainActivitySetTruthStore mainActivitySetStatusView
+                mainActivitySetReviewView
                 ssdBrowserResumeReady focusChangeShouldShowDropdown
                 dialogReadyToShowDropdown focusedDialogReadyToShowDropdown
                 permissionResultGranted downloadAccessBeforeRuntimePermissions
@@ -4716,6 +4719,7 @@
         (type SsdReviewView)
         (type MainActivity)
         (type TruthStore)
+        (type TextView)
         (type ViewportState)
         (extern (fileIsFile (file : File)) : Bool
           (kotlin-member-get isFile))
@@ -4818,6 +4822,18 @@
                   (activity : MainActivity)
                   (generation : Int32)) : Unit
           (kotlin-member-set loadGeneration))
+        (extern (mainActivityTruthStoreSet
+                  (activity : MainActivity)
+                  (store : TruthStore)) : Unit
+          (kotlin-member-set truthStore))
+        (extern (mainActivityReviewViewSet
+                  (activity : MainActivity)
+                  (view : SsdReviewView)) : Unit
+          (kotlin-member-set reviewView))
+        (extern (mainActivityStatusViewSet
+                  (activity : MainActivity)
+                  (view : TextView)) : Unit
+          (kotlin-member-set status))
         (def (normalizeFiringArc (value : String)) : String
           (string-uppercase (string-trim value)))
         (def (normalizeLabel (value : String)) : String
@@ -5408,6 +5424,15 @@
             (begin
               (mainActivityLoadGenerationSet activity next)
               next)))
+        (def (mainActivitySetTruthStore (activity : MainActivity)
+                                        (store : TruthStore)) : Unit
+          (mainActivityTruthStoreSet activity store))
+        (def (mainActivitySetStatusView (activity : MainActivity)
+                                        (view : TextView)) : Unit
+          (mainActivityStatusViewSet activity view))
+        (def (mainActivitySetReviewView (activity : MainActivity)
+                                        (view : SsdReviewView)) : Unit
+          (mainActivityReviewViewSet activity view))
         (def (shouldCaptureViewport (includeViewport : Bool)) : Bool
           includeViewport)
         (def (viewportForSave (view : SsdReviewView)
@@ -6849,9 +6874,9 @@
        "import kotlin.concurrent.thread"
        ""
        "class MainActivity : Activity() {"
-       "    private lateinit var truthStore: TruthStore"
-       "    private lateinit var reviewView: SsdReviewView"
-       "    private lateinit var status: TextView"
+       "    internal lateinit var truthStore: TruthStore"
+       "    internal lateinit var reviewView: SsdReviewView"
+       "    internal lateinit var status: TextView"
        ""
        "    internal var pdfUri: Uri? = null"
        "    internal var pdfName: String = \"\""
@@ -6889,7 +6914,7 @@
        "        super.onCreate(savedInstanceState)"
        "        installClientCrashLogger()"
        "        logClientEvent(\"ssd-app-start\")"
-       "        truthStore = TruthStore(this)"
+       "        mainActivitySetTruthStore(this, TruthStore(this))"
        "        setContentView(buildUi())"
        "        setStatus(startupStatus(truthStore.storageSummary()))"
        "        restoreLastPdf()"
@@ -6921,16 +6946,16 @@
        "            orientation = LinearLayout.VERTICAL"
        "            setPadding(12, 12, 12, 12)"
        "        }"
-       "        status = TextView(this).apply {"
+       "        mainActivitySetStatusView(this, TextView(this).apply {"
        "            textSize = 14f"
        "            setPadding(8, 8, 8, 10)"
-       "        }"
+       "        })"
        "        root.addView(status)"
-	       "        reviewView = SsdReviewView(this).apply {"
+	       "        mainActivitySetReviewView(this, SsdReviewView(this).apply {"
 	       "            onStatus = { setStatus(it) }"
 	       "            onAreaSelected = { rect, ids -> handleAreaSelected(rect, ids) }"
 	       "            onGroupTapped = { selectGroup(it) }"
-	       "        }"
+	       "        })"
        "        root.addView(reviewView, LinearLayout.LayoutParams("
        "            LinearLayout.LayoutParams.MATCH_PARENT,"
        "            0,"