I'm asking because it seems to me that it is not working exactly as described.
Specifically the part with [owned
refs](https://nim-lang.org/docs/destructors.html#owned-refs). It seems to me
that ref and owned ref behave exactly the same way when compiling with nim c
--gc:arc -d:debug and there is no prohibition for coping owned refs or for
moving refs as described in the documentation and no assertion for dangling
unowned refs. Also destructors seems to be called on scope exit just like in
C++, but not on procedure exit like it is described
[here](https://nim-lang.org/docs/destructors.html#rewrite-rules).