public SearchCondition<T> parse(String searchExpression) throws SearchParseException {
try {
final T condition = conditionClass.newInstance();
final FilterExpression expression = parser.parseFilterString(searchExpression);
final FilterExpressionVisitor visitor = new FilterExpressionVisitor(condition);
return (SearchCondition< T >)expression.accept(visitor);
} catch (ODataMessageException ex) {
throw new SearchParseException(ex);
} catch (ODataApplicationException ex) {
throw new SearchParseException(ex);
} catch (InstantiationException ex) {