anchor.diff:    | CustomOperator of string
     | Punctuation of Punctuation
   
  +  member this.NoFun = (fun (arg: string) -> this)
  +
   
   type [<RequireQualifiedAccess>] LexerMode =
     | Normal
  
positive.code:   | String
    
  let rules: Rule<LexerMode, TokenType> array = 
    [  Rule.From LexerMode.Normal TokenType.Identifier None "Space Normal" (Regex("[ ]+"))
       Rule.From LexerMode.Normal (fun _ -> TokenType.Keyword Keyword.Let) None "Space Normal" (Regex("(?i)Let"))
       Rule.From LexerMode.Arrow TokenType.Identifier None "Space Arrow" (Regex("[ ]+"))
  
       Rule.From LexerMode.Normal (fun _ -> TokenType.Operator Operator.GreaterThan) (Some(RuleAction.PushMode(LexerMode.Arrow))) "<" (Regex("[<]"))
       Rule.From LexerMode.Arrow (fun _ -> TokenType.Operator Operator.LessThan) (Some(RuleAction.PopMode)) ">" (Regex("[>]"))
  
       
       Rule.From LexerMode.Normal (fun delimiter -> TokenType.StringDelimiter delimiter) (Some(RuleAction.PushMode(LexerMode.String))) "StringLiteralDelimiterIn" (Regex("[\"]{3}"))
  
negative.code: let main argv = 
    let engine = Engine rules
    
    let example = "let < > <>          \r\n   \"\"\"I could be a string\r\n \"\"\"   "
    let engineResult = engine.ParseString example LexerMode.Normal
  
    let tokens =
  