anchor.diff:  
               for i in 0..(values.Length-1) do
                   values.[i] := false
  -
  -            parsingMatrixFict <- parsingMatrixCurrent
  -            parsingMatrixCurrent <- parsingMatrixNew
  -            parsingMatrixNew <- parsingMatrixFict
  +            
  +            for nont in parsingMatrixNew.Keys do
  +                parsingMatrixNew.[nont].CopyTo(parsingMatrixCurrent.[nont])
   
               multCount <- multCount + 1            
   
  
positive.code:                             for (nonTerm, _) in allRules.HeadsByComplexTail (nt1, nt2) do
                                      let nonZ = parsingMatrixCurrent.[nonTerm].NonZerosCount
                                      //lock parsingMatrix (fun () ->
                                      parsingMatrixCurrent.[nonTerm].PointwiseMaximum(resultMatrix, parsingMatrixNew.[nonTerm])
                                      //)
                                      if (nonZ <> parsingMatrixNew.[nonTerm].NonZerosCount)
                                      then vl := true
                          flg:= true
                          do! loop (n + 1)
                  }
  
negative.code:                   createEmptyMatrix 
                    matrixSetValue 
                    (innerOne: 'InnerType) =
          let parsingMatrixCurrent, vertexToInt = initParsingMatrix<SparseMatrix, 'InnerType> graph allRules nonterminals createEmptyMatrix matrixSetValue innerOne
          let matrixSize = graph.VertexCount
          let isChanged = ref true
          let mutable multCount = 0
          let parsingMatrixNew = new ParsingMatrix<SparseMatrix>()
          for nont in parsingMatrixCurrent.Keys do
              parsingMatrixNew.Add(nont, createEmptyMatrix(matrixSize))
              parsingMatrixCurrent.[nont].CopyTo(parsingMatrixNew.[nont])
  
  
          let nontermPairs = allRules.ComplexTails
  
  