anchor.diff:                      else               
                           if cP < chainLen - 1  then         
                               let curToken = input.Edges.[cE].Tokens.[cP]
  +                          
  +                            if curSymbol = condNonTerm then currentLength := 0uy
                               let key = int(( curSymbol  <<< 16) ||| (curToken - parser.NonTermCount))
                               if parser.Table.ContainsKey key
                               then
  
positive.code:                     then
                          r.Add(new ResultStruct((getEdge <| getLeftExtension !currentExtension), (getPosOnEdge <| getLeftExtension !currentExtension), (getEdge <| getRightExtension !currentExtension), (getPosOnEdge <| getRightExtension !currentExtension), parser.NumToString <| parser.LeftSide.[rule], !currentLength))
                          |> ignore
                          
                      pop !currentGSSNode !currentIndex !currentExtension !currentLength
                      
                      
  
negative.code:                             let oEdges = outEdges.[input.Edges.[cE].End]
                              for oe in oEdges do 
                                  let curToken = input.Edges.[oe].Tokens.[shift]
                                  if curSymbol = condNonTerm then currentLength := 0uy
                                  let key = int(( curSymbol  <<< 16) ||| (curToken - parser.NonTermCount))
                                  if parser.Table.ContainsKey key
                                  then
                                      create oe shift (1<labelMeasure>  * packLabelNew rule (position + 1)) !currentGSSNode curSymbol !currentLength
  