ExpressionParsing::AccessorFactory Node1 ExpressionParsing:: AccessorFactory + AccessorFactory() + create() + create() - getKit() Node4 std::atomic< AccessorFactory * > Node1->Node4 +ptr Node2 ExpressionParsing:: Singleton< AccessorFactory > + instance() Node2->Node1 Node3 CxxUtils::CachedUniquePtr T< AccessorFactory > + CachedUniquePtrT() + CachedUniquePtrT() + CachedUniquePtrT() + operator=() + ~CachedUniquePtrT() + set() + store() + get() + operator*() + operator->() + operator bool() + release() Node3->Node2 -ATLAS_THREAD_SAFE Node4->Node3 -m_ptr Node5 std::map< std::size _t, std::unique_ptr < ExpressionParsing:: IAccessorKit > > + keys Node5->Node1 -m_kits Node6 std::unique_ptr< Expression Parsing::IAccessorKit > + operator->() Node6->Node5 +elements Node7 ExpressionParsing:: IAccessorKit + ~IAccessorKit() + create() + create() Node7->Node6 +ptr