anchor.diff:      member this.OutEdges = out
       member this.State = state
       member this.PassingReductions = passingReductions
  -    member val prefixes = new ResizeArray<Path>(4) with get
  +    member val prefixes = new ResizeArray<Prefix>() with get    //in reverse order
   
       member this.addEdge (edge : Edge) =
           let mutable i = out.Count - 1
  
positive.code:         else Error (0, Unchecked.defaultof<'TokenType>, "This grammar cannot accept empty string")
      else
          let startGssV,_ = addVertex startV startState startV.unprocessedGssVertices
          startGssV.prefixes.Add(null)
          while errorIndex = -1 && verticesToProcess.Count > 0 do
              let curV = verticesToProcess.Dequeue()
              processVertex curV
  
negative.code:                 levels.[u.Level] <- [!curNum]
              else
                  levels.[u.Level] <- !curNum :: levels.[u.Level]
              print <| sprintf "%d [label=\"%d_%d\"]" !curNum u.Level u.State 
              (*//print prefixes
              let mutable prString = "Prefixes: "
              let rec printPath (pr:Prefix) (prevStr : string) =
                  if pr = null then prevStr + "]"
                  else 
                      match path.Head with
                      | :? Epsilon -> printPath path.Tail (prevStr + "->Epsilon")
  