public static GroupStrategy composite()

in bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupStrategy.java [183:212]


    public static GroupStrategy composite(Collection<? extends GroupStrategy> components) {
        if (components.isEmpty()) {
            return EMPTY;
        }
        if (components.size() == 1) {
            return components.iterator().next();
        }
        final Set<GroupStrategy> compressedComponents = new LinkedHashSet<>();

        final Consumer<Set<Group>> addGroups = s -> {
            if (!s.isEmpty()) {
                compressedComponents.add(simple(s));
                s.clear();
            }
        };
        final Set<Group> unorderedGroups = new HashSet<>();
        for (GroupStrategy component : components) {
            if (component instanceof Composite && ((Composite) component).ordered) {
                addGroups.accept(unorderedGroups);
                compressedComponents.add(component);
                continue;
            }
            unorderedGroups.addAll(component.getGroups());
        }
        addGroups.accept(unorderedGroups);
        if (compressedComponents.size() == 1) {
            return compressedComponents.iterator().next();
        }
        return new Composite(compressedComponents, false);
    }