class New {

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

    private  New();

}