code: private static boolean isComposingCharOrSurrogate(char c) {
          if (UCharacter.isHighSurrogate(c) || UCharacter.isLowSurrogate(c)) {
              return true;
          }
          return isComposingChar(c);
      }
docs: Returns <code>true</code> if the argument is a composing BMP character
  or a surrogate and <code>false</code> otherwise.
  
  @param c a UTF-16 code unit
  @return <code>true</code> if the argument is a composing BMP character
  or a surrogate and <code>false</code> otherwise