code: public static <U, T> StreamEx<T> ofPairs(U[] array, BiFunction<? super U, ? super U, ? extends T> mapper) {
          return ofPairs(Arrays.asList(array), mapper);
      }
docs: Returns a sequential ordered {@code StreamEx} containing the results of
  applying the given mapper function to the all possible pairs of elements
  taken from the provided array.
  
  <p>
  The indices of two array elements supplied to the mapper function are
  always ordered: first element index is strictly less than the second
  element index. The pairs are lexicographically ordered. For example, for
  the array of three elements the stream of three elements is created:
  {@code mapper.apply(array[0], array[1])},
  {@code mapper.apply(array[0], array[2])} and
  {@code mapper.apply(array[1], array[2])}. The number of elements in the
  resulting stream is {@code array.length*(array.length+1L)/2}.
  
  @param <U> type of the array elements
  @param <T> type of the stream elements
  @param array an array to take the elements from
  @param mapper a non-interfering, stateless function to apply to each pair
  of array elements.
  @return a new {@code StreamEx}
  @see EntryStream#ofPairs(Object[])
  @since 0.3.6