I misunderstood you, of course I can find the node in old ast which was replaced, using operator =.
Sure it works, but the problem is I have to pass oldNodes each time from old node to new one.
I think you can work recreating the ast. I'm not sure there is any reason to keep track of old nodes, because what you do is: apply a change to ast under selection; rebuilt RB matching / transform rule; apply RB rule to sample code. update all four panes.