(\ x . \ y . x y) y --> \ y . y y (WRONG)
(\ x . \ y' . x y') y --> \ y' . y y'
Note that the argument expression, y, contained a free variable. The whole expression above must therefore be notionally contained within the body of some lambda abstraction which binds y. If we never reduce inside the body of a lambda abstraction (as in reduction to weak head normal form) then name capture cannot occur.