I have an advanced differ for arbitrary Nim types if you want to study how to transform yours into macro. My use-case is for a test suite so I throw an exception as soon as there is a mismatch.
[https://github.com/status-im/nim-beacon-chain/blob/9050db7b/tests/helpers/debug_state.nim#L39-L114](https://github.com/status-im/nim-beacon-chain/blob/9050db7b/tests/helpers/debug_state.nim#L39-L114)
