boolean toKatakana(KanjiInput input, Writer output) throws IOException {
        if (!isHiragana(input.get())) {
            return false;
        }
        while (true) {
            int ch = input.get();
            if (ch == '\u3046') {	// 'u'
                input.consume(1);
                int ch2 = input.get();
                if (ch2 == '\u309b') {	// voice sound mark
                    input.consume(1);
                    output.write('\u30f4');	// 'vu'
                } else {
                    output.write('\u30a6');
                }
            } else if ((ch >= '\u3041' && ch <= '\u3093') ||
                       ch == '\u309d' || ch == '\u309e') {
                // from small 'a' to 'n' and iteration marks
                input.consume(1);
                output.write((char)(ch + 0x60));
            } else if (isHiragana(ch)) {
                input.consume(1);
                output.write((char)ch);
            } else {
                break;
            }
        }
        return true;
    }