code: public F0<R> andThen(final Func0<? extends R>... fs) {
              if (fs.length == 0) {
                  return this;
              }
              final F0<R> me = this;
              return new F0<R>() {
                  @Override
                  public R apply() {
                      R r = me.apply();
                      for (Func0<? extends R> f : fs) {
                          r = f.apply();
                      }
                      return r;
                  }
              };
          }
docs: Returns a composed function that applied, in sequence, this function and
  all functions specified one by one. If applying anyone of the functions
  throws an exception, it is relayed to the caller of the composed function.
  If an exception is thrown out, the following functions will not be applied.
  <p>When apply the composed function, the result of the last function
  is returned</p>
  
  @param fs
  a sequence of function to be applied after this function
  @return a composed function