   (let [cur-val (Reflector/invokeInstanceMethod obj
                                                 (getter-name property)
                                                 (to-array []))]
-    (println "get-nested-object: cur-val = " cur-val)
     (or cur-val
-        (let [member-type (:type (fetch-method reflector property))
-              _ (println "Nested object member-type = " member-type " class = " (class member-type))
-              ;; _ (pprint reflector)
-              ]
-          (let [;x (construct (resolve-class (.getContextClassLoader (Thread/currentThread)) member-type))
-                abc `(new ~member-type)
-                _ (println "Going to eval: " abc)
-                x (eval abc)]
-            x)))))
+        (let [member-type (:type (fetch-method reflector property))]
+          (eval `(new ~member-type))))))
 
 
 (declare update-with)

(defn update-with [obj hash]
  (let [obj (instantiate obj)
        r (reflect obj)]
    (println "Update obj " obj " with: " hash)
    (doseq [[k v] hash]
      (set-val obj r k v))
    obj))

        setter-meta (fetch-method reflector setter)
        property-type (first (:parameter-types setter-meta))
        is-enum-property? (is-enum-class-name? property-type)]
    ;; (println prop " Value: " current-value " -> " value)
    ;; (println prop " Type : " (class value) " -> " property-type)
    ;; (println "class-name "(obj->class-name value) " enum-check = " is-enum-property?)

    (let [final-val
          (match [value (obj->class-name value) property-type is-enum-property?]
