docs: public static <T> Set<T> immutableSetCopy(Set<T> set) {
        if (set == null) return null;
        if (set.isEmpty()) return Collections.emptySet();
        if (set.size() == 1) return Collections.singleton(set.iterator().next());
        Set<? extends T> copy = ObjectDuplicator.duplicateSet(set);
        if (copy == null)
           // Set uses Collection copy-ctor
           copy = attemptCopyConstructor(set, Collection.class);
        if (copy == null)
           copy = new HashSet<>(set);
  
        return new ImmutableSetWrapper<>(copy);
     }