public static <T> Collector<T, ?, List<T>> toUnmodifiableList() {
        return Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList);
    }
@Test(expected = UnsupportedOperationException.class)
    public void convertToUnmodifiableProducesUnmodifiable() {
        List<Integer> list = Arrays.asList(1, 2, 3);
        List<Integer> unmodifiable = list.stream().collect(StreamUtils.toUnmodifiableList());

        unmodifiable.add(666);
    }