(defn analyze-host-call
[target-type method args target-expr class env]
(let [op (case target-type
:static :static-call
:instance :instance-call)]
(merge
{:op op
:method method
:args args}
(case target-type
:static {:class class
:children [:args]}
:instance {:instance target-expr
:class (maybe-class (:tag target-expr))
:children [:instance :args]}))))