It would be nice if merge used transients.
Migrate c.c/merge later in core after transients & reduce. Leave older version as merge1 for use in cases the precede the newer definition. Make APersistentMap/conj & ATransientMap/cons aware of IKVReduce.
The attached patch preserves two existing behaviors of merge
the right hand side of the merges can be a Map.Entry, an IPersistentVector where size=2, and regular maps.