match? macro no longer leaks variables