There's not much data, but there is a pointer to the underlying AsChain object. Because we pass AsChainLink around by value, using the default copy constructor and operator=, I really don't want to track references automatically - that would lead to lots of spurious atomic incs and decs. Instead, I leave reference tracking up to the caller - they must explicitly call release() when they're done, and duplicate() if they want to duplicate the reference. I explained this in the commit log for 5c28fe84fc9df8331c061ef639b4d3462a6745fa .