code: public static String[] splitByWholeSeparatorPreserveAllTokens(final String str, final String separator) {
          return splitByWholeSeparatorWorker(str, separator, -1, true);
      }
docs: <p>Splits the provided text into an array, separator string specified. </p>
  
  <p>The separator is not included in the returned String array.
  Adjacent separators are treated as separators for empty tokens.
  For more control over the split use the StrTokenizer class.</p>
  
  <p>A {@code null} input String returns {@code null}.
  A {@code null} separator splits on whitespace.</p>
  
  <pre>
  StringUtils.splitByWholeSeparatorPreserveAllTokens(null, *)               = null
  StringUtils.splitByWholeSeparatorPreserveAllTokens("", *)                 = []
  StringUtils.splitByWholeSeparatorPreserveAllTokens("ab de fg", null)      = ["ab", "de", "fg"]
  StringUtils.splitByWholeSeparatorPreserveAllTokens("ab   de fg", null)    = ["ab", "", "", "de", "fg"]
  StringUtils.splitByWholeSeparatorPreserveAllTokens("ab:cd:ef", ":")       = ["ab", "cd", "ef"]
  StringUtils.splitByWholeSeparatorPreserveAllTokens("ab-!-cd-!-ef", "-!-") = ["ab", "cd", "ef"]
  </pre>
  
  @param str  the String to parse, may be null
  @param separator  String containing the String to be used as a delimiter,
  {@code null} splits on whitespace
  @return an array of parsed Strings, {@code null} if null String was input
  @since 2.4