static int nextWordAscii(@NotNull String text, int start) {
    if (!isLetterOrDigitAscii(text.charAt(start))) {
      return start + 1;
    }

    int i = start;
    while (i < text.length() && isDigitAscii(text.charAt(i))) {
      i++;
    }
    if (i > start) {
      // digits form a separate hump
      return i;
    }

    while (i < text.length() && isUpperAscii(text.charAt(i))) {
      i++;
    }

    if (i > start + 1) {
      // several consecutive uppercase letter form a hump
      if (i == text.length() || !isLetterAscii(text.charAt(i))) {
        return i;
      }
      return i - 1;
    }

    if (i == start) i += 1;
    while (i < text.length() && isLetterAscii(text.charAt(i)) && !isWordStartAscii(text, i)) {
      i++;
    }
    return i;
  }
static int nextWordAscii(@NotNull String text, int start)