case PROPERTY_IS_BETWEEN:
return new PropertyIsBetween( exs[1], exs[0], exs[2], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_EQUAL_TO:
return new PropertyIsEqualTo( exs[0], exs[1], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_GREATER_THAN:
return new PropertyIsGreaterThan( exs[0], exs[1], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_GREATER_THAN_OR_EQUAL_TO:
return new PropertyIsGreaterThanOrEqualTo( exs[0], exs[1], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_LESS_THAN:
return new PropertyIsLessThan( exs[0], exs[1], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_LESS_THAN_OR_EQUAL_TO:
return new PropertyIsLessThanOrEqualTo( exs[0], exs[1], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_LIKE:
PropertyIsLike pil = (PropertyIsLike) o;
return new PropertyIsLike( exs[0], exs[1], pil.getWildCard(), pil.getSingleChar(), pil.getEscapeChar(),
o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_NIL:
PropertyIsNil pin = (PropertyIsNil) o;
return new PropertyIsNil( exs[0], pin.getNilReason(), o.getMatchAction() );
case PROPERTY_IS_NOT_EQUAL_TO:
return new PropertyIsNotEqualTo( exs[0], exs[1], o.isMatchCase(), o.getMatchAction() );
case PROPERTY_IS_NULL:
return new PropertyIsNull( exs[0], o.getMatchAction() );