if my structure is
{ :a :A :b :B :c { :d :D } :e { :f { :g :G :h :H } } }
I
Here is a generic solution for known collection types, including maps (look for "Key Paths" on the Readme page for usage examples).
It handles mixed types as well (sequential types, maps and sets), and the API (protocols) can be extended to other types.