Actually every occurrence of String as a parameter could be
changed to CharSequence allowing the user to pass String,
StringBuffer, and StringBuilder or even CharBuffer.
The downside is that (a) you can't assume that the supplied value is
immutable; if you need to retain it beyond the call you have to make a copy;
(b) there can be a lot of "instance of" testing to see what kind of
CharSequence you've been given, and (c) you can't compare different kinds of
CharSequence for equality.
Another downside is that the API will be less trivial for novice Java
programmers. (So there will probably be more traffic on this list...)