class MetaMap {

    public static String decomposeToAscii(final String s) {
        /* pure java version, doesn't work all the time:
        String normalized = Normalizer.normalize(s, Normalizer.Form.NFD);
        return normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
        */

        // this works on more cases
        final char[] input = new char[s.length()];
        s.getChars(0, s.length(), input, 0);
        final char[] output = new char[input.length * 4];
        final int numChars = ASCIIFoldingFilter.foldToASCII(input, 0, output, 0, input.length);

        // now remove anything not in the printable US-ASCII range, but keep newlines
        final StringBuilder sb = new StringBuilder(numChars);
        for (int i = 0; i < numChars; i++) {
            final char c = output[i];
            // printable US-ASCII is from 32 to 126
            if ((32 <= c && c <= 126) || '\n' == c) sb.append(c);
        }

        return sb.toString();
    }

    public  MetaMap(final File publicMm, final Collection<Option> opts);

}