anchor.diff:              productionToStates startState endState right
           | PSeq (seq, _ , _) ->
               let entryState, exitState = newState(), newState()
  -            addEdge startState entryState Eps
  -            addEdge exitState endState.Value Eps 
  +            addEdge startState entryState Entry
  +            addEdge exitState endState.Value End
               let rec seqToStates source target = function
                   | hd :: [] -> productionToStates source target hd.rule
                   | hd :: tl -> let newstate = productionToStates source None hd.rule
  
positive.code: open Yard.Core.IL.Production
  open QuickGraph
  
  type GFGEdge =
      | 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>>()
  
      let nonTermToStates = new Dictionary<string, int * int>()  // nonTerm -> start/end nodes
      let stateToString = new Dictionary<int, string>()          // for visualization (TODO)
  
negative.code:                 finalState := endState
      do
          rulesToGFG ()
      
      member this.InitState = !initState
      member this.FinalState = !finalState
  
      member this.PrintToDot output =
          let head = "digraph GFG { \n"
  