code: @NotNull
      public static <T, A, IR, OR> Collector<T, A, OR> collectingAndThen(
              @NotNull Collector<T, A, IR> c,
              @NotNull Function<IR, OR> finisher) {
          Objects.requireNonNull(c);
          Objects.requireNonNull(finisher);
          return new CollectorsImpl<T, A, OR>(c.supplier(), c.accumulator(),
                  Function.Util.andThen(c.finisher(), finisher));
      }
docs: Returns a {@code Collector} that performs additional transformation.
  
  @param <T> the type of the input elements
  @param <A> the accumulation type
  @param <IR> the input type of the transformation function
  @param <OR> the output type of the transformation function
  @param c  the input {@code Collector}
  @param finisher  the final transformation function
  @return a {@code Collector}