Just out of curiosity: any reason for the nested filter `filter(filter(..., pred1), and(pred2, pred3))` rather than just `filter(and(pred1, pred2, pred3)`?

Also, do we need the `notNull()` predicate? Does the iterable returned by the inner `filter` call return null values?