- store codepoints by reference in RenderCell (accessor still clones on
read); the constructor clone double-allocated every cell and defeated
the shared-empty-array optimization
- return rows as an unmodifiable view instead of List.copyOf; the list is
a fresh local that never escapes
- preallocate row/cell lists to known rows/cols capacity
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>