It&#x27;s a great rule for any metaprogramming task. When writing a macro, or reflective intercession, make it a shim that wraps non-metalevel code, so it&#x27;s decoupled, testable and yes debuggable.