First, parse() does a great job when testing with unambiguous grammar and input — it throws an exception on ambiguity and that's what you want.
However, when thing get more complex and I needed, e.g. just dump multiple parses, the recognizer is hidden behind the otherwise very useful parse() interface, and to do that _while still keeping the behaviour in unambiguous case_, I had to mimic parse()'s functionality,
like this.
I understand that it is by design, hence my suggestion is that in list context parse(), rather than throwing an exception, return its recognizer (probably after series_restart() so that it's ready to use), like this.
This would require adding recognizer() method to Marpa::R2::ASF (grammar() is already there) .
The full use case I have in mind: