It'd probably be more efficient to accumulate an array of subpredicates, and then invoke this just once at the end.