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

        assertEquals(list, unmodifiable);
    }