                         throw error
                     }
                 }
+                
                 if behaviour.negate {
                     throw TestError(with: behaviour, and: annotations, whenUsing: lexer, causes: nil)
                 }

            }
        } catch {
            if matches == 0 && skippable {
                let lexerContext = lexer.proceed()
                let result = MatchResult.ignoreFailure(atIndex: lexerContext.range.lowerBound)
                if structural {
                    ir.didEvaluate(token: produces, annotations: annotations, matchResult: result)
                }

    */
    public func match(with lexer: LexicalAnalyzer, for ir: IntermediateRepresentation) throws -> MatchResult {
        // Log entrance
        let log = false //behaviour.token != nil
        if log { print(String(repeating: "  ", count: lexer.depth)+shortDescription+" evaluating at \(lexer.position) '\(lexer.endOfInput ? "🏁" : lexer.current.debugDescription.dropFirst().dropLast())'") }
        do {
            let result = try evaluate(test,using: lexer, and: ir)
            //Log result
            if log { print(String(repeating: "  ", count: lexer.depth)+shortDescription+" "+result.description) }
            return result
        } catch {
            // Log failure
            if log { print(String(repeating: "  ", count: lexer.depth)+shortDescription+" \(error)") }
            throw error
        }
    }
