public static <T> List<T> copyOf(Collection<? extends T> values) {
        return values.isEmpty() ? Collections.emptyList() : Collections.unmodifiableList(new ArrayList<>(values));
    }
Creates an immutable copy of the given list.

@param values The collection to make an immutable list of.
@param <T> the List's value type.
@return An immutable List copy.
smithy-utils/src/main/java/software/amazon/smithy/utils/ListUtils.java