anchor.diff:                      let g = groups.[int tokGroupIdx]
                       let isNoiseGroup = not g.IsTerminal
                       input.AdvancePastOffset(ofs, isNoiseGroup)
  -                    groupLoop isNoiseGroup [g]
  +                    groupLoop isNoiseGroup [tokGroupIdx]
                       match g.ContainerSymbol with
                       // The group is a terminal. We return it.
                       | Choice1Of2 term -> newToken term
  
positive.code:                     match dfaResult.FoundToken, dfaResult.Symbol with
                      | true, Choice3Of4(GroupStart(_, tokGroupIdx))
                          when currentGroup.Nesting.Contains tokGroupIdx ->
                              let g = groups.[int tokGroupIdx]
                              input.AdvancePastOffset(ofs, isNoiseGroup)
                              groupLoop isNoiseGroup (g :: groupStack)
                      // A symbol is found that ends the current group.
                      | true, sym when currentGroup.IsEndedBy sym ->
                          match currentGroup.EndingMode with
  
negative.code:         // By returning unit the compiler does
          // not translate it to an FSharpTypeFunc.
          let fail msg = ParserError(input.CurrentPosition, msg) |> ParserException |> raise |> ignore
          let rec groupLoop isNoiseGroup groupStack =
              match groupStack with
              | [] -> ()
              | g :: gs ->
                  let currentGroup = grammar.Groups.[int g]
                  let dfaResult = tokenizeDFA input
                  if dfaResult.ReachedEOF then
                      // Input ended but the current group can be ended by a newline.
  