You could gen-class as needed to create concrete interface
implementations or subclasses. This would probably be a terrible idea
if unbean were for general use, but if you're focused on testing it
could keep things cleaner (and prevent you cluttering up tests with
irrelevant details).
I suppose the most communicative approach would be to nest unbean
calls, but make unbean support abstract classes and interfaces as its
first argument. (If unbean inferred the need to gen-class, you
couldn't tell from reading the test code whether a property of the
top-level bean were a PersistentHashMap or some non-Clojure type being
figured out behind the scenes.)
-hume.