code: public F4<P1, P2, P3, P4, R> orElse(
                  final Func4<? super P1, ? super P2, ? super P3, ? super P4, ? extends R> fallback
          ) {
              final F4<P1, P2, P3, P4, R> me = this;
              return new F4<P1, P2, P3, P4, R>() {
                  @Override
                  public R apply(P1 p1, P2 p2, P3 p3, P4 p4) {
                      try {
                          return me.apply(p1, p2, p3, p4);
                      } catch (RuntimeException e) {
                          return fallback.apply(p1, p2, p3, p4);
                      }
                  }
              };
          }
docs: Returns a composed function that when applied, try to apply this function first, in case
  a {@link NotAppliedException} is captured apply to the fallback function specified. This
  method helps to implement partial function
  
  @param fallback
  the function to applied if this function doesn't apply to the parameter(s)
  @return the composed function