protected void doSplit(@NotNull String text, @NotNull TextRange range, Consumer<TextRange> consumer) {
    final WordSplitter ws = WordSplitter.getInstance();
    try {
      Matcher matcher = getExtendedWordAndSpecial().matcher(newBombedCharSequence(text));

      matcher.region(range.getStartOffset(), range.getEndOffset());
      while (matcher.find()) {
        TextRange found = new TextRange(matcher.start(), matcher.end());
        ws.split(text, found, consumer);
      }
    }
    catch (ProcessCanceledException ignored) {
    }
  }
protected void doSplit(@NotNull String text, @NotNull TextRange range, Consumer<TextRange> consumer)