@Contract(pure = true)
  public static @Unmodifiable @NotNull List<String> split(@NotNull String s, @NotNull String separator, boolean excludeSeparator, boolean excludeEmptyStrings) {
    //noinspection unchecked,rawtypes
    return (List)split((CharSequence)s, separator, excludeSeparator, excludeEmptyStrings);
  }
@Contract(pure = true)
  public static @Unmodifiable @NotNull List<String> split(@NotNull String s, @NotNull String separator, boolean excludeSeparator, boolean excludeEmptyStrings)