Use visitor instead of listener.