When the message reject: is along a path containing a set-valued
instance variable, such as reject: {:i|i.a.*.b=5}, the result
returned is the set difference between the receiver and a select:
using the same predicate. An element in the collection is not
returned if any of the elements in the nested nonsequenceable
collection (represented by *) satisfies the rejection predicate.
The workaround involves two steps. First, perform a select along
the path using the "not" of the operator in the rejection predicate.
Then, to the result of that select add all elements in the
collection that have a nil anywhere along the path of the reject.
Last updated: