private static boolean startsWith(CharSequence str, CharSequence prefix, boolean ignoreCase) {
        if (str == null || prefix == null) {
            return str == null && prefix == null;
        }
        if (prefix.length() > str.length()) {
            return false;
        }
        return CharSequenceUtils.regionMatches(str, ignoreCase, 0, prefix, 0, prefix.length());
    }
<p>Check if a CharSequence starts with a specified prefix (optionally case insensitive).</p>

@see String#startsWith(String)
@param str  the CharSequence to check, may be null
@param prefix the prefix to find, may be null
@param ignoreCase indicates whether the compare should ignore case
 (case insensitive) or not.
@return {@code true} if the CharSequence starts with the prefix or
 both {@code null}
android/android_framework/base/src/main/java/lang3/StringUtils.java