@Override
  public void split(@Nullable String text, @NotNull TextRange range, Consumer<TextRange> consumer) {
    if (text == null || range.getLength() <= 1) {
      return;
    }
    try {
      Matcher specialMatcher = SPECIAL.matcher(newBombedCharSequence(text));
      specialMatcher.region(range.getStartOffset(), range.getEndOffset());
      if (specialMatcher.find()) {
        TextRange found = new TextRange(specialMatcher.start(), specialMatcher.end());
        addWord(consumer, true, found);
      }
      else {
        IdentifierSplitter.getInstance().split(text, range, consumer);
      }
    }
    catch (ProcessCanceledException ignored) {
    }
  }
@Override
  public void split(@Nullable String text, @NotNull TextRange range, Consumer<TextRange> consumer)