code: public static StreamEx<String> split(CharSequence str, Pattern pattern) {
          if (str.length() == 0)
              return of("");
          return new StreamEx<>(pattern.splitAsStream(str), StreamContext.SEQUENTIAL);
      }
docs: Creates a stream from the given input sequence around matches of the
  given pattern.
  
  <p>
  The stream returned by this method contains each substring of the input
  sequence that is terminated by another subsequence that matches this
  pattern or is terminated by the end of the input sequence. The substrings
  in the stream are in the order in which they occur in the input. Trailing
  empty strings will be discarded and not encountered in the stream.
  
  <p>
  If the given pattern does not match any subsequence of the input then the
  resulting stream has just one element, namely the input sequence in
  string form.
  
  <p>
  When there is a positive-width match at the beginning of the input
  sequence then an empty leading substring is included at the beginning of
  the stream. A zero-width match at the beginning however never produces
  such empty leading substring.
  
  <p>
  If the input sequence is mutable, it must remain constant from the stream
  creation until the execution of the terminal stream operation. Otherwise,
  the result of the terminal stream operation is undefined.
  
  @param str The character sequence to be split
  @param pattern The pattern to use for splitting
  
  @return The stream of strings computed by splitting the input around
  matches of this pattern
  @see Pattern#splitAsStream(CharSequence)