code: @NotNull
      public static <T> Collector<T, ?, List<T>> toUnmodifiableList() {
          return Collectors.collectingAndThen(Collectors.<T>toList(), new UnaryOperator<List<T>>() {
  
              @NotNull
              @Override
              public List<T> apply(@NotNull List<T> list) {
                  Objects.requireNonNullElements(list);
                  return Collections.unmodifiableList(list);
              }
          });
      }
docs: Returns a {@code Collector} that fills new unmodifiable {@code List} with input elements.
  
  The returned {@code Collector} disallows {@code null}s
  and throws {@code NullPointerException} if it is presented with a null value.
  
  @param <T> the type of the input elements
  @return a {@code Collector}
  @since 1.2.0