 
 (defonce introspected-namespaces (atom #{}))
 (defn introspect-namespace
-  [namespace-sym]
-  (when (not (get introspected-namespaces namespace-sym))
-    (println (str "Introspecting " (name namespace-sym)))
-    (swap! introspected-namespaces conj namespace-sym)
+  [namespace]
+  (when (not (get introspected-namespaces namespace))
+    (println (str "Introspecting " namespace))
+    (swap! introspected-namespaces conj namespace)
 
-    (IntrospectProfilingAgent/initializeAgent (-> namespace-sym
+    (IntrospectProfilingAgent/initializeAgent (-> namespace
                                                   name
                                                   (.replace "-" "_")))
-    (compile namespace-sym))
+    (let [namespace-sym (symbol namespace)]
+      (compile namespace-sym)))
   ;; v.ns.name.name.replace('.', '/').replace('-','_') + "$" + munge(v.sym.name);
   )
 

               [descriptor]
               #(conj (or % #{}) current-call-types)))))

  (defn get-method-calls
    []
    @method-calls)

  (defn t
    ([f-name]
       (t (.getClass f-name) "invoke"))
    ([klass method]
       (let [calls (get @method-calls [klass method])]
         (if (not (empty? calls))
           (doseq [call calls]
             (println (format-signature call)))

(let [method-calls (atom {})]
  (defn introspect-function
    [caller method args return-value]
    (let [descriptor          [(-> caller .getClass .getName) (.getName method)]
          current-call-types  (conj (mapv type args) (type return-value))
          previous-call-types (get @method-calls descriptor)]

