       ~@(emit (assoc instance :tag class) frame)
       ~@(mapcat #(emit % frame) args)
       ~@(when to-clear?
-           [[:insn :ACONST_NULL]
-            [:var-insn :clojure.lang.Object/ISTORE 0]])
+          [[:insn :ACONST_NULL]
+           [:var-insn :clojure.lang.Object/ISTORE 0]])
       [~(if (.isInterface class)
           :invoke-interface
           :invoke-virtual)

  (emit (-> init
            (assoc :var var))
        (-> frame
            (assoc :static? (-> var clojure.core/meta :static)))))

(defmethod -emit :fn
  [{:keys [var variadic? env] :as ast}
   {:keys [static?] :as frame}]
  (let [class-name (var->class var)
        super      (cond variadic? 
                         ,,:clojure.lang.RestFn

                         static?

  [{:keys [target val env]} {:keys [class] :as frame}]
  (let [{:keys [o-tag name]} target]
    `[~@(emit-line-number env)
      [:load-this]
      ~@(emit (assoc val :tag Object) frame)
      ~[:put-field class name Object]
      ~@(-emit target frame)]))

(defmulti -emit-value (fn [type value] type))

