/**
  * Looks up a character's category (i.e., its category for breaking purposes, not its Unicode
  * category)
  */
 protected int lookupCategory(int c) {
   if (c < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
     return charCategoryTable.elementAt((char) c);
   } else {
     return supplementaryCharCategoryTable.getValue(c);
   }
 }
 /**
  * Uses the column map to map the character to a column number, then passes the row and column
  * number to getNextState()
  *
  * @param row The current state
  * @param ch The character whose column we're interested in
  * @return The new state to transition to
  */
 public final short getNextStateFromCharacter(int row, int ch) {
   int col;
   if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
     col = columnMap.elementAt((char) ch);
   } else {
     col = supplementaryCharColumnMap.getValue(ch);
   }
   return getNextState(row, col);
 }