code: @Beta
      public <R, E extends Exception, E2 extends Exception> List<R> filterThenFlatMap(final Try.Predicate<? super T, E> filter,
              final Try.Function<? super T, ? extends Collection<? extends R>, E2> mapper) throws E, E2 {
          N.checkArgNotNull(filter);
          N.checkArgNotNull(mapper);
  
          final List<R> result = new ArrayList<>();
  
          Collection<? extends R> c = null;
  
          for (T e : coll) {
              if (filter.test(e)) {
                  c = mapper.apply(e);
  
                  if (N.notNullOrEmpty(c)) {
                      result.addAll(c);
                  }
              }
          }
  
          return result;
      }
docs: For better performance, comparing to {@code Stream}.
  
  @param filter
  @param mapper
  @return
  @throws E
  @throws E2