anchor.diff:                  then
                       addToNonTermEnds astPrefixes ast tailLPrefixes was
   
  -            |_ -> ignore()  //what with NontermEnd another ast?
  +            |_ -> ignore()
   
           if curLevel.Exists(fun lpr -> match lpr with
                                         | NontermEnd (xast, _) -> xast = ast
  
positive.code:                 levels.[u.Level] <- [!curNum]
              else
                  levels.[u.Level] <- !curNum :: levels.[u.Level]
              (*let rec printPrefixes (prefixes:ResizeArray<Prefix<_>>) (prevStr : string) =
                  let mutable curStr = prevStr + "["
                  if ResizeArray.isEmpty(prefixes) then curStr + "]"
                  else
                      for prefix in prefixes do
                          if prefix = null
                          then
                              curStr <- curStr + "NULL, "
                          else
                              let tokenStr = tokenToNumber prefix.Head.Tag |> parserSource.NumToString
                              let tokenData = match parserSource.TokenData with | None -> "" | Some f -> f prefix.Head.Tag|> string
                              curStr <- curStr + tokenStr + tokenData + ":"
                              curStr <- printPrefixes prefix.Tail curStr + ", "
                      curStr + "]"
                          
              print <| sprintf "%d [label=\"%d_%d_%s\"]" !curNum u.Level u.State (printPrefixes gssVertexesToPrefixes.[u] "Prefixes:")*)
              print <| sprintf "%d [label=\"%d_%d\"]" !curNum u.Level u.State 
              incr curNum
              u.OutEdges |> ResizeArray.iter (handleEdge u)
  
negative.code:                             if not <| vertexesToPrefs.[v].Contains(End)
                              then
                                  vertexesToPrefs.[v].Add(gssPrefix)
                          |_ -> ignore()
  
          let rec dfs (v:VInfo<_>) =
  