public char prev()
    {
        char token = prevChar();
        if ( token == (char)-1 )
        {
            return token;
        }
        else if (token == '\r'||token=='\n')
        {
            if ( lastWasLetter && readHyphenatedWordBackwards() )
            {
                char last = undo.get(undo.size()-1);
                undo.clear();
                token = (char)0xAD;
                undo.add(last);
            }
            else if ( readRomanPageBackwards()||readArabicPageBackwards() )
            {
                char last = undo.get(undo.size()-1);
                undo.clear();
                undo.add(last);
            }
            lastWasLetter = false;
            return token;
        }
        else
        {
            lastWasLetter = Character.isLetter(token);
            return token;
        }
    }