@Nullable
  protected TextRange getRangeForSuffix(@NotNull CharSequence s, int start, int next) {
    return switch (s.charAt(next)) {
      case '$' -> TextRange.create(start, next + 1);
      case '(' -> {
        int end = Strings.indexOf(s, ")$", next);
        yield end < 0 ? null : TextRange.create(start, end + 2);
      }
      default -> null;
    };
  }
@Nullable
  protected TextRange getRangeForSuffix(@NotNull CharSequence s, int start, int next)