                   [clauses E] (thread-args
                                () (fn [[expr target] E]
                                     (let [[expr E] (A expr E)
-                                          [target E] (Alhs target E)]
+                                          [target E] (Alhs [:assigned] target E)]
                                       [[expr target] E])) clauses E)
                   [body E] (A body E)]
               (w [(list h clauses body) E]))

            ($syntax-error)))
        (symbol? x)
        [x (update-in E [:referenced] #(conj % x))]
        (or (literal? x) (#{:False :True :None :zero-uple :empty-list :empty-dict} x))
        [x E]
        :else ($syntax-error x)))))

(defn A
  ([x] (A x null-env))
  ([x E]
     (DBG :A x E)
     (let [i (meta x)
           w (fn [[x E]] [(with-meta x i) E])]
       (cond
