                           (class? target) [target (.newInstance target)]
                           :else [(class target) target])
         specs (map method-spec (.getDeclaredMethods clazz))
-        target-sym (if-not no-currying (define-symbol instance))
+        target-sym (if no-currying clazz (define-symbol instance))
         current-ns (.getName *ns*)]
     (when-not no-currying (assert (instance? clazz instance)))
     `(do

   :is-void (-> m
                 .getReturnType
                 .getName
                 (= "void"))})

(defn- declare-fn
  "Given a method spec create an unevaluated function form, currying

       (in-ns (quote ~current-ns)))))

(comment
  ;;- multiple arity
  ;;- currying must be disabled by default for static methods
  ;; and field/static methods with the same name??? renaming?
  ;;- and only public methods... or make them public????
  ;;- better interop by coercing argument types
  (refer 'fus.noma.da :only ['mouse-move])
  (to-clj java.awt.Robot :using-ns 'fus.noma.da))
