anchor.diff:          | EngineMatch.Failure(fail) -> EngineResult.Failure(tokens |> List.rev, fail)
       readToken { Offset = 0
                   Remaining = text |> Seq.toList
  -                Mode = initialmode
  +                Mode = [ initialmode ]
                   Taken = 0 } []
     
     member this.ID0 = nameLookup
  
positive.code:   | ZeroOrMoreGreedy of Automata
  
  type AutomataState<'m> = 
    { Mode : 'm
      Remaining : char list
      Taken : int
      Offset : int }
  
negative.code:           Token.Text = tokenText
            Token.TokenType = rule.Mapper tokenText }
        
        let nextMode =
          match rule.RuleAction with
          | Some(RuleAction.PushMode(x)) -> x :: state.Mode
          | Some(RuleAction.PopMode) -> state.Mode.Tail
          | _ -> state.Mode
  
        let newState = { newState with Offset = newState.Offset + newState.Taken; Mode = nextMode }
        EngineMatch.Success(tokenResult, newState)
    
    let nextToken (state : AutomataState<'m>) = 
      match orderLookup.TryFind state.Mode.Head with
      | Some(rules) -> 
        let rec evaluateNextRule (remainingRules : Rule<'m, 't> list) = 
          match remainingRules with
  