Whilst you are updating appender, I wanted to bring to your attention a report I had filed:
http://d.puremagic.com/issues/show_bug.cgi?id=9092

The problem, in a word, is that if data is a dynamic array at this point, then the actual "extended u" space, and the underlying "capacity" will not perfectly match. This "else" branch should use array .capacity, and not u directly.

If you can fix it while you are at it, good. But I guess it's not a problem if we ignore it.