 ;; new on a symbol... What I really want to do is come up with
 ;; something that compiles down to bytecode that calls the correct
 ;; ctor for the given args directly... - TODO - more thought...
-(defn make-instance [class & args]
+(defn make-instance [#^Class class & args]
   (clojure.lang.Reflector/invokeConstructor class (to-array args)))
 
 (require '[clojure.contrib.str-utils2 :as s])

;; factory
;; "org.dada.tmp.Amount"
;; :id int :version int :amount double)
(defn make-class [class-name superclass & attribute-key-types]
  (let [attribute-map (apply array-map attribute-key-types)]
    (. #^DynamicClassLoader
       (deref clojure.lang.Compiler/LOADER)

	defaulter (if (fn? default) default (fn [value] default))
	retriever (fn [value] (convert (. src-getter get value)))]
    [tgt-type tgt-key retriever]
    ))

;; TODO : should this not be a a macro - use proper syntax...
(defn make-proxy-getter [input-type output-type property-name]
  (let [method (symbol (make-getter-name property-name))]
    (eval (list 'proxy '[Getter] '[] (list 'get '[bean] (list '. 'bean method))))
    ))

(defn make-getter-map [tgt-class fields]
