      (catch Exception e#
        (javax.swing.JOptionPane/showMessageDialog
         ~frame
-        (scrollable (text :text (apply str (get-root-cause e#) "\n"
+        (scrollable (text :text (apply str (root-cause e#) "\n"
                                        (interpose "\n" (.getStackTrace e#)))
                           :multi-line? true))
         ~title

           [java.awt.event MouseEvent]
           [java.io File])
  (:use [conexp.base :only (defvar, defmacro-, first-non-nil, illegal-argument)])
  (:use seesaw.core))


;;; Swing handmade concurrency

    `(defn ~name ~doc ~params (do-swing-return ~@body))))

;;; Helper functions

(defmacro with-swing-error-msg
  "Runs given code and catches any thrown exception, which is then
