@TCB private static int longestPrefixOfGoodCodeunits(String s){
  int n=s.length(), i;
  for (i=0; i < n; ++i) {
    char ch=s.charAt(i);
    if (ch < 0x20) {
      if (IS_BANNED_ASCII[ch]) {
        return i;
      }
    }
 else     if (0xd800 <= ch) {
      if (ch <= 0xdfff) {
        if (i + 1 < n && Character.isSurrogatePair(ch,s.charAt(i + 1))) {
          ++i;
        }
 else {
          return i;
        }
      }
 else       if ((ch & 0xfffe) == 0xfffe) {
        return i;
      }
    }
  }
  return -1;
}

@ TCB private static int longestPrefixOfGoodCodeunits ( String s ) { int n = s . length ( ) , i ; for ( i = 0 ; i < n ; ++ i ) { char ch = s . charAt ( i ) ; if ( ch < 0x20 ) { if ( IS_BANNED_ASCII [ ch ] ) { return i ; } } else if ( 0xd800 <= ch ) { if ( ch <= 0xdfff ) { if ( i + 1 < n && Character . isSurrogatePair ( ch , s . charAt ( i + 1 ) ) ) { ++ i ; } else { return i ; } } else if ( ( ch & 0xfffe ) == 0xfffe ) { return i ; } } } return - 1 ; }
the number of code - units at the front of s that form code - points in the xml character production .
