If a function-like macro is called with arguments some of which shadow formal parameters then the expansion can lose the shadowing argument and substitute another.
FOO(T1,T2) is called with
(T2,T3) then replacement of
T2 at first yields
FOO(T2,T2); then replacement of
To fix this replaced segments must be noted and not replaced again.