static L dropPunctuationAtEnd_hard(L tok) { tok = new ArrayList(tok); for (int i = tok.size()-2; i > 0; i -= 2) { S t = tok.get(i); if (t.length() == 1 && !Character.isLetterOrDigit(t.charAt(0))) { tok.remove(i); tok.remove(i); } else break; } return tok; } static S dropPunctuationAtEnd_hard(S s) { ret join(dropPunctuationAtEnd_hard(nlTok(s))); }