in src/main/java/net/hydromatic/linq4j/expressions/Expressions.java [2936:2964]
public static Expression foldAnd(List<Expression> conditions) {
Expression e = null;
int nullCount = 0;
for (Expression condition : conditions) {
if (condition instanceof ConstantExpression) {
final Boolean value = (Boolean) ((ConstantExpression) condition).value;
if (value == null) {
++nullCount;
continue;
} else if (value) {
continue;
} else {
return constant(false);
}
}
if (e == null) {
e = condition;
} else {
e = andAlso(e, condition);
}
}
if (nullCount > 0) {
return constant(null);
}
if (e == null) {
return constant(true);
}
return e;
}