public <T> Producer<T> andThen(final Function<? super R, ? extends T> after) {
            E.NPE(after);
            final F0<R> me = this;
            return new Producer<T>() {
                @Override
                public T produce() {
                    return after.apply(me.apply());
                }
            };
        }
public < T > Producer < T > andThen ( final Function < ? super R , ? extends T > after ) { E . NPE ( after ) ; final F0 < R > me = this ; return new Producer < T > ( ) { @ Override public T produce ( ) { return after . apply ( me . apply ( ) ) ; } } ; }
Returns a composed function that applies this function to it's input and
then applies the {@code after} function to the result. If evaluation of either
function throws an exception, it is relayed to the caller of the composed
function.

@param after
the function applies after this function is applied
@param <T>
the type of the output of the {@code before} function
@return the composed function
@throws NullPointerException
if {@code before} is null