@SafeVarargs
    public static <E> Set<E> union(final Supplier<Set<E>> constructor, final Set<E>... set) {
        final Set<E> result = constructor.get();
        for (final Set<E> s : set) {
            result.addAll(s);
        }
        return result;
    }
@Test
    public void testUnionOfNone() {
        final Set<String> union = union(TreeSet::new);

        assertEquals(emptySet(), union);
        assertEquals(TreeSet.class, union.getClass());
    }