SubType) { case SubTypeEnumDTO::$MultipleValues: return new MultipleOptionsComparator(); case SubTypeEnumDTO::$Date: return new DateComparator(); case SubTypeEnumDTO::$Numeric: return new NumericComparator(); case SubTypeEnumDTO::$Role: return new RoleComparator(); default: return new StandardComparator(); } } }