class New {

    public static <T> Collection<? extends T> unmodifiableCollection(Collection<? extends T> col)
    {
        return col == null ? null
                : col.getClass().getAnnotation(Immutable.class) != null ? col
                        : col.isEmpty() ? Collections.<T>emptySet()
                                : col.size() == 1
                                ? Collections.<T>singletonList(
                                        col instanceof List ? ((List<? extends T>)col).get(0) : col.iterator().next())
                                        : Collections.unmodifiableCollection(collection(col));
    }

    private  New();

}