               :constructors {[int int] []}
               :exposes-methods {declareTypedIO parentDeclareTypedIO
                                 setInletAssist parentSetInletAssist
-                                setOutletAssist parentSetOutletAssist}
+                                setOutletAssist parentSetOutletAssist
+                                createInfoOutlet parentCreateInfoOutlet}
               :state state
               :init init
               :post-init post-init

;; TODO: Should we store the constructor value of *show* in our state, in case it changes?
;; TODO: Should we detect changes in the cue stored at our cell, and shut down?

(defn- -init
  [x y]
  (core/init)
  (timbre/info "-init" x y)
  (when (nil? *show*)
    (throw (IllegalStateException. "Cannot create Cue object: No default show has been established.")))
  (let [cue (controllers/cue-at (:cue-grid *show*) x y)]

  and outlets supported by this object, and registers our interest in
  cue state with Afterglow."
  [this x y]
  (let [type-string (str "m" (cue-variable-type-string this))]
    (.parentDeclareTypedIO this type-string type-string))
  (.parentSetInletAssist this (into-array String (concat ["start, end, kill: control cue; end and kill can take id"]
                                                         (cue-variable-names this))))
  (.parentSetOutletAssist this (into-array String (concat ["reports changes in cue state and associated id values"]
                                                          (cue-variable-names this))))
  (.parentCreateInfoOutlet this false)
  (swap! (.state this) assoc :f (fn [new-state _ id] ; TODO: Include readable effect name as another atom
                                  (let [cue-name (get-in @(.state this) [:cue :name])]
                                    (.outlet this 0 (name new-state)
                                             (into-array Atom [(Atom/newAtom id) (Atom/newAtom cue-name)])))))
  (controllers/add-cue-fn! (:cue-grid *show*) x y (:f @(.state this))))

;; TODO: Start it over if it is ending.
