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);
    }
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
src/nu/validator/checker/NormalizationChecker.java