> OK, so what happens if its storage array is an immutable array that has a capacity larger than its length?

Then appending to it in place is fair game, and exactly what `arr ~= 5;` would do.

> Surely it can't make conclusions just off that fact?

It can and does.

> If you have  string s = "foo".replicate(5)[0..3]  then  appender(s)  should not clobber the rest of  s .

It absolutely shouldn't because `s[0 ..i].capacity` is `0`, because there is still live data behind "I".

In any case, I found the culprit inside Appender: Its making a GC.extend call, which succeeds, but forgers to check first if it actually could append to said block first. Just commented the code, and it fixes the issue.

--------

I am *so* tired of appender right now... It's just wrong all over the place...