These guys do this:
JS> (ps a!) "abang;" JS> (ps a!!) "abangbang;"
JS> (ps a%) "apercent;" JS> (ps a%%) "apercentpercent;"
But these guys do this:
JS> (ps a+) "aplus;" JS> (ps a++) ";"
JS> (ps a*) "astar;" JS> (ps a**) ";"
I'm sure this has something to do with translation of *NAMES-LIKE-THIS* and +NAMES-LIKE-THIS+. But presumably those should be special cases where * and + are truly delimiting the name?