so are you trying to have only one reference to the internal object and then you have multiple references to the external object?
I'm trying to allow the engine to have multiple references ( internal ) to an object for it's own purposes, but as soon as all the references the user has ( external ) are gone, destroy the object and all of the engine's internal references ( of course, or it'll be crash city! )
also, no need to wrap up all the methods of the internal object unless there is a reason to. you can just call the methods on the internal object directly since its exposed.
Right, they're not strictly required, but I wouldn't want the user to know that the internal objects exist. I can't make them private but at the same time, I don't want them to be used if possible.
Thanks for your example. It's complex and I'm gonna have to take a long hard look at this to see if I understand it and if it will work for what I need.