File A declares a type 'struct foo'.
File B declares a type 'struct foo'.
Header C forward declares 'struct foo;' and 'struct foo *get_foo ()'.
File D includes Header C and uses 'get_foo'.
I'm sitting in File D, and I want to look in the debugger at this
opaque unwind cache. There's no possible way to associate it with
either struct foo.
That's why I think the construct should be avoided; if one of them is
A_foo and the other is B_foo, and we do a bit of casting, then at least
I can dump the one I want.
Shouldn't something like: