code: public <T> F1<P1, T> andThen(final Function<? super R, ? extends T> after) {
              E.NPE(after);
              final Function<P1, R> me = this;
              return new F1<P1, T>() {
                  @Override
                  public T apply(P1 p1) {
                      return after.apply(me.apply(p1));
                  }
              };
          }
docs: 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 <T>
  the type of return value of the new composed function
  @param after
  the function applies after this function is applied
  @return the composed function
  @throws NullPointerException
  if @{code after} is null