             :args ["x"]
             :steps [{:id "result"
                      :type :match
-                     :arg "x"
+                     :arg {:type :ref/id :id "x"}
                      :branches [{:type :match/branch
                                  :pattern {"a" {:type :match/bind :id "a" :pattern {:type :ref/js :js "cljs.core.number_QMARK_"}}
                                            "b" {:type :match/bind :id "b" :pattern {:type :ref/js :js "cljs.core.number_QMARK_"}}}
                                  :action {:type :call
                                           :ref {:type :ref/js :js "cljs.core._"}
-                                          :args ["a" "b"]}}
+                                          :args [{:type :ref/id :id "a"} {:type :ref/id :id "b"}]}}
                                 {:type :match/branch
                                  :pattern [{:type :match/bind :id "y" :pattern {:type :match/any}} "foo"]
                                  :action {:type :constant

(defn constant! [x]
  (check (= :constant (:type x))
         (data! (:data x))))

(defn match-any! [x]
  (check (= :match/any (:type x))))

                     :type :call
                     :ref {:type :ref/js
                           :js "cljs.core._STAR_"}
                     :args [{:type :ref/id :id "four"} {:type :ref/id :id "a"} {:type :ref/id :id "c"}]}
                    {:id "result"
                     :type :call
                     :ref {:type :ref/js
                           :js "cljs.core._"}
                     :args [{:type :ref/id :id "b_squared"} {:type :ref/id :id "four_a_c"}]}]}]})

(notebook! example-a)

