CompoundCondition Node1 CompoundCondition - m_capacity + CompoundCondition() + CompoundCondition() + isSatisfied() + capacity() + toString() Node2 ICondition + ~ICondition() + isSatisfied() + capacity() + toString() Node2->Node1 Node3 std::vector< Condition > Node3->Node1 -m_elements Node4 std::unique_ptr< T > + operator->() Node4->Node3 +elements Node5 T Node5->Node4 +ptr