Yea, you have copy-on-write with `BigInt`.  In fact this is suboptimal in many cases because if you do e.g.

```D
BigInt n = 2;
++n;
```

... you create a new copy with the 2nd line, even though there's nothing else pointing to the internal data.  Probably this can be improved with a reference-counting approach, but the one good thing this guarantees is that you should never accidentally overwrite a const or immutable BigInt by writing to a mutable copy.