code: public <R> StreamEx<R> flatArray(Function<? super T, ? extends R[]> mapper) {
          return flatMap(t -> {
              R[] a = mapper.apply(t);
              return a == null ? null : StreamEx.of(Arrays.spliterator(a));
          });
      }
docs: Returns a stream consisting of the results of replacing each element of
  this stream with the contents of a mapped array produced by applying
  the provided mapping function to each element. (If a mapped array is
  {@code null} nothing is added for given element to the resulting stream.)
  
  <p>
  This is an <a href="package-summary.html#StreamOps">intermediate
  operation</a>.
  
  <p>
  The {@code flatArray()} operation has the effect of applying a
  one-to-many transformation to the elements of the stream, and then
  flattening the resulting elements into a new stream.
  
  @param <R> The element type of the new stream
  @param mapper a <a
  href="package-summary.html#NonInterference">non-interfering </a>,
  <a href="package-summary.html#Statelessness">stateless</a>
  function to apply to each element which produces an
  array of new values
  @return the new stream
  @since 0.6.5