Out of curiousity, a couple of questions.    - The iterator iterates over `out` if present?  - The writeback to `out` or the new output array happens in iter deallocation?  - I assume deallocation also decrefs the `out` or new array?