What does `Expression::accept` do? I find this unclear.