Remove any state variable mentioned in expr from pending (it was read).
For nested assignments, delegates to process_expr so writes are handled correctly.
Recursively handle a plain-= assignment LHS, tracking each component as a write.
For tuple destructuring (x, y) = ..., each element is processed independently.