deepMerge runtime implementation.
Note: runtime can't produce perfect typed guarantees, so we cast to Merge<A,B>.
deepMerge runtime implementation.
Note: runtime can't produce perfect typed guarantees, so we cast to Merge<A,B>.