anchor.diff:          let hashTerminalSet = LookaheadSet firstSets.AllTerminals.Length
           hashTerminalSet.HasHash <- true
           hashTerminalSet.Freeze()
  -        itemSets
  -        |> Seq.iter (fun itemSet ->
  -            itemSet.Kernel
  -            |> Set.iter (fun item ->
  +        for itemSet in itemSets do
  +            for item in itemSet.Kernel do
                   let closure = closure1 fGetAllProductions firstSets [item, hashTerminalSet]
  -                closure
  -                |> List.iter (fun {Item = closureItem; Lookahead = la} ->
  +                for {Item = closureItem; Lookahead = la} in closure do
                       if not closureItem.IsAtEnd then
                           match itemSet.Goto.TryGetValue(closureItem.CurrentSymbol) with
                           | true, gotoIdx ->
  
positive.code:                         item.Production.Handle
                          |> Seq.skip (item.DotPosition + 1)
                          |> getFirstSetOfSequence firstSets lookahead
                      nont
                      |> fGetAllProductions
                      |> Set.iter (fun prod -> q.Enqueue(LR0Item.Create prod, first))
      results.AsEnumerable()
      |> Seq.map (fun (KeyValue(k, v)) -> v.Freeze(); {Item = k; Lookahead = v})
      |> List.ofSeq
  
negative.code:         | LALRSymbol.Terminal _ -> false
          | LALRSymbol.Nonterminal nont -> dict.HasEmpty nont
  
      for {Head = x; Handle = xs} in productions do
          if xs.IsEmpty then
              dict.AddEmpty x |> ignore
  
      let mutable changed = true
  
  