How come the FieldCompareRangePredicate expects an array of objects instead of something like IEnumerable, ICollection or IList?
This would make it much more flexible.
You can pass an ICollection as well, which means almost any list collection. You already could pass an arraylist of values as a parameter of the range predicate.