As recomended by Amjad, this is a follow on to D17884.
It uses the xmacro idiom and addresses Dave's concerns about relying
on, and exposing, implemetation details.
I don't think this is too much of an improvement over what we ended up with - no big deal. Thanks for the example, though.