SG::ArenaAllocatorRegistry Node1 SG::ArenaAllocatorRegistry + registerCreator() + lookup() + create() + instance() - ArenaAllocatorRegistry() - operator=() - ArenaAllocatorRegistry() - ~ArenaAllocatorRegistry() Node2 std::unique_ptr< SG ::ArenaAllocatorRegistryImpl > + operator->() Node2->Node1 -m_impl Node3 SG::ArenaAllocatorRegistryImpl + ~ArenaAllocatorRegistryImpl() + registerCreator() + lookup() + create() Node3->Node2 +ptr Node4 std::mutex Node4->Node3 -m_mutex Node5 std::vector< std::unique _ptr< SG::ArenaAllocatorCreator > > Node5->Node3 -m_creators Node6 std::unique_ptr< SG ::ArenaAllocatorCreator > + operator->() Node6->Node5 +elements Node7 SG::ArenaAllocatorCreator + ~ArenaAllocatorCreator() + create() Node7->Node6 +ptr Node8 std::map< std::string, size_t > + elements Node8->Node3 -m_map Node9 std::string Node9->Node8 +keys Node10 std::basic_string< char > Node10->Node9