BTW, I noticed a bug lately: when doing replaceAll on a non-ascii text, everything is screwed.
Bit of a late fix.... but I think it's working properly now with non-ASCII text. Well, the offsets seem to be correct now. May still require some work though.