+# In this case the caller should arrange that all of their
+# menus, when an item is selected, call
+# applet::msel
+#
+# Debug:
+#
+# Caller may call
+# applet::setup-debug ON-DEBUG
+# which will result in calls to [concat ON-DEBUG [list MESSAGE]]
+# (or ON-DEBUG may be "" in which case messages are discarded)
+#
+# Icon:
+#
+# Caller should call:
+# applet::setimage IMAGE
+# as necessary.
+#
+# Alternatively of icon, it may provide other arrangements for
+# using the provided subwindow. Such a caller should call
+# applet::setup-subwindow WIDTH BORDER-COLOUR BORDER-WIDTH \
+# ON-DESTROYING ON-READY
+# Then the main code will call ON-DESTROYING just before
+# destroying the inner window and recreating it, and ON-READY
+# just after. The inner window to use is called .i.i.b.
+#
+# The user of the subwindow machinery may call
+# applet::subwindow-need-recreate
+# if for any reason the inner window should be destroyed and recreated.
+#
+# Alternatively, it may request that a subprocess be spawned
+# repeatedly with the xid of a suitable window.
+# applet::setup-subproc WIDTH BORDER-COLOUR BORDER-WIDTH \
+# GET-CMDLINE
+# Then the main code will call [concat GET_CMDLINE [list XID]]
+# to get the command line to run.