I have taken the `dup` example from the 1.2 release notes and have refactored it a bit to help better explain this feature: [https://play.nim-lang.org/#ix=2gxD](https://play.nim-lang.org/#ix=2gxD)
Basically the `dup` macro helps **resuse** a proc that had (1) mutable arg and (2) no return type to be used as a proc with (1) immutable arg, and (2) return type same as the arg type.