Trig::EmulContext Node1 Trig::EmulContext + EmulContext() + EmulContext() + operator=() + ~EmulContext() + store() + get() Node2 std::unordered_map < std::string, std:: unique_ptr< Trig::EmulContext ::IHolder > > Node2->Node1 -m_store Node3 std::unique_ptr< Trig ::EmulContext::IHolder > + operator->() Node3->Node2 +elements Node4 Trig::EmulContext:: IHolder + ~IHolder() + type() Node4->Node3 +ptr Node5 std::string Node5->Node2 +keys Node6 std::basic_string< char > Node6->Node5