     }
     
     func testInstanceTokenModification(){
-        let rule = LabelledToken(withLabel: "letter").oneOrMore(of: CharacterSet.letters)
+        let rule = CharacterSet.letters.token(LabelledToken(withLabel: "letter"), from: .oneOrMore)
         let newRule = rule.instance(with: transientTokenValue.token)
         
         XCTAssertEqual(newRule.produces.rawValue, transientTokenValue)


    func testGreedilyConsumeCharacterSetToken(){
        let source = "Hello World"
        let rule = LabelledToken(withLabel: "letter").consumeGreedily(CharacterSet.letters)
        let lexer = Lexer(source: source)
        let testIR = TestIR()
        
        do {
            switch try rule.match(with: lexer, for: testIR){
            case .consume(let context):
                //Test stuff
                XCTAssertEqual("Hello", context.matchedString)
            default:

    
    func testKnownAnnotations(){
        let error = "Valid error"
        let rule = CharacterSet.letters.token(LabelledToken(withLabel: "test"), from: .oneOrMore)
        let validError = rule.instance(with: [
            RuleAnnotation.error : RuleAnnotationValue.string(error),
            RuleAnnotation.void  : RuleAnnotationValue.set,
