Move SSD selected group lookup to typed Kotlin

ober

1f0a5a3bfcdd12e02395cd727b2be1c3cafe9901

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index a23773f..f302f30 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -552,6 +552,7 @@
                 ssdSessionCellInsideSsdArea ssdSessionGroupInsideSsdArea
                 ssdSessionSuppressedGroupPresent?
                 ssdSessionFindGroupById ssdSessionSelectedGroup
+                ssdCurrentSelectedGroup
                 ssdSessionSelectedGroupId ssdSessionRelativeGroupId
                 ssdSessionCellIdsForGroupId
                 ssdSessionGroupPresent ssdSessionGroupMissing
@@ -817,6 +818,11 @@
             (if (nullable-null? found)
               (ssdSessionFirstGroup session)
               found)))
+        (def (ssdCurrentSelectedGroup (session : (Nullable SsdSession))
+                                      (id : (Nullable String))) : (Nullable SsdGroup)
+          (if (nullable-null? session)
+            (nullable-none SsdGroup)
+            (ssdSessionSelectedGroup (nullable-get session) id)))
         (def (ssdSessionSelectedGroupId (session : SsdSession)
                                         (id : (Nullable String))) : (Nullable String)
           (let ((group (ssdSessionSelectedGroup session id)))
@@ -6954,9 +6960,7 @@
        "    }"
        ""
        "    private fun selectedGroup(): SsdGroup? {"
-       "        if (sessionMissing(currentSession)) return null"
-       "        val session = ssdSessionOrEmpty(currentSession)"
-       "        val group = ssdSessionSelectedGroup(session, selectedGroupId)"
+       "        val group = ssdCurrentSelectedGroup(currentSession, selectedGroupId)"
        "        if (ssdGroupMissing(group)) return null"
        "        val selectedGroup = ssdGroupOrEmpty(group)"
        "        selectedGroupId = selectedGroup.id"