class 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);

}