int (@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; }