private boolean readHyphenatedWordBackwards()
    {
        boolean hadHyphen = false;
        ArrayList<Character> saved = new ArrayList<Character>();
        // check for page numbers
        char token;
        if ( readArabicPageBackwards()||readRomanPageBackwards() )
        {
            // remove page number
            char last = undo.get(undo.size()-1);
            undo.clear();
            token = last;
        }
        else
            token = prevChar();
        saved.add(token);
        if ( token=='-' )
        {
            token = prevChar();
            saved.add(token);
            hadHyphen = true;
        }
        while ( undo.size()>0 )
            saved.add(undo.remove(0));
        while (saved.size()>0 )
            unpush( saved.remove(saved.size()-1) );
        // token is definitely not a newline
        return hadHyphen && Character.isLetter(token);
    }