I think the design would be more efficient if instead, it simply returned a `Char[]`: No point in forcing the user to allocate "yet again", if he needed a mutable (but unique) buffer to begin with.

To keep things "safe by default", you could have `byLineCopy` take `Char = immutable(char)` as a parameter by default. This should give us a good mix of safe, but customizeable:

```D
File myFile = ...;
string[] lines = myFile.byLineCopy().array(); //safe by copy
char[][] mutableLines = myFileCopy!char().array(); //efficient, without much overhead.
```