I wanted to do only pointers here, but they are impossible to test without having some support for DeclRefExprs.
This also implements assignments because that was broken when implementing DeclRefExprs. Assignments were handled through LValueToRValue casts before.
Can you explain what this is doing for me?