/** * Create a {@code left not in right and...} expression for each list * * @param <D> * @param left * @param lists * @return a {@code left not in right and...} expression */ public static <D> Predicate notInAny(Expression<D> left, Iterable<? extends Collection<? extends D>> lists) { BooleanBuilder rv = new BooleanBuilder(); for (Collection<? extends D> list : lists) { rv.and(notIn(left, list)); } return rv; }