docs: public static <M extends Map<K, V>, K, V> Lens<Map<K, V>, M, Maybe<V>, Maybe<V>> valueAt(
              Function<? super Map<K, V>, ? extends M> copyFn, K k) {
          return lens(m -> maybe(m.get(k)), (m, maybeV) -> maybeV
                  .<Fn1<M, IO<M>>>fmap(v -> alter(updated -> updated.put(k, v)))
                  .orElse(alter(updated -> updated.remove(k)))
                  .apply(copyFn.apply(m))
                  .unsafePerformIO());
      }