code: public static <T, R> R firstNonNull(Function<T, R> function, Supplier<Collection<T>>... suppliers) {
          Stream<Supplier<R>> resultStream = Stream.of(suppliers)
                                                      .map(s -> (() -> firstNonNull(function, s.get())));
          return firstNonNull(Supplier::get, resultStream);
      }
docs: Gets first result of function which is not null.
  
  @param <T>       type of values.
  @param <R>       element to return.
  @param function  function to apply to each value.
  @param suppliers all possible suppliers that might be able to supply a value.
  @return first result which was not null,
  OR <code>null</code> if result for all supplier's values was <code>null</code>.