anchor.diff:                          let family = new Family(prod, new Nodes(Array.copy path))
                           if not <| containsEdge final family edges.[state] then
                               let isCreated, edgeLabel = addEdge final family edges.[state] false
  -                            if (pos > 0 && isCreated) then
  +                            if pos > 0 && isCreated && not (isEpsilonAst edgeLabel) then
                                   let arr = parserSource.Reduces.[state].[!curNum]
  +                                let edgeOpt = Some (final, box edgeLabel)
                                   if arr <> null then
                                       for (prod, pos) in arr do
  -                                        reductions.Push (newVertex, prod, pos, Some (final, box edgeLabel))
  +                                        reductions.Push (newVertex, prod, pos, edgeOpt)
   
                   let rec walk remainLength (vertex : Vertex) path =
                       if remainLength = 0 then handlePath path vertex
  
positive.code:                     then
                          addSimpleEdge vertex ast simpleEdges.[state]
                          let arr = parserSource.Reduces.[state].[!curNum]
                          if arr <> null 
                          then
                              for (prod, pos) in arr do
                                  reductions.Push (vertex, prod, pos, Some (vertex, ast))
                      new Family(prodNumber, new Nodes([|ast|]))
                  else
                      let family = new Family(prodNumber, new Nodes(unbrowsed))
  
negative.code:                     let arr = parserSource.Reduces.[vertex.State].[!curNum]
                      if arr <> null
                      then 
                          if  not (isEpsilonAst vertex.OutEdges.first.Ast) then
                              let edgeOpt = Some (vertex.OutEdges.first.Dest, vertex.OutEdges.first.Ast)
                              for (prod, pos) in arr do
                                  reductions.Push (vertex, prod, pos, edgeOpt)
                          makeReductions !curInd recovery
                          temp.Enqueue path
                      //if shift is possible
  