Use typed invoke for SSD button actions

ober

c1d1076ae9503696a4cb539cacc4b3a2af7befd5

diff --git a/.build.yml b/.build.yml
index 04981ee..686e9bb 100644
--- a/.build.yml
+++ b/.build.yml
@@ -5,7 +5,7 @@ packages:
   - make=4.4.1-r4
 sources:
   # Build dependency: full immutable commit, mirrored in dependencies.lock.json.
-  - "https://git.sr.ht/~lisp/jerboa#2112b909dff4150a763859878d45cc81dcc05037"
+  - "https://git.sr.ht/~lisp/jerboa#6d63174685d3b838c20b1b559e442e6d745ee03b"
   # The second source is the build subject selected by the SourceHut submitter.
   - https://git.sr.ht/~lisp/jerboa-android
 tasks:
@@ -14,6 +14,6 @@ tasks:
       test "$(apk info -v chez-scheme)" = chez-scheme-10.3.0-r2
       test "$(apk info -v git)" = git-2.54.0-r0
       test "$(apk info -v make)" = make-4.4.1-r4
-      test "$(git -C ../jerboa rev-parse HEAD)" = 2112b909dff4150a763859878d45cc81dcc05037
-      test "$(git -C ../jerboa rev-parse 'HEAD^{tree}')" = 91e02e7a6c31ccbb5604c75cc42775a4de22c313
+      test "$(git -C ../jerboa rev-parse HEAD)" = 6d63174685d3b838c20b1b559e442e6d745ee03b
+      test "$(git -C ../jerboa rev-parse 'HEAD^{tree}')" = 14b8c71a9b94bfa65dd0ef2aeb16f9db3b31aaec
       JERBOA="chez --libdirs .:../jerboa/lib --script" make test
diff --git a/dependencies.lock.json b/dependencies.lock.json
index 8dc79cd..b96e382 100644
--- a/dependencies.lock.json
+++ b/dependencies.lock.json
@@ -11,8 +11,8 @@
   "generator_runtime": {
     "name": "jerboa",
     "repository": "https://git.sr.ht/~lisp/jerboa",
-    "commit": "2112b909dff4150a763859878d45cc81dcc05037",
-    "tree": "91e02e7a6c31ccbb5604c75cc42775a4de22c313"
+    "commit": "6d63174685d3b838c20b1b559e442e6d745ee03b",
+    "tree": "14b8c71a9b94bfa65dd0ef2aeb16f9db3b31aaec"
   },
   "assurance_tools": {
     "osv_scanner": {
diff --git a/scripts/verify-supply-chain.sh b/scripts/verify-supply-chain.sh
index 485604f..c6c8419 100755
--- a/scripts/verify-supply-chain.sh
+++ b/scripts/verify-supply-chain.sh
@@ -3,8 +3,8 @@ set -eu
 
 repo=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd -P)
 lock="$repo/dependencies.lock.json"
-jerboa_commit=2112b909dff4150a763859878d45cc81dcc05037 # gitsafe:ignore
-jerboa_tree=91e02e7a6c31ccbb5604c75cc42775a4de22c313 # gitsafe:ignore
+jerboa_commit=6d63174685d3b838c20b1b559e442e6d745ee03b # gitsafe:ignore
+jerboa_tree=14b8c71a9b94bfa65dd0ef2aeb16f9db3b31aaec # gitsafe:ignore
 gradle_sha=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78
 jdk_macos_sha=8fa1eff40bb637a33613b2ccb8b12c70dc3661cc22cf8e784943715769a05336
 jdk_linux_sha=d8afc263758141a66e0e3aafc321e783f7016696f4eaea067d340a269037d331
diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index ceb77ae..767a5b2 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -4619,6 +4619,7 @@
                       (android view View)
                       (android view Window)
                       (android widget AutoCompleteTextView)
+                      (android widget Button)
                       (android widget TextView)
                       (androidx documentfile provider DocumentFile)
                       (org json JSONObject))
@@ -4739,6 +4740,7 @@
                 dialogReadyToShowDropdown focusedDialogReadyToShowDropdown
                 autoCompleteInstallDropdownOpeners
                 autoCompleteFocusAndShowDropdown
+                buttonSetOnClickAction
                 permissionResultGranted downloadAccessBeforeRuntimePermissions
                 downloadAccessFromPermission activityResultRejected
                 pageNavigationBlocked pageNavigationBlockedForUri
@@ -4788,6 +4790,7 @@
         (type Char)
         (type AlertDialog)
         (type AutoCompleteTextView)
+        (type Button)
         (type File)
         (type InputStream)
         (type OutputStream)
@@ -4852,6 +4855,10 @@
                   (view : AutoCompleteTextView)
                   (listener : (-> View Bool Unit))) : Unit
           (kotlin-member-call setOnFocusChangeListener))
+        (extern (buttonSetOnClickListenerRaw
+                  (button : Button)
+                  (listener : (-> View Unit))) : Unit
+          (kotlin-member-call setOnClickListener))
         (extern (stringLines (text : String)) : (List String)
           (kotlin-member-call lines))
         (extern (stringSplitTwoChars (text : String)
@@ -6109,6 +6116,13 @@
                   (autoCompleteShowDropDownRaw view)
                   (begin)))
               (int32 250))))
+        (def (buttonSetOnClickAction
+               (button : Button)
+               (action : (-> Unit))) : Unit
+          (buttonSetOnClickListenerRaw
+            button
+            (lambda ((unused : View))
+              (invoke action))))
         (def (permissionResultGranted (actual : Int32) (granted : Int32)) : Bool
           (= actual granted))
         (def (downloadAccessBeforeRuntimePermissions (beforeRuntimePermissions : Bool)) : Bool
@@ -7637,7 +7651,7 @@
 	       "                cornerRadius = dp(9).toFloat()"
 	       "                setColor(kind.backgroundColor)"
 	       "            }"
-	       "            setOnClickListener { action() }"
+       "            buttonSetOnClickAction(this, action)"
 	       "        }"
        ""
        "    private fun actionRow(vararg buttons: Button): LinearLayout ="