         forward-meta (into (sorted-map) (select-keys m [:doc :tag :deprecated]))
         forward-meta (cond-> forward-meta
                        (nil? (:tag forward-meta)) (dissoc :tag))
-        impl '+impl+]
+        _ (assert (not= n impl-local-sym))]
     (when (:macro m)
       (throw (IllegalArgumentException.
                (str "Calling import-fn on a macro: " sym))))
-    (list 'let [impl (list 'delay
-                            (list 'load-java-time)
-                            (list 'deref (list 'resolve (list 'quote sym))))]
+    (list 'let [impl-local-sym (list 'delay
+                                     (list 'load-java-time)
+                                     (list 'deref (list 'resolve (list 'quote sym))))]
                (list* 'defn n
                       (concat
                         (some-> (not-empty forward-meta) list)

  (:require [clojure.string :as str]
            [clojure.set :as set]))

(defn normalize-argv [argv]
  {:post [(or (empty? %)
              (apply distinct? %))]}
  (into [] (map-indexed (fn [i arg]
                          (if (symbol? arg)
                            (do (assert (not (namespace arg)))

                                 (let [argv (normalize-argv argv)]
                                   (list argv
                                         (if (some #{'&} argv)
                                           (list* 'apply (list 'deref impl-local-sym) (remove #{'&} argv))
                                           (list* (list 'deref impl-local-sym) argv)))))
                               arglists)))))))

(defn import-macro [sym]
