+template<typename T>
+bool ChoiceCondition<T>::equals(const Condition &other) const
+{
+ const ChoiceCondition<T> *other_choice = dynamic_cast<const ChoiceCondition<T> *>(&other);
+ if(!other_choice || values.size()!=other_choice->values.size())
+ return false;
+
+ for(unsigned i=0; i<values.size(); ++i)
+ if(values[i]!=other_choice->values[i])
+ return false;
+
+ return true;
+}
+