anchor.diff:                  initState := startState
                   finalState := endState
       do
  -        rulesToGFG ()+        rulesToGFG ()
  +
  +    member this.PrintToDot output =
  +        let head = "digraph GFG { \n"
  +        let edges = this.Edges
  +                    |> Seq.map (fun e -> sprintf 
  +                                             "%i -> %i [label=\"%s\"]; \n" 
  +                                             e.Source 
  +                                             e.Target 
  +                                             (e.Tag.ToString()))
  +                    |> Seq.toList            
  +        System.IO.File.WriteAllLines (output, ([head] @ edges @ ["}"]))
positive.code:         then addEdge source !final (Scan s.text)
          else
              let startState, endState = nonTermToStates.[s.text]
              let returnState = newState()
              addEdge source startState (Call returnState)
              addEdge endState returnState Eps
              final := returnState
          !final
  
      let rec productionToStates startState (endState: int option) prod : int =
  
negative.code:     | Call of int   // stores matching return node
      | Scan of string
      | Eps           // other edges (Entry, Return, etc.)
      override this.ToString() =
          match this with
          | Call n -> string n
          | Scan s -> s
          | Eps -> ""
  
  type GrammarFlowGraph (ruleList : Rule.t<Source.t,Source.t> list) as this =
      inherit AdjacencyGraph<int, TaggedEdge<int, GFGEdge>>()
  
  