### Question:
ExpressionUtils { public static Expression and(Expression... expressions) { return and(Arrays.asList(expressions)); } private  ExpressionUtils(); static List<Expression> extractConjuncts(Expression expression); static List<Expression> extractDisjuncts(Expression expression); static List<Expression> extractPredicates(LogicalBinaryExpression expression); static List<Expression> extractPredicates(LogicalBinaryExpression.Operator operator, Expression expression); static Expression and(Expression... expressions); static Expression and(Collection<Expression> expressions); static Expression or(Expression... expressions); static Expression or(Collection<Expression> expressions); static Expression binaryExpression(LogicalBinaryExpression.Operator operator, Collection<Expression> expressions); static Expression combinePredicates(Metadata metadata, Operator operator, Expression... expressions); static Expression combinePredicates(Metadata metadata, Operator operator, Collection<Expression> expressions); static Expression combineConjuncts(Metadata metadata, Expression... expressions); static Expression combineConjuncts(Metadata metadata, Collection<Expression> expressions); static Expression combineConjunctsWithDuplicates(Collection<Expression> expressions); static Expression combineDisjuncts(Metadata metadata, Expression... expressions); static Expression combineDisjuncts(Metadata metadata, Collection<Expression> expressions); static Expression combineDisjunctsWithDefault(Metadata metadata, Collection<Expression> expressions, Expression emptyDefault); static Expression filterDeterministicConjuncts(Metadata metadata, Expression expression); static Expression filterNonDeterministicConjuncts(Metadata metadata, Expression expression); static Expression filterConjuncts(Metadata metadata, Expression expression, Predicate<Expression> predicate); static boolean referencesAny(Expression expression, Collection<Symbol> variables); static Function<Expression, Expression> expressionOrNullSymbols(Predicate<Symbol>... nullSymbolScopes); static Expression rewriteIdentifiersToSymbolReferences(Expression expression);  }### Answer:
@Test public void testAnd() { Expression a = name("a"); Expression b = name("b"); Expression c = name("c"); Expression d = name("d"); Expression e = name("e"); assertEquals( ExpressionUtils.and(a, b, c, d, e), and(and(and(a, b), and(c, d)), e)); assertEquals( ExpressionUtils.combineConjuncts(metadata, a, b, a, c, d, c, e), and(and(and(a, b), and(c, d)), e)); }