anchor.diff:          let nonTerminalNodes = Array3D.zeroCreate<int<nodeMeasure>> parser.NonTermCount (inputLength + 1) (inputLength + 1)
           let intermidiateNodes = Array2D.zeroCreate<Dictionary<int<labelMeasure>, int<nodeMeasure>>> (inputLength + 1) (inputLength + 1) 
           let edges = Array2D.zeroCreate<Dictionary<int<nodeMeasure>, Dictionary<int<labelMeasure>, ResizeArray<int>>>> slots.Count inputLength
  -        let terminalNodes = new BlockResizeArray<int<nodeMeasure>>() // чем по умолчанию заполнен такой массив 
  -        
  +        let terminalNodes = new BlockResizeArray<int<nodeMeasure>>()
  +        let epsilonNode = new TerminalNode(-1, packExtension 0 0)
  +        let epsilon = 1<nodeMeasure>
           let sppfNodes = new BlockResizeArray<INode>()
           sppfNodes.Add(dummyAST)
  +        sppfNodes.Add(epsilonNode)
  +
   
           let currentGSSNode = ref <| dummyGSSNode
           let currentContext = ref <| new Context(!currentIndex, !currentLabel, !currentGSSNode, dummy)
  
positive.code:                         addContext index label vertex y 
              v
  
          let pop (u : Vertex) (i : int) (z : int<nodeMeasure>) extension =
              if u <> dummyGSSNode
              then
                  let vertexKey = (u.Level, u.Label)
  
negative.code:                     | :? TerminalNode as term ->
                          term.Extension 
                      | _ -> failwith "Smth strange, Nastya" 
                      
                  let y = findSppfNode label (getLeftExtension leftExt) (getRightExtension rightExt)
                  ignore <| findSppfPackedNode y label leftExt rightExt currentLeft currentRight
  