anchor.diff:                              if la.Contains(hashTerminal) then
                                   propagate.Add((item, itemSet.Index), (gotoKernel, gotoIdx)) |> ignore
                               spontaneous.AddRange((gotoKernel, gotoIdx), Seq.filter ((<>) hashTerminal) la) |> ignore
  -                        | false, _ -> ()
  -                )
  -            )
  -        )
  +                        | false, _ -> ())))
           MultiMap.freeze spontaneous, MultiMap.freeze propagate
   
       let lookaheads = MultiMap.create()
       // The next line assumes the first item set's kernel contains only
       // the start production which spontaneously generates an EOF symbol by definition.
       lookaheads.Add((itemSets.[0].Kernel.MinimumElement, 0), End) |> ignore
  -    spontaneous |> Map.iter (fun k la -> lookaheads.AddRange(k, Seq.map Terminal la) |> ignore)
  +    spontaneous |> Map.iter (fun k la -> lookaheads.AddRange(k, la) |> ignore)
       let mutable changed = true
       while changed do
           changed <- false
  
positive.code:             match Seq.tryExactlyOne itemSet.Kernel with
              | Some k when k.IsAtEnd && k.Production.Head = startSymbol ->  Some LALRAction.Accept
              | _ ->
                  itemSet.Kernel
                  |> Seq.filter (fun x -> x.IsAtEnd)
                  |> Seq.choose (fun item ->
                      let la = getLookahead item itemSet.Index
                      if Set.contains End la then
                          Some (LALRAction.Reduce item.Production)
                      else
                          None)
                  |> List.ofSeq
  
negative.code:         |> Seq.iter (fun itemSet ->
              itemSet.Kernel
              |> Set.iter (fun item ->
                  let closure = closure1 fGetAllProductions fGetFirstSet [item, hashTerminalSet]
                  closure
                  |> List.iter (fun {Item = closureItem; Lookahead = la} ->
                      if not closureItem.IsAtEnd then
                          match itemSet.Goto.TryGetValue(closureItem.CurrentSymbol) with
                          | true, gotoIdx ->
  