ExpressionParsing::MethodAccessorFactory Node1 ExpressionParsing:: MethodAccessorFactory + MethodAccessorFactory() + create() + create() - getKit() Node4 std::atomic< MethodAccessor Factory * > Node1->Node4 +ptr Node2 ExpressionParsing:: Singleton< MethodAccessorFactory > + instance() Node2->Node1 Node3 CxxUtils::CachedUniquePtr T< MethodAccessorFactory > + 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< TMethodCall ::EReturnType, std::unique _ptr< ExpressionParsing:: MethodAccessorFactory::IMethodAccessor Kit > > + keys Node5->Node1 -m_kits Node6 std::unique_ptr< Expression Parsing::MethodAccessorFactory ::IMethodAccessorKit > + operator->() Node6->Node5 +elements Node7 ExpressionParsing:: MethodAccessorFactory ::IMethodAccessorKit + ~IMethodAccessorKit() + create() + create() Node7->Node6 +ptr