     
     /// `true` if the rule creates ndoes, false otherwise
     public var structural : Bool {
-        if case .structural(_) = behaviour.kind {
-            return true
-        }
-        return false
+        return behaviour.token != nil
     }
     
     /// `true` if the rule creates ndoes, false otherwise


        switch behaviour.kind {
        case .structural(let token):
            if behaviour.negate {
                _ = lexer.proceed()
                ir.evaluating(token)
                ir.succeeded(token: token, annotations: annotations, range: lexer.proceed().range)
            } else {
                ir.succeeded(token: token, annotations: annotations, range: lexer.proceed().range)
            }
        case .scanning, .skipping:
            _ = lexer.proceed()
        }

        //Prepare for any lookahead by putting a fake IR in place if is lookahead
        //as well as taking an additional mark to ensure position will always be
        //where it was
        let printDebugMessages = false
        let ir = behaviour.lookahead ? LookAheadIR() : ir
        if behaviour.lookahead {
            lexer.mark(skipping:true)
