CombinationsJetStream Node1 CombinationsJetStream - m_id - m_valid + CombinationsJetStream() + get() + bump() + valid() + dump() - empty() Node2 IJetStream + ~IJetStream() + get() + valid() + bump() + dump() Node2->Node1 Node4 std::unique_ptr< IJetStream > + operator->() Node2->Node4 +ptr Node3 std::vector< std::size_t > + elements Node3->Node1 -m_data -m_jets Node4->Node1 -m_neigh Node5 std::unique_ptr< Combinations Generator > + operator->() Node5->Node1 -m_combgen Node6 CombinationsGenerator Node6->Node5 +ptr