(defn parse-monitor-enter
[[_ target :as form] env]
(when-not (= 2 (count form))
(throw (ex-info (str "Wrong number of args to monitor-enter, had: " (dec (count form)))
(merge {:form form}
(-source-info form env)))))
{:op :monitor-enter
:env env
:form form
:target (-analyze target (ctx env :ctx/expr))
:children [:target]})