(defn infer-invoke [env e]
(let [{info :info :as f} (:f e)]
(if-some [ret-tag (if (or (true? (:fn-var info))
(true? (:js-fn-var info)))
(:ret-tag info)
(when (= 'js (:ns info)) 'js))]
ret-tag
(let [args (:args e)
me (assoc (find-matching-method f args) :op :method)]
(if-some [ret-tag (infer-tag env me)]
ret-tag
ANY_SYM)))))