JetGroupProduct Node1 JetGroupProduct - m_jetEnd - m_valid + JetGroupProduct() + next() + valid() - init() Node2 IJetGroupProduct + ~IJetGroupProduct() + next() + valid() Node2->Node1 Node3 std::vector< std::vector < std::size_t > > Node3->Node1 -m_seenIndices Node4 std::vector< std::size_t > + elements Node4->Node3 +elements Node10 std::map< int, std ::vector< std::size_t > > + keys Node4->Node10 +elements Node5 std::unique_ptr< JetStreamer > + operator->() Node5->Node1 -m_jetstreamer Node6 JetStreamer - m_done - m_valid + JetStreamer() + next() + isValid() Node6->Node5 +ptr Node7 std::unique_ptr< IJetStream > + operator->() Node7->Node6 -m_stream Node8 IJetStream + ~IJetStream() + get() + valid() + bump() + dump() Node8->Node7 +ptr Node9 std::vector< bool > + elements Node9->Node1 -m_jetMask Node10->Node1 -m_jg2elemjgs