Simpler, more general implementation of visit(Ramp)