The following code apparently adds two "match" clauses because of the end() call after matching().
There's of course a problem in our syntax, because intuitively one would expect the end() call to end the "match" predicate, not the "bool" predicate. That will be discussed during our face-to-face meeting.
The following problems facts are more pressing:
1. One can call end on the boolean predicate from the lambda that is supposedly strictly internal to that boolean predicate. But that probably can't be helped.
2. The end() call has an effect at all? That shouldn't be the case except at the very upper level, and that level should trigger an error if two predicates are added.