code: @SuppressWarnings("RedundantTypeArguments")
      public static <X, CX extends Collection<X>> Lens.Simple<CX, Stream<X>> asStream(
              Function<? super CX, ? extends CX> copyFn) {
          return simpleLens(Collection<X>::stream, (xsL, xsS) -> {
              CX updated = copyFn.apply(xsL);
              updated.clear();
              xsS.forEach(updated::add);
              return updated;
          });
      }
docs: Convenience static factory method for creating a lens that focuses on a Collection as a Stream.
  <p>
  Note that this lens is effectively lawful, though difficult to prove given the intrinsically
  stateful and inequitable nature of {@link Stream}.
  
  @param copyFn the copying function
  @param <X>    the collection element type
  @param <CX>   the type of the collection
  @return a lens that focuses on a Collection as a stream.