anchor.diff:              | None ->
                   edges
   
  -        LexerDfaGraph (
  +        SparseMultiDigraph (
               vertexCount,
               Map.add key edgeSet adjacencyMap,
               eofTransition)
   
       //
  -    member __.AddEofEdge (source : DfaStateId, target : DfaStateId) =
  +    member __.AddEofEdge (source : int<'Tag>, target : int<'Tag>) =
           // Preconditions
           if int source < 0 || int source >= vertexCount then
               invalidArg "source" "The vertex is not in the graph's vertex-set."
  
positive.code:     "Vertices = {VertexCount}, \
       EdgeSets = {EdgeSetCount}, \
       Edges = {EdgeCount}")>]
  type LexerDfaGraph private (vertexCount : int,
                              adjacencyMap : Map<TransitionEdgeKey, CharSet>,
                              eofTransition : TransitionEdgeKey option) =
      //
      static let empty =
          LexerDfaGraph (GenericZero, Map.empty, None)
  
      //
      static member internal Empty
  
negative.code: 
          let eofEdgeKey = TransitionEdgeKey (source, target)
  
          SparseMultiDigraph (
              vertexCount,
              adjacencyMap,
              Some eofEdgeKey)
  
  
  /// DFA state.
  [<Measure>] type DfaState
  /// Unique identifier for a state within a DFA.
  type DfaStateId = int<DfaState>
  
  type LexerDfaGraph = SparseMultiDigraph<DfaState>
          
  /// Functions on LexerDfaGraph.
  [<RequireQualifiedAccess; CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module LexerDfaGraph =
      /// The empty graph.
      let empty : LexerDfaGraph =
          LexerDfaGraph.Empty
  
      /// Determines if the graph is empty -- i.e., if it's vertex set is empty.
      let inline isEmpty (graph : LexerDfaGraph) =
  