code: public static boolean startsWithComposingChar(String str)
              throws SAXException {
          if (str.length() == 0) {
              return false;
          }
          int first32;
          char first = str.charAt(0);
          if (UCharacter.isHighSurrogate(first)) {
              try {
                  char second = str.charAt(1);
                  first32 = UCharacter.getCodePoint(first, second);
              } catch (StringIndexOutOfBoundsException e) {
                  throw new SAXException("Malformed UTF-16!");
              } catch (IllegalArgumentException e) {
                  // com.ibm.icu.lang.UCharacter.getCodePoint throws
                  // IllegalArgumentException if illegal surrogates found
                  throw new SAXException(e.getMessage());
              }
          } else {
              first32 = first;
          }
          return isComposingChar(first32);
      }
docs: Returns <code>true</code> if the argument starts with a composing
  character and <code>false</code> otherwise.
  
  @param str a string
  @return <code>true</code> if the argument starts with a composing
  character and <code>false</code> otherwise.
  @throws SAXException on malformed UTF-16