   (map (fn [#^Getter getter] (.get getter value)) getters))
 
 (def #^Metadata$VersionComparator int-version-comparator
-     (proxy [Metadata$VersionComparator][]
-	    (compareTo [old new] (- (.getVersion old) (.getVersion new)))))
+     (reify Metadata$VersionComparator (compareTo [_ old new] (- (.getVersion old) (.getVersion new)))))
 
 ;;----------------------------------------
 ;; Filtration - should be implemented as a thin wrapper around Splitter

     (custom-metadata3 org.dada.core.Result
		       [:model]		;TODO - this is a BAD idea for a PK
		       [:model]		;TODO - we need a proper version - or code that can handle versionless data
		       (proxy [Metadata$VersionComparator][](compareTo [lhs rhs] -1))
		       [[:model org.dada.core.Model false]
			[:prefix String false]
			[:pairs java.util.Collection false]

    ;; view upstream metamodel for arrival of results
    (connect
     src-metamodel
     (reify View
       (update [_ insertions alterations deletions]
         (doall (map (fn [#^Update insertion]
                       (f tgt-metamodel (.getNewValue insertion))) insertions)))))
    tgt-metamodel))

(defn dunion [& [model-name]]
