anchor.diff:                          reads))
   
           //
  -        digraph nonterminalTransitions reads directRead
  -
  -    //
  +        digraph (nonterminalTransitions, reads, directRead)
  +
  +    /// Compute the 'includes' and 'lookback' relations needed to compute the look-ahead sets for a grammar.
       let private lookbackAndIncludes (grammar : AugmentedGrammar<'Nonterminal, 'Terminal>, lr0ParserTable : Lr0ParserTable<'Nonterminal, 'Terminal>, nonterminalTransitions, nullable) =
           ((Graph.empty, Graph.empty), nonterminalTransitions)
           ||> Set.fold (fun lookback_includes (stateId, nonterminal) ->
  
positive.code:     /// <param name="F'">A function from <paramref name="X"/> to sets.</param>
      /// <returns><c>F</c>, a function from X to sets, such that <c>F x</c> satisfies
      /// equation 4.1 in DeRemer and Pennello's paper.</returns>
      let private digraph (X : Set<'T>) (R : Map<'T, Set<'T>>) (F' : Map<'T, Set<'U>>) =
          //
          let N =
              (Map.empty, X)
              ||> Set.fold (fun N x ->
                  Map.add x Untraversed N)
  
          ((Map.empty, N, []), X)
          ||> Set.fold (fun (F, N, stack) x ->
              match Map.find x N with
              | Untraversed ->
                  traverse (x, N, stack, F, X, R, F')
              | _ ->
                  F, N, stack)
  
negative.code:                 |> Set.union lookaheadTokens))
          |> Choice1Of2
  
      /// Creates an LALR(1) parser table from a grammar and it's LR(0) parser table.
      let ofLr0Table (grammar : AugmentedGrammar<'Nonterminal, 'Terminal>, lr0ParserTable : Lr0ParserTable<'Nonterminal, 'Terminal>)
          : Choice<Lr0ParserTable<'Nonterminal, 'Terminal>, string> =
          // Compute the lookahead sets.
  