Classic double-dispatch visitor for implementing passes.
@override dynamic visit(Visitor visitor) => visitor.visitSelector(this);