xAOD::Details::IObjectManager Node1 xAOD::Details::IObjectManager + IObjectManager() + IObjectManager() + IObjectManager() + ~IObjectManager() + operator=() + operator=() + holder() + holder() Node2 xAOD::TVirtualManager + ~TVirtualManager() + getEntry() + object() + object() + setObject() + create() + isSet() + reset() Node2->Node1 Node3 std::unique_ptr< xAOD ::THolder > + operator->() Node3->Node1 -m_holder Node4 xAOD::THolder # m_object # m_typeInfo # m_owner # m_typeKind # m_const + THolder() + THolder() + THolder() + THolder() + THolder() + THolder() + THolder() + ~THolder() + operator=() + operator=() and 12 more... # deleteObject() # getImpl() * getClass() * getClass() * getTypeInfo() Node4->Node3 +ptr Node5 TClass Node5->Node4 #m_type