### Question:
Constraints implements Iterable<Constraint> { public static Constraints and(Constraint first, Constraint... rest) { LinkedHashSet<Constraint> set = new LinkedHashSet<>(); set.add(first); if (rest != null) { set.addAll(asList(rest)); } return new Constraints(set, AND); } private  Constraints(LinkedHashSet<Constraint> constraints, Operator operator); static Constraints single(Constraint constraint); static Constraints and(Constraint first, Constraint... rest); static Constraints and(Iterable<Constraint> constraints); static Constraints or(Constraint first, Constraint... rest); static Constraints or(Iterable<Constraint> constraints); static Constraints empty(); static Constraints parse(String input); @Override String toString(); String data(); @Override Iterator<Constraint> iterator(); int size(); boolean isEmpty(); boolean contains(Object o); Set<Constraint> getConstraints(); Operator getOperator();  }### Answer:
@Test public void and() { Constraints and = Constraints.and(ENGAGE, NCC); assertAnd(and); }