AthCUDA::AsyncCopyTool Node1 AthCUDA::AsyncCopyTool   + initialize() + copy() * initialize() * copy() Node2 extends< AthAlgTool, AthDevice::ICopyTool >     Node2->Node1 Node3 std::unique_ptr< const SG::SlotSpecificObj< AthCUDA::AsyncCopyTool ::Stream > >   + operator->() Node3->Node1 -m_streams Node4 SG::SlotSpecificObj < AthCUDA::AsyncCopyTool ::Stream >   + SlotSpecificObj() + get() + operator*() + operator->() + begin() + end() Node4->Node3 +ptr Node5 std::vector< AthCUDA ::AsyncCopyTool::Stream >     Node5->Node4 -m_slots Node6 AthCUDA::AsyncCopyTool ::Stream + m_stream + Stream() + ~Stream() Node6->Node5 +elements